在Spacy中,如何匹配一个特定的实体类型,就在一个特定的单词之后,不管它们之间有什么关系?

2024-09-21 05:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用以下模式匹配Spacy中的文本:

  • 如果有单词“dénomination”或“面额”,我想匹配下一个'MISC'实体(实体名称来自Spacy),无论两者之间有什么。在

例如:

text=" Some texte about a company, company number: 254455, Dénomination\n (entire name): NAME_OF_THE_COMPANY , \n, some other informations of the... "

我想提取“NAME_OF_COMPANY”,它被Spacy识别为实体MISC

要获得具有间距的实体,我需要:

^{pr2}$

但后来我尝试了许多模式,如下图所示,但没有成功:

    matcher=Matcher(nlp.vocab)
    pattern = [{"REGEX" : "[D|d][é|e]nomination\s{0,}"},{"REGEX" : "[A-Za-z\n\r\s:)]{1,}"},{"ENT_TYPE" : "MISC"}]
    matcher.add('company_name', None, pattern)
    matches = matcher(doc)

Tags: ofname文本实体spacymatcher单词company
1条回答
网友
1楼 · 发布于 2024-09-21 05:27:33

请记住以下几点:

  • 模式中的每个dict对应于一个没有空格的标记。

  • 您可以用{"OP": "*"}匹配任意数量的中间令牌。

  • 使用validate=TrueMatcher()来获得更多的反馈是很有用的。

我觉得你的模式可能更像:

pattern = [{"LOWER": {"REGEX" : "d[é|e]nomination"}}, {"OP": "*"}, {"ENT_TYPE": "MISC"}]

Matcher会查看整个文档,因此如果您有一个长文档,则不仅提供下一个MISC,还将提供一个匹配的“mination”,后面跟着每个MISC。你必须从结果中分别选择最短的匹配。在

相关问题 更多 >

    热门问题