parsing - 尝试使用 HPSG PET 解析器

标签 parsing utf-8 nlp pos-tagger

嗨,我正在尝试使用 PET解析器,但提供的使用文档不足。谁能给我推荐一篇关于使用 PET 的好文章或教程?它支持utf-8吗?

最佳答案

要使用 PET 解析器,首先必须为感兴趣的语言加载语法。语法必须用 TDL 语言编写,如 DELPH-IN consortium 中使用的那样。 ( wiki here )。大型兼容语法可用于多种语言,包括英语、日语和德语。还有更小的语法可用,您可以编写自己的语法。

为此——以及使用这些语法——你最好的选择是 Ann Copestake 的书,"Implementing Typed Feature Structure Grammars" (CSLI 2002)。本书全面介绍了 TDL 和语法,例如通过统一类型特征结构来发挥作用的语法。语法支持语法(表面字符串)和语义(“意义”,根据 Copestake 的 MRS——最小递归语义表示)之间的双向映射。请注意,这些是精确语法,这意味着它们对不符合语法的输入的容忍度通常低于统计系统。

English Resource Grammar (ERG)是一种大型英语语法,涵盖广泛的一般领域。它是开源的,您可以从网站上下载。可以找到由 PET 解析器提供支持的在线演示 here .

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

运行 翻牌简单。只需转到您的/erg 目录,然后键入:

$ flop english.tdl

这将生成 english.grm 文件。现在你可以通过运行 来解析句子便宜 :
$ echo the child has the flu. | cheap --mrs english.grm

此示例以 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 > ]

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

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

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

LKB 是用 Lisp 编写的,而 PET 和 ACE 是 C/C++,所以后者是用于生产用途的更快的解析器。同意也比 LKB 快得多,但只有在解析复杂句子时才比 PET 快,其中同意无锁并发的开销被摊销。

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

关于parsing - 尝试使用 HPSG PET 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3926891/

相关文章:

Python BeautifulSoup 给出不同的结果

javascript - 将函数序列化和反序列化到 JSON 或从 JSON 反序列化

UTF-8 BOM 问题

ruby - 如何在 Ruby 中将字符串转换为 UTF8

python - 标记 HTML 文档

json - JSON 输出不包含 key : "value"

mysql - iconv 给 "Illegal Character"加上智能引号——如何去掉它们?

python - NLTK 中的简单标记化问题

python - 如何去除标点符号?

python - 为什么在 Robinhood 中查找内容时我的 BeautifulSoup 代码不再起作用?