Python 如何从Spacy获得更好的引理
“PM”可以表示“PM(时间)”,也可以表示“首相” 我想抓住后者。我希望“PM”的引理返回“首相”。如何使用Python 如何从Spacy获得更好的引理,python,nlp,wordnet,spacy,lemmatization,Python,Nlp,Wordnet,Spacy,Lemmatization,“PM”可以表示“PM(时间)”,也可以表示“首相” 我想抓住后者。我希望“PM”的引理返回“首相”。如何使用spacy 返回意外引理的示例: >>> import spacy >>> #nlp = spacy.load('en') >>> nlp = spacy.load('en_core_web_lg') >>> doc = nlp(u'PM means prime minister') >>> for
spacy
返回意外引理的示例:
>>> import spacy
>>> #nlp = spacy.load('en')
>>> nlp = spacy.load('en_core_web_lg')
>>> doc = nlp(u'PM means prime minister')
>>> for word in doc:
... print(word.text, word.lemma_)
...
PM pm
means mean
prime prime
minister minister
根据doc,spacy使用WordNet作为引理
引理是一个词的非反射形式。英语柠檬化数据取自WordNet
当我尝试在中输入“pm”时,它显示“Prime primer”是引理之一
我在这里遗漏了什么?当我在nltk.wordnet上运行prime的引理时(它也使用它),我得到:
>>[str(lemma.name())表示wn.synset('prime\u president.n.01').lemmas()]['prime\u president','PM','premier']
它使首字母缩略词保持不变,因此您可能需要检查word.lemma(),它将根据上下文为您提供不同的ID?我认为它将通过澄清一些常见的NLP任务来帮助回答您的问题 柠檬化是根据单词的不同屈折变化来查找规范单词的过程。例如,run、runs、ran和running是同一词素的形式:run。如果要将run、runs和run元素化,则输出将被运行。在你的例句中,请注意它是如何将“意思”变为“意思”的 考虑到这一点,您想要执行的任务听起来不像是柠檬化。这可能有助于用一个愚蠢的反例来巩固这一观点:假设引理“pm”的不同变化是什么:pming,pmed,pms?这些都不是真话 听起来您的任务可能更接近于命名实体识别(NER),您也可以在spaCy中完成。要遍历已解析文档中检测到的实体,可以使用
.ents
属性,如下所示:
>>> for ent in doc.ents:
... print(ent, ent.label_)
根据您给出的句子,spacy(2.0.5版)不会检测任何实体。如果您将“PM”替换为“P.M.”,它将作为一个实体检测,但作为GPE检测
最好的做法取决于您的任务,但如果您想要对“PM”实体进行所需的分类,我会查看。如果你想从一大堆文件中找出每一个提到“PM”的地方,.你能回顾一下现有的答案,如果他们回答了你的问题,就批准他们,或者进一步澄清你需要什么吗?非常感谢。