【问题标题】:Implementing Word to vector model using Gensim使用 Gensim 实现 Word 到向量模型
【发布时间】:2019-01-30 00:06:23
【问题描述】:

我们正在尝试为下面给出的一组词实现词向量模型。

stemmed = ['data', 'appli', 'scientist', 'mgr', 'microsoft', 'hire', 'develop', 'mentor', 'team', 'data', 'scientist', 'defin', 'data', 'scienc', 'prioriti', 'deep', 'understand', 'busi', 'goal', 'collabor', 'across', 'multipl', 'group', 'set', 'team', 'shortterm', 'longterm', 'goal', 'act', 'strateg', 'advisor', 'leadership', 'influenc', 'futur', 'direct', 'strategi', 'defin', 'partnership', 'align', 'efficaci', 'broad', 'analyt', 'effort', 'analyticsdata', 'team', 'drive', 'particip', 'data', 'scienc', 'bi', 'commun', 'disciplin', 'microsoftprior', 'experi', 'hire', 'manag', 'run', 'team', 'data', 'scientist', 'busi', 'domain', 'experi', 'use', 'analyt', 'must', 'experi', 'across', 'sever', 'relev', 'busi', 'domain', 'util', 'critic', 'think', 'skill', 'conceptu', 'complex', 'busi', 'problem', 'solut', 'use', 'advanc', 'analyt', 'larg', 'scale', 'realworld', 'busi', 'data', 'set', 'candid', 'must', 'abl', 'independ', 'execut', 'analyt', 'project', 'help', 'intern', 'client', 'understand']

我们正在使用此代码:

import gensim
model = gensim.models.FastText(stemmed, size=100, window=5, min_count=1, workers=4, sg=1)
model.wv.most_similar(positive=['data'])

但是,我们得到了这个错误:

KeyError: 'all ngrams for word data absent from model'

【问题讨论】:

    标签: python-3.x machine-learning gensim fasttext


    【解决方案1】:

    您需要提供您的训练数据,而不是作为一个列表,而是作为一个生成器

    试试:

    import gensim
    from gensim.models.fasttext import FastText as FT_gensim
    
    stemmed = ['data', 'appli', 'scientist', ... ]
    
    def gen_words(stemmed):
        yield stemmed   
    
    model = FT_gensim(size=100, window=5, min_count=1, workers=4, sg=1)
    model.build_vocab(gen_words(stemmed))
    
    model.train(gen_words(stemmed), total_examples=model.corpus_count, epochs=model.iter)
    model.wv.most_similar(positive=['data'])
    

    打印出来:

    [('busi', -0.043828580528497696)]

    另请参阅 gensim 文档中的 this notebook。和this excellent gensim tutorial 在所有可迭代的事物上:

    在 gensim 中,如何创建语料库取决于您。 Gensim 算法 只关心你为他们提供可迭代的稀疏向量(和 对于某些算法,即使是生成器 = 单次遍历向量 就够了)。

    【讨论】:

    • @MurthyRouthula 我很高兴这有帮助。我建议您接受这个答案,以便其他人可以看到问题已解决。
    • 你能告诉我们在词干提取后如何将普通词应用于词袋上的向量实现吗?
    • @MurthyRouthula 请将此作为新问题发布。
    【解决方案2】:

    基本问题是 FastText 模型期望句子作为训练数据而不是单词。如果你为它提供一个单词列表,它就不会很好地工作,因为它会根据句子中单词的相对位置创建向量嵌入。

    代码中的实际错误来自gensim.models.FastText 构造函数需要一个可迭代的字符串列表作为它的第一个参数(例如,一个二维字符串列表),但你给了它一个字符串列表。

    也许您可以使用pretrained FastText model 而不是训练自己的模型?

    【讨论】:

    • 好一个!那你能推荐我正常的词到向量模型吗?
    • 您能否分享有关您要解决的问题的更多详细信息?不知道你的最终目标是很难提出建议的。
    • 实际上,在应用停用词、标记化、规范化后,我有一堆词。现在我想将单词应用于这些单词的向量模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多