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

如何在Spacy中标记特定符号'/'之后的全部文本?

解决Spacy中标记包含'/'的目标文本问题

你之前的规则仅针对单个token的lower属性匹配,没法覆盖跨多个token的目标文本,得调整为匹配多token序列的规则,同时覆盖两种分词场景:

方案1:使用Spacy Matcher实现

定义匹配两种常见场景的pattern:

  • 场景1:token本身包含/(比如word/),后面跟任意数量的文本token
  • 场景2:独立的字母token + 独立的/ token + 任意数量的文本token

代码示例:

import spacy
from spacy.matcher import Matcher

nlp = spacy.load("en_core_web_sm")
matcher = Matcher(nlp.vocab)

# 定义匹配模式
patterns = [
    # 匹配带/的单个token + 后续所有文本token
    [{"TEXT": {"REGEX": r".*/.*"}}, {"IS_ALPHA": True, "OP": "*"}],
    # 匹配字母token + / token + 后续所有文本token
    [{"IS_ALPHA": True}, {"TEXT": "/"}, {"IS_ALPHA": True, "OP": "*"}]
]

matcher.add("TARGET_PATTERN", patterns)

# 测试示例1
doc1 = nlp("This is word/ year")
matches = matcher(doc1)
for match_id, start, end in matches:
    span = doc1[start:end]
    print(f"标记结果:{span.text}")  # 输出:word/ year

# 测试示例2
doc2 = nlp("This is subword / year")
matches = matcher(doc2)
for match_id, start, end in matches:
    span = doc2[start:end]
    print(f"标记结果:{span.text}")  # 输出:subword / year

方案2:使用EntityRuler直接标记为实体

如果需要将目标文本直接标记为自定义实体,用EntityRuler更方便:

import spacy
from spacy.pipeline import EntityRuler

nlp = spacy.load("en_core_web_sm")
ruler = EntityRuler(nlp, overwrite_ents=True)

patterns = [
    {
        "label": "TARGET_CONTENT",
        "pattern": [
            {"IS_ALPHA": True},
            {"TEXT": "/"},
            {"IS_ALPHA": True, "OP": "*"}
        ]
    },
    {
        "label": "TARGET_CONTENT",
        "pattern": [
            {"TEXT": {"REGEX": r".*/.*"}},
            {"IS_ALPHA": True, "OP": "*"}
        ]
    }
]

ruler.add_patterns(patterns)
nlp.add_pipe(ruler)

# 测试
doc = nlp("This is subword / year")
for ent in doc.ents:
    print(f"实体:{ent.text},标签:{ent.label_}")  # 输出:subword / year,TARGET_CONTENT

关键说明

  • 之前的规则仅针对单个token,而你需要匹配跨token的文本段,所以必须用多token序列的匹配模式
  • OP: "*"表示该位置的token可以出现0次或多次,确保能匹配/之后的所有文本
  • 正则.*\/.*用于匹配本身包含/的单个token,覆盖类似word/这种分词结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:53:28