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を使用して、次のいずれかの方法で依存関係の解析を実行できます。
- 確率的で射影的な依存関係パーサー:これらのパーサーは、手で解析された文から収集された人間の言語の知識を使用して、新しい文を予測します。 彼らは間違いを犯し、制限されたトレーニングデータのセットで動作することが知られています。
- スタンフォードパーサー:これは、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タスク以外の構文チャンクおよび構成要素の解析にも使用されます。 依存関係の解析は、文中の単語を対応する句マーカーまたはツリー構造にマッピングする句構造解析とは根本的に異なります。
構文解析と依存関係解析の基本的な違いは何ですか?
構文パーサーと依存関係パーサーの違いは、依存関係パーサーが解析ツリーを構築し、構文パーサーが構文ツリーを構築することです。 構文解析では、事前定義されたルールを使用して構文を定義します。一方、依存関係パーサーは、あらゆる種類のフレーズを理解でき、あいまいな入力を処理することもできます。 依存関係パーサーは、フレーズ認識、チャンク化、依存関係分析、チャンク化、および構文解析に使用できます。