使用Python / NLP提取文本文件中的所有段落标题

问题描述 投票:0回答:2

我有一个文本文件,其内容如下所示。我需要确定段落标题,并从每个提取的段落标题中创建一个csv文件列标题。文本文件看起来像下面的文本块。我在考虑使用类似以下规则:

if (capitalized) and heading_length <50:
    return heading_text

NLTK或NLP中是否有某些东西可以帮助完成此工作,而无需近似检查大写字母和单词长度?

这是古老的Kaggle比赛

职责

A 311主任对成功的运作负责,信息技术局311呼叫中心的扩展(ITA)可以回答三方成员关于全市服务的电话由市政府部门提供;努力确保效率和有效解决可能出现的任何问题;计划,指示,雇用,指导和协调大量专业人员,从事实施工作的技术和文书人员,纽约市311呼叫中心的管理和运营;适用建立和维护方面的良好主管原则和技术有效的劳动力;履行机会均等责任;并进行相关工作。

要求

  1. [一年的全职带薪经验,曾在洛杉矶市担任高级管理分析师,或至少上过一堂课提供监督或监督专业经验的水平与至少有50个呼叫中心的呼叫中心有关的管理工作或每年至少接收一百万个电话的呼叫中心;或
  2. [获得公认的大学或大学的学士学位,并在呼叫中心环境中拥有四年的全职有薪工作经验至少有50个呼叫代理或呼叫中心接收到至少每年一百万次电话,其中两年必须进行监督在这样的呼叫中心工作的工作人员;或
  3. 在呼叫中心环境中拥有至少50个呼叫代理或呼叫中心的8年全职付费经验每年至少有一百万个电话,其中必须有两年监督在这样的呼叫中心工作的人员。

注意:

  1. 除了常规的城市申请外,所有申请人都必须在填写以下信息时填写311董事资格问卷归档。 311主管资格调查表位于在“城市”申请的“资格问题”部分中。未能完成资格问卷的申请人将在本次考试及其应用中不再进一步考虑将不会被处理。
  2. 缺少六个月或更短要求经验的申请人可以申请参加此考试。但是,直到任命他们满足完整的体验要求。
  3. 不包括与销售和电话推销有关的呼叫中心经验。
  4. 客户关系管理(CRM)系统专业知识,包括实施,集成和知识库创建,想要的。

申请地点

仅在线接受申请。当您查看您选择的在线职位公告,只需滚动到顶部页,然后选择“应用”图标。在线职位公告也可在http://agency.governmentjobs.com/lacity/default.cfm获得公开竞争性考试http://agency.governmentjobs.com/lacity/default.cfm?promotionaljobs=1促销考试。

注意:

应该为此提交大量合格的候选人吗?审查,可以组建专家审查委员会进行评估每位候选人的311个董事职位的资格。在这项评估,专家审查委员会将评估每个申请人根据其信息进行的培训和经验申请人的城市就业申请书和资格问卷调查。专家审查认为的那些候选人委员会拥有成功的最大可能性仅根据以下情况履行311主任的职责提供给委员会的信息将被邀请参加在采访中。

python regex nlp nltk kaggle
2个回答
0
投票

您可以使用正则表达式。

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()函数


0
投票

没有通用函数来检查文本是否是NLTK或其他库中的文档标题。当您使用的文档将标题大写时,这不是通用约定。

在您的情况下,我会这样做:

for line in text.split('\n'):
    is_header = (line.upper() == line)

您的示例没有任何大写的大行,因此我认为您实际上不需要检查长度,但是可以。它也可以使您的代码更快,尽管取决于您拥有多少文本可能无关紧要。

[您可以学习一种统计模型,将行分为标题和非标题,但是如果您所有的文档看起来都像您的示例,我认为上面的代码就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.