【发布时间】:2014-10-10 21:05:42
【问题描述】:
我试图将 nltk 书中的一个示例用于 scikit-learn 的 CountVectorizer 中的正则表达式模式。我看到了简单的正则表达式的例子,但没有这样的例子:
pattern = r''' (?x) # set flag to allow verbose regexps
([A-Z]\.)+ # abbreviations (e.g. U.S.A.)
| \w+(-\w+)* # words with optional internal hyphens
| \$?\d+(\.\d+)?%? # currency & percentages
| \.\.\. # ellipses '''
text = 'I love N.Y.C. 100% even with all of its traffic-ridden streets...'
vectorizer = CountVectorizer(stop_words='english',token_pattern=pattern)
analyze = vectorizer.build_analyzer()
analyze(text)
这会产生:
[(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'', u''),
(u'', u'-ridden', u''),
(u'', u'', u''),
(u'', u'', u'')]
使用 nltk,我得到了完全不同的东西:
nltk.regexp_tokenize(text,pattern)
['我', '爱', '纽约市', '100', '甚至', '和', '全部', '的', '它的', '交通拥堵', “街道”, '...']
有没有办法让 skl CountVectorizer 输出相同的东西?我希望使用在同一个函数调用中包含的其他一些方便的功能。
【问题讨论】:
标签: regex scikit-learn nltk