对不起,我不知道如何纠正这个错误。
'spacy.tokenizer.Tokenizer‘对象没有属性'tokens_from_list'
代码错误在下面。
import spacy
import re
regexp = re.compile('(?u)\\b\\w\\w+\\b')
en_nlp = spacy.load("en_core_web_sm", disable=['parser', 'ner'])
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_vect = CountVectorizer(tokenizer=custom_tokenizer, min_df=5)X_train_lemma = lemma_vect.fit_transform(text_train)
print("X_train_lemma.shape: {}".format(X_train_lemma.shape))
vect = CountVectorizer(min_df=5).fit(text_train)
X_train = vect.transform(text_train)
print("X_train.shape: {}".format(X_train.shape))请帮帮我,浪费大量的时间来解决这个错误。
发布于 2022-02-26 00:12:28
我是否正确地看到您正在使用SpaCy进行标记化,同时也用自定义令牌器覆盖它的令牌器?然后你扔掉了除了代币以外的所有东西?
如果是这样的话,那么您不应该使用SpaCy,而应该自己按模式拆分。不过,我会看看这个模式,看看这是否真的是你想要的。
import re
pattern = re.compile('(?u)\\b\\w\\w+\\b')
# print the substrings that match
print(pattern.findall("Sorry, I don't know how to fix this error."))
> ['Sorry', 'don', 'know', 'how', 'to', 'fix', 'this', 'error']
# print the substrings between matches
print(pattern.split("Sorry, I don't know how to fix this error."))
> ['', ', I ', "'t ", ' ', ' ', ' ', ' ', ' ', '.']通常,如果您所需要的只是令牌化,我建议您不要使用SpaCy,因为它非常慢,而且所做的不仅仅是标记化。
SpaCy的一个替代方案是NLTK。
import nltk
sentence = "Sorry, I don't know how to fix this error."
tokens = nltk.word_tokenize(sentence)
print(tokens)
> ['Sorry', ',', 'I', 'do', "n't", 'know', 'how', 'to', 'fix', 'this', 'error', '.']https://stackoverflow.com/questions/71272910
复制相似问题