gpt4 book ai didi

python - 为什么这个 CountVectorizer 输出与我的字数统计不同?

转载 作者:行者123 更新时间:2023-11-28 22:11:49 24 4
gpt4 key购买 nike

我有一个数据框,其中有一列名为“短语”。我使用以下代码查找了本栏目中最常见的 20 个单词:

print(pd.Series(' '.join(film['Phrase']).lower().split()).value_counts()[:20])

这给了我以下输出:

s             16981
film 6689
movie 5905
nt 3970
one 3609
like 3071
story 2520
rrb 2438
lrb 2098
good 2043
characters 1882
much 1862
time 1747
comedy 1721
even 1597
little 1575
funny 1522
way 1511
life 1484
make 1396

我后来需要为每个单词创建向量计数。我尝试使用以下代码这样做:

vectorizer = CountVectorizer()
vectorizer.fit(film['Phrase'])
print(vectorizer.vocabulary_)

我不会显示整个输出,但输出数字与上面的输出不同。例如,“movie”这个词是 9308,“good”是 6131,“make”是 8655。为什么会这样?值计数方法是否只计算使用该词的每一列而不是计算该词的每次出现?我是否误解了 CountVectorizer 对象在做什么?

最佳答案

vectorizer.vocabulary_ 返回词频,但根据文档:

A mapping of terms to feature indices

这意味着数据中的每个单词都映射到一个索引,该索引存储在 vectorizer.vocabulary_ 中。

下面是一个例子来说明正在发生的事情:

from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd

df = pd.DataFrame({"a":["we love music","we love piano"]})

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(df['a'])
print(vectorizer.vocabulary_)

>>> {'we': 3, 'love': 0, 'music': 1, 'piano': 2}

此向量化识别数据中的 4 个词,并为每个词分配从 0 到 3 的索引。现在,您可能会问:“但为什么我还要关心这些指数呢?”因为矢量化完成后,您需要跟踪矢量化对象中单词的顺序。例如,

X.toarray()
>>> array([[1, 1, 0, 1],
[1, 0, 1, 1]], dtype=int64)

使用词汇词典,您可以知道第一列对应“love”,第二列对应“music”,第三列对应“piano”,第四列对应“we”。

注意,这也对应于vectorizer.get_feature_names()

中单词的顺序
vectorizer.get_feature_names()
>>> ['love', 'music', 'piano', 'we']

关于python - 为什么这个 CountVectorizer 输出与我的字数统计不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55383068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com