使用nltk和python将很长的文本拆分为段落

时间:2019-02-27 13:30:00

标签: python regex nltk

我想获取一个非常大的文本文件并将其拆分为多个段落。文本文件可以有多个换行符来分隔段落。我很El Quijote。我想用nltk库来做,因为以后我可能会用它。

使用一点正则表达式,在python中,我可以做到这一点,并且可以正常工作。基本上,我是通过以下方式将文本分成几段,我想知道是否有一种更简单,更有效的方法:

cleared_txt = re.sub('\n{2,}', '\n\n', txt)
paragraphs = cleared_txt.split('\n\n')

以下代码创建一个文件,每个段落只有一个换行符,并修复了原始文件结构。

使用nltk可以做到这一点吗?

book_file = os.path.join(os.getcwd(), 'data/el_quijote.txt')
book_fixed = os.path.join(os.getcwd(), 'data/el_quijote_fixed.txt')
with open(book_file, encoding='utf-8') as f:
    txt = f.read()
cleared_txt = re.sub('\n{2,}', '\n\n', txt)
with open(book_fixed, "w", encoding='utf-8') as f2:
    f2.write(cleared_txt)
paragraphs = cleared_txt.split('\n\n')
count_blank = 0
count_text = 0
for p in paragraphs:
    p = p.strip()
    if p == "":
        count_blank += 1
    elif len(p) > 0:
        count_text += 1
print("Total paragraphs: {0},\ntotal blank lines: {1},\ntotal non empty blocks: {2}".format(len(paragraphs), count_blank, count_text))

代码按预期工作,并显示以下输出:

Total paragraphs: 5255,
total blank lines: 0,
total non empty blocks: 5255

这是与这些问题类似的问题,但是没有一个人有具体的答案。

How to split Text into paragraphs using NLTK nltk.tokenize.texttiling?

Split Text into paragraphs NLTK - usage of nltk.tokenize.texttiling?

0 个答案:

没有答案