CountVectorizer(analyzer='char_wb') 无法按预期工作



我正在尝试使用scikit learn的CountVectorizer来计算字符2-格,忽略空格。在文档中,它提到了参数analyzer,该参数表示

特征应该由单词还是字符组成n-gram。选项"char_wb"仅从单词内部的文本创建字符n-gram边界。

然而,"char_wb"似乎并没有像我预期的那样起作用。例如:

corpus = [
    "The blue dog Blue",
    "Green the green cat",
    "The green mouse",
]
# CountVectorizer character 2-grams with word boundaries
vectorizer = CountVectorizer(analyzer='char_wb', ngram_range=(2, 2), min_df=1) 
X = vectorizer.fit_transform(corpus)
vectorizer.get_feature_names()
[' b',
 ' c',
 ' d',
 ' g',
 ' m',
 ' t',
 'at',
 'bl',
 'ca', ....

注意像"b"这样包含空格的例子。什么东西?

我认为这是文档中长期存在的错误,欢迎您帮助修复。更正确的说法是:

选项"char_wb"创建字符n-gram,但不会生成跨越单词边界的n-gram。

这一改变似乎是为了确保;请参阅投稿人的评论。当将bigram输出与analyzer='char'的输出进行比较时,这看起来特别尴尬,但当您增加到trigram时,您会看到空白可以开始或结束n-gram,但不能在在中间。这有助于表示特征的单词初始或单词最终性质,而不会捕获有噪声的跨单词字符n-gram。它还确保,与之前的提交不同,所有提取的n-gram都具有相同的长度!

相关内容

  • 没有找到相关文章

最新更新