Spacy的词性和从属关系标签意味着什么? [英] What do spaCy's part-of-speech and dependency tags mean?

查看:23
本文介绍了Spacy的词性和从属关系标签意味着什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

用词性(以两种不同的格式,一种存储在Tokenpospos_属性中,另一种存储在tagtag_属性中)及其.head标记(存储在depdep_属性中)对Token中的每个Token进行空格标记。

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

>>> 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'
更糟糕的是,official docs甚至没有包含这些属性中大多数可能的标记的列表,也没有任何这些属性的含义。他们有时会提到他们使用的标记化标准,但这些说法目前并不完全准确,最重要的是,这些标准很难追踪到。

tag_pos_dep_属性的可能值是什么,它们的含义是什么?

推荐答案

tl;灾难恢复应答

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

较长的答案

自从我第一次问这个问题以来,文档有了很大改进,Spacy现在更好地记录了这一点。

词性标记

postag属性在https://spacy.io/api/annotation#pos-tagging中列出,并说明了这些值列表的来源。在此(2020年1月)编辑时,文档称pos属性为:

spacy将所有特定于语言的词性标记映射到Universal Dependencies scheme后面的一组固定的单词类型标记。通用标签不对任何形态特征进行编码,仅覆盖单词类型。它们作为Token.posToken.pos_属性提供。

对于tag属性,文档说:

英语词性标记器使用宾夕法尼亚Treebank标记集的OntoNotes 5版本。我们还将标记映射到更简单的通用依赖关系v2 POS标记集。

德语词性标记器使用TIGER Treebank注释方案。我们还将标记映射到更简单的通用依赖关系v2 POS标记集。

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

.pos_标签列表

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

  • ADJ:形容词,如大、老、绿、看不懂、第一
  • ADP:形容词,如in、to、期间
  • ADV:副词,例如Very、Tomorrow、down、where、here
  • AUX:助词,如is、has(Do)、will(Do)、will(Do)
  • CONJ:连词,如and、or、But
  • CCONJ:并列连词,如and、or、But
  • DET:限定词,如a、an、the
  • INTJ:感叹词,如:psst,哎呀,布拉沃,你好
  • NOUN:名词,例如女孩、猫、树、空气、美女
  • NUM:数字,如1、2017、1、77、IV、MMXIV
  • PART:助词,例如‘s,not,
  • PRON:代词,例如:I、You、He、She、Myself、Self、某人
  • PROPN:专有名词,例如Mary、John、London、NATO、HBO
  • PUNCT:标点符号,如,(,),?
  • SCONJ:从属连词,例如if、While、That
  • SYM:符号,如$、%、§、©、+、−、×、?、=、:)、😝
  • VERB:动词,例如run、runs、running、eat、ate、eat
  • X:其他,例如sfpksdpsxmsa
  • SPACE:空格,如

请注意,当文档说此列表遵循通用依赖关系方案时,他们有点撒谎;上面列出的两个标记不是该方案的一部分。

其中之一是CONJ,它过去存在于通用POS标签方案中,但自Spacy首次编写以来已被拆分为CCONJSCONJ。根据文档中tag->pos的映射,似乎Spacy当前的模型实际上并没有使用CONJ,但由于某种原因,它仍然存在于Spacy的代码和文档中--可能向后兼容旧模型。

第二个是SPACE,它不是通用POS标签方案的一部分(据我所知,从来没有),Spacy使用它作为除单个普通ASCII空格之外的任何空格(它们没有自己的令牌):

>>> document = en_nlp("This
sentence	has      some weird spaces in



		   it.")
>>> for token in document:
...   print('%r (%s)' % (str(token), token.pos_))
... 
'This' (DET)
'
' (SPACE)
'sentence' (NOUN)
'	' (SPACE)
'has' (VERB)
'     ' (SPACE)
'some' (DET)
'weird' (ADJ)
'spaces' (NOUN)
'in' (ADP)
'



		   ' (SPACE)
'it' (PRON)
'.' (PUNCT)

我将从这个答案中省略.tag_标记的完整列表(更细粒度的标记),因为它们很多,现在有很好的文档记录,英语和德语不同,而且可能更有可能在不同的版本之间发生变化。相反,请查看文档中的列表(例如https://spacy.io/api/annotation#pos-en对于英语),其中列出了每个可能的标记、它映射到的.pos_值以及它的含义的描述。

依赖项令牌

现在有三种Spacy用于依赖项标记的方案:one for Englishone for Germanone for everything else。再说一次,价值观清单很大,我不会在这里完整地重复它。每个依赖项旁边都有一个简短的定义,但不幸的是,它们中的许多术语--如"同位修饰语"或"从句补语"--对于像我这样的日常程序员来说是相当陌生的。如果你不是语言学家,你只需研究这些艺术术语的含义就能理解它们。

不过,我至少可以为使用英文文本的人提供一个研究的起点。如果你想在真实的句子中看到一些明显的依赖关系的例子,请查阅一下崔进浩2012年的工作:他的Optimization of Natural Language Processing Components for Robustness and Scalability或他的指南中关于清晰的风格 依赖项转换的构成(这似乎只是前一篇文章的一个小节)。它们都列出了2012年存在的所有明确的依赖标签,以及定义和例句。(不幸的是,自2012年以来,这组清晰的依赖关系标签发生了一些变化,因此一些现代标签没有在Choi的工作中列出或举例说明-尽管有点过时,但它仍然是一个有用的资源。)

这篇关于Spacy的词性和从属关系标签意味着什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆