Hinweis: Dieser Code ist in Python 3.6.1 (Gensim 2.3.0) geschrieben
Python-Implementierung und Anwendung von word2vec mit Gensim
Originalarbeit: Mikolov, T., Chen, K., Corrado, G. & Dean, J. (2013). Effiziente Schätzung von Wortdarstellungen im Vektorraum. arXiv-Vorabdruck arXiv:1301.3781.
import re import numpy as np from gensim.models import Word2Vec from nltk.corpus import gutenberg from multiprocessing import Pool from scipy import spatial
sentences = list(gutenberg.sents('shakespeare-hamlet.txt')) # import the corpus and convert into a list print('Type of corpus: ', type(sentences)) print('Length of corpus: ', len(sentences))
Korpustyp: Klasse 'Liste'
Korpuslänge: 3106
print(sentences[0]) # title, author, and year print(sentences[1]) print(sentences[10])
['[', 'The', 'Tragedie', 'of', 'Hamlet', 'by', 'William', 'Shakespeare', '1599', ']']
['Actus', 'Primus', '.']
['Fran', '.']
Daten vorverarbeiten
for i in range(len(sentences)): sentences[i] = [word.lower() for word in sentences[i] if re.match('^[a-zA-Z] ', word)] print(sentences[0]) # title, author, and year print(sentences[1]) print(sentences[10])
['the', 'tragedie', 'of', 'hamlet', 'by', 'william', 'shakespeare']
['actus', 'primus']
['fran']
model = Word2Vec(sentences = sentences, size = 100, sg = 1, window = 3, min_count = 1, iter = 10, workers = Pool()._processes) model.init_sims(replace = True)
model.save('word2vec_model') model = Word2Vec.load('word2vec_model')
model.most_similar('hamlet')
[('horatio', 0,9978846311569214),
('Königin', 0,9971947073936462),
('laertes', 0,9971820116043091),
('König', 0,9968599081039429),
('Mutter', 0,9966716170310974),
('wo', 0,9966292381286621),
('deere', 0,9965540170669556),
('ophelia', 0,9964221715927124),
('sehr', 0,9963752627372742),
('oh', 0,9963476657867432)]
v1 = model['king'] v2 = model['queen'] # define a function that computes cosine similarity between two words def cosine_similarity(v1, v2): return 1 - spatial.distance.cosine(v1, v2) cosine_similarity(v1, v2)
0,99437165260314941
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3