gpt4 book ai didi

python - 使用 TfidfVectorizer 理解字符级特征提取

转载 作者:行者123 更新时间:2023-11-30 09:47:58 25 4
gpt4 key购买 nike

我有一组样本,其中每个样本有 3 个单词(名字、中间名和姓氏)

text = ['James Jackson Jammy',
'Steve Smith Something',
'Chamak Chalo Chanta',
'Polo Rolo Colo']

尝试使用神经网络的输入解析 issue,我想提取名称的字符级别 tf(例如 james --> ja,am,me,es)并将其保存为数组以将其提供给用于分类的神经网络。

使用 TfIdfVectorizer ,我尝试从语料库中提取特定单词的 tf

# creating the corps
corpus =[]
# splitting the text in to words
corpus = ' '.join(text[i] for i in range(len(text))).split()
# copy only unique words
corpus = set(corpus)
# creating the character vector (2 letters)
vectorizer = TfidfVectorizer(ngram_range=(1,2), analyzer= 'char')
X = vectorizer.fit(corpus)
# checking the vector of the one word
# ab = X.transform(['Chamak Chalo Chanta'])
ab = X.transform(['Chamak'])
print(ab.shape)
print(ab)

当我检查输出时,我得到了类似的内容

  (1,55)

(0, 28) 0.38126785705606514
(0, 27) 0.23541325871187607
(0, 23) 0.3274372645024392
(0, 16) 0.28924385126550206
(0, 15) 0.23541325871187607
(0, 7) 0.28924385126550206
(0, 6) 0.23541325871187607
(0, 4) 0.28924385126550206
(0, 2) 0.38126785705606514
(0, 0) 0.4298956344860669

它说形状是 (1, 55),但我不明白它显示的是什么向量。 (0,0) ...(0,28) 的值有任何意义吗?对于单词“chamak”,我期望它应该显示“ch”、“ha”、“am”、“ma”、“ak”的 tf 值,但值是 55 而不是 5。

当我使用ngram_range=(1,3)时,输出为

(1, 91)
(0, 49) 0.30927373541425635
(0, 48) 0.30927373541425635
(0, 47) 0.1909605977541359
(0, 42) 0.26560787654230167
(0, 29) 0.30927373541425635
(0, 27) 0.23462645662609066
(0, 26) 0.1909605977541359
(0, 14) 0.23462645662609066
(0, 13) 0.23462645662609066
(0, 12) 0.1909605977541359
(0, 7) 0.30927373541425635
(0, 6) 0.23462645662609066
(0, 3) 0.30927373541425635
(0, 0) 0.34871921735651773

当我将范围增加到 3 而不是 3(如 cha、ham、amp 等)时,它应该会减少,但为什么它会增加。

我对这个概念的理解出了问题,但是我做错了吗?我可以使用向量输入神经网络吗?对于我想要的输出,tf 的 ch、am、ma、ap、pa、ak(6 个向量)是我打印出来的向量是否正确?

最佳答案

形状是 (1,55),因为 55 是整个 n 元语法词汇的大小。当您对 1 个文本的列表调用 Transform 时,输出形状仍将为 (1,55),如果您对 2 个文本调用它,则输出形状将为 (2,55)。输出中的元组意味着词汇表中索引 (0,x) 处的语法是您单词中的语法。 float 为逆文档频率

此外,我认为您误解了 ngram_range 参数的工作方式。你问为什么当你输入(1,3)而不是(1,2)时它会增加,并且不会减少。这是因为当您输入 (1,3) 时,它会在词汇表中存储一元组、二元组和三元组。

关于python - 使用 TfidfVectorizer 理解字符级特征提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49856775/

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