python - 建议的句子拆分代码不适用于一个句子(有人可以复制或解释吗?)
问题描述
只是对 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
解决方案
您没有将代码放入问题中,但我在链接上接受的答案中尝试了您的输入(我假设这是您使用的代码)。我发现我确实必须添加一行代码和一组括号才能让它运行,但从你的问题来看,听起来程序运行但失败了。当我运行它时,它确实成功了。
答案中列出的代码:
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 文件中,输出将到控制台。
如果我遗漏了什么或我的任何假设是错误的,请告诉我,以便我尝试修复它。在您的答案中添加更多信息并减少对链接的依赖可能会帮助您获得更准确和相关的答案。例如,程序失败的方式有很多,因此解释和/或示例输出和预期输出可能会有很长的路要走。
推荐阅读
- laravel - 如何增加 Laravel Sanctum 令牌长度
- flutter - 如何为下拉按钮添加标签文本
- swift - 在结构扩展中快速加载 JSON
- quarkus - 由于 reactive.url 不正确,无法使用 quarkus-hibernate-reactive 连接到 SQL Server
- python - 如何使用 python spektral 库 DisjointLoader 来馈送 FC 网络而不是 Graph Isomorphism Network?
- java - 在 WebServer 启动前触发 ApplicationListener
- oracle - 如何在 liquibase OracleDatabase 中添加保留关键字?
- time - 如何从幻灯片数据/子集数据创建时间序列图
- ubuntu - 如何在 Ubuntu 中打开新终端并从当前终端运行命令?
- reactjs - React Tree Org - 角色 ID