使用TfidfVectoriz理解字符级特征提取

2024-09-27 00:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

试图用神经网络的输入解析issue,我想提取名称的字符级tf(例如james-->;ja,am,me,es),并将其保存为一个数组,将其交给神经网络进行分类。在

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

^{pr2}$

当我检查输出时,我发现

  (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个向量)我打印出来的向量是否正确?在


Tags: texttf神经网络cham单词向量steve
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:43

形状是(1,55),因为55是你整个n-gram词汇表的大小。当您对一个包含1个文本的列表调用transform时,输出形状仍然是(1,55),如果您对2个文本调用它,它将是(2,55)。输出中的元组表示词汇表中索引(0,x)处的gram是单词中的gram。浮点值是文档频率的倒数

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

相关问题 更多 >

    热门问题