一种无监督的依赖性分析器。

Usurper的Python项目详细描述


简介

这是一个无监督依赖解析器的实现 S_gaard(2012)描述。解析器是独立于语言的,并且 不需要任何培训数据。

解析器分两个阶段操作。首先,它构造了一个 使用

  • 单词邻接信息,
  • 一个(自动创建的)函数词列表[1]
  • 形态线索
  • 以及来自部分语音标签的信息(如果有的话)[2]

生成的图形结构用于使用 pagerank算法(brin和page,1998)。在第二阶段, 解析器从排列的单词列表中构造一个依赖树。如果 部分语音信息可用,解析器可以利用 通用依赖规则(Naseem等人,2010)。

[1]The list of function words is extracted from the whole input text by applying a variant of Mihalcea and Tarau’s (2004) TextRank algorithm.
[2]The parser relies on a universal part-of-speech tagset (Petrov et al., 2012). The language-dependent input tags are mapped to that universal tagset using the mappings provided here.

安装

篡夺者可以使用pip轻松安装:

pip install Usurper

用法

使用usrpr可执行文件

可以将解析器用作命令中的独立程序 行。输入文本必须是CoNLL-X format格式,或者是简单格式,每个 句子之间的空行。如果你的数据是 部分语音标记,标记应通过 标签:

Many        JJ
people      NNS
need        VBP
our PRP$
help        NN
.   .

Please      UH
continue    VB
our PRP$
important   JJ
partnership NN
.   .

一般使用信息,包括支持的列表 部分语音标记集,可通过-h选项获得:

usrpr -h

如果你想使用完整的语法分析器,也就是说你有一部分语音 标记了输入数据,您希望使用通用依赖关系规则, 您可以这样调用解析器:

usrpr -t <tag-set> [--conll] <file>

如果不想使用通用依赖关系规则,可以使用 --no-rules选项:

usrpr --no-rules -t <tag-set> [--conll] <file>

如果您的数据没有标记,或者您想忽略标记,只需省略 -t选项(在这种情况下,不可能使用 通用依赖规则):

usrpr [--conll] <file>

注意解析器试图自动识别函数 话。如果输入文件太小,则无法可靠地执行此操作 可能会影响解析器的性能。

使用模块

您可以很容易地将解析器合并到您自己的python中 项目。您只需导入usurper.soegaard

from usurper import soegaard

parse = soegaard.parse_sentence(tokens, function_words, no_rules, tags, tagset)

parse_sentence函数返回一个networkxDiGraph对象。你可以转换它 使用^{tt7}进入嵌套列表表示$ 函数位于usurper.utils.conll

函数的docstring提供了有关 需要的参数:

parse_sentence(tokens, function_words, no_rules, tags=[], tagset=None)
    Parse sentence using the algorithm by Søgaard (2012).

    Args:
        tokens: list of tokens
        function_words: set of function words
        no_rules: boolean; true if universal dependency rules should
            not be used
        tags: list of tags, if available; the nth element of tags
            should be the part-of-speech tag associated with the nth
            element of tokens
        tagset: string identifying one of the supported tagsets

    Returns:
        A networkx DiGraph representing the dependency structure.

评估

这是一个表,给出了未标记的附件分数(忽略 标点符号)。大多数的测试数据 语言可从CoNLL-X Shared Task website获得。表演 英语在宾夕法尼亚州treebank的第23节进行了评估。

Languageno tagsno rulesfull parser
Danish30.0437.6638.20
English20.4140.7440.94
German18.5933.9339.24
Portuguese19.8644.8644.50
Slovene19.7031.4131.39
Swedish20.7544.6949.21

参考文献

  • 布林,谢尔盖,劳伦斯佩奇(1998):“大尺度的解剖学 超文本网络搜索引擎〉,in:计算机网络和isdn 系统30/1-7107-117。PDF
  • 米哈尔恰,拉达,保罗·塔劳(2004):“文本等级:将秩序带入 在:2004年经验方法会议记录 在自然语言处理中(EMNLP'04)。美国公民权利委员会,404–411。PDF
  • Naseem,Tahira,Harr Chen,Regina Barzilay,Mark Johnson(2010年): “运用普遍的语言知识指导语法归纳。” 在:2010年经验方法会议记录 自然语言处理(EMNLP'10)。美国公民自由联盟,1234-1244。PDF
  • 彼得罗夫、斯拉夫、迪潘詹·达斯、瑞安·麦克唐纳(2012):“通用 在:第八届国际会议录 语言资源和评价会议(LREC'12) 2089-2096年。PDF
  • S_gaard,Anders(2012):“无监督的依赖解析 培训。“在:自然语言工程18/21987-203。Link

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有服务类安卓的java altbeacon   java在OpenXava免费版本中可以创建多个用户吗?   java如何决定定义变量“private”?   java为什么GetMethodID()对不存在的方法不返回NULL?   java Get JComboBox项字符串表示法   java如何在ifs之间设置限制?   java Android错误:IllegalStateException   JavaSpring4MVC语言环境已更改,但JSP对此没有响应   java Netbeans:如何构建。jar文件随附外部文件。jar库?   Spring Petclinic项目Maven编译时出现java错误   声明Java数组增量元素的快速方法   java无法使用相对xpath找到元素   javascript无法更改标题,也无法在操作栏上显示图标   java标签不是一个接一个地动态创建的   java如何使用ThymeLeaf将对象的属性绑定到隐藏字段?   java从EJB无状态会话bean调用CDI会话范围的生产者方法   java为什么num+=array[i]与for循环中的num=num+array[i]的工作方式不同   使用jsonsimple实现jQuery UI自动完成的java JSON格式   JavaFaceletsUI:重复标记中断JSF表单验证