【问题标题】:How can I pass a preprocessor to TfidfVectorizer? - sklearn - python如何将预处理器传递给 TfidfVectorizer? - sklearn - 蟒蛇
【发布时间】:2015-08-06 23:22:07
【问题描述】:

如何将预处理器传递给 TfidfVectorizer? 我做了一个函数,它接受一个字符串并返回一个预处理的字符串 然后我将处理器参数设置为该函数“preprocessor = preprocess”,但它不起作用。 找了很多遍,好像都没人用过一样。

我还有一个问题。 它(预处理器参数)是否覆盖了可以使用 stop_words 和小写参数完成的删除停用词和小写?

【问题讨论】:

    标签: python preprocessor scikit-learn


    【解决方案1】:

    您只需定义一个函数,该函数将字符串作为输入并重新调整要预处理的内容。因此,例如,大写字符串的简单函数如下所示:

    def preProcess(s):
        return s.upper()
    

    创建函数后,只需将其传递到 TfidfVectorizer 对象即可。例如:

    from sklearn.feature_extraction.text import TfidfVectorizer
    
    corpus = [
         'This is the first document.',
         'This is the second second document.',
         'And the third one.',
         'Is this the first document?'
         ]
    
    X = TfidfVectorizer(preprocessor=preProcess)
    X.fit(corpus)
    X.get_feature_names()
    

    结果:

    [u'AND', u'DOCUMENT', u'FIRST', u'IS', u'ONE', u'SECOND', u'THE', u'THIRD', u'THIS']
    

    这间接回答了您的后续问题,因为尽管将小写设置为 true,但大写的预处理函数会覆盖它。文档中也提到了这一点:

    预处理器:可调用或无(默认)覆盖预处理 (字符串转换)阶段,同时保留标记化和 n-gram 生成步骤。

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 2019-04-18
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 2017-07-10
      • 2015-06-19
      相关资源
      最近更新 更多