如何使用Gensim上的预训练模型对单词和短语进行聚类

时间:2019-08-09 09:01:22

标签: gensim word2vec

我想要的是将单词和短语进行聚类,例如 编织/编织机/织机编织/织机/彩虹织机/家居装饰配件/织机/编织机/ ...而我只有一个词/短语,却没有语料库。我可以使用像GoogleNews / Wikipedia / ...这样的预训练模型来实现它吗?

我现在正在尝试使用Gensim加载GoogleNews预先训练的模型,以获取短语相似性。有人告诉我GoogleNews模型包含短语和单词的向量。但是我发现我只能得到词相似度,而短语相似度会失败,并显示一条错误消息,指出该短语不在词汇表中。请给我提意见。谢谢。

import gensim
from gensim.models import Word2Vec
from gensim.models.keyedvectors import KeyedVectors

GOOGLE_MODEL = '../GoogleNews-vectors-negative300.bin'

model = gensim.models.KeyedVectors.load_word2vec_format(GOOGLE_MODEL, binary=True) 


# done well
model.most_similar("computer", topn=3) 

# done with error message "computer_software" is not in the vocabulory.
model.most_similar("computer_software", topn=3) 

1 个答案:

答案 0 :(得分:0)

GoogleNews集确实包含许多通过统计分析创建的多词短语,但可能不包含您希望它做到的特定内容,例如'computer_software'

另一方面,我看到一个在线单词列表,提示'composite_fillings'词汇中的词组为GoogleNews ,因此这可能对您有用:

model.most_similar("composite_fillings", topn=3) 

使用该向量集,您将只能使用他们选择作为短语建模的内容。如果您需要其他词组具有类似强度的向量,则可能需要在语料库上训练自己的模型,该语料库将对您重要的词组组合为单个标记。 (如果您只需要胜于无物,则将组成词的单词向量平均在一起将为您提供一些有用的东西……但这是一个非常粗暴的替代品,可以根据其实际对bigram / multigram进行建模独特的上下文。)