(un)结构化文本文档的词法分析器/解析器

时间:2010-01-18 16:57:00

标签: parsing document lexer

脚本(即结构化计算机语言)有很多解析器和词法分析器。但我正在寻找能够将(几乎)非结构化文本文档分解为更大部分的文档,例如章节,段落等。

一个人识别它们相对容易:目录,确认或主体开始的位置,并且可以构建基于规则的系统来识别其中的一些(例如段落)。

我不认为它是完美的,但是有没有人知道这么宽泛的'基于块'的词法分析器/解析器?或者你能指出我可能有帮助的文学方向吗?

4 个答案:

答案 0 :(得分:1)

许多轻量级标记语言,如markdown(偶然使用SO),reStructured text和(可论证)POD都与您所说的类似。它们具有最小的语法,并将输入分解为可解析的语法部分。您可以通过阅读他们的实现来获得一些信息。

答案 1 :(得分:0)

大多数lex/yacc类程序都使用定义良好的语法。如果你可以用BNF格式(大多数解析器接受类似的语法)来定义你的语法,那么你可以使用它们中的任何一种。这可能是显而易见的。然而,你仍然可以在文本的“块”(标记)周围有点模糊,这将成为语法的一部分。毕竟你定义了令牌的规则。

我过去曾使用Parse-RecDescent Perl module,在类似项目中取得了不同程度的成功。

很抱歉,这可能不是一个好的答案,但更多的是分享我在类似项目上的经历。

答案 2 :(得分:0)

  1. 定义注释标准,指示您希望如何分解。
  2. 转到Amazon Mechanical Turk并要求人们使用您的注释标准标记10K文档。
  3. 在此培训数据上训练CRF(类似于HMM,但更好)。
  4. 如果你真的想走这条路,我可以详细说明。但这将是很多的工作。

答案 3 :(得分:0)

尝试:pygmentsgeshiprettify

他们可以处理你向他们扔的任何事情,并且非常宽容你的语法和文档中的错误。

参考文献:
gitorius使用美化,
github使用pygments,
rosettacode使用geshi,