gpt4 book ai didi

python-3.x - 使用 spacy 分词器拆分句子

转载 作者:行者123 更新时间:2023-12-03 23:50:39 36 4
gpt4 key购买 nike

我正在使用 spaCy 的句子分割器来拆分句子。

from spacy.lang.en import English
nlp = English()
sbd = nlp.create_pipe('sentencizer')
nlp.add_pipe(sbd)

text="Please read the analysis. (You'll be amazed.)"
doc = nlp(text)

sents_list = []
for sent in doc.sents:
sents_list.append(sent.text)

print(sents_list)
print([token.text for token in doc])

输出
['Please read the analysis. (', 
"You'll be amazed.)"]

['Please', 'read', 'the', 'analysis', '.', '(', 'You', "'ll", 'be',
'amazed', '.', ')']

标记化正确完成,但我不确定它不会将第二句与 ( 并以此作为第一句的结尾。

最佳答案

我已经使用 en_core_web_lg 和 en_core_web_sm 模型测试了以下代码,sm 模型的性能类似于使用 sentencizer。 (lg 模型会影响性能)。

低于自定义边界仅适用于 sm 模型,并与 lg 模型表现不同的拆分。

nlp=spacy.load('en_core_web_sm')
def set_custom_boundaries(doc):
for token in doc[:-1]:
if token.text == ".(" or token.text == ").":
doc[token.i+1].is_sent_start = True
elif token.text == "Rs." or token.text == ")":
doc[token.i+1].is_sent_start = False
return doc

nlp.add_pipe(set_custom_boundaries, before="parser")
doc = nlp(text)

for sent in doc.sents:
print(sent.text)

关于python-3.x - 使用 spacy 分词器拆分句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58516766/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com