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

如何用Python提取匹配特定词序列的句子分句?

多关键词(含双字词/短语)分句提取解决方案

嘿,我来帮你搞定这个从大量句子里提取匹配特定单词组合的问题!原来的代码只能匹配单个单字词,咱们把它升级成支持**任意长度关键词(单字、双字词、多字短语)**的版本,直接看下面的方案:

核心思路

  1. 用正则表达式的|运算符把所有要匹配的关键词组合成一个匹配模式,同时用re.escape()处理关键词里的特殊字符(避免正则语法冲突)
  2. 针对中文分句的特点,用[^。!?]*匹配关键词前后的内容,确保提取的是完整的分句片段(以中文常用标点分隔)
  3. 用Pandas的str.extractall()或str.findall()批量提取所有匹配的片段

完整代码实现

import pandas as pd
import re

# 读取数据
df = pd.read_csv('text.csv')

# 定义要匹配的关键词组合:支持单字、双字词、多字短语
identifiers = ('什么', '如何解决', '问题根源', '处理方法')

# 构建正则匹配模式:转义关键词+匹配前后分句内容
# 解释:[^。!?]* 匹配任意非中文标点的字符,确保提取完整分句片段
pattern = r'([^。!?]*{}[^。!?]*)'.format('|'.join(map(re.escape, identifiers)))

# 提取所有匹配的分句片段,生成新的结果列
df['matched_fragments'] = df['sentence'].str.findall(pattern)

# 如果需要把每个匹配的片段拆成单独行(方便后续分析),可以用explode
df_exploded = df.explode('matched_fragments').dropna(subset=['matched_fragments'])

# 查看结果
print(df_exploded[['sentence', 'matched_fragments']])

关键细节说明

  • 关键词转义:用map(re.escape, identifiers)处理每个关键词,比如如果关键词里有+``.这类正则特殊字符,会自动转义,避免匹配出错
  • 分句匹配逻辑:[^。!?]*会匹配关键词前后所有非分句标点的内容,确保提取的是一个完整的语义片段,而不是零散的字符
  • 结果处理:str.findall()会返回每行所有匹配的片段列表,explode()可以把列表拆成单独的行,方便后续统计或分析

示例效果

假设你的text.csv里有这样的句子:

用户问如何解决系统卡顿的问题,什么原因导致的?需要快速找到问题根源。

运行代码后,matched_fragments列会提取出:

  • "如何解决系统卡顿的问题"
  • "什么原因导致的"
  • "找到问题根源"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:30:16