Scikit learn 计数向量器上的柠檬化&x27;不要删除停止词

Scikit learn 计数向量器上的柠檬化&x27;不要删除停止词,scikit-learn,nltk,stop-words,lemmatization,countvectorizer,Scikit Learn,Nltk,Stop Words,Lemmatization,Countvectorizer,我试图从短剧学习中向CountVectorizer添加柠檬化,如下所示 import nltk from pattern.es import lemma from nltk import word_tokenize from nltk.corpus import stopwords from sklearn.feature_extraction.text import CountVectorizer from nltk.stem import WordNetLemmatizer class L

我试图从短剧学习中向CountVectorizer添加柠檬化,如下所示

import nltk
from pattern.es import lemma
from nltk import word_tokenize
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import CountVectorizer
from nltk.stem import WordNetLemmatizer

class LemmaTokenizer(object):
    def __call__(self, text):
        return [lemma(t) for t in word_tokenize(text)]

vectorizer = CountVectorizer(stop_words=stopwords.words('spanish'),tokenizer=LemmaTokenizer())

sentence = ["EVOLUCIÓN de los sucesos y la EXPANSIÓN, ellos juegan y yo les dije lo que hago","hola, qué tal vas?"]

vectorizer.fit_transform(sentence)
这是输出:

[u',', u'?', u'car', u'decir', u'der', u'evoluci\xf3n', u'expansi\xf3n', u'hacer', u'holar', u'ir', u'jugar', u'lar', u'ler', u'sucesos', u'tal', u'yar']
已更新

这是出现的停止词,并已进行了语法化:

u'lar',u'ler',u'der'


它对所有单词进行lemmatice,不删除Stopwords。那么,有什么想法吗?

那是因为柠檬化是在停止删除单词之前完成的。然后,在
stopwords.words('spanish')
提供的stopwords集中找不到柠檬化的stopwords

有关计数器矢量器的完整工作顺序,请参阅。关于TfidfVectorizer,但顺序相同。在这个答案中,步骤3是柠檬化,步骤4是停止字删除

因此,现在要删除stopwords,您有两个选项:

1) 将stopwords集本身进行线性化,然后将其传递给CountVectorizer中的
stop_words
param

my_stop_words = [lemma(t) for t in stopwords.words('spanish')]
vectorizer = CountVectorizer(stop_words=my_stop_words, 
                             tokenizer=LemmaTokenizer())
2) 在
引理词发生器
本身中包括停止词删除

class LemmaTokenizer(object):
    def __call__(self, text):
        return [lemma(t) for t in word_tokenize(text) if t not in stopwords.words('spanish')]

尝试这些方法,如果不起作用,请发表评论。

您没有在这里指定
计数向量器
中的
LemmaTokenizer
。在这段代码中,我没有得到与你相同的输出。对不起,我的错误。但是如果你复制代码,它就不起作用了。我只是没有删除Stopwords。再次,我尝试了新代码,但在输出中没有找到任何Stopwords中存在的停止词。words('spanish')和输出都有。你能在输出中指出哪个停止字没有被删除吗?谢谢。谢谢。我试过这样做:
tokenizer=lambda text:[word中t的引理(t)_tokenize(text)if(t不在stopwords.words(‘西班牙语’)中)和(t不在标点符号中)]
。你怎么认为?