基于转换的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>
可能的模型类型有sparse、mlp和bilstm。
分析文本文件
使用 培训模式:
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 model 在French *20K Leagues* corpus上接受过预先培训 或a model 在German *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* corpus, English 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
结果:
description | test primary F1 | test remote F1 | test average |
---|---|---|---|
German_20K Leagues | 0.828 | 0.6723 | 0.824 |
English_20K Leagues | 0.763 | 0.359 | 0.755 |
French_20K Leagues | 0.739 | 0.46 | 0.732 |
English_Wiki | 0.789 | 0.581 | 0.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