这是我的代码
spacy==3.6.1
import spacy
try:
nlp = spacy.load("en_core_web_sm")
except Exception as e:
print(f"An error occurred: {str(e)}")
print(
print(
"SpaCy model not found. Please run `python -m spacy download en_core_web_sm`"
)
)
doc = nlp("Buy groceries.")
for sent in doc.sents:
print(f"Sentence: {sent.text}")
for token in sent:
print(f"{token.text}: {token.pos_}")
它将
Buy
标记为名词。
我知道这叫做歧义。我如何使任何不明确的动词/名词都偏重于动词?
尤其是如果它后面跟着另一个名词并且前面是 PUNC 或位于句子开头。
我在使用小型 spacy 模型时遇到了这种歧义,我建议您使用大型模型“en_core_web_lg”,因为它们更强大,并且会将 POS 标记“购买”作为动词。但是,如果您仍然想使用“en_core_web_sm”,并且您的文本包含指令结构(例如,买这个,做这个等),我建议您将输入句子更改为小写。
doc = nlp("Buy groceries.".lower())
警告:这种小写黑客可能并不适用于所有情况。