Я только что освоил модель Google word2vec и совершенно не знаком с этой концепцией. я пытаюсь извлечь основную особенность абзаца, используя следующий метод.
from gensim.models.keyedvectors import KeyedVectors
model = KeyedVectors.load_word2vec_format('../../usr/myProject/word2vec/GoogleNews-vectors-negative300.bin', binary=True)
...
for para in paragraph_array:
para_name = "para_"+ file_name + '{0}'
sentence_array = d[para_name.format(number_of_paragraphs)] = []
# Split Paragraph on basis of '.' or ? or !.
for l in re.split(r"\.|\?|\!", para):
# Split line into list using space.
sentence_array.append(l)
#sentence_array.append(l.split(" "))
print (model.wv.most_similar(positive=para, topn = 1))
Но я получаю следующую ошибку, в которой говорится, что проверенный абзац не является словом в словаре.
KeyError: 'word \' Республика Гана - это страна в Западной Африке. Он граничит с Кот-д'Ивуаром (также известным как Берег Слоновой Кости) на западе, Буркина-Фасо на севере, Того на востоке и Гвинейским заливом на юге. Слово «Гана» означает «Король-воин», Джексон, Джон Дж. Введение в африканские цивилизации, 2001. Стр. 201. и было источником названия «Гвинея» (через французское гиное), используемого для обозначения западноафриканского побережья ( как в Гвинейском заливе). \ 'не в словаре'
Теперь я знаю, что функция most_similar()
ожидает один массив. Но я хотел бы знать, как это можно перевести, чтобы извлечь одну главную особенность или слово, которое отображает основную концепцию абзаца, используя модель word2vec.
Модифицированный
Я изменил приведенный выше код для передачи word_array в метод most_similar()
, и я получаю следующую ошибку.
Traceback (последний вызов был последним):
Файл "/home/manuelanayantarajeyaraj/PycharmProjects/ChatbotWord2Vec/new_approach.py", строка 108, в
print (model.wv.most_simil (positive = word_array, topn = 1))
Файл "/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/gensim/models/keyedvectors.py", строка 361, в большинстве_подобных
для слова, вес в положительном + отрицательном:
ValueError: слишком много значений для распаковки (ожидается 2)
Модифицированная реализация
for sentence in sentence_array:
if sentence:
for w in re.split(r"\.|\?|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-", sentence):
split_word = w.split(" ")
if split_word:
word_array.append(split_word)
print(model.wv.most_similar(positive=word_array, topn=1))
Любые предложения на этот счет приветствуются.