【发布时间】:2019-08-13 12:35:25
【问题描述】:
我正在尝试创建一个匹配器,用于在文本中查找否定的自定义实体。它适用于跨越单个令牌的实体,但我在尝试捕获跨越多个令牌的实体时遇到了麻烦。
例如,假设我的自定义实体是动物(并标记为 token.ent_type_ = "animal")
["cat", "dog", "artic fox"](注意最后一个实体有两个词)。
现在我想在文本中找到那些被否定的实体,所以我可以使用以下模式创建一个简单的匹配器:
[{'lower': 'no'}, {'ENT_TYPE': {'REGEX': 'animal', 'OP': '+'}}]
例如,我有以下文字:
There is no cat in the house and no artic fox in the basement
我可以成功捕获no cat 和no artic,但是最后一个匹配不正确,因为完整匹配应该是no artic fox。这是由于模式中的 OP: '+' 匹配单个自定义实体而不是两个。如何修改模式以优先考虑较长的匹配项而不是较短的匹配项?
【问题讨论】:
标签: python-3.x nlp spacy