3个不稳定版本
0.3.1 | 2019年5月28日 |
---|---|
0.3.0 | 2019年5月27日 |
0.2.0 | 2019年5月17日 |
0.1.0 |
|
#1086 in 数据结构
195KB
4K SLoC
lumberjack
读取并处理各种格式的选区树。
安装
- 从crates.io获取
cargo install lumberjack-utils
- 从GitHub获取
cargo install --git https://github.com/sebpuetz/lumberjack
作为独立使用
- 将NEGRA导出4格式的treebank转换为括号形式的TueBa V2格式
lumberjack-conversion --input_file treebank.negra --input_format negra \
--output_format tueba --output_file treebank.tueba --projectivize
- 仅保留根节点,
NP
和PP
,并打印到简单括号格式
echo "NP PP" > filter_set.txt
lumberjack-conversion --input_file treebank.simple --input_format simple \
--output_format tueba --output_file treebank.filtered \
--filter filter_set.txt
- 从简单括号形式的treebank转换为CONLLX格式,并注释终端的父标签作为特征。
lumberjack-conversion --input_file treebank.simple --input_format simple\
--output_format conllx --output_file treebank.conll --parent
- 以下顺序进行修改
- 将所有以
$
开头的词性终端重新附加到根节点 - 删除除根、
S
、NP
、PP
和VP
之外的所有非终端 - 根据最近的
S
为终端分配唯一标识符 - 在不受
NP
或PP
支配的终端上方插入标签为label
的节点 - 在终端上注释父节点的标签。
- 带注释地打印到CONLLX格式。
echo "S VP NP PP" > filter_set.txt
echo "NP PP" > insert_set.txt
echo "S" > id_set.txt
lumberjack-conversion --input_file treebank.simple --input_format simple\
--output_format conllx --insertion_set insert_set.txt \
--insertion_label label --id_set id_set.txt --reattach $\
--parent parent --output_file treebank.conllx
作为rust库使用
- 从NEGRA格式读取并投影树,并打印到简单括号格式
use std::io::{BufReader, File};
use lumberjack::io::{NegraReader, PTBFormat};
use lumberjack::Projectivize;
fn print_negra(path: &str) {
let file = File::open(path).unwrap();
let reader = NegraReader::new(BufReader::new(file));
for tree in reader {
let mut tree = tree.unwrap();
tree.projectivize();
println!("{}", PTBFormat::Simple.tree_to_string(&tree).unwrap());
}
}
- 从treebank中的树过滤非终端节点,并打印到简单括号格式
use lumberjack::{io::PTBFormat, Tree, TreeOps, util::LabelSet};
fn filter_nodes(iter: impl Iterator<Item=Tree>, set: LabelSet) {
for mut tree in iter {
tree.filter_nonterminals(|tree, nt| set.matches(tree[nt].label())).unwrap();
println!("{}", PTBFormat::Simple.tree_to_string(&tree).unwrap());
}
}
- 将简单括号格式的treebank转换为具有特征字段中编码的选区结构的CONLLX
use conllx::graph::Sentence;
use lumberjack::io::Encode;
use lumberjack::{Tree, TreeOps, UnaryChains};
fn to_conllx(iter: impl Iterator<Item=Tree>) {
for mut tree in iter {
tree.collaps_unary_chains().unwrap();
tree.annotate_absolute().unwrap();
println!("{}", Sentence::from(&tree));
}
}
依赖关系
~4.5MB
~86K SLoC