首页 > 解决方案 > 建议的句子拆分代码不适用于一个句子(有人可以复制或解释吗?)

问题描述

只是对 TennisVisuals 在本次讨论中提供的代码的跟进:Python split text on sentence 我尝试将以下段落解析为两个句子,但代码(请参阅引用的链接)不起作用。我想知道其他人是否可以重现该错误。

我得到的错误是解析器在段落的句子列表中给出了 1 个项目的 len 数,就好像句点不被识别为句子分隔符一样。

TwoSentencesParagraph = “部长必须准备一份关于具体计划实施情况的年度报告。该报告包含在社会团结部长的年度管理报告中。” 代码在讨论Python split text on sentence中提供。

它包含以下几行(以及其他几行):

def find_sentences(paragraph):
    end = True
    sentences = []
    while end > -1:
        end = find_sentence_end(paragraph)
        if end > -1:
            sentences.append(paragraph[end:].strip())
            paragraph = paragraph[:end]
    sentences.append(paragraph)
    sentences.reverse()
    return sentences

标签: pythontextsplitsentence

解决方案


您没有将代码放入问题中,但我在链接上接受的答案中尝试了您的输入(我假设这是您使用的代码)。我发现我确实必须添加一行代码和一组括号才能让它运行,但从你的问题来看,听起来程序运行但失败了。当我运行它时,它确实成功了。

答案中列出的代码:

import nltk.data

tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
fp = open("test.txt")
data = fp.read()
print '\n-----\n'.join(tokenizer.tokenize(data))

我运行的代码成功:

import nltk.data
nltk.download('punkt')

tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
fp = open("test.txt")
data = fp.read()
print ('\n-----\n'.join(tokenizer.tokenize(data)))

程序的输出:

The Minister must prepare an annual report on the implementation of specific 
programs.
-----
The report is included in the annual management report of the Ministere de l’Emploi 
et de la Solidarite sociale.

我想提一下,对于这段代码,输入必须在 .txt 文件中,输出将到控制台。

如果我遗漏了什么或我的任何假设是错误的,请告诉我,以便我尝试修复它。在您的答案中添加更多信息并减少对链接的依赖可能会帮助您获得更准确和相关的答案。例如,程序失败的方式有很多,因此解释和/或示例输出和预期输出可能会有很长的路要走。


推荐阅读