【问题标题】:Special characters in countVectorizer Scikit-learncountVectorizer Scikit-learn 中的特殊字符
【发布时间】:2013-04-18 10:39:46
【问题描述】:

考虑这个可运行的例子:

#coding: utf-8
from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer()
corpus = ['öåa hej ho' 'åter aba na', 'äs äp äl']
x = vectorizer.fit_transform(corpus)
l =  vectorizer.get_feature_names()

for u in l:
        print u

输出将是

aba
hej
ho
na
ter

为什么要删除 åäö?请注意,矢量化器 strip_accents=None 是默认设置。如果您能帮我解决这个问题,我将不胜感激。

【问题讨论】:

  • 无法复制。您使用的是哪个版本的 scikit-learn?
  • 我使用 sudo apt-get 下载了 sklearn。你的错误信息是什么?
  • 没有错误信息,它工作得很好。再次,什么是版本? sklearn.__version__.

标签: python machine-learning scikit-learn


【解决方案1】:

这是一种有意降低维度的方法,同时使矢量化器能够容忍作者并不总是与使用重音字符一致的输入。

如果您想禁用该功能,只需将strip_accents=None 传递给CountVectorizer,如documentation of this class 中所述。

>>> from sklearn.feature_extraction.text import CountVectorizer
>>> CountVectorizer(strip_accents='ascii').build_analyzer()(u'\xe9t\xe9')
[u'ete']
>>> CountVectorizer(strip_accents=False).build_analyzer()(u'\xe9t\xe9')
[u'\xe9t\xe9']
>>> CountVectorizer(strip_accents=None).build_analyzer()(u'\xe9t\xe9')
[u'\xe9t\xe9']

【讨论】:

  • 我明白了!我只是认为口音就像 é 和 á 上的东西,但不包括 åäö。谢谢
  • 我本可以将此参数命名为 strip_diacritics,这样会更准确,但大多数用户会理解得更少:)
  • 如果对我有用:让我用当前桅杆上的演示编辑我的答案。
  • 我的意思是:“它对我有用:让我在 scikit-learn 的当前 master 分支上通过演示编辑我的答案。”
猜你喜欢
  • 2020-05-05
  • 2017-02-25
  • 1970-01-01
  • 2020-01-15
  • 2016-09-02
  • 2019-06-08
  • 2016-12-31
  • 2017-08-30
  • 2014-09-16
相关资源
最近更新 更多