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

How to Cluster words and phrases with pre-trained model on Gensim

我真正想要的是聚类单词和短语,例如 knitting/knit loom/loom knitting/weaving loom/rainbow loom/home 装饰 accessories/loom knit/knitting 织机/...而且我没有语料库,而我只有words/phrases。我可以使用像 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) 

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

另一方面,我看到一个在线单词列表表明 'composite_fillings' 这样的短语在 GoogleNews 词汇表中是 ,所以这将可能适合你:

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

使用该矢量集,您将仅限于他们选择建模为短语的内容。如果您需要其他短语的类似强向量,您可能需要在语料库上训练自己的模型,在该语料库中,对您很重要的短语已组合成单个标记。 (如果你只是需要一些比没有更好的东西,将组成词的词向量平均在一起会给你一些可以使用的东西......但这是真正建模 bigram/multigram反对其独特的背景。)