Python 如何修复scikit学习中的令牌模式?

Python 如何修复scikit学习中的令牌模式?,python,regex,scikit-learn,tokenize,Python,Regex,Scikit Learn,Tokenize,我正在使用scikit的TfidfVectorizer学习提取特征, 设置如下: def tokenize(text): tokens = nltk.word_tokenize(text) stems = [] for token in tokens: token = re.sub("[^a-zA-Z]","", token) stems.append(EnglishStemmer().stem(token)) return ste

我正在使用scikit的TfidfVectorizer学习提取特征, 设置如下:

def tokenize(text):
    tokens = nltk.word_tokenize(text)
    stems = []
    for token in tokens:
        token = re.sub("[^a-zA-Z]","", token)
        stems.append(EnglishStemmer().stem(token))
    return stems
vectorizer=TfidfVectorizertokenizer=tokenize,小写=True,stop_words='english'

将训练集输入矢量器后,我调用

vectorizer.get_feature_names()
输出包含一些带空格的重复单词:例如

u'', u' ', u' low', u' lower', u'lower', u'lower ', u'lower high', u'lower low'
可接受的输出应为:

u'low', u'lower', u'lower high', u'lower low'

我怎样才能解决这个问题?谢谢。

您可以像下面这样做

>>> l = ['lower low', 'lower high','lower ', ' lower', u'lower', ' ', '', 'low']
>>> list(set(i.strip() for i in l if i!=' ' and i))
['lower', 'lower low', 'lower high', 'low']

输入是stocktwits.com上的一组tweet,其中包含大量俚语。tokenize函数中的词干列表是一个局部变量,每次调用该函数都会产生和消失。你为什么要费心去建立这份清单?它不可能有任何用途。对不起,我错过了返回语句。那么,有无标点符号或前导空格的正则表达式是什么?您想对上面的语句做什么?你期望的输出是什么?我读了sklearn的指令,也许我可以用正则表达式设置token_模式。看,我刚才回答了这个问题“如何删除dulicate,u,u”,u'low,u'lower,u'lower,u'lower,u'lower,u'lower high,u'lower low中的空字符串”