彻底解决!TF-IDF中的 TypeError: doc2bow expects an array of unicode tokens on input, not a single string

本文档详细记录了一位开发者在使用Gensim库生成词典和词袋模型时遇到的错误。原始代码在尝试将读取的文件内容转换为词典和词袋模型时,遇到了`doc2bow`期望输入为Unicode tokens数组而非单一字符串的错误。尝试了一些网上解决方案后,问题仍未解决。最终,通过在生成词典和词袋模型的代码中将`corpus`用方括号包围,即`[corpus]`,成功解决了问题,使得程序能够正常运行。
摘要由CSDN通过智能技术生成

使用gensim生成词典时,原代码如下:

import json
from gensim import corpora

# corpus
f = open('filename', 'r')
content = f.read()
a = json.loads(content)
f.close()
corpus = []
for k,v in a.items():
    corpus.append(v)

# 生成词典
dictionary = corpora.Dictionary(corpus)
# 生成词袋
mycorpus = [dictionary.doc2bow(text) for text in corpus]
print(mycorpus)

但是报错:

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

试了网上的方法:

dictionary = corpora.Dictionary(corpus)

改成:

dictionary = corpora.Dictionary([corpus])

但还是报错:

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

⭐最终解决方法来了!!!

把这两句:

# 生成词典
dictionary = corpora.Dictionary(corpus)
# 生成词袋
mycorpus = [dictionary.doc2bow(text) for text in corpus]

改成:

# 生成词典
dictionary = corpora.Dictionary([corpus])
# 生成词袋
mycorpus = [dictionary.doc2bow(text) for text in [corpus]]

也就是将 corpus 都加上[ ],就可以正常运行啦!!!

希望这篇文章对您有所帮助✌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值