如果我有一些包含短语“ 1:1”的文本。如何获得CountVectorizer识别为令牌?

text = ["first ques # 1:1 on stackoverflow", "please help"]
vec = CountVectorizer()
vec.fit_transform(text)

vec.get_feature_names()

最佳答案

您可以使用自定义的标记器。对于简单的情况,更换

vec = CountVectorizer()


通过

vec = CountVectorizer(tokenizer=lambda s: s.split())


会做。进行此修改后,您的代码将返回:

[u'#', u'1:1', u'first', u'help', u'on', u'please', u'ques', u'stackoverflow']


希望这一建议能使您走上正确的道路,但是请注意,这种解决方法在较复杂的情况下(例如,如果您的文本带有标点符号)将无法正常工作。

要处理标点符号,可以向CountVectorizer传递一个令牌模式,如下所示:

text = [u"first ques... # 1:1, on stackoverflow", u"please, help!"]
vec = CountVectorizer(token_pattern=u'\w:?\w+')


输出:

[u'1:1', u'first', u'help', u'on', u'please', u'ques', u'stackoverflow']

关于python - 获取CountVectorizer包含“1:1”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42877605/

10-12 13:54