两天前我开始使用 Syntaxnet,我想知道如何以易于解析的格式(即:Json、XML、python 图)使用/导出输出(ascii 树或 conll)。
谢谢你的帮助 !
在进入 ascii 树(我认为您正在关注 demo.sh)之前,输入会经过标记和解析。删除命令管道中的最后一步。
您修改后的 demo.sh 文件将如下所示:-
PARSER_EVAL=bazel-bin/syntaxnet/parser_eval
MODEL_DIR=syntaxnet/models/parsey_mcparseface
[[ "$1" == "--conll" ]] && INPUT_FORMAT=stdin-conll || INPUT_FORMAT=stdin
$PARSER_EVAL \
--input=$INPUT_FORMAT \
--output=stdout-conll \
--hidden_layer_sizes=64 \
--arg_prefix=brain_tagger \
--graph_builder=structured \
--task_context=$MODEL_DIR/context.pbtxt \
--model_path=$MODEL_DIR/tagger-params \
--slim_model \
--batch_size=1024 \
--alsologtostderr \
| \
$PARSER_EVAL \
--input=stdin-conll \
--output=stdout-conll \
--hidden_layer_sizes=512,512 \
--arg_prefix=brain_parser \
--graph_builder=structured \
--task_context=$MODEL_DIR/context.pbtxt \
--model_path=$MODEL_DIR/parser-params \
--slim_model \
--batch_size=1024 \
--alsologtostderr \
然后你可以运行: -
$ echo 'Bob brought the pizza to Alice.' | syntaxnet/demo.sh 1>sample.txt 2>dev/null
您的结果将存储在 sample.txt 中,它看起来像这样:-
1 Bob _ NOUN NNP _ 2 nsubj _ _
2 brought _ VERB VBD _ 0 ROOT _ _
3 the _ DET DT _ 4 det _ _
4 pizza _ NOUN NN _ 2 dobj _ _
5 to _ ADP IN _ 2 prep _ _
6 Alice _ NOUN NNP _ 5 pobj _ _
7 . _ . . _ 2 punct _ _
从这里您可以通过使用 \n 拆分数据轻松获取有关每个单词的头部、词性和节点类型的信息
ascii 树本身是使用上面构建的。
我来这里是为了寻找输出词性的图例。它是在一个已删除的答案中共享的——其他用户可能看不到。
到目前为止,我的句子的词性缩写似乎与Penn 词性标签相匹配。如果页面关闭或更改,请在此处引用该表:
- CC 协调连词
- CD 基数
- DT 确定器
- EX Existential there
- FW 外来词
- IN 介词或从属连词
- JJ形容词
- JJR 形容词,比较级
- JJS 形容词,最高级
- LS 列表项标记
- MD模态
- NN 名词,单数或质量
- NNS 名词,复数
- NNP 专有名词,单数
- NNPS 专有名词,复数
- PDT 预定义器
- POS 所有格结尾
- PRP人称代词
- PRP$ 所有格代词
- RB 副词
- RBR 副词,比较
- RBS 副词,最高级
- 反相粒子
- 符号
- 到
- 呃感叹词
- VB 动词,基本形式
- VBD 动词,过去式
- VBG 动词、动名词或现在分词
- VBN 动词,过去分词
- VBP 动词,非第三人称单数现在时
- VBZ 动词,第三人称单数现在时
- WDT Wh-确定器
- WP Wh-代词
- WP$ 所有格 wh 代词
- WRB Wh-副词
我写了一篇博文,解释了如何将任何给定语言的 SyntaxNet 输出转换为 Python,特别是 NLTK,并将其输出与依赖图和树类一起使用。
你可以在这里查看:http ://www.davidsbatista.net/blog/2017/03/25/syntaxnet/