从文本文档中解析“事件”的一些想法

数据挖掘 数据挖掘 文本挖掘
2021-09-27 20:33:27

我正在处理大量新闻稿(主要是 PDF 或 DOC 文档,即文本)。我想将它们自动解析为 CSV 文件,每个事件 1 行。

输入: 在此处输入图像描述

输出:

datetime;location;title;description
2016-06-02 18:30;Public Library;About Picasso's last years;Lorem ipsum...
2016-06-03 17:30;Public Library;1001 stories;For children, 3 to 6 year old

我可以为每个精确的文档布局编写一个解析器(例如,日期总是粗体,描述总是斜体)或检测关键字(例如:一月、二月等=>假设附近的词是日期等)。但这需要为每个不同的新闻稿做大量工作。

我正在寻找更聪明的解决方案,可能涉及机器学习和/或神经网络。我愿意参加这个主题的 MOOC(我有数学博士背景和编程技能)。

  • 您认为解决如此大(且困难的主题)问题的一般技术是什么?

  • 是否有专门用于此的开源项目?

  • 一些可以使这项任务更容易的 Python 库?

  • 有什么一般的想法吗?

2个回答

这些文档可能是非常非结构化的,而机器学习则需要完美结构化的数据,例如一张干净的数字表。真正困难的部分是如何将所有有趣的信息(字体大小、粗体、位置、顺序……)转换成干净的表格,这不是机器学习解决的。您会发现很难从文档中创建一个合理的、纯数字的表格。

我认为您最好的选择是使用自然语言处理工具包并进行命名实体识别。请参阅http://www.nltk.org/book/ch07.html“5命名实体识别”。或者在这里查看推荐:https ://stackoverflow.com/questions/11333903/nltk-named-entity-recognition-with-custom-data

有了这些辅助信息,我宁愿花时间手工编写适用于大多数文档的规则。您可以创建一个嵌套数据结构并尝试匹配“headline, enumitem1, enumitem2, ...”之类的模式

这些规则会在他们不确定的文档上抛出错误。对于这些文档,您必须手动检查发生了什么。但是这样你就不会丢失信息。

我不是非常先进的方法方面的专家,但从理论上讲,如果有大量标记数据、非常聪明的编码模式和一点点运气,像 RNN 这样的方法可能会成功。但即使上述所有要求都成立,这些 RNN 的训练也需要大量经验,而这些经验很难从参考资料中学习。

尝试条件随机字段CRFs是一类统计建模方法,常用于模式识别和机器学习,用于结构化预测。有几个可用的开源实现CRF++CRFsuit核心思想是使用上下文作为特征来解决序列标注问题。

RNN (LSTM) 可以是另一种方法。但它是一种黑匣子,您对要学习的功能没有太多控制权。