Skip to main content

基于转换的 UCCA 解析器

项目描述

TUPA 是通用概念认知注释 (UCCA)的基于转换的解析器。

要求

  • 蟒蛇 3.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 段落文件的目录(例如,英语 Wiki 语料库),运行:

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

可能的模型类型是sparsemlpbilstm

解析一个文本文件

使用经过训练的模型在文本文件(此处名为example.txt )上运行解析器:

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

每个段落将创建一个xml文件(由文本文件中的空行分隔)。

预训练模型

要下载并提取在 Wiki 语料库上预训练的模型,请运行:

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

其他语言

要获得 在法国 *20K Leagues* 语料库 上预训练的模型或在德国 * 20K Leagues* 语料库上预训练的模型,请运行:

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 可以用来代替标准的词嵌入。首先,安装所需的依赖项:

pip install -r requirements.bert.txt

然后将--use-bert参数传递给训练命令。

查看config.py中可能的配置选项(相关选项具有前缀bert)。

BERT 多语言培训

可以训练多语言模型,以利用跨语言迁移并改善低资源语言的结果:

  1. 确保输入段落文件具有lang属性。请参阅包semstr中的脚本 `set_lang < https://github.com/huji-nlp/semstr/blob/master/semstr/scripts/set_lang.py >`__ 。

  2. 通过传递--use-bert参数启用 BERT 。

  3. 通过传递 --bert-model=bert-base-multilingual-cased使用多语言模型。

  4. 传递--bert-multilingual=0参数以启用多语言训练。

BERT 性能

以下是在德语 *20K Leagues* 语料库英语 Wiki 语料库和仅来自法语 *20K Leagues* 语料库 的 15 个句子上训练的 3 个 BERT 多语言模型的平均结果,设置如下:

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

结果:

描述

测试初级 F1

测试遥控器 F1

测试平均值

德国 20K 联赛

0.828

0.6723

0.824

英语 20K 联赛

0.763

0.359

0.755

法国 20K 联赛

0.739

0.46

0.732

英文维基

0.789

0.581

0.784

*英语 *20K Leagues* 语料库 用作域外测试。

使用 BERT 预训练模型

要下载并提取 使用上述设置训练的多语言模型,请运行:

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

要使用模型运行解析器,请使用以下命令。请注意,您需要将[lang]替换为正确的语言符号(frende):

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

作者

贡献者

引文

如果您使用此软件,请引用以下论文

@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

如果您使用法语、德语或多任务模型,请引用以下论文

@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>`__)。

构建状态 (Travis CI) 构建状态 (AppVeyor) 构建状态(文档) PyPI 版本

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

TUPA-1.4.2.tar.gz (2.3 MB 查看哈希

已上传 source

内置分布

TUPA-1.4.2-py3-none-any.whl (111.2 kB 查看哈希

已上传 py3