spacy-lookup标点干扰

问题描述 投票:0回答:1

Spacy-lookup是非常大的词典的实体匹配器,它使用FlashText模块。在下面的第二种情况下,标点符号似乎阻止了它与实体的匹配。

有人知道为什么会发生这种情况以及如何解决吗?

import spacy
from spacy_lookup import Entity

nlp = spacy.load("en_core_web_sm", disable = ['NER'])
entity = Entity(keywords_list=['vitamin D'])
nlp.add_pipe(entity, last=True)

#works for this sentence:
doc = nlp("vitamin D is contained in this.")
print([token.text for token in doc if token._.is_entity])
#['vitamin D']

#does not work for this sentence:
doc = nlp("This contains vitamin D.")
print([token.text for token in doc if token._.is_entity])
#[]

nlp spacy text-processing
1个回答
0
投票

解决方案非常简单,在之后放置space就像这样:

>>> doc = nlp("This contains vitamin D .") #<-- space after D
>>> print([token.text for token in doc if token._.is_entity])
['vitamin D']

为什么会发生?仅仅是因为spaCy认为“ D”。整体标记与“ D”相同。名称为“ D. Cooper”的用户将被视为整个令牌!

© www.soinside.com 2019 - 2024. All rights reserved.