spaCy的词性和依赖性标签是什么意思?
nlp
python
spacy
5
0

spaCy标签向上每个Token S IN一个Document与语音的部分(在两个不同的格式,一种存储在pospos_所述的属性Token和其他存储在所述tagtag_属性)和句法依赖于其.head令牌(存储在depdep_属性中)。

其中一些标签是不言自明的,甚至对于像我这样没有语言背景的人也是如此:

>>> 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'

其他...不是:

>>> document[1].tag_
'VBD'
>>> document[2].pos_
'DET'
>>> document[3].dep_
'dobj'

更糟糕的是, 官方文档甚至没有包含这些属性中大多数属性的可能标签列表,也没有任何含义。他们有时会提到他们使用的令牌化标准,但是这些声明目前尚不完全准确,最重要的是很难追踪这些标准。

tag_pos_dep_属性的可能值是什么,它们是什么意思?

参考资料:
Stack Overflow
收藏
评论
共 4 个回答
高赞 时间 活跃

现在,官方文档在https://spacy.io/api/annotation上提供了所有这些注释的更多详细信息(令牌的其他属性列表可在https://spacy.io/api/token上找到)。

如文档所示,它们的词性(POS)和依赖项标签具有针对不同语言的通用和特定变体,而explain()函数是非常有用的捷径,无需文档即可更好地描述标签的含义,例如

spacy.explain("VBD")

给出“动词,过去式”。

收藏
评论

目前,SpaCy中的依赖项解析和标记似乎仅在单词级别而不是短语(名词短语除外)或从句级别实现。这意味着SpaCy可用于识别名词(NN,NNS),形容词(JJ,JJR,JJS)和动词(VB,VBD,VBG等)之类的东西,但不能识别形容词短语(ADJP),副词短语( ADVP)或问题(SBARQ,SQ)。

例如,当您使用SpaCy解析句子“公共汽车往哪个方向行驶?”时,我们得到以下树。

相比之下,如果使用Stanford解析器,则会得到结构更深的语法树。

收藏
评论

tl; dr回答

只需在以下位置展开列表:

更长的答案

自从我第一次提出这个问题以来,文档有了很大的改进,而spaCy现在对此进行了更好的记录。

词性标签

postag属性在https://spacy.io/api/annotation#pos-tagging中制成表格,并描述了这些值列表的来源。在进行此编辑(2020年1月)时,文档中提到pos属性:

spaCy按照“ 通用依赖项”方案将所有特定于语言的词性标签映射到一小组固定的单词类型标签。通用标签不编码任何形态特征,仅覆盖单词类型。它们可以作为Token.posToken.pos_属性使用。

至于tag属性,文档说:

英文词性标记器使用Penn Treebank标记集的OntoNotes 5版本。我们还将标签映射到更简单的Universal Dependencies v2 POS标签集。

德语词性标记器使用TIGER Treebank注释方案。我们还将标签映射到更简单的Universal Dependencies v2 POS标签集。

因此,您可以选择使用跨语言一致的粗粒度标记集( .pos ),还是使用特定于特定树库和特定语言的细粒度标记集( .tag )。

.pos_标记列表

该文档列出了用于pospos_属性的以下粗粒度标签:

  • ADJ :形容词,例如大,旧,绿色,难以理解的,第一
  • ADP :在例如,期间,
  • ADV :副词,例如非常,明天,下,哪里,那里
  • AUX :辅助,例如,是(完成),将(执行),应该(执行)
  • CONJ :合取,例如and和or,但是
  • CCONJ :协调连词,例如and和or,但是
  • DET :确定者,例如a,an,the
  • INTJ :感叹词,例如psst,ouch,bravo,hello
  • NOUN :名词,例如女孩,猫,树,空气,美女
  • NUM :数字,例如1、2017、1、77,IV,MMXIV
  • PART :粒子,例如,不是
  • PRON :代词,例如我,你,他,她,我,自己,某人
  • PROPN :专有名词,例如Mary,John,London,NATO,HBO
  • PUNCT :标点符号,例如。,(,) PUNCT
  • SCONJ :从属连词,例如,如果
  • SYM :符号,例如$,%,§,©,+,-,×,÷,=,:) 、?
  • VERB :动词,例如,奔跑,奔跑,奔跑,吃,吃,吃
  • X :其他,例如sfpksdpsxmsa
  • SPACE :空间,例如

请注意,当文档说此列表遵循“通用依赖项计划”时,文档稍微有些说谎。上面列出了两个不属于该方案的标签。

其中之一就是CONJ ,它曾经存在于Universal POS Tags方案中,但是自从首次编写SCONJ以来就被分为CCONJSCONJ 。根据文档中tag-> pos的映射,似乎spaCy的当前模型实际上并没有使用CONJ ,但是由于某些原因,它仍存在于spaCy的代码和文档中-可能与旧模型具有向后兼容性。

第二个是SPACE ,它不是Universal POS Tags方案的一部分(据我所知,从来没有过),并且由spaCy用于除单个普通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)

我将从此答案中省略.tag_标签的完整列表(较细粒度的标签),因为它们数量众多,文档齐全,英语和德语不同,并且可能在不同发行版之间进行更改。相反,请查看文档中的列表(例如https://spacy.io/api/annotation#pos-en英文),其中列出了每个可能的标记,其映射到的.pos_值以及其含义的描述。 。

依赖令牌

spaCy现在使用三种不同的方案来进行依赖性标记: 一种用于英语一种用于德语另一种用于其他所有东西 。再次,值列表很大,在这里我不会完整地复制它。每个依赖项旁边都有一个简短的定义,但是不幸的是,它们中的许多(如“介词修饰语”或“子句补语”)都是艺术术语,对于像我这样的日常程序员而言,它们是相当陌生的。如果您不是语言学家,则只需研究这些艺术术语的含义就可以理解它们。

不过,我至少可以为从事英语文本研究的人员提供一个研究的起点。如果您想在真实句子中看到一些CLEAR依赖关系的示例 (由英语模型使用),请查看Jinho D. Choi在2012年的工作:他的《自然语言处理组件的鲁棒性和可扩展性优化》《准则》 CLEAR样式到依存关系转换 (这似乎只是前一篇文章的一个小节)。两者都列出了2012年存在的所有CLEAR依赖项标签以及定义和例句。 (不幸的是,自2012年以来,CLEAR依赖项标签的集合发生了一些变化,因此Choi的工作中未列出或举例说明一些现代标签,但是尽管有些过时,它仍然是有用的资源。)

收藏
评论

关于获取简短形式的详细含义的快速提示。您可以使用以下explain方法:

spacy.explain('pobj')

这将为您提供如下输出:

'object of preposition'
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号