【发布时间】:2018-10-26 11:17:12
【问题描述】:
我刚刚掌握了 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 \'加纳共和国是西非的一个国家。它西与科特迪瓦(也称为科特迪瓦)接壤,北与布基纳法索接壤,东与多哥接壤,南与几内亚湾接壤。 “加纳”一词的意思是“战士王”,杰克逊,约翰 G. 非洲文明简介,2001。第 201 页。并且是“几内亚”(通过法语 Guinoye)这个名称的来源,用于指代西非海岸(如在几内亚湾)。\'不在词汇表中'
现在我知道most_similar() 函数需要一个数组。但我想知道如何将其翻译为使用 word2vec 模型提取显示段落主要概念的一个主要特征或单词。
修改
我修改了上面的代码,将 word_array 传递给 most_similar() 方法,我得到了以下错误。
Traceback(最近一次调用最后一次): 文件“/home/manuelanayantarajeyaraj/PycharmProjects/ChatbotWord2Vec/new_approach.py”,第 108 行,在 打印(model.wv.most_similar(正=word_array,topn=1)) 文件“/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/gensim/models/keyedvectors.py”,第 361 行,在 most_similar 对于单词,正负权重: 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))
非常感谢您提供这方面的任何建议。
【问题讨论】:
标签: python word2vec feature-extraction