【问题标题】:Problem with creating dictionary with gensim for LDA使用 gensim 为 LDA 创建字典的问题
【发布时间】:2022-01-23 05:00:05
【问题描述】:

我在运行 gensim 以创建字典和文档术语矩阵时遇到问题。

当我跑步时:

from gensim import corpora, models
import gensim
clean = ['door', 'cat', 'mom']
dictionary = corpora.Dictionary(clean)

我明白了:

doc2bow expects an array of unicode tokens on input, not a single string

在真正的问题中,Clean 仍然是一个列表类型的变量。在应用了分词器、标注器、删除标点符号等之后,就是一个大型语料库中的所有单词。

为什么会出现这个错误?

【问题讨论】:

    标签: python machine-learning nlp gensim corpus


    【解决方案1】:

    语料库中的每个项目都应该是一个 unicode 标记(单词)序列,而不是字符串。

    如果您希望字符串 'door''cat''mom' 成为字典中的单词,您可以这样做:

    from gensim import corpora
    corpus = [
        ['door', 'cat', 'mom'],
    ]
    dictionary = corpora.Dictionary(corpus)
    

    【讨论】:

      【解决方案2】:

      我只需要拆分:

      from gensim import corpora, models
      import gensim
      clean = ['door', 'cat', 'mom']    
      corpus = [d.split() for d in clean]
      dictionary = corpora.Dictionary(corpus)
      

      【讨论】:

      • 这是实现你可能真正想要的东西的一种迂回方式——语料库中的每个项目本身就是一个字符串标记列表:多文本语料库的一个文本。只有当您的训练数据只是一长串单词时,您的方法才会奏效——即便如此,将您的一个列表包含在另一个列表中会更清晰。也就是说,将您对split()(在corpus = [d.split() for d in clean] 行中)的使用替换为corpus = [ clean, ]
      猜你喜欢
      • 2016-07-11
      • 2017-03-24
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多