Remarque : ce code est écrit en Python 3.6.1 ( Gensim 2.3.0)
Implémentation Python et application de word2vec avec Gensim
Article original : Mikolov, T., Chen, K., Corrado, G. et Dean, J. (2013). Estimation efficace des représentations de mots dans l’espace vectoriel. préimpression arXiv 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))
Type de corpus : classe 'liste'
Longueur du corpus : 3106
print(sentences[0]) # title, author, and year print(sentences[1]) print(sentences[10])
['[', 'Le', 'Tragedie', 'de', 'Hamlet', 'by', 'William', 'Shakespeare', '1599', ']']
['Actus', 'Primus', '.']
['Fran', '.']
Prétraiter les données
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])
['la', 'tragédie', 'de', 'hameau', 'par', '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),
('reine', 0,9971947073936462),
('laertes', 0.9971820116043091),
('roi', 0.9968599081039429),
('mère', 0,9966716170310974),
("où", 0.9966292381286621),
('deere', 0,9965540170669556),
('ophélie', 0.9964221715927124),
('très', 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
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3