基于转换的ucca解析器

TUPA的Python项目详细描述


tupa是一个基于转换的Universal Conceptual Cognitive Annotation (UCCA)解析器。

要求

  • Python3.6

安装

创建一个python虚拟环境。例如,在Linux上:

virtualenv --python=/usr/bin/python3 venv
. venv/bin/activate              # on bash
source venv/bin/activate.csh     # on csh

安装最新版本:

pip install tupa

或者,从github安装最新的代码(可能不稳定):

git clone https://github.com/danielhers/tupa
cd tupa
pip install .

训练解析器

有一个包含ucca通道文件的目录(例如,the English Wiki corpus), 运行:

python -m tupa -t <train_dir> -d <dev_dir> -c <model_type> -m <model_filename>

可能的模型类型有sparsemlpbilstm

分析文本文件

使用 培训模式:

python -m tupa example.txt -m <model_filename>

每篇文章将创建一个xml文件(用空白行分隔 文本文件)。

预先培训的模型

要下载并提取a model pre-trained on the Wiki corpus, 运行:

curl -LO https://github.com/huji-nlp/tupa/releases/download/v1.3.10/ucca-bilstm-1.3.10.tar.gz
tar xvzf ucca-bilstm-1.3.10.tar.gz

使用模型运行解析器:

python -m tupa example.txt -m models/ucca-bilstm

其他语言

获取a modelFrench *20K Leagues* corpus上接受过预先培训 或a modelGerman *20K Leagues* corpus上接受过预先培训, 运行:

curl -LO https://github.com/huji-nlp/tupa/releases/download/v1.3.10/ucca-bilstm-1.3.10-fr.tar.gz
tar xvzf ucca-bilstm-1.3.10-fr.tar.gz
curl -LO https://github.com/huji-nlp/tupa/releases/download/v1.3.10/ucca-bilstm-1.3.10-de.tar.gz
tar xvzf ucca-bilstm-1.3.10-de.tar.gz

在法文/德文文本文件上运行解析器(用空白分隔段落 行):

python -m tupa exemple.txt -m models/ucca-bilstm-fr --lang fr
python -m tupa beispiel.txt -m models/ucca-bilstm-de --lang de

使用bert嵌入

可以使用bert嵌入代替标准 不具有上下文意识的嵌入。要使用它们,请传递--use-bert 相关命令中的参数,并在 requirements.bert.txt:

python -m pip install -r requirements.bert.txt

请参阅config.py中可能的配置选项(相关配置包括 前缀为bert

使用bert嵌入:多语言培训

当使用bert嵌入时,可以训练多语言 利用跨语言迁移提高学习效果的模型 低资源语言。要在所需的多语言设置中进行培训 to:1)通过传递--use-bert参数来使用bert嵌入。2个) 通过传递 参数--bert-model=bert-base-multilingual-cased3)传递 --bert-multilingual=0参数。4)确保UCCA通道文件 拥有lang属性。查看包中的脚本“set_lang” semstr

伯特性能

下面是3个bert多语言模型的平均结果 在German *20K Leagues* corpusEnglish Wiki_corpus 只有15个句子来自French *20K Leagues* corpus, 具有以下设置:

bert-model=bert-base-multilingual-cased
bert-layers= -1 -2 -3 -4
bert-layers-pooling=weighted
bert-token-align-by=sum

结果:

descriptiontest primary F1test remote F1test average
German_20K Leagues0.8280.67230.824
English_20K Leagues0.7630.3590.755
French_20K Leagues0.7390.460.732
English_Wiki0.7890.5810.784

*English *20K Leagues* corpus 用作域外测试。

伯特预训练模型

要下载并提取a multilingual model, 运行:

curl -LO https://github.com/huji-nlp/tupa/releases/download/v1.4.0/bert_multilingual_layers_4_layers_pooling_weighted_align_sum.tar.gz
tar xvzf bert_multilingual_layers_4_layers_pooling_weighted_align_sum.tar.gz

要使用该模式运行解析器,请使用以下命令。支付 注意,您需要用语言替换[example lang]example.txt(fr、en、de等)中句子的符号:

python -m tupa example.txt --lang [example lang] -m bert_multilingual_layers_4_layers_pooling_weighed_align_sum

模型是在German *20K Leagues* corpus上训练的, English Wiki_corpus 只有来自French *20K Leagues* corpus的15个句子。

请参见BERT Performance处的预期性能。

作者

贡献者

引文

如果您使用此软件,请引用the following paper

@InProceedings{hershcovich2017a,
  author    = {Hershcovich, Daniel  and  Abend, Omri  and  Rappoport, Ari},
  title     = {A Transition-Based Directed Acyclic Graph Parser for {UCCA}},
  booktitle = {Proc. of ACL},
  year      = {2017},
  pages     = {1127--1138},
  url       = {http://aclweb.org/anthology/P17-1104}
}

本文中使用的解析器的版本是 v1.0。到 再现实验,运行:

curl -L https://raw.githubusercontent.com/huji-nlp/tupa/master/experiments/acl2017.sh | bash

如果您使用法语、德语或多任务模式,请引用the following paper

@InProceedings{hershcovich2018multitask,
  author    = {Hershcovich, Daniel  and  Abend, Omri  and  Rappoport, Ari},
  title     = {Multitask Parsing Across Semantic Representations},
  booktitle = {Proc. of ACL},
  year      = {2018},
  pages     = {373--385},
  url       = {http://aclweb.org/anthology/P18-1035}
}

本文中使用的解析器的版本是 v1.3.3到 再现实验,运行:

curl -L https://raw.githubusercontent.com/huji-nlp/tupa/master/experiments/acl2018.sh | bash

许可证

此软件包在GPLv3或更高版本的许可下获得许可(请参见 `LICENSE.txt<;license.txt>;`\

Build Status (Travis CI)Build Status (AppVeyor)Build Status (Docs)PyPI version

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

推荐PyPI第三方库


热门话题
java应用程序不是在Eclipse中运行,而是在命令行中运行   swing Java图形组件问题。似乎找不到错误   我需要键盘。close();让代码正常工作?   Springboot中的java HttpSession   抽象语法树我想添加一个语句。我试图解析它,java解析器异常被抛出。如何克服它?   java Hibernate:清理会话   具有不连续子集的java划分问题   java正则表达式查找最后一个冒号后的字符串   java从SpringShell执行OS命令   Java扫描器字符串输入   java字符串索引越界异常(charAt)   java执行器服务终止被卡住   Springockito没有继承java@ContextConfiguration   java如何为一个servlet映射多个url   java安卓获取命令的stderr   java生成类型。表:数据库中的大数字   安卓 Getter Setter返回NothingJava