首页 > 解决方案 > Spacy NLP:对于可以是动词的专有名词 - 根据输入顺序的歧义和基于标点符号的拆分

问题描述

我正在使用 spacy NLP。没有解析器可以始终正确地确定模棱两可标记的 PROPN/NOUN/VERB 状态,因为在大多数语言中,拼写相同的单词可能具有不同的含义。

例如,“遭遇”可以是外星人将你带入他们的宇宙飞船的遭遇(名词,一次发生),或者像“遇到世界”这样的“遭遇” --> 与(动词)接触。

Spacy 有时会以不同的方式识别相同的拼写词,即使在类似的情况下也是如此: 即使使用相同格式的句子,spacy 也会改变它识别专有名词与动词的方式

是导致这种情况的标点符号(“=”?)吗?

我希望将标记识别为动词或名词的连续性,但不会改变。我知道使用训练有素的 spacy 数据(使用 en_small 和 en_medium)在 LSTM 的进展过程中不会使用 LSTM,所以我不应该期望 spacy “由于之前在同一个句子中的决定而建立连续性”,但我仍然对同一句话感到惊讶格式,也是相同的内容,spacy 标识不同..

遇见世界。遇见自己”和“遇见世界=遇见自己=>分别解析为动词、名词

无论使用何种标点符号,Encounter 都被标识为

“遇见自我。遇见世界。”

=> 解析为动词,动词。

《遇见自我》

=> 解析为 VERB

标签: nlpspacy

解决方案


确保您使用的是最新版本的 spacy 和最新的模型,例如 en_core_web_lg 。

在我的设置中,我没有收到您描述的错误:

nlp = spacy.load('en_core_web_lg')

doc = nlp("Encounter the world=Encounter the self.")
print([(t, t.pos_) for t in doc])
# [(Encounter, 'VERB'), (the, 'DET'), (world, 'NOUN'), (=, 'PUNCT'), (Encounter, 'VERB'), (the, 'DET'), (self, 'NOUN'), (., 'PUNCT')]

我的 spacy 版本:

print(spacy.__version__)
# 2.2.1

推荐阅读