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

基于SpaCy提取隐私政策含指定关键词完整句子的问题

问题原因

当前代码存在两个核心问题,导致输出不符合预期:

  • 编写的匹配规则仅匹配personal data短语,未覆盖目标需求中的personal information表述
  • 匹配命中后仅截取规则覆盖的token片段,也就是只返回了命中的短语本身,没有返回短语所在的完整句子
修正实现

注意:你提前完成的分句工作已经把每条记录处理为独立完整句,不需要再通过Spacy的sents属性定位句子边界,相比在整段隐私政策中做匹配,运行效率更高。
直接调整匹配逻辑即可,完整可运行代码如下:

from spacy.matcher import Matcher

def match_personal_info_sent(text):
    doc = nlp(text)
    matcher = Matcher(nlp.vocab)
    # 配置匹配规则,大小写不敏感,可按需增删规则
    match_patterns = [
        [{"LOWER": "personal"}, {"LOWER": "information"}],
        [{"LOWER": "personal"}, {"LOWER": "data"}]
    ]
    matcher.add("personal_info", match_patterns)
    matches = matcher(doc)
    
    # 命中规则则返回当前完整句子,未命中返回空值
    return str(doc) if len(matches) > 0 else None

# 应用函数到分句列
df2["matched_sent"] = df2["Sent"].apply(match_personal_info_sent)
# 筛选得到所有包含目标表述的句子
result_df = df2.dropna(subset=["matched_sent"]).reset_index(drop=True)
优化提示
  • 如果仅需要匹配personal information表述,直接删除match_patterns里对应personal data的规则即可
  • 如果需要匹配更多相关表述(比如personal sensitive information、user personal data等),直接在match_patterns列表中新增对应的token匹配规则即可
  • 如果你的分句结果存在重复,可在result_df上调用drop_duplicates()方法做去重处理,避免重复句子输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:51:27