繁体   English   中英

如何在 Gensim 词典中输入由不同标记组成的系列/列表?

[英]How to input a series/list consisting of different tokens in a Gensim Dictionary?

我有一个 pandas 数据框,其中有一列包含对话数据。 我通过以下方式对其进行了预处理:

def preprocessing(text):
     return [word for word in simple_preprocess(str(text), min_len = 2, deacc = True) if word not in stop_words]

dataset['preprocessed'] = dataset.apply(lambda row: preprocessing(row['msgText']), axis = 1)

为了使它成为一维,我使用了(两者):

processed_docs = data['preprocessed']

也:

processed_docs = data['preprocessed'].tolist()

现在看起来如下:

>>> processed_docs[:2]
0    ['klinkt', 'alsof', 'zwaar', 'dingen', 'spelen...
1    ['waar', 'liefst', 'meedenk', 'betekenen', 'pe...

对于这两种情况,我都使用了:

dictionary = gensim.corpora.Dictionary(processed_docs)     

但是,在这两种情况下我都得到了错误:

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

我怎样才能修改我的数据,这样我就不会得到这个 TypeError?



鉴于之前已经问过类似的问题,我考虑过:

Gensim: TypeError: doc2bow 期望输入的是一个 unicode 标记数组,而不是单个字符串

根据第一个答案,我尝试了以下解决方案:

dictionary = gensim.corpora.Dictionary([processed_docs.split()])

并得到错误(/ s):

AttributeError: 'Series'('List') object has no attribute 'split'

在第二个答案中,有人说输入需要是令牌,这对我来说已经成立了。

此外,基于( TypeError: doc2bow 在输入时需要一个 unicode 标记数组,而不是使用 gensim.corpora.Dictionary() 时的单个字符串),我使用了上面描述的.tolist()方法,这也不起作用.

问题是很久以前发布的,但对于仍然想知道的人。 Pandas 将列表存储为字符串,因此出现 TypeError,将此字符串解释为列表的一种方法是使用:

from ast import literal_eval

接着:

dictionary = gensim.corpora.Dictionary()
for doc in processed_docs:
  dictionary.add_documents([literal_eval(doc)])

我认为你需要:

 dictionary = gensim.corpora.Dictionary([processed_docs[:]])

遍历集合。 您可以编写 [2:] 从 2 开始并迭代到结尾,或者 [:7] 从 0 开始然后转到 7 或 [2:7]。 您也可以尝试 [:len(processed_docs)]

我希望这有帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM