python - 使用文本字符串创建 Pandas 数据框中出现的单词矩阵

标签 python pandas scikit-learn

我有一个包含一列文本数据的 Pandas 数据框。我想将此文本数据的每一行与我感兴趣的单词列表进行比较。比较应该生成一个矩阵,该矩阵显示该行数据的文本中出现的单词(0 或 1)。

输入数据框:

text
That bear talks
The stone rocks
Tea is boiling
The bear drinks tea

输入单词列表:

[bear, talks, tea]

结果:

text                 bear  talks  tea
That bear talks      1     1      0
The stone rocks      0     0      0
Tea is boiling       0     0      1
The bear drinks tea  1     0      1

我在 sklearn.feature_extraction.text.HashingVectorizer 上找到了一些信息,但据我了解,它只是获取整个数据框并将其分解为组成词并计算这些词。我想做的是在一个非常有限的列表上做。

使用 sklearn 我做了以下事情:

from sklearn.feature_extraction.text import HashingVectorizer

countvec = HashingVectorizer()

countvec.fit_transform(resultNLdf2.text)

但这给了我以下信息:

<73319x1048576 sparse matrix of type '<class 'numpy.float64'>'
    with 1105683 stored elements in Compressed Sparse Row format>

这似乎有点大,除非我可以从这个稀疏矩阵中选择我想要的词,但我不知道如何使用它。

如果我用了错误的词来解释这个问题,我很抱歉,我不确定你是否会把它称为矩阵。

编辑

我正在处理的真实数据相当大,有 1264555 行推文字符串。至少我学会了不要过度简化问题 :-p。这使得一些给定的解决方案(感谢您提供帮助!!)由于内存问题或速度极慢而无法工作。这也是我关注 sklearn 的原因。

与:

from sklearn.feature_extraction.text import CountVectorizer

words = ['bear', 'talks', 'tea']

countvec = CountVectorizer(vocabulary=words)

countvec.fit_transform(resultNLdf2.text)

您实际上可以通过给出一个简单的列表来限制您想要查看的单词。但这给我留下了一个问题,即它的格式我不确定如何处理,如上所述。

最佳答案

您可以使用 Series.str.get_dummies

>>> print df.join(df.text.str.get_dummies(' ').loc[:, ['bear', 'talks', 'tea']])
                 text  bear  talks  tea
0      That bear talks     1      1    0
1      The stone rocks     0      0    0
2       Tea is boiling     0      0    0
3  The bear drinks tea     1      0    1

关于python - 使用文本字符串创建 Pandas 数据框中出现的单词矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33367210/

相关文章:

Python HDF5/NumPy 以不同方式打印数组

python - GridSearchCV 不工作?

python - 打印随机森林分类器中特定样本的决策路径

python - 如何使用 pandas 确定每个唯一用户的优先操作

python - seaborn 热图显示轴标签,但当 df.corr 为 NaN 时没有值

python - 具有不同 k-hot 编码向量的 LSTM

python - Pandas:如何删除以 nan 作为列名的多列?

python - Pandas 按多列分组,过滤并取平均值比率

python - Pandas 中非唯一索引的性能影响是什么?

python - sklearn.pipeline.Pipeline 到底是什么?