朴素贝叶斯,文本分析,SKLearn

时间:2019-11-03 00:55:13

标签: python scikit-learn nlp naivebayes

这是来自文本分析练习的,使用了烂番茄的数据。数据位于commentss.csv中,作为熊猫DataFrame“ critics”导入。

这是练习

  

构造文档频率(df)的累积分布。   ?轴是文档计数(??),而?轴是文档计数(??)。   出现次数少于(times)次的单词所占的百分比。例如,   在?= 5处,绘制一个表示单词百分比或数量的点   出现在5个或更少的文档中。

在以前的练习中,我有一个“单词袋”

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer()

# build the vocabulary and transform to a "bag of words"
X = vectorizer.fit_transform(critics.quote)

# Convert matrix to Compressed Sparse Column (CSC) format
X = X.tocsc()  

我发现的埃维样本以这种方式从“单词袋”矩阵中计算出每个单词的文档矩阵:

docs_per_word = X.sum(axis=0) 

我认为这行得通;我已经看过结果了。

但是我对实际发生的事情,它为什么起作用,被总结的内容以及如何能够无需查看其他人的工作就能弄清楚如何做到这一点感到困惑。

1 个答案:

答案 0 :(得分:0)

我昨晚发现了这个。它实际上是行不通的。我误解了结果。 (我认为这是可行的,因为Jupyter笔记本仅在一个大数组中显示几个值。但是,更仔细地检查,该数组值太大。该数组中的最大值大于“文档”的数量!) / p>

X(我的“单词袋”)是单词频率向量。对X求和可提供有关每个单词在文档语料库中出现的频率的信息。但是有关单词出现在多少文档中的说明(例如,介于0之间和4个代表4个文件),而不是在这些文件集中出现的次数(4个代表0-n)。

我需要将X转换为布尔矩阵。 (现在我只需要弄清楚该怎么做。;-)