我有一个文本文件的内容如下所示。我需要识别段落标题,并从每个提取的段落标题创建csv文件列标题。文本文件看起来像下面的文本块。我在考虑使用这样的规则:
if (capitalized) and heading_length <50:
return heading_text在NLTK或NLP中是否有什么东西可以帮助我们做到这一点,而不只是检查大写字母和单词长度呢?
这是一场古老的卡格尔比赛
职责
311名主任负责信息技术机构311呼叫中心的成功运作和扩大,该中心负责接听选民关于城市各部门提供的全城市服务的呼叫;努力确保高效率和有效地解决可能出现的任何问题;规划、指导、雇用、教练和协调大量专业、技术和文书工作人员,从事城市311呼叫中心的实施、管理和运作;在建设和维持有效的工作队伍方面应用健全的监督原则和技术;履行平等机会责任;并开展相关工作。
要求
。
备注:
Relations系统的专业知识,包括实施、集成和知识库创建。
申请地点
申请只会在网上接受。当您正在查看您选择的在线职务公告时,只需滚动到页面的顶部并选择“应用”图标。在线招聘公告也可在http://agency.governmentjobs.com/lacity/default.cfm的公开竞争性考试和http://agency.governmentjobs.com/lacity/default.cfm?promotionaljobs=1的晋升考试。
注意:
如果有大量合格的候选人申请参加这一考试,则可召集一个专家审查委员会,评估每名候选人担任311名主任的资格。在这一评估中,专家审查委员会将根据申请人所在城市的就业申请和资格问卷中的信息,评估每个申请人的培训和经验。专家审查委员会认为最有可能成功履行311名主任职责的候选人将被邀请参加面试。
发布于 2019-12-21 04:54:59
您可以使用正则表达式。
import re
text = open('sample.txt').read()
pattern = re.compile('([A-Z]+[ ]?[:]?)+\n')
headings = []
for match in pattern.finditer(text):
s=match.start()
e = match.end()
headings.append(text[s:e].replace('\n',''))
print(headings)输出:
['DUTIES', 'REQUIREMENTS', 'NOTES:', 'WHERE TO APPLY', 'NOTE:']要删除':‘冒号,可以使用.replace()函数
发布于 2019-12-21 08:59:06
在NLTK或其他库中,没有一个通用函数来检查一段文本是否是文档标题。虽然您正在处理的文档将头大写,但这并不是一个通用约定。
在你的情况下,我会这样做:
for line in text.split('\n'):
is_header = (line.upper() == line)你的例子没有任何长的全大写行,所以我不认为你真的需要检查长度,但是如果你想的话,你可以。它也可以使您的代码更快,但取决于您有多少文本,它可能并不重要。
您可以学习一个统计模型来将行分类为标头和非标头,但是如果您的所有文档看起来都像您的示例,我认为上面的代码很好。
https://stackoverflow.com/questions/59432841
复制相似问题