我正在尝试构建this link.中提到的朴素贝叶斯分类器 参考该行
X_new_tfidf = tfidf_transformer.transform(X_new_counts)
在Training the Classifier
小标题下,我的代码中有一条类似的行X_new_counts = count_vect.transform(input.plot_movie)
,它应该将迭代作为转换函数的输入。 input
是来自DataFrame的记录,类型为pd.Series
,并包含以下条目,我发送input.plot_movie
作为转换函数的输入:
但是,我收到以下错误:Iterable over raw text documents expected, string object received
如何修复此错误?我还提到this回答,其中该人说s
是可迭代的,因为它被分配了一个字符串。我还遇到this link遇到TypeError: 'String' object is not iterable
的地方。我在这里错过了什么吗?这些链接似乎相互矛盾。
修改
我刚刚意识到input.plot_movie
的类型是unicode,并决定将其转换为字符串。我再次遇到同样的错误。
答案 0 :(得分:13)
这个问题的解决方案是因为input只是一个String,但是需要的是一个包含单个元素的列表(或者一个可迭代的)(它本身就是String本身)。
可以通过添加以下行来删除错误:
input=[input]
之前
X_new_counts = count_vect.transform(input.plot_movie)
答案 1 :(得分:0)
输入应该在方括号中。
input = ["input"]
cv = CountVectorizer()
cv.fit(input)