Scikit learn 计数向量器上的柠檬化&x27;不要删除停止词
我试图从短剧学习中向CountVectorizer添加柠檬化,如下所示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
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不在标点符号中)]
。你怎么认为?