python - CountVectorizer 不尊重正则表达式
问题描述
我正在使用以下代码来获取文档术语矩阵:
from nltk.stem import SnowballStemmer
from sklearn.feature_extraction.text import CountVectorizer
stemmer = SnowballStemmer("english", ignore_stopwords=True)
class StemmedCountVectorizer(CountVectorizer):
def build_analyzer(self):
analyzer = super(StemmedCountVectorizer, self).build_analyzer()
return lambda doc: ([stemmer.stem(w) for w in analyzer(doc)])
stemmed_count_vect = StemmedCountVectorizer(stop_words='english',
ngram_range=(1,1),
token_pattern=r'\b\w+\b',
min_df=1,
max_df=0.6)
但是,我仍然收到以下物品:
20009
2000mile
20011
20017
2001â
2007s
20081007
200h
我该如何解决?
解决方案
这种模式token_pattern=r'\b\w+\b'
表示它需要一个或多个\w
单词边界之间的字符类成员。这个字符类
[m] 匹配 Unicode 单词字符;这包括可以成为任何语言中单词一部分的大多数字符,以及数字和下划线。
所以在我看来,你需要更少的包容性字符类(一开始就省略数字)。
推荐阅读
- filepond - Filepond:加载默认图像文件
- odoo - 如何对 Odoo 对象进行继承
- c++ - FindFirstFileW 通配符匹配
- python - Google App Engine 中的 Python 2 标准环境是否即将被弃用/关闭?
- html - 如何将 tabindex 设置为列表项内的按钮?
- c# - 如何使用 Entity Framework Core Database First 从数据库中生成属性类型 bool
- google-colaboratory - Google colab notebook 上的 Corgi 模式是什么?
- react-native - 用户打开通知时导航
- tfs - Azure DevOps 本地成本
- laravel - 在 Laravel 中发送批量电子邮件