用空间覆盖scikitlearn向量器的标记器

2024-04-16 21:42:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Spacy包实现柠檬化。 这是我的代码:

regexp = re.compile( '(?u)\\b\\w\\w+\\b' )
en_nlp = spacy.load('en')
old_tokenizer = en_nlp.tokenizer
en_nlp.tokenizer = lambda string: old_tokenizer.tokens_from_list(regexp.findall(string))

def custom_tokenizer(document):
    doc_spacy = en_nlp(document)
    return [token.lemma_ for token in doc_spacy]

lemma_tfidfvect = TfidfVectorizer(tokenizer= custom_tokenizer,stop_words = 'english')

但是这个错误消息是在我运行代码时出现的。在

^{pr2}$

我怎样才能解决这个问题?在


Tags: 代码tokenstringdocnlpspacycustomdocument
2条回答

{I>你认为这不是一个好的代码。在

按照警告给出的建议,我认为您可以修改代码替换

en_nlp.tokenizer = lambda string: Doc(en_nlp.vocab, words = regexp.findall(string))

它应该运行良好,没有任何警告(今天在我的机器上就是这样)。在

要定制spaCy的标记器,您需要向它传递一个字典列表,该列表指定需要自定义标记化的单词以及应该将其拆分为的值。以下是来自docs的示例代码:

from spacy.attrs import ORTH, LEMMA
case = [{"don't": [{ORTH: "do"}, {ORTH: "n't", LEMMA: "not"}]}]
tokenizer.add_special_case(case)

如果你这么做是因为你想做一个自定义的引理器,你最好直接创建一个自定义引理列表。您必须修改spaCy本身的语言数据,但格式非常简单:

^{pr2}$

那些文件是英文版的。在

相关问题 更多 >