使用SpaCy的基于规则的模式匹配器和'+'操作符,我得到了可能的最长跨度(以及其中的所有跨度)。我想知道是否有办法只返回最长的跨度。你知道吗
import spacy
nlp = spacy.load('en_core_web_sm')
from spacy.matcher import Matcher
matcher = Matcher(nlp.vocab)
doc = nlp("I have a BA in English Literature. I received a certificate in Computational Linguistics. I have a Computer Science BA.")
matcher.add("education", None,
[{'TAG': 'NN'}, {'POS': 'ADP'}, {'POS': 'PROPN', 'OP': '+'}],
[{'POS': 'PROPN', 'OP': '+'}, {"POS": "NOUN"}])
matches = matcher(doc)
for match_id, start, end in matches:
# Get the matched span
matched_span = doc[start:end]
print(matched_span.text)
输出为:
英语文学学士
英国文学学士
计算机专业证书
计算语言学证书
科学学士
计算机科学学士
有没有简单的方法让它返回“最贪婪”的跨度?(例如“英语文学学士”、“计算语言学证书”和“计算机科学学士”?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐