spaCy 用一个词性标记每个Tokens中的每个s Document(以两种不同的格式,一种存储在posand和pos_属性中Token,另一种存储在tag和tag_属性中)以及对其.head标记的语法依赖(存储在dep和dep_属性中) ).
其中一些标签是不言自明的,即使是像我这样没有语言学背景的人:
>>> import spacy
>>> en_nlp = spacy.load('en')
>>> document = en_nlp("I shot a man in Reno just to watch him die.")
>>> document[1]
shot
>>> document[1].pos_
'VERB'
Run Code Online (Sandbox Code Playgroud)
其他......不是:
>>> document[1].tag_
'VBD'
>>> document[2].pos_
'DET'
>>> document[3].dep_
'dobj'
Run Code Online (Sandbox Code Playgroud)
更糟糕的是,官方文档甚至不包含大多数这些属性的可能标记列表,也不包含其中任何属性的含义.他们有时会提到他们使用的标记化标准,但这些声明目前还不完全准确,而且最重要的是标准很难追踪.
什么是可能的值tag_,pos_和dep_性质,以及它们意味着什么?
Mar*_*ery 74
spaCy文档目前声称:
词性标注器使用Penn Treebank标签集的OntoNotes 5版本.我们还将标签映射到更简单的Google Universal POS标签集.
更确切地说,该.tag_属性公开了Treebank标签,并且该pos_属性公开了基于Google Universal POS标签的标签(尽管spaCy扩展了列表).
spaCy的文档似乎建议那些只想愚蠢地使用其结果而不是训练他们自己的模型的用户应该忽略该tag_属性并仅使用pos_一个属性,说明tag_属性......
主要是为后续模型设计好的功能,特别是语法分析器.它们依赖于语言和树库.
也就是说,如果spaCy发布了在新树库上训练的改进模型,则该tag_属性可能具有与之前相同的值.这显然使那些希望在版本升级之间获得一致API的用户无益.但是,由于当前标签是Penn Treebank的变体,因此它们很可能与任何Penn Treebank POS标签文档中描述的集合相交,如:http://web.mit.edu/6.863/www/PennTreebankTags. HTML
更有用的pos_标签
粗粒度,不太详细的标记,表示令牌的单词类
基于Google Universal POS标签集.对于英语,可以在此处找到通用POS标签集中的标签列表,其中包含指向其定义的链接:http://universaldependencies.org/en/pos/index.html
清单如下:
ADJ:形容词ADP:adpositionADV:副词AUX: 助动词CONJ: 并列连词DET:确定者INTJ:感叹词NOUN:名词NUM:数字PART:粒子PRON:代名词PROPN:专有名词PUNCT:标点符号SCONJ: 从属连词SYM:符号VERB:动词X:其他但是,我们可以从spaCy的词性模块中看到它扩展了这个模式,增加了三个额外的POS常量EOL,NO_TAG并且SPACE它们不是通用POS标记集的一部分.这些:
EOL使用它,虽然我不确定NO_TAG是一个错误代码.如果您尝试使用未安装的模型解析句子,则会为所有Tokens分配此POS.例如,我没有安装spaCy的德国模型,如果我尝试使用它,我会在本地看到这个:
>>> import spacy
>>> de_nlp = spacy.load('de')
>>> document = de_nlp('Ich habe meine Lederhosen verloren')
>>> document[0]
Ich
>>> document[0].pos_
''
>>> document[0].pos
0
>>> document[0].pos == spacy.parts_of_speech.NO_TAG
True
>>> document[1].pos == spacy.parts_of_speech.NO_TAG
True
>>> document[2].pos == spacy.parts_of_speech.NO_TAG
True
Run Code Online (Sandbox Code Playgroud)SPACE 除了单个普通ASCII空格(没有获得自己的标记)之外,它用于任何间距:
>>> document = en_nlp("This\nsentence\thas some weird spaces in\n\n\n\n\t\t it.")
>>> for token in document:
... print('%r (%s)' % (str(token), token.pos_))
...
'This' (DET)
'\n' (SPACE)
'sentence' (NOUN)
'\t' (SPACE)
'has' (VERB)
' ' (SPACE)
'some' (DET)
'weird' (ADJ)
'spaces' (NOUN)
'in' (ADP)
'\n\n\n\n\t\t ' (SPACE)
'it' (PRON)
'.' (PUNCT)
Run Code Online (Sandbox Code Playgroud)如文档中所述,依赖标记方案基于ClearNLP项目; 标签的含义(截至2015年发布的ClearNLP版本3.2.0,仍然是最新版本,似乎是spaCy使用的版本)可以在https://github.com/clir/clearnlp-guidelines/找到blob/master/md/specifications/dependency_labels.md.该文档列出了这些令牌:
ACL:名词的克劳斯修饰语ACOMP:形容词补语ADVCL:状语从句修饰语ADVMOD:状语修饰语AGENT:代理人AMOD:形容词修饰语APPOS:Appositional修饰符ATTR:属性AUX:辅助AUXPASS:辅助(被动)CASE:案例标记CC: 并列连词CCOMP:克劳斯补充COMPOUND:复合改性剂CONJ:ConjunctCSUBJ:克劳斯主题CSUBJPASS:克劳斯主题(被动)DATIVE:DativeDEP:未分类的依赖DET:确定者DOBJ: 直接宾语EXPL:脾气暴躁INTJ:感叹词MARK:标记META:Meta修饰符NEG:否定修饰符NOUNMOD:名义修饰符NPMOD:名词短语作为状语修饰语NSUBJ:名义主题NSUBJPASS:名义主题(被动)NUMMOD:数字修饰符OPRD:对象谓词PARATAXIS:ParataxisPCOMP:介词的补充POBJ:介词对象POSS:占有修正PRECONJ:预先相关联合PREDET:预先确定者PREP:介词修饰语PRT:粒子PUNCT:标点符号QUANTMOD:量词的修饰符RELCL:相对子句修饰符ROOT: 根XCOMP:公开条款补语链接的ClearNLP文档还包含上述每个术语含义的简要说明.
除了上述文档之外,如果您希望在真实句子中看到这些依赖关系的一些示例,您可能会对2012年Jinho D. Choi的工作感兴趣:要么他的自然语言处理组件的优化性能和可扩展性,要么他的清除风格成分到依赖性转换的指导原则(这似乎只是前一篇论文的一个小节).两者都列出了2012年存在的所有CLEAR依赖标签以及定义和例句.(不幸的是,CLEAR依赖标签的集合自2012年以来发生了一些变化,因此一些现代标签没有在Choi的工作中列出或示例 - 但它仍然是一个有用的资源,尽管有点过时.)
Nuh*_*hdy 21
关于获得简短形式的细节含义的快速提示.您可以使用explain以下方法:
spacy.explain('pobj')
Run Code Online (Sandbox Code Playgroud)
这会给你输出像:
'object of preposition'
Run Code Online (Sandbox Code Playgroud)
直接链接(如果您不想通过无休止的冗长文档来获取完整的表格):
.pos_(词性,英语): https: //universaldependency.org/docs/en/pos/
.dep_(依赖关系,英语): https: //universaldependency.org/docs/en/dep/
现在,官方文档在https://spacy.io/api/annotation上提供了所有这些注释的更多详细信息(令牌的其他属性列表可在https://spacy.io/api/token上找到)。
如文档所示,它们的词性(POS)和依赖项标签具有针对不同语言的通用和特定变体,该explain()功能是非常有用的快捷方式,可以在没有文档的情况下更好地描述标签的含义,例如
spacy.explain("VBD")
Run Code Online (Sandbox Code Playgroud)
给出“动词,过去式”。
| 归档时间: |
|
| 查看次数: |
18648 次 |
| 最近记录: |