`TfidfVectorizer` 以何种方式处理个位数?

In what way the `TfidfVectorizer` deals with single-digit numbers?

我对 skelearnTfidfVectorizer 在我不知道的情况下到底做了什么感到有点困惑。

我有这样的句子:

sentence_1 = 'Sum: 1 Mean: 1 Min:1'

但是当我在训练后看到 vocabulary_ 时,我找不到任何元素 '1'。

我怀疑 TfidfVectorizer 对每个 letter/number 令牌都这样做了。


在这种情况下 TfidfVectorizer 做了什么?

是因为token_pattern,也就是’(?u)\b\w\w+\b’。这意味着它将提取长度大于 1 的 alpha-numeric 个标记。因此 12 等标记不会在 vocubulary_ 中计算出来。

Here处,其中token_pattern用于提取token。

为了演示一个例子,

import re
token_pattern = re.compile(r'(?u)\b\w\w+\b')
token_pattern.findall('i would like to test this 1 11')

# ['would', 'like', 'to', 'test', 'this', '11']

我们可以发现 alpha-numeric 个标记 i1 没有从 findall 中提取出来,因为 \b\w\w+\b 模式。

如果需要包含单个字符标记,则使用 \b\w+\b