在spaCy 3.6中能否结合统计与规则实现分句?
spaCy 3.6 分句方案(兼顾标点与换行符)
核心逻辑
先借助spaCy统计模型的自带分句能力处理标点分句,再基于换行符二次拆分,同时过滤空内容避免生成空句。
实现代码
import spacy # 加载spaCy统计模型(以英文模型为例,其他语言模型同理) nlp = spacy.load("en_core_web_sm") # 仅启用分句相关组件,提升处理效率 nlp.select_pipes(enable=["senter"]) def split_sentences(raw_text): # 第一步:用spaCy统计组件识别标点分句 doc = nlp(raw_text) spacy_split = [sent.text.strip() for sent in doc.sents] final_sentences = [] # 第二步:对每个分句按换行符拆分,过滤空句 for segment in spacy_split: line_splits = [line.strip() for line in segment.split('\n') if line.strip()] final_sentences.extend(line_splits) return final_sentences # 示例文档测试 sample_doc = """Hello there. This is the first sentence. This is the second sentence. This is the third sentence. This is the fourth sentence.""" result = split_sentences(sample_doc) print(len(result)) # 输出:4 print(result)
关键细节
- 依赖spaCy的
senter统计组件,无需手动编写标点分句规则,适配多数场景。 - 拆分换行符时通过
strip()和空值判断,彻底过滤空白行、纯空格内容,避免生成空句。 - 保留原文本的语义逻辑:先按标点拆分完整语义块,再按换行拆分同一语义块内的多行内容。
内容的提问来源于stack exchange,提问作者ShastaBiz
相关产品推荐
相关产品推荐

