57

spaCy は、Tokenの各Documentを品詞 (2 つの異なる形式で、1 つは のposおよびpos_プロパティに格納され、もう 1 つはおよびプロパティにToken格納されます) およびそのトークンへの構文上の依存関係 (およびプロパティに格納されます) でタグ付けします。 )。tagtag_.headdepdep_

これらのタグのいくつかは、私のような言語学のバックグラウンドを持たない人にとっても、一目瞭然です。

>>> 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_プロパティの可能な値は何ですか? また、それらの意味は何ですか?

4

6 に答える 6

102

tl;dr答え

次のリストを展開するだけです。

より長い答え

最初にこの質問をして以来、ドキュメントは大幅に改善されており、spaCy はこれをより適切にドキュメント化しています。

品詞タグ

および属性はhttps://spacy.io/api/annotation#pos-taggingposで表にされており、これらの値のリストの起源が説明されています。この (2020 年 1 月) 編集の時点で、ドキュメントは属性について次のように述べています。tagpos

spaCy は、Universal Dependencies スキームに従って、すべての言語固有の品詞タグを単語タイプ タグの小さな固定セットにマップします。ユニバーサル タグは形態学的特徴をコード化せず、単語タイプのみをカバーします。これらはToken.posおよびToken.pos_属性として使用できます。

属性に関してtagは、ドキュメントは次のように述べています。

英語の品詞タガーは、Penn Treebank タグ セットのOntoNotes 5バージョンを使用します。また、タグをより単純な Universal Dependencies v2 POS タグ セットにマッピングします。

ドイツ語の品詞タガーは、TIGER Treebankアノテーション スキームを使用します。また、タグをより単純な Universal Dependencies v2 POS タグ セットにマッピングします。

したがって、言語間で一貫した粗粒度のタグ セット ( ) を使用するか、特定のツリーバンクに固有で特定の言語に固有.posの細粒度のタグ セット ( ) を使用するかを選択できます。.tag

.pos_タグリスト

posドキュメントには、およびpos_属性に使用される次の大まかなタグがリストされています。

  • ADJ: 形容詞、例えば、大きい、古い、緑の、理解できない、最初の
  • ADP: in, to, during などの副詞
  • ADV: 副詞、例えば、非常に、明日、下に、どこに、そこに
  • AUX: 助動詞、例: is、has (完了)、will (実行)、should (実行)
  • CONJ: 接続詞、例えばand、or、but
  • CCONJ: and、or、but などの調整接続詞
  • DET: 決定子、例えば、a、an、the
  • INTJ: 間投詞、例: psst、ouch、bravo、hello
  • NOUN: 名詞、例: girl、cat、tree、air、beauty
  • NUM: 数字。例: 1、2017、1、77、IV、MMXIV
  • PART: 粒子、たとえば 's、not、
  • PRON: 代名詞、例えば、私、あなた、彼、彼女、自分自身、自分自身、誰か
  • PROPN: 固有名詞。例: Mary、John、London、NATO、HBO
  • PUNCT: 句読点。例: ., (, ), ?
  • SCONJ: 従属接続詞。例: if、while、that
  • SYM: 記号、例: $、%、§、©、+、−、×、÷、=、:)、
  • VERB: 動詞、例えば、走る、走る、走る、食べる、食べる、食べる
  • X: その他、例: sfpksdpsxmsa
  • SPACE: スペース、例えば

このリストがユニバーサル依存関係スキームに従っていると彼らが言っているとき、ドキュメントは少し嘘をついていることに注意してください。そのスキームの一部ではない上記の 2 つのタグがあります。

そのうちの 1 つが で、以前はユニバーサル POS タグ スキームに存在していましたが、spaCy が最初に作成されてからとCONJに分割されました。ドキュメント内の tag->pos のマッピングに基づくと、spaCy の現在のモデルは実際には を使用していないように見えますが、何らかの理由でまだ spaCy のコードとドキュメントに存在しています - おそらく古いモデルとの後方互換性のためです。CCONJSCONJCONJ

2 つ目はSPACEで、これはユニバーサル POS タグ スキームの一部ではなく (そして、私が知る限り、決してそうではありませんでした)、単一の通常の ASCII スペース (独自のトークンを取得しない) 以外のスペースのために spaCy によって使用されます。 :

>>> 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 が依存関係のタグ付けに使用する3つの異なるスキームがあります。繰り返しますが、値のリストは膨大なため、ここでは完全には再現しません。すべての依存関係には、その横に簡単な定義がありますが、残念ながら、それらの多く (「同格修飾子」や「句補体」など) は、私のような日常のプログラマーにとってかなり異質な技術用語です。言語学者でない場合は、これらの専門用語の意味を調べて意味を理解する必要があります。

ただし、少なくとも英語のテキストを扱う人々のために、その研究の出発点を提供することはできます. 実際の文で CLEAR 依存関係 (英語モデルで使用) の例をいくつか見たい場合は、Jinho D. Choi の 2012 年の作業をチェックしてください: 彼のOptimization of Natural Language Processing Components for Robustness and Scalabilityまたは彼のガイドラインCLEAR スタイル構成要素から依存関係への変換(これは、以前の論文のサブセクションにすぎないようです)。どちらも、定義と例文とともに、2012 年に存在したすべての CLEAR 依存関係ラベルをリストしています。(残念ながら、CLEAR 依存関係ラベルのセットは 2012 年から少し変更されているため、最新のラベルの一部は Choi の作品にリストまたは例示されていませんが、少し古くなっていますが、有用なリソースであり続けています。)

于 2016-10-27T15:14:32.173 に答える
9

公式ドキュメントでは、 https: //spacy.io/api/annotation でこれらすべての注釈の詳細を提供しています(トークンのその他の属性のリストはhttps://spacy.io/api/tokenにあります)。

ドキュメントが示すように、それらの品詞 (POS) および依存関係タグには、さまざまな言語のユニバーサル バリエーションと特定のバリエーションの両方があり、explain()関数は、ドキュメントなしでタグの意味をより適切に説明するための非常に便利なショートカットです。

spacy.explain("VBD")

これは「動詞、過去形」を与えます。

于 2018-08-28T12:08:51.213 に答える