我想将一个大语料库(.txt)分割成句子,其中包含一个自定义规则,即使用Spacy3.1的{SENT}。
我的主要问题是,我想“禁用”使用spacy的预处理空间模型(即en_core_web_lg )中的分段,但保留所有其他组件(标记化、语法解析器、ner等)。我一直在使用大型模型(我看到,根据所使用的模型,分段可能会有不同的行为)。
是否有一种方法可以重写现有规则,并且在维护管道的其余部分时只使用{}作为分隔符?如果我在解析器:nlp.add_pipe(set_custom_segmentation, before='parser')之前将自定义分段添加到管道中,解析器会根据模型提供的分隔符重新编排句子吗?
我已经在没有运气的情况下尝试了以下几种方法:
@Language.component("segm")
def set_custom_segmentation(doc):
for token in doc[:-1]:
if token.text == '{SENT}':
doc[token.i+1].is_sent_start = False
return doc
nlp.add_pipe('segm', before='parser')到目前为止,我已经尝试过但没有奏效的解决方案:
re.split("{SENT}")
split("{SENT}")和split("{SENT}")的答案发布于 2022-04-13 08:04:15
如果不希望解析器添加额外的句子边界,还必须为其余的标记设置token.is_sent_start = False。
https://stackoverflow.com/questions/71853821
复制相似问题