【问题标题】:How to fix token pattern in scikit-learn?如何修复 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 列表是一个局部变量,每次调用函数时都会产生和消亡。你为什么要费心建立那个清单?它不可能有任何用途。
  • 对不起,我错过了退货声明。

标签: python regex scikit-learn 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']

【讨论】:

  • 那么,不带标点或前导空格的正则表达式是什么?
  • 以上你想做什么?你的预期输出是什么?
  • 我阅读了 sklearn 的指令,也许我可以将 token_pattern 设置为正则表达式。见scikit-learn.org/stable/modules/generated/…
  • 我刚刚回答了这个'如何删除重复项,空字符串'u'', u' ', u' low', u' lower', u'lower', u'lower ', u'lower high', u'lower low'
猜你喜欢
  • 2019-06-07
  • 2017-04-10
  • 2022-06-14
  • 2020-07-04
  • 2019-01-12
  • 2020-10-19
  • 2020-03-19
  • 2013-05-01
  • 2016-08-28
相关资源
最近更新 更多