我正在尝试将this文档拆分为多个段落。具体来说,只要有换行符(<br>
)
这是我正在使用的代码,但未产生希望的结果
nlp = spacy.load("en_core_web_lg")
def set_custom_boundaries(doc):
for token in doc[:-1]:
if token.text == "<br>":
doc[token.i+1].is_sent_start = True
return doc
nlp.add_pipe(set_custom_boundaries, before="parser")
doc = nlp(text)
print([sent.text for sent in doc.sents])
使用NLTK's TextTilingTokenizer可以实现类似的解决方案,但想检查Spacy中是否存在相似的事物
您快到了,但是问题是默认的Tokenizer在''上分开,因此条件token.text == "<br>"
永远不会为真。我要在<br>
之前和之后添加空间。例如:
import spacy
from spacy.symbols import ORTH
def set_custom_boundaries(doc):
for token in doc[:-1]:
if token.text == "<br>":
doc[token.i+1].is_sent_start = True
return doc
nlp = spacy.load("en_core_web_sm")
text = "the quick brown fox<br>jumps over the lazy dog"
text = text.replace('<br>', ' <br> ')
special_case = [{ORTH: "<br>"}]
nlp.tokenizer.add_special_case("<br>", special_case)
nlp.add_pipe(set_custom_boundaries, first=True)
doc = nlp(text)
print([sent.text for sent in doc.sents])
也请看一下此PR,在将其合并到母版后,将不再需要在空格中换行。