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



这是使用烂番茄数据进行的文本分析练习。数据在评论家.csv,作为熊猫数据帧导入,"评论家"。

这块练习是

构造文档频率 (df) 的累积分布。 x 轴是文档计数 (xi),y 轴是 出现次数少于 (xi) 次的单词的百分比。例如 在 x=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()  

我发现的 Evey 示例以这种方式从"单词袋"矩阵中计算每个单词的文档矩阵:

docs_per_word = X.sum(axis=0) 

我买这个行得通;我看过结果。

但是我对实际发生的事情以及为什么它有效,总结的内容以及我如何能够弄清楚如何做到这一点而不需要查找其他人做了什么感到困惑。

我昨晚想通了。它实际上不起作用;我误解了结果。(我认为它有效,因为 Jupyter 笔记本只显示大数组中的几个值。但是,更仔细地检查,数组值太大。数组中的最大值大于"文档"的数量!

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

我需要将 X 转换为布尔矩阵。(现在我只需要弄清楚如何做到这一点。

最新更新