You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Spacy中Rule-based Matcher的匹配结果可视化生成HTML页面?

高亮spaCy Rule-based Matcher匹配结果的实现方法

核心逻辑:displacy没有单独针对Matcher匹配结果的渲染配置,你只需要将匹配到的文本片段标注为自定义实体,再调用displacy的实体渲染能力即可实现自定义高亮,无需额外开发前端逻辑。

完整代码示例

import spacy
from spacy.matcher import Matcher
from spacy import displacy

# 加载模型初始化Matcher
nlp = spacy.load("en_core_web_sm")
matcher = Matcher(nlp.vocab)

# 填入你的原有pattern和待处理文本
text = "GDP in developing countries such as Vietnam will continue growing at a high rate." 
pattern = [
    {'DEP':'amod', 'OP':'?'},
    {'POS':'NOUN'},
    {'LOWER': 'such'},
    {'LOWER': 'as'},
    {'POS': 'PROPN'}
]
matcher.add("CUSTOM_PATTERN", [pattern])

# 执行匹配
doc = nlp(text)
matches = matcher(doc)

# 将匹配结果转为spaCy的Span对象,设置为自定义实体
match_spans = [doc[start:end] for match_id, start, end in matches]
# 过滤重叠的匹配结果避免报错
match_spans = spacy.util.filter_spans(match_spans)
doc.set_ents(match_spans, label="MATCHED_RESULT", default="unmodified")

# 方式1:直接启动本地服务预览高亮效果
displacy.serve(
    doc, 
    style="ent", 
    options={
        "ents": ["MATCHED_RESULT"], # 只渲染我们自定义的匹配实体,隐藏spaCy默认识别的实体
        "colors": {"MATCHED_RESULT": "#fff176"} # 自定义高亮颜色
    }
)

# 方式2:生成HTML字符串,嵌入到你自己的网页中
# html_code = displacy.render(
#     doc, 
#     style="ent", 
#     options={"ents": ["MATCHED_RESULT"], "colors": {"MATCHED_RESULT": "#fff176"}}
# )

配置说明

  • 调用displacy.serve后默认在本地127.0.0.1:5000端口启动临时服务,打开浏览器访问对应地址即可看到高亮效果
  • 如果需要调整高亮的样式,可直接修改生成的HTML中.ent类的CSS属性,自定义内边距、圆角、字体样式等效果
  • 若存在多个匹配pattern,可给不同pattern设置不同的实体标签,分别配置不同的高亮颜色

内容的提问来源于stack exchange,提问作者ary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:27:03