为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Python 中创建词袋

如何在 Python 中创建词袋

慕盖茨4494581 2022-12-06 16:29:59
清理并标记化后的数据框测试。from nltk.tokenize import TweetTokenizertt = TweetTokenizer()test['tokenize'] = test['tweet'].apply(tt.tokenize)print(test)输出0  congratulations dear friend ... [congratulations, dear, friend]1  happy anniversary be happy  ... [happy, anniversary, be, happy]2  make some sandwich          ...          [make, some, sandwich]我想为我的数据创建一个词袋。以下给了我错误:'list'对象没有属性'lower'from sklearn.feature_extraction.text import CountVectorizervectorizer = CountVectorizer()BOW = vectorizer.fit_transform(test['tokenize'])print(BOW.toarray())print(vectorizer.get_feature_names())第二个:AttributeError: 'list' object has no attribute 'split'from collections import Countertest['BOW'] = test['tokenize'].apply(lambda x: Counter(x.split(" ")))print(test['BOW'])你能帮我一个方法或两个。谢谢!
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

vectorizer.fit_transform将可迭代的 str、unicode 或文件对象作为参数。您已经传递了一个可迭代的列表(标记化字符串)。您可以只传递原始字符串集,test['tweet']因为 CountVectorizer 会为您进行标记化。


from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer()

BOW = vectorizer.fit_transform(test['tweet'])

print(BOW.toarray())

print(vectorizer.get_feature_names())

这应该会给你预期的输出。


查看完整回答
反对 回复 2022-12-06
?
慕斯王

TA贡献1864条经验 获得超2个赞

如您的输出示例所示,test['tokenize']包含单元格中的列表。这些列表是通过按“”拆分从字符串中检索到的值,因此要使此行test['BOW'] = test['tokenize'].apply(lambda x: Counter(x.split(" ")))正常工作,请尝试将其更改为test['BOW'] = test['tokenize'].apply(lambda x: Counter(x))



查看完整回答
反对 回复 2022-12-06
  • 2 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信