慕蓋茨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())
這應該會給你預期的輸出。

慕斯王
TA貢獻1864條經驗 獲得超2個贊
如您的輸出示例所示,test['tokenize']包含單元格中的列表。這些列表是通過按“”拆分從字符串中檢索到的值,因此要使此行test['BOW'] = test['tokenize'].apply(lambda x: Counter(x.split(" ")))
正常工作,請嘗試將其更改為test['BOW'] = test['tokenize'].apply(lambda x: Counter(x))
添加回答
舉報
0/150
提交
取消