`TfidfVectorizer` 以何种方式处理个位数?
In what way the `TfidfVectorizer` deals with single-digit numbers?
我对 skelearn
的 TfidfVectorizer
在我不知道的情况下到底做了什么感到有点困惑。
我有这样的句子:
sentence_1 = 'Sum: 1 Mean: 1 Min:1'
但是当我在训练后看到 vocabulary_
时,我找不到任何元素 '1'。
我怀疑 TfidfVectorizer
对每个 letter/number 令牌都这样做了。
在这种情况下 TfidfVectorizer
做了什么?
是因为token_pattern
,也就是’(?u)\b\w\w+\b’
。这意味着它将提取长度大于 1 的 alpha-numeric 个标记。因此 1
、2
等标记不会在 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 个标记 i
、1
没有从 findall
中提取出来,因为 \b\w\w+\b
模式。
如果需要包含单个字符标记,则使用 \b\w+\b
。
我对 skelearn
的 TfidfVectorizer
在我不知道的情况下到底做了什么感到有点困惑。
我有这样的句子:
sentence_1 = 'Sum: 1 Mean: 1 Min:1'
但是当我在训练后看到 vocabulary_
时,我找不到任何元素 '1'。
我怀疑 TfidfVectorizer
对每个 letter/number 令牌都这样做了。
在这种情况下 TfidfVectorizer
做了什么?
是因为token_pattern
,也就是’(?u)\b\w\w+\b’
。这意味着它将提取长度大于 1 的 alpha-numeric 个标记。因此 1
、2
等标记不会在 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 个标记 i
、1
没有从 findall
中提取出来,因为 \b\w\w+\b
模式。
如果需要包含单个字符标记,则使用 \b\w+\b
。