开发者社区> 问答> 正文

TfidfVectorizer的单词频率

我正在尝试使用TF-IDF计算消息传递数据帧的词频。到目前为止,我有这个

import nltk
from sklearn.feature_extraction.text import TfidfVectorizer

new_group['tokenized_sents'] = new_group.apply(lambda row: nltk.word_tokenize(row['message']),axis=1).astype(str).lower()
vectoriser=TfidfVectorizer()
new_group['tokenized_vector'] = list(vectoriser.fit_transform(new_group['tokenized_sents']).toarray())

但是,使用上面的代码,我得到了一堆零而不是单词frequency。如何解决此问题以获得正确的消息频率。这是我的数据框

user_id     date          message      tokenized_sents      tokenized_vector
X35WQ0U8S   2019-02-17    Need help    ['need','help']      [0.0,0.0]
X36WDMT2J   2019-03-22    Thank you!   ['thank','you','!']  [0.0,0.0,0.0]

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 20:28:30 504 0
1 条回答
写回答
取消 提交回答
  • 首先,为了计数,您不希望使用TfidfVectorizer,因为它已标准化。您要使用CountVectorizer。其次,您不需要标记单词,因为sklearn具有使用TfidfVectorizer和CountVectorizer的标记生成器。

    #add whatever settings you want
    countVec =CountVectorizer()
    
    #fit transform
    cv = countVec.fit_transform(df['message'].str.lower())
    
    #feature names
    cv_feature_names = countVec.get_feature_names()
    
    #feature counts
    feature_count = cv.toarray().sum(axis = 0)
    
    #feature name to count
    dict(zip(cv_feature_names, feature_count)) 
    

    回答来源:stackoverflow

    2020-03-24 20:28:36
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载