Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Spacy获得更好的引理_Python_Nlp_Wordnet_Spacy_Lemmatization - Fatal编程技术网

Python 如何从Spacy获得更好的引理

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

“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 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”的地方,.

你能回顾一下现有的答案,如果他们回答了你的问题,就批准他们,或者进一步澄清你需要什么吗?非常感谢。