【问题标题】:How to Cluster words and phrases with pre-trained model on Gensim如何使用 Gensim 上的预训练模型对单词和短语进行聚类
【发布时间】:2019-08-09 09:01:22
【问题描述】:

我真正想要的是对单词和短语进行聚类,例如 针织/针织织机/织机针织/织布机/彩虹织机/家居装饰配件/织机针织/针织织机/......我没有语料库,而我只有单词/短语。我可以使用像 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) 

【问题讨论】:

    标签: gensim word2vec


    【解决方案1】:

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

    另一方面,我看到一个在线单词列表表明 'composite_fillings' 之类的短语 GoogleNews 词汇表中,所以这可能对你有用:

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

    使用该向量集,您将受限于他们选择建模为短语的内容。如果您需要其他短语的类似强向量,您可能需要在对您重要的短语已组合成单个标记的语料库上训练自己的模型。 (如果你只需要比什么都好,将组成词的词向量平均在一起会给你一些可以使用的东西......但这是一个非常粗略的替代品,用于真正根据其建模二元/多元独特的上下文。)

    【讨论】:

    • 嗨,gojomo,谢谢你的建议。我在第一段的问题中添加了更多细节。你有什么想法吗?再次感谢。 @gojimo
    • 网上有没有更多的预训练模型?免费与否。
    • GoogleNews 词向量仅对他们选择识别和创建词向量的短语有用。如果他们不这样做,则该短语将不会有词向量。 (而且,正如我在回答中所指出的,“将单个单词词向量平均在一起”这样的粗略近似不太可能令人满意。)如果您对哪些短语很重要有自己的项目特定想法,您可能需要获取自己的语料库并训练自己的模型。
    • 还有其他预训练的词向量集,但它们都仅限于创建者选择的词/短语。 (GoogleNews 集合是最大和最早的集合之一,但现在已经很老了。)有些格式与普通 w2v gensim 加载兼容(即使以另一种方式训练,例如 nlp.stanford.edu/projects/glove 的 GloVe 向量) ,而其他人则依赖具有其他功能的代码/算法,例如 FastText(来自fasttext.cc/docs/en/english-vectors.html - gensim 可以使用其他类加载)。但同样,他们的词组选择不太可能满足您的需求。
    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2019-09-05
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    相关资源
    最近更新 更多