YaraParser, Yara K Beam arc Eager依赖关系分析器

分享于 

15分钟阅读

GitHub

  繁體 雙語
Yara K-Beam Arc-Eager Dependency Parser
  • 源代码名称:YaraParser
  • 源代码网址:http://www.github.com/yahoo/YaraParser
  • YaraParser源代码文档
  • YaraParser源代码下载
  • Git URL:
    git://www.github.com/yahoo/YaraParser.git
    Git Clone代码到本地:
    git clone http://www.github.com/yahoo/YaraParser
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/yahoo/YaraParser
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Yara解析器

    ©版权 2014 -2015,Yahoo ! 公司。

    ©许可条款下许可的许可证 2.0. 请参见项目 root 中的许可文件。

    Yara k-beam Dependency

    这个项目的核心功能是在Yahoo的实习期间由穆罕默德 Sadegh Rasooli实现的 ! 后来在Columbia大学进行了修改。 有关详细信息,请参阅技术详细信息。 可以通过 conll"06格式对任何句法依赖项约束进行约束,以后可以解析句子。 它还可以解析部分句子( 具有部分金依赖关系的句子),也可以对部分树进行训练。

    如果你在研究中使用,请参考以下技术报告:

    版本日志

    • V0.2 ( 10 2015年02月 ) 在搜索剪裁和依赖特性以及棕色集群特性中存在一些问题,压缩模型文件保存。
    • V0.1 ( 2015 ) 第一个版本与Zhang和 Nivre ( 2011 ) 具有大致相同的特性。
    警告警告

    如果使用扩展特性集或者brown集群特性,当前解析器只支持 64个惟一依赖关系和训练数据中的1M 惟一单词。 如果培训数据中的唯一关系数量超过 64,则扩展或者棕色群集功能的结果可以能不精确 !

    华尔街日报/penn Treebank的性能和速度

    性能和速度真正取决于 POS taggers和机器电源和内存的质量。 我使用自己的pos tagger v0.2,并用 10-way jackknifing标记了列车文件。 在列车。开发和测试文件中,我分别获得了 97.14,97.18和 97.37的POS准确度。 我将数据转换为 Penn2Malt工具的依赖性。 下面的表是结果。

    YaraParser.Parser。代表光束特性Iter#开发人员测试用户测试用于测试。/。
    ZParPenn2Malt64ZN ( 11 )1593.1492.991.829
    YaraPenn2Malt1ZN ( 11 ) ( 11 ) 基本689.5489.3488.026000
    YaraPenn2Malt1ZN ( 11 ) ( 11 ) + BC1389.9889.7488.521300
    YaraPenn2Malt64ZN ( 11 ) ( 11 )1393.3192.9791.93133
    YaraPenn2Malt64ZN ( 11 ) ( 11 ) + BC1393.4293.3292.3245

    Yara的含义

    Yara ( yahoo rasooli ) 是指强度 boldness bravery bravery Persian Persian Persian Persian Persian Persian Persian Persian Persian。 in,比如,Amazonian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian,Malaysian。

    编译

    转到项目的root 目录并运行以下命令:

    
    javac YaraParser.Parser/YaraParser.java
    
    
    
    

    然后可以通过以下命令测试代码:

    
    java YaraParser.Parser.YaraParser
    
    
    
    

    或者

    
    java YaraParser.Parser/YaraParser
    
    
    
    

    命令行 选项

    注意:所有示例波纹管都使用 jar 文件运行应用程序,但也可以在手动编译代码之后使用java类文件。

    训练 YaraParser.Parser

    警告:列车代码忽略列车数据中的非投射树。 如果要包含它们,请尝试将它们添加到projectivize中;通过树 projectivizer 比如。

    • java java/yaraparser/-train-file [train-file] -dev [dev-file] -model [model-file] -punc xsr

      • 每个迭代的模型都使用 Pattern [model-file] _iter [iter#] ;比如 mode_iter2

      • [punc-file]: 文件包含在,中标点符号的pos标记列表,每一行中都有一行。

      • 其他选项( options options options size size size thread default default default default default default default default default。 64 ) )

      • 解析器支持 -cluster [cluster-file] Brown集群 file: 最多 4096个集群( 默认: 空)

      • 梁:[beam-width] ( 默认值:64 )

      • iter: [training-iterations] ( 默认值:20 )

      • 无标签( 默认值:已经标记的解析,除非显式放置 `unlabeled')

      • 小写(。默认值:区分大小写的单词,除非显式放置'小写)

      • 基本(。默认值:使用扩展特性集,除非显式放置'基本( )

      • 用于 static 预言的static (。缺省:使用动态预言,除非显式放置 `static'

      • 早期更新的早期( 默认值:使用最大冲突更新,除非显式放置 `early')

      • 随机( 默认值:选择最大评分 oracle,除非显式放置 `random'用于随机选择 oracle )

      • nt: [#_of_threads] ( 默认值:8 )

      • root_first (。默认值:将 root 放在最后一个位置,除非显式放置'root_first )

    解析CoNLL_2006文件

    • jar jar/yaraparser。jar parse_conll -input [test-file] -out [output-file] -model [model-file]

      • 测试文件应该具有 conll 2006格式

      • 可选:nt: #_of_threads ( 默认值:8 )

      • 可选:文件中每个输出解析树的-score [score file] 平均得分

    解析一个标记的文件

    • jar jar/yaraparser。jar parse_tagged -input [test-file] -out [output-file] -model [model-file]

      • 测试文件应该包含一行语句,而word_tag对是空格分隔

      • 可选:-delim [delim] ( 默认值为_ )

      • 可选:nt: #_of_threads ( 默认值:8 )

      • 示例行:He_PRP is_VBZ nice_AJ. _.

    训练具有部分训练数据的YaraParser.Parser

    在某些情况下,训练数据并不总是具有完整的树。 在这种情况下,你仍然可以使用CoNLL格式列出解析模型,但没有头的词应该是 -1。 对于训练数据中的部分树,将应用动态预望器,无论你选择使用 static 或者动态预望器。

    解析器只对 2个迭代进行解析,并对部分树进行处理。 如果要更改它的默认( 3 ),请使用 pt:#pt ( 比如。 pt: 5 ) 作为参数。

    注意:如果数据中有一个循环或者不能为projectivized的数据,则训练者给出消息 no oracle(sen#) 并忽略特定的语句,并继续它的训练过程。 在完整树上训练解析器相比,命令行 选项中没有关键的区别。

    基于动态预言器决定选择的路径和许多情况下,动态oracle的选择不正确,导致噪音的数据情况。

    解析部分树,其中包含一些黄金依赖性

    注意:有些场合你需要分析一个句子,但是已经了解了它的一些依赖。 Yara试图找到一个句子的最佳解析树: 如果部分部分树存在,并且部分树在部分树中存在,那么所有黄金依赖都将被忽略,这将保留所有黄金解析。

    由于某些技术原因,警告,所有连接到虚拟 root 单词的单词都将被标记为 ROOT。 如果你的大纲规则不同,尝试在 final 输出中重构 ROOT 依赖项。

    • _ java jar YaraParser.jar parse_partial -input [test-file] -out [output-file] -model [model-file] nt: [# of_threads (optional -- default:8) ]

      • 测试文件应该具有 conll 2006格式;每个没有父级的单词都应该具有 -1父索引

      • 可选:文件中每个输出解析树的-score [score file] 平均得分

    评估 YaraParser.Parser

    警告评估脚本是 Yara,负责 ROOT 输出,因此你不必更改输出中的任何内容。

    • jar YaraParser.jar 评估 -gold [gold-file] -parse [parsed-file] -punc [punc-file]
      • [punc-file]: 文件包含在,中标点符号的pos标记列表,每一行中都有一行。
      • 两个文件都应该有 conll 2006格式

    示例用法

    sample_data 目录中,从Google通用语法表中获得了较小的部分德语。

    无Brown集群特性的

    
     java -jar jar/YaraParser.jar train -train-file sample_data/train.conll -dev sample_data/dev.conll -model/tmp/model iter:10 -punc punc_files/google_universal.puncs
    
    
    
    

    当你发现模型性能在开发数据上收敛时,你就可以终止这个过程。 解析器在 7th 迭代中实现了一个未标记的精度为 87.52 和标记精度为 81.15的标记。

    每次迭代后产生的性能数字。 以下是 10th 迭代之后开发的性能:

    
    1.07 ms for each arc!
    
    
    14.18 ms for each sentence!
    
    
    
    Labeled accuracy: 79.93
    
    
    Unlabeled accuracy: 87.15
    
    
    Labeled exact match: 22.54
    
    
    Unlabeled exact match: 45.07 
    
    
    
    

    接下来,你可以在测试数据上运行已经开发的模型:

    
     java -jar jar/YaraParser.jar parse_conll -input sample_data/test.conll -model/tmp/model_iter10 -out/tmp/test.output.conll
    
    
    
    

    你可以对输出数据进行 finally 评估:

    
    java -jar jar/YaraParser.jar eval -gold sample_data/test.conll -parse/tmp/test.output.conll 
    
    
    
    Labeled accuracy: 70.91
    
    
    Unlabeled accuracy: 75.97
    
    
    Labeled exact match: 17.54
    
    
    Unlabeled exact match: 28.07
    
    
    
    

    带布朗集群特性的

    你可以使用与没有Brown集群功能相同的方法,但是使用 -cluster 选项。

    
    java -jar jar/YaraParser.jar train -train-file sample_data/train.conll -dev sample_data/dev.conll -model/tmp/model iter:10 -punc punc_files/google_universal.puncs -cluster sample_data/german_clusters_europarl_universal_train.cluster
    
    
    
    
    API用法

    在代码中可以查看解析器/api_usageexample 以查看在代码中使用解析器的示例。

    注释

    如何创建单词簇?

    给出一个经过标记的原始文本文件,可以使用Liang的代码来集群这些词。 我将群集文件放到英语和德语,但如果你认为你可以使用它们的文本文件,只要格式好。

    内存大小

    对于大型训练集,你可能需要通过-Xmx选项增加java内存堆大小;比如 java -Xmx10g jar/YaraParser.jar

    技术细节

    这个解析器是arc依赖关系模型 [Nivre, 2004 ]的一个实现,带有平均结构化感知器 [Collins, 2002 ]。 特征设置来自张和 Nivre [2011],它的附加的棕色聚类特征是由from发现的。 [2008] 和Honnibal以及约翰逊 [2014]。 模型可以使用早期更新策略 [Collins and Roark, 2004 ] 或者最大冲突更新 [Huang et al., 2012 ] 来训练。 Oracle搜索训练是用动态甲骨文 [Goldberg and Nivre, 2013 ] 或者原始 static 预言器完成的。 在动态预言中选择最佳预言甲骨文可以通过潜在的结构化感知器 [Sun et al., 2013 ] 来完成,也可以随机。 虚拟 root 标记可以放置在句子 [Ballesteros and Nivre, 2013 ]的末尾或者开始处。 当虚拟 root 标记在开始时,树约束将应用于。

    ##References

    [Ballesteros and Nivre, 2013 ] Ballesteros,Miguel和 Joakim Nivre。 "dependency依赖解析的根。"计算语言学 39.1 ( 2013 ): 5 -13.

    [Collins, 2002 ] Collins。 隐藏 马尔可夫 模型的Discriminative训练方法: 基于感知器算法的理论和实验"自然语言处理体积 10实验方法的ACL-02 会议程序。 计算语言学协会,2002.

    [Collins and Roark, 2004 ] Collins和 Brian Roark。 "用感知器算法进行增量分析。"计算语言学 42nd 年会议关联的程序。 计算语言学协会,2004.

    [Goldberg and Nivre, 2013 ] Goldberg Yoav和 Joakim Nivre。 "使用非确定性预言Oracles训练确定性解析器"tacl 1 ( 2013 ): 403 -414.

    英镑 [Honnibal and Johnson],Matthew和马克。约翰逊。 "联合增量disfluency检测和相关性分析"计算语言学 2协会的事务( 2014 ): 131 -142.

    [Huang et al., 20012 ] Huang Fayong。 "具有不精确搜索的结构感知器。"计算语言学关联的2012会议的会议程序: 人类语言技术。计算语言学的关联。2012.

    [Koo et al., 2008 ] Terry Carreras和 Michael Collins。 "简单的半监督依赖解析ACL-08的程序: HLT,pages,哥伦布,俄亥俄,美国,计算语言学协会,595.

    [Nivre, 2004 ] Nivre,Joakim。 在增量解析的workshop 过程中,Incrementality确定依赖关系分析" 将工程与认知结合在一起。 50 -57.计算语言学协会,2004.

    [Nivre and Fernández-González, 2014 ] Nivre,Joakim和 Daniel Fernández-González。 使用树约束进行arc分析"计算语言学,40 ( 2 ),( 2014 ): 259 -267.

    [Sun et al., 2013 ] Sun,Takuya Matsuzaki和 Wenjie Li。 具有隐藏信息的大规模学习的潜在结构化感知器"面向知识和数据工程的ieee事务,25.9 ( 2013 ): 2063 -2075.

    [Zhang and Nivre, 2011 ],Yue和 Joakim Nivre。 "过渡基于基于丰富非局部特征的依赖性解析。"计算语言学 49th 年会议的第一次会议: 人类语言技术:short卷 2. 计算语言学协会,2011. s, 2011.


    PAR  DEP  parse  parser  bea  arc  
    相关文章