如何修复 scikit-learn 中的令牌模式?
Posted
技术标签:
【中文标题】如何修复 scikit-learn 中的令牌模式?【英文标题】:How to fix token pattern in scikit-learn? 【发布时间】:2015-04-12 16:05:22 【问题描述】:我正在使用 scikit-learn 中的 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 = TfidfVectorizer(tokenizer=tokenize, lowercase=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'
我该如何解决?谢谢。
【问题讨论】:
输入是来自stocktwits.com的一堆推文,其中包含很多俚语stems
函数中的 tokenize
列表是一个局部变量,每次调用函数时都会产生和消亡。你为什么要费心建立那个清单?它不可能有任何用途。
对不起,我错过了退货声明。
【参考方案1】:
你可以像下面这样,
>>> 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']
【讨论】:
那么,u'', u' ', u' low', u' lower', u'lower', u'lower ', u'lower high', u'lower low'
以上是关于如何修复 scikit-learn 中的令牌模式?的主要内容,如果未能解决你的问题,请参考以下文章
执行 scikit-learn 剪影分数时如何修复内存错误?