如何配置spaCy displacy选项以可视化文档的全部Span?
显示所有Span的解决方案
要让displacy显示文档中所有可用的Span,你需要把不同spans_key下的Span全部合并到一个统一的集合里,再让displacy加载这个集合。具体操作如下:
- 遍历
doc.spans中的所有Span集合,把它们合并成一个列表 - 将合并后的列表赋值给一个新的
spans_key(比如all_spans) - 在displacy的options里指定这个新的
spans_key
修改后的完整代码:
import spacy from spacy import displacy from spacy.tokens import Span text = "Welcome to the Bank of China. We are at home." nlp = spacy.blank("en") doc = nlp(text) doc.spans["sc"] = [ Span(doc, 3, 6, "ORG"), Span(doc, 5, 6, "GPE"), ] doc.spans["custom"] = [Span(doc, 9, 10, "home")] # 合并所有spans下的Span all_spans = [] for spans in doc.spans.values(): all_spans.extend(spans) doc.spans["all_spans"] = all_spans # 指定加载合并后的spans集合 options = {"spans_key": "all_spans"} displacy.serve(doc, style="span", options=options)
运行后,displacy就会同时显示sc和custom两个key下的所有Span了。
另外,如果你不想新增spans_key,也可以直接把合并后的Span列表赋值给doc.spans["ents"],然后去掉options里的spans_key配置——因为displacy的span样式默认会优先读取ents这个key(不过这种方式可能会和实体识别的默认ents冲突,更推荐用新增专属key的方式)。
内容的提问来源于stack exchange,提问作者JFerro
相关产品推荐
相关产品推荐

