如果你的数据是这样的
import pandas as pd
df = pd.DataFrame([
'must watch. Good acting',
'average movie. Bad acting',
'good movie. Good acting',
'pathetic. Avoid',
'avoid'], columns=['description'])
你可以使用包sklearn的CountVectorizer:
from sklearn.feature_extraction.text import CountVectorizer
word_vectorizer = CountVectorizer(ngram_range=(1,2), analyzer='word')
sparse_matrix = word_vectorizer.fit_transform(df['description'])
frequencies = sum(sparse_matrix).toarray()[0]
pd.DataFrame(frequencies, index=word_vectorizer.get_feature_names(), columns=['frequency'])
这给了你:
frequency
good 3
pathetic 1
average movie 1
movie bad 2
watch 1
good movie 1
watch good 3
good acting 2
must 1
movie good 2
pathetic avoid 1
bad acting 1
average 1
must watch 1
acting 1
bad 1
movie 1
avoid 1
编辑
fit 只会“训练”你的矢量化器:它会分割你的语料库中的单词并用它创建一个词汇表。然后transform 可以获取一个新文档并根据向量化器词汇创建频率向量。
这里你的训练集是你的输出集,所以你可以同时做这两个 (fit_transform)。因为您有 5 个文档,所以它将创建 5 个向量作为矩阵。你想要一个全局向量,所以你必须创建一个sum。
编辑 2
对于大数据帧,您可以使用以下方法加快频率计算:
frequencies = sum(sparse_matrix).data