解密 SENNA 块、SRL 和解析器输出
Decrypting SENNA Chunk, SRL and Parser Output
Senna 是一个使用神经网络构建的 NLP 工具,它能够做到:
- 词性标注
- NER 标记
- 区块标记
- 语义角色标签标记和
- 正在解析
从http://ml.nec-labs.com/senna/download.html下载预编译包后
我 运行 --help
菜单,看看有什么选项:
alvas@ubi:~/senna$ ./senna-linux64 --help
invalid argument: --help
SENNA Tagger (POS - CHK - NER - SRL)
(c) Ronan Collobert 2009
Usage: ./senna-linux64 [options]
Takes sentence (one line per sentence) on stdin
Outputs tags on stdout
Typical usage: ./senna-linux64 [options] < inputfile.txt > outputfile.txt
Display options:
-h Display this help
-verbose Display model informations on stderr
-notokentags Do not output tokens
-offsettags Output start/end offset of each token
-iobtags Output IOB tags instead of IOBES
-brackettags Output 'bracket' tags instead of IOBES
Data options:
-path <path> Path to the SENNA data/ and hash/ directories [default: ./]
Input options:
-usrtokens Use user's tokens (space separated) instead of SENNA tokenizer
SRL options:
-posvbs Use POS verbs instead of SRL style verbs for SRL task
-usrvbs <file> Use user's verbs (given in <file>) instead of SENNA verbs for SRL task
Tagging options:
-pos Output POS
-chk Output CHK
-ner Output NER
-srl Output SRL
-psg Output PSG
命令行界面简单明了,POS 和 NER 标签的输出也很容易理解。
鉴于此输入:
alvas@ubi:~/senna$ cat test.in
Foo went to eat bar at the Foobar.
这是标准的 Penn Treebank 标签集:
alvas@ubi:~/senna$ ./senna-linux64 -pos < test.in
Foo NNP
went VBD
to TO
eat VB
bar NN
at IN
the DT
Foobar NNP
. .
这是 BIO tagset:
alvas@ubi:~/senna$ ./senna-linux64 -ner < test.in
Foo S-PER
went O
to O
eat O
bar O
at O
the O
Foobar S-LOC
. O
对于分块,它也是我们习惯的 的某种形式:
alvas@ubi:~/senna$ ./senna-linux64 -chk < test.in
Foo S-NP
went B-VP
to I-VP
eat E-VP
bar S-NP
at S-PP
the B-NP
Foobar E-NP
. O
但是 S-
标签是什么意思? 似乎它只附加到单个令牌块的令牌上,是真的吗?
SRL 标签有点奇怪,它们是每个标记的多个注释:
alvas@ubi:~/senna$ ./senna-linux64 -srl < test.in
Foo - S-A1 S-A0
went went S-V O
to - B-AM-PNC O
eat eat I-AM-PNC S-V
bar - I-AM-PNC S-A1
at - I-AM-PNC B-AM-LOC
the - I-AM-PNC I-AM-LOC
Foobar - E-AM-PNC E-AM-LOC
. - O O
看起来像我们从语义框架中得到的 "tuple-like" 输出,但我不理解约定,例如-AM-
是什么?什么是 -PNC
?
输出是什么意思,我们应该如何解释它?
对于解析器输出:
alvas@ubi:~/senna$ ./senna-linux64 -psg < test.in
Foo (S1(S(NP*)
went (VP*
to (S(VP*
eat (VP*
bar (ADVP*)
at (PP*
the (NP*
Foobar *))))))
. *))
看起来像 bracketed parse output we see in parsing 但是 *
是什么意思?
SENNA 使用 CoNLL 格式。你可以在这里阅读:http://universaldependencies.github.io/docs/format.html
这很常见,周围有很多转换器。
至于前缀,它们的意思是:S- 单例表达式和 B- 开头 I- 中间 E- 多词表达式的结尾。
然后是语义角色标注的输出。查找有关 SRL 的更多信息,因为这会变得有点复杂。请注意,有两列,一列用于动词 go,一列用于动词 eat。通常 A0 是主语,A1 是直接宾语(同样,过于简单化)。 AM 是参数修饰符,-LOC 是一个位置(它可以是其他副词)。 PNC 似乎指的是充当动词 go 宾语的代理名词短语。不记得从我的头顶。这里的例子 verbs.colorado.edu/propbank/framesets-english/go-v.html
至于解析树,它是用括号括起来的,也是一种松散地受 Lisp 启发的通用符号。 * 表示当前令牌的标签。我发现这很有用:https://math.stackexchange.com/questions/588230/how-to-convert-parentheses-notation-for-trees-into-an-actual-tree-drawing
Senna 是一个使用神经网络构建的 NLP 工具,它能够做到:
- 词性标注
- NER 标记
- 区块标记
- 语义角色标签标记和
- 正在解析
从http://ml.nec-labs.com/senna/download.html下载预编译包后
我 运行 --help
菜单,看看有什么选项:
alvas@ubi:~/senna$ ./senna-linux64 --help
invalid argument: --help
SENNA Tagger (POS - CHK - NER - SRL)
(c) Ronan Collobert 2009
Usage: ./senna-linux64 [options]
Takes sentence (one line per sentence) on stdin
Outputs tags on stdout
Typical usage: ./senna-linux64 [options] < inputfile.txt > outputfile.txt
Display options:
-h Display this help
-verbose Display model informations on stderr
-notokentags Do not output tokens
-offsettags Output start/end offset of each token
-iobtags Output IOB tags instead of IOBES
-brackettags Output 'bracket' tags instead of IOBES
Data options:
-path <path> Path to the SENNA data/ and hash/ directories [default: ./]
Input options:
-usrtokens Use user's tokens (space separated) instead of SENNA tokenizer
SRL options:
-posvbs Use POS verbs instead of SRL style verbs for SRL task
-usrvbs <file> Use user's verbs (given in <file>) instead of SENNA verbs for SRL task
Tagging options:
-pos Output POS
-chk Output CHK
-ner Output NER
-srl Output SRL
-psg Output PSG
命令行界面简单明了,POS 和 NER 标签的输出也很容易理解。
鉴于此输入:
alvas@ubi:~/senna$ cat test.in
Foo went to eat bar at the Foobar.
这是标准的 Penn Treebank 标签集:
alvas@ubi:~/senna$ ./senna-linux64 -pos < test.in
Foo NNP
went VBD
to TO
eat VB
bar NN
at IN
the DT
Foobar NNP
. .
这是 BIO tagset:
alvas@ubi:~/senna$ ./senna-linux64 -ner < test.in
Foo S-PER
went O
to O
eat O
bar O
at O
the O
Foobar S-LOC
. O
对于分块,它也是我们习惯的
alvas@ubi:~/senna$ ./senna-linux64 -chk < test.in
Foo S-NP
went B-VP
to I-VP
eat E-VP
bar S-NP
at S-PP
the B-NP
Foobar E-NP
. O
但是 S-
标签是什么意思? 似乎它只附加到单个令牌块的令牌上,是真的吗?
SRL 标签有点奇怪,它们是每个标记的多个注释:
alvas@ubi:~/senna$ ./senna-linux64 -srl < test.in
Foo - S-A1 S-A0
went went S-V O
to - B-AM-PNC O
eat eat I-AM-PNC S-V
bar - I-AM-PNC S-A1
at - I-AM-PNC B-AM-LOC
the - I-AM-PNC I-AM-LOC
Foobar - E-AM-PNC E-AM-LOC
. - O O
看起来像我们从语义框架中得到的 "tuple-like" 输出,但我不理解约定,例如-AM-
是什么?什么是 -PNC
?
输出是什么意思,我们应该如何解释它?
对于解析器输出:
alvas@ubi:~/senna$ ./senna-linux64 -psg < test.in
Foo (S1(S(NP*)
went (VP*
to (S(VP*
eat (VP*
bar (ADVP*)
at (PP*
the (NP*
Foobar *))))))
. *))
看起来像 bracketed parse output we see in parsing 但是 *
是什么意思?
SENNA 使用 CoNLL 格式。你可以在这里阅读:http://universaldependencies.github.io/docs/format.html
这很常见,周围有很多转换器。
至于前缀,它们的意思是:S- 单例表达式和 B- 开头 I- 中间 E- 多词表达式的结尾。
然后是语义角色标注的输出。查找有关 SRL 的更多信息,因为这会变得有点复杂。请注意,有两列,一列用于动词 go,一列用于动词 eat。通常 A0 是主语,A1 是直接宾语(同样,过于简单化)。 AM 是参数修饰符,-LOC 是一个位置(它可以是其他副词)。 PNC 似乎指的是充当动词 go 宾语的代理名词短语。不记得从我的头顶。这里的例子 verbs.colorado.edu/propbank/framesets-english/go-v.html 至于解析树,它是用括号括起来的,也是一种松散地受 Lisp 启发的通用符号。 * 表示当前令牌的标签。我发现这很有用:https://math.stackexchange.com/questions/588230/how-to-convert-parentheses-notation-for-trees-into-an-actual-tree-drawing