NLPでの依存関係の解析[例で説明]

公開: 2021-03-10

自然言語処理は、人間の言語がテクノロジーとどのように相互作用するかを理解するために、計算言語学と人工知能の基礎を取り入れた学際的な概念です。

NLPでは、さまざまな用語や概念を実際のシナリオに具体的に適用するために、それらを深く理解する必要があります。 これらの基本的な概念には、品詞(POS)タグ付け、統計的言語モデリング、構文、意味および感情分析、正規化、トークン化、依存関係解析、および構成要素解析などが含まれます。

この記事では、依存関係解析の基本を見て、NLPでどのように実装されているかを理解します。

目次

依存関係の解析

依存関係解析(DP)は、文の単語間の依存関係を調べて、その文法構造を分析することを指します。 これに基づいて、文はいくつかのコンポーネントに分割されます。 このメカニズムは、文のすべての言語単位の間に直接リンクがあるという概念に基づいています。 これらのリンクは依存関係と呼ばれます。

たとえば、「デンバーを通る朝のフライトが好きですという文を考えてみましょう

次の図は、文の依存構造を説明しています。

ソース

文のす​​べての言語単位または単語間の関係は、型付き依存構造の有向アークを使用して示されます。 図に示されているように、ツリーのルート「prefer」は上記の文の先頭を形成します。

任意の2つの単語間の関係は、依存関係タグによってマークされます。 たとえば、「フライト」という単語は、「デンバー」という名詞の意味を変更します。 したがって、フライト->デンバーからの依存関係に気付くことができます。ここで、フライトはヘッドであり、デンバーは子または依存関係です。 これは、名義修飾子を表すnmodで表されます。

これは、一方が頭として機能し、もう一方が依存している2つの単語ごとの依存関係のケースを形成します。 現在、 Universal Dependency V2分類法は、以下の表に指定されている37のユニバーサル構文関係で構成されています。

依存関係タグ説明
acl 名詞の節修飾語(名詞節)
acl:relcl 関係節修飾子
advcl 副詞節修飾子
advmod 副詞修飾語
advmod:emph 言葉を強調する、強意語
advmod:lmod 処格副詞修飾語
amod 形容詞修飾子
appos 同格修飾子
aux 補助
aux:pass パッシブ補助
場合格付け
cc 接続詞の調整
cc:preconj 結合前
ccomp 節の補語
clf 分類子
化合物化合物
化合物:lvc 軽い動詞の構成
化合物:prt 句動詞の助詞
化合物:redup 重複した化合物
化合物:svc 連続動詞複合語
接続詞結合
警官コピュラ
csubj 節の主題
csubj:pass 節の受動態
dep 不特定の依存関係
det 限定詞
det:numgov 名詞の場合を支配する代名詞量指定子
det:nummod 名詞の場合に同意する代名詞量指定子
det:poss 所有限定詞
談話談話要素
脱臼脱臼した要素
expl 罵倒
expl:impers 非人称動詞
expl:pass 反射代名詞で使用される反射代名詞
expl:pv 本質的に再帰動詞を伴う反射接語
修繕マルチワード式を修正
フラットフラットマルチワード式
フラット:外国外国語
flat:name 名前
仲良くやっていく仲良くやっていく
iobj 間接目的語
リストリスト
マークマーカー
nmod 名義修飾子
nmod:poss 所有格修飾語
nmod:tmod 時間修飾子
nsubj 名目上の主題
nsubj:pass 受動的な名目上の主題
nummod 数値修飾子
nummod:gov 名詞の大文字小文字を管理する数値修飾子
obj 物体
obl 斜め公称
obl:agent エージェント修飾子
obl:arg 斜格
obl:lmod 処格修飾子
obl:tmod 時間修飾子
孤児孤児
パラタキシスパラタキシス
パンク句読点
reparandum オーバーライドされた流暢さ
呼格呼格
xcomp 開いた節の補語

NLTKを使用した依存関係の解析

依存関係の解析は、人間の言語の統計的自然言語処理(NLP)で使用されるライブラリとコードのコレクションであるNatural Language Toolkit(NLTK)パッケージを使用して実行できます。

NLTKを使用して、次のいずれかの方法で依存関係の解析を実行できます。

  1. 確率的で射影的な依存関係パーサー:これらのパーサーは、手で解析された文から収集された人間の言語の知識を使用して、新しい文を予測します。 彼らは間違いを犯し、制限されたトレーニングデータのセットで動作することが知られています。
  2. スタンフォードパーサー:これは、Javaに実装されている自然言語パーサーです。 依存関係の解析を実行するには、 StanfordCoreNLPパーサーが必要ですパーサーには、英語、中国語、ドイツ語、アラビア語などのいくつかの言語が含まれています。

パーサーの使用方法は次のとおりです。

nltk.parse.stanfordからインポートStanfordDependencyParser

path_jar ='path_to / stanford-parser-full-2014-08-27 / stanford-parser.jar'

path_models_jar ='path_to / stanford-parser-full-2014-08-27 / stanford-parser-3.4.1-models.jar'

dep_parser = StanfordDependencyParser(

path_to_jar = path_jar、path_to_models_jar = path_models_jar

)。

result = dep_parser.raw_parse('睡眠中に象を撃った')

依存関係=result.next()

list(dependency.triples())

上記のプログラムの出力は次のとおりです。

[

((u'shot'、u'VBD')、u'nsubj'、(u'I'、u'PRP'))、

((u'shot'、u'VBD')、u'dobj'、(u'elephant'、u'NN'))、

((u'elephant'、u'NN')、u'det'、(u'an'、u'DT'))、

((u'shot'、u'VBD')、u'prep'、(u'in'、u'IN'))、

((u'in'、u'IN')、u'pobj'、(u'sleep'、u'NN'))、

((u'sleep'、u'NN')、u'poss'、(u'my'、u'PRP $'))

]

構成要素の解析

Constituency Parsingは、文脈自由文法に基づいています。 ここで、解析ツリーには、それぞれが文法範疇に属するサブフレーズに分割された文が含まれています。 文中のすべての言語単位または単語は、親ノードと品詞タグを持つターミナルノードとして機能します。

たとえば、「猫」と「ベッドの下の箱」は名詞句ですが、「手紙を書く」と「車を運転する」は動詞句です。

「パジャマで象を撃ったという例文を考えてみましょうこれは、構成要素の解析ツリーのグラフィック表現です。

ソース

左側の解析ツリーは、パジャマを着た象を撃つことを示し、右側の解析ツリーは、被験者がパジャマを着ている間に象を撃つことを示しています。

最終的な単語が残るまで、文全体がサブフェーズに分割されます。 VPは動詞句を示し、NPは名詞句を示します。

依存関係の解析と構成要素の解析

構成要素の解析は、スタンフォードパーサーを使用して実装することもできます。 基本的に、Constituencyパーサーに従って特定の文を解析し、その後、Constituency解析ツリーを依存関係ツリーに変換します。

文をサブフレーズに分割することが目標である場合は、構成要素の解析を実装する必要があります。 ただし、文中の単語間の依存関係を調べたい場合は、依存関係の解析を使用する必要があります。

チェックアウト: NLPプロジェクトのアイデアとトピック

結論

この記事が役に立った場合は、Flipkart、Gramener、Zee5の業界専門家による個別のメンターシップを提供するupGradの機械学習とNLPの6か月間のPG認定を確認してください。

このプログラムは、データサイエンスと機械学習の足がかりを得ようとしているエンジニア、ソフトウェア/ IT、データ、その他の専門家向けに設計されています。 IIIT BBangaloretheからのこの大学院認定は、58%の平均給与引き上げを誇り、トップ企業のデータアナリスト、データサイエンティスト、MLエンジニア、NLPエンジニアの上級職に就くために必要なすべてです。 今日はちょうどRsであなたの席をブロックしてください。 月額3,034!

NLPでの依存関係の解析の使用は何ですか?

自然言語処理では、依存関係の解析は、文内の単語間の意味関係を識別するために使用される手法です。 依存関係パーサーは、文内の単語を意味役割にマップするために使用され、それによって単語間の構文関係を識別します。 依存関係の解析は、表面構造レベルでの自然言語テキストの構文解析のためのよく知られたアプローチです。 この方法では、単語間の構文依存関係を分析し、各単語の構文カテゴリを識別することにより、単語トークンの線形シーケンスから文の構文構造が復元されます。

依存関係の解析のアプリケーションは何ですか?

これは、依存関係の解析が使用されるいくつかのアプリケーション領域のリストです。 依存関係の解析の主な用途の1つは、自然言語処理のコンポーネントであるセマンティックロールラベリング(SRL)と情報抽出です。 依存関係の解析は、NLPタスク以外の構文チャンクおよび構成要素の解析にも使用されます。 依存関係の解析は、文中の単語を対応する句マーカーまたはツリー構造にマッピングする句構造解析とは根本的に異なります。

構文解析と依存関係解析の基本的な違いは何ですか?

構文パーサーと依存関係パーサーの違いは、依存関係パーサーが解析ツリーを構築し、構文パーサーが構文ツリーを構築することです。 構文解析では、事前定義されたルールを使用して構文を定義します。一方、依存関係パーサーは、あらゆる種類のフレーズを理解でき、あいまいな入力を処理することもできます。 依存関係パーサーは、フレーズ認識、チャンク化、依存関係分析、チャンク化、および構文解析に使用できます。