You need to enable JavaScript to run this app. 如何使用SpaCy为SpeechRecognition识别的字符串构建匹配模式提取信息
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SpaCy为SpeechRecognition识别的字符串构建匹配模式提取信息

解决方案

核心思路

你当前遇到的多词提取失败问题,根源是DependencyMatcher默认基于单个token匹配,没有把你预置的固定多词短语(比如right arm、large penetration)识别为独立匹配单元。调整方案用PhraseMatcher + DependencyMatcher组合实现:PhraseMatcher专门匹配你有完整词表的多词字段(攻击类型、击中部位),DependencyMatcher负责匹配句子主干的结构类字段(敌人标识、vulnerability数值、伤害数值),适配你固定句式的输入场景。

具体实现步骤

第一步:预处理多词短语匹配

先把你预置的身体部位、攻击类型词表喂给PhraseMatcher,匹配到的多词组合会被标记为自定义实体,避免被拆分为单个token:

from spacy.matcher import PhraseMatcher

# 初始化PhraseMatcher
phrase_matcher = PhraseMatcher(nlp.vocab, attr="LOWER")
# 把词表转成doc格式喂给匹配器
body_patterns = [nlp.make_doc(text) for text in body_list_words]
attack_patterns = [nlp.make_doc(text) for text in attack_type_words]
phrase_matcher.add("BODY_PART", body_patterns)
phrase_matcher.add("ATTACK_TYPE", attack_patterns)

# 匹配多词短语并添加为doc的实体
matches = phrase_matcher(doc)
spans = []
for match_id, start, end in matches:
    span = doc[start:end]
    span.label_ = nlp.vocab.strings[match_id]
    spans.append(span)
# 去重重叠匹配
doc.set_ents(spans, default="unmodified")

第二步:调整DependencyMatcher匹配规则

原来的位置、攻击类型匹配规则,改为直接匹配你刚打好的实体标签,就能直接拿到完整多词短语:

# 击中部位匹配规则改为抓实体标签
{"LEFT_ID": "anchor_verbo",
 "REL_OP": ">>",
 "RIGHT_ID": "location",
 "RIGHT_ATTRS": {"ENT_TYPE": "BODY_PART"}},

# 攻击类型匹配规则改为抓实体标签
{"LEFT_ID": "attack",
 "REL_OP": ">>",
 "RIGHT_ID": "type_attack",
 "RIGHT_ATTRS": {"ENT_TYPE": "ATTACK_TYPE"}},

第三步:处理敌人标识的多词匹配

敌人标识(如zombie one)没有固定词表,你可以在抓到type_enemy的token后,直接提取该token及其右侧相邻的序号token拼接:

# 拿到type_enemy的token位置后
enemy_token = doc[token_ids[2]]
# 拼接后面的数字/序号词
enemy_name = enemy_token.text
if enemy_token.i + 1 < len(doc) and doc[enemy_token.i + 1].like_num:
    enemy_name += " " + doc[enemy_token.i + 1].text
# 转成zombie_1格式
enemy_id = enemy_name.lower().replace(" ", "_")

适配意大利语的注意点

  • 加载意大利语模型it_core_news_sm替换英语模型
  • PhraseMatcher的attr可以根据需求调整为LEMMA适配意大利语的词形变化
  • 依赖关系标签和意大利语模型保持一致即可

内容的提问来源于stack exchange,提问作者Simone De Bellis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 15:12:02