[英]Spacy Span as_doc() Loses Components from Original Doc (Benepar)
[英]In spacy: Add a span (doc[a:b]) as entity in a spacy doc (python)
我在整個文檔上使用正則表達式來捕獲此類正則表達式發生的跨度:
import spacy
import re
nlp = spacy.load("en_core_web_sm")
doc = nlp("The United States of America (USA) are commonly known as the United States (U.S. or US) or America.")
expression = r"[Uu](nited|\.?) ?[Ss](tates|\.?)"
for match in re.finditer(expression, doc.text):
start, end = match.span()
span = doc.char_span(start, end)
# This is a Span object or None
# if match doesn't map to valid token sequence
if span is not None:
print("Found match:", span.text)
即使正則表達式匹配的邊界不對應於令牌邊界,也有一種方法可以獲得與文檔上的正則表達式匹配對應的跨度(令牌列表)。 請參閱:如何將匹配擴展為有效的標記序列? 在https://spacy.io/usage/rule-based-matching
到目前為止,一切都很好。
既然我有一系列跨度,我該如何將它們轉換為實體? 我知道實體標尺:EntityRuler 是一個管道組件(另請參見上面的鏈接),但該 entityruler 將模式作為輸入以在文檔中搜索而不是跨度。
如果我想在整個文檔上使用正則表達式來獲取我想轉換為 ents 的集合 os span,下一步是什么? 實體統治者? 如何? 或者是其他東西?
說得更簡單:
nlp = spacy.load("en_core_web_sm")
doc = nlp("The aplicable law is article 102 section b sentence 6 that deals with robery")
我想使用 label “法律”從 doc[5,10] 中生成一個空間實體(實體),以便能夠: A)遍歷文本中的所有法律實體 B)使用可視化工具顯示文檔中包含的不同實體
將 span 作為實體添加到 doc 的最靈活方法是使用Doc.set_ents
:
from spacy.tokens import Span
span = doc.char_span(start, end, label="ENT")
doc.set_ents(entities=[span], default="unmodified")
使用default
選項指定如何設置文檔中的所有其他標記。 默認情況下,其他標記設置為O
,但您可以使用default="unmodified"
使它們保持不變,例如,如果您要增量添加實體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.