簡體   English   中英

Spacy NER:提取特定單詞前的所有人

[英]Spacy NER: Extract all Persons before a specific word

我知道我可以使用名為 recognition 的 spacy 實體來提取文本中的人物。 但我只想提取“問”這個詞之前的人或人。

我應該將 Matcher 與 NER 一起使用嗎? 我是 Spacy 的新手,如果問題很簡單,我深表歉意

所需 Output:
路易斯·吳

當前Output:
路易斯·吳
藍品敏


import spacy

nlp = spacy.load("en_core_web_trf")


doc = nlp (
    "Mr Louis Ng asked what kind of additional support can we give to sectors and businesses where the human interaction cannot be mechanised. Mr Lam Pin Min replied that businesses could hire extra workers in such cases."
    )

for ent in doc.ents:
    # Print the entity text and label
    print(ent.text, ent.label_)

您可以使用Matcher查找特定單詞之前的PERSON實體:

pattern = [{"ENT_TYPE": "PERSON"}, {"ORTH": "asked"}]

因為每個字典都對應一個標記,所以這個模式只會匹配實體的最后一個詞(“Ng”)。 您可以讓第一個 dict 與{"ENT_TYPE": "PERSON", "OP": "+"}匹配多個標記,但這會冒着在“Before Ms”之類的示例中連續匹配兩個人實體的風險X 與 Y 女士交談,Z 女士詢問……”。

為了能夠更輕松地使用Matcher單個實體,您可以將組件merge_entities添加到管道的末尾( https://spacy.io/api/pipeline-functions#merge_entities ),它將每個實體合並到一個單個令牌。 然后這個模式將匹配“Louis Ng”作為一個標記。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM