神经网络依赖性解析器中的TreebankLanguagePack函数

时间:2015-10-08 20:12:51

标签: parsing neural-network stanford-nlp

如果我想训练斯坦福神经网络依赖解析器用于另一种语言,则需要“treebankLanguagePack”(TLP),但有关此TLP的信息非常有限:

  

您的树库及其包含的语言的特殊性

如果我的另一种语言中的“treebank”遵循与PTB相同的格式,并且我的数据使用的是CONLL格式。依赖关系格式遵循“通用依赖关系”UD。我需要这个TLP吗?

1 个答案:

答案 0 :(得分:2)

截至当前的CoreNLP版本,TreebankLanguagePack仅在依赖解析器中用于1)确定输入文本编码和2)确定哪些令牌计为标点符号[1]。

快速解决方案的最佳选择可能是坚持使用UD English TreebankLanguagePack。您应该通过将属性language指定为"UniversalEnglish"(无论您是否通过代码或命令行访问依赖性解析器)来执行此操作。如果您通过CoreNLP主入口点使用依赖性解析器,则此属性键应为depparse.language

技术细节

下面是两个非常微妙的细节。你可能不需要担心这些,如果你一开始就试图一起破解某些东西,但它可能是好的提及,以便你可以避免世界末日/头部粉碎的错误将来

  • 评估和标点符号:如果您确实选择坚持使用UniversalEnglish,请注意the evaluation code中有一个hack会覆盖特别针对英语解析设置的标点符号。您在PennTreebankLanguagePack(用于UniversalEnglish语言的TLP)中对标点符号所做的任何更改都将被忽略!如果您需要解决这个问题,那么将PennTreebankLanguagePack复制并粘贴到您自己的代码库中并将其命名为不同的名称就足够了。
  • 潜在的内存泄漏:构建解析结果以返回给用户时,依赖项解析器draws from a pool of cached GrammaticalRelation objects。此缓存不会实时更新。这意味着如果您的关系没有通过language属性指定的语言进行正式定义,那么只要这些关系出现在解析器预测中,它们就会导致新对象的实例化。 (如果碰巧将解析对象存储在某个地方,这可能是一个很大的记忆。)

[1]:评估期间排除标点符号。这是一个标准的骗子"在整个依赖解析文献中使用。