Примечание: этот код написан на Python 3.6.1 ( Gensim 2.3.0)
Реализация Python и применение word2vec с Gensim
Оригинальная статья: Миколов Т., Чен К., Коррадо Г. и Дин Дж. (2013). Эффективная оценка представлений слов в векторном пространстве. Препринт 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))
Тип корпуса: класс 'list'
Длина корпуса: 3106
print(sentences[0]) # title, author, and year print(sentences[1]) print(sentences[10])
['[', 'The', 'Трагедия', 'из', 'Гамлет', 'автор', 'Уильям', 'Шекспир', '1599', ']']
['Актус', 'Примус', '.']
['Фрэн', '.']
Предварительная обработка данных
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])
['трагедия', 'о', 'Гамлет', 'автор', 'Уильям', 'Шекспир']
['актус', 'примус']
['фрэн']
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')
[('Горацио', 0.9978846311569214),
('королева', 0,9971947073936462),
('лаэрт', 0.9971820116043091),
('король', 0,9968599081039429),
('мать', 0.9966716170310974),
('где', 0,9966292381286621),
('олень', 0,9965540170669556),
('офелия', 0,9964221715927124),
('очень', 0,9963752627372742),
('о', 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
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3