【问题标题】:Parsing semi-structured data - can I use any classifiers?解析半结构化数据 - 我可以使用任何分类器吗?
【发布时间】:2010-10-28 19:07:00
【问题描述】:

我有一组半常规格式的文档。行通常用换行符分隔,每行的主要组成部分用空格分隔。一些示例是一组家具组装说明、一组目录、一组食谱和一组银行对账单。

问题是每个集合中的每个样本都与其对等成员不同,这使得正则表达式解析不可行:一个项目的数量可能在项目名称之前或之后,相同的项目在样本之间可能有不同的名称,说明文本或注释可能存在于行之间等。

我使用分类器(神经网络、贝叶斯、GA 和 GP)来处理整个文档或数据集,但没有从文档中提取项目并在上下文中对其进行分类。这可以做到吗?有没有更可行的方法?

【问题讨论】:

    标签: parsing classification data-analysis


    【解决方案1】:

    如果您的数据具有结构,可以说您可以使用语法来描述其中的一些结构。 (传统上,您使用语法来识别它们可以识别的内容,通常过多,并使用额外的语法检查来删除语法无法消除的内容)。

    如果您使用的语法可以运行并行潜在解析,从而在解析变得不可行时消除解析, 您可以直接解析不同的排序。 (GLR 解析器可以很好地做到这一点)。

    想象你有描述数量的数字,描述各种对象的名词和表示动作的动词。 那么可以接受不同项目顺序的语法可能是:

     G = SENTENCE '.' ;
     SENTENCE = VERB NOUN NUMBER ; 
     SENTENCE = NOUN VERB NUMBER;
     VERB = 'ORDER' | 'SAW' ;
     NUMBER = '1' | '2' | '10' ;
     NOUN = 'JOE' | 'TABLE' | 'SAW' ;
    

    这个示例非常简单,但它会处理:

     JOE ORDERED 10.
     JOE SAW 1.
     ORDER 2 SAW.
    

    它也会接受:

     SAW SAW 10.
    

    您可以通过添加演员必须是人的外部约束来消除这种情况。

    【讨论】:

    • 谢谢艾拉 - 这清楚了很多。您是否有任何关于生成 GLR 解析器的指示或解释更多关于“外部”(例如外部约束或外部语法检查)的信息?
    • Bison 将生成 GLR 解析器。您也许可以使用 Elkhound scottmcpeak.com/elkhound。您可以从en.wikipedia.org/wiki/GLR_parser 了解更多信息作为一般背景。关于外部约束:通常语法规则具有相关的语义动作。大约 15 年前,我们推出了自己的 GLR 解析器来满足我们的需求,其中之一是让语义动作可能是对象(从而拒绝归约)。您可以对其附加约束,例如坚持第二句规则,即名词必须是某个演员,而 SAW 不是。
    【解决方案2】:

    有很多方法可以做到这一点。这是一个活跃的研究领域,名为:information extraction。特别是从半结构化来源中提取信息。

    【讨论】:

      猜你喜欢
      • 2015-01-15
      • 2014-08-06
      • 2017-06-09
      • 1970-01-01
      • 2015-09-03
      • 2018-10-01
      • 1970-01-01
      • 2010-09-18
      • 2017-08-30
      相关资源
      最近更新 更多