尝试使用HPSG PET Parser

Sha*_*ila 7 parsing nlp utf-8 pos-tagger

嗨,我正在尝试使用PET Parser,但提供的使用文档不足.谁能指点我使用PET的好文章或教程?它支持utf-8吗?

Gle*_*den 11

要使用PET解析器,首先必须为感兴趣的语言加载语法.语法必须在TDL语言编写,如在使用DELPH-IN财团(维基这里).大型兼容语法可用于多种语言,包括英语,日语和德语.还有更小的语法可供选择,您可以编写自己的语法.

为此 - 以及使用这些语法 - 最好的选择是Ann Copestake的书"实现类型化特征结构语法"(CSLI 2002).本书提供了对TDL和语法的全面介绍,这些语法通过类型化特征结构的统一起作用.语法支持语法(表面字符串)和语义之间的双向映射("含义",根据Copestake的MRS-- Minimal Recursion Semantics表示).请注意,这些是精确语法,这意味着它们通常不如统计系统容忍不合语法的输入.

英语语法资源(ERG)是一家大型英语语法的具有广泛的,一般域覆盖.它是开源的,您可以从网站下载它.可以在此处找到由PET解析器提供支持的在线演示.

PET解析器分两步运行.第一个叫做翻牌,产生语法的"编译"版本.第二步是实际解析,它使用廉价程序.您需要为Linux机器获取这两个PET二进制文件,或者自己构建它们.如果您不熟悉在Linux上构建软件,这一步可能并不容易.根据我的知识,PET不能在Windows(或Mac)上运行.

运行翻牌很容易.只需转到/ erg目录,然后键入:

$ flop english.tdl
Run Code Online (Sandbox Code Playgroud)

这将生成english.grm文件.现在你可以通过运行便宜来解析句子:

$ echo the child has the flu. | cheap --mrs english.grm
Run Code Online (Sandbox Code Playgroud)

此示例以MRS(最小递归语义)格式生成句子的单个语义表示:

 [ LTOP: h1
   INDEX: e2 [ e SF: PROP TENSE: PRES MOOD: INDICATIVE PROG: - PERF: - ]
   RELS: <
          [ _the_q_rel<-1:-1>
            LBL: h3
            ARG0: x6 [ x PERS: 3 NUM: SG IND: + ]
            RSTR: h5
            BODY: h4 ]
          [ "_child_n_1_rel"<-1:-1>
            LBL: h7
            ARG0: x6 ]
          [ "_have_v_1_rel"<-1:-1>
            LBL: h8
            ARG0: e2
            ARG1: x6
            ARG2: x9 [ x PERS: 3 NUM: SG ] ]
          [ _the_q_rel<-1:-1>
            LBL: h10
            ARG0: x9
            RSTR: h12
            BODY: h11 ]
          [ "_flu_n_1_rel"<-1:-1>
            LBL: h13
            ARG0: x9 ] >
   HCONS: < h5 qeq h7 h12 qeq h13 > ]
Run Code Online (Sandbox Code Playgroud)

Copestake的书解释了与PET兼容的语法中使用的特定语法和语言形式.它还可以作为开源LKB系统的用户手册,这是一个更具交互性的系统,也可以解析这些语法.除了解析之外,LKB还可以反过来:从MRS语义表示生成句子.LKB目前仅在Linux/Unix上受支持.实际上总共有四个符合DELPH-IN的语法处理引擎,包括LKB和PET.

对于Windows,我同意,我已经为.NET开发了一个多线程解析器/生成器(以及此处); 它还支持生成和解析.如果您需要以交互方式使用语法,您可能需要考虑使用LKB或者同意 - 或者代替 - PET.同意的交互式客户端前端主要是基于WPF的,但引擎和简单的控制台客户端可以在任何Mono平台上运行.

ACE是另一个开源的DELPH-IN兼容解析和生成系统,专为高性能而设计,可用于Linux和MacOS.

LKB是用Lisp编写的,而PET和ACE是C/C++,因此后者是生产使用的更快的解析器.同意也比LKB快得多,但在解析复杂句子时只比PET快,其中来自Agree的无锁并发的开销变得摊销.

[11/25/2011编辑:同意现在支持生成和解析]