NLP関係抽出とイベント抽出

関係抽出

ここに画像の説明を挿入

エンティティ関係抽出とも呼ばれる関係抽出は、エンティティ認識に基づいています. エンティティ認識の後、特定のテキスト内の任意の 2 つのエンティティが事前定義された関係を構成しているかどうかを判断することは、テキスト コンテンツの理解をサポートする重要なテクノロジの 1 つです. 、インテリジェントな顧客サービス、セマンティック検索アプリケーションはすべて非常に重要です。

ここに画像の説明を挿入

深層学習はテキストの特徴を自動的に抽出するため、現在の深層学習手法は関係抽出タスクで良い結果を達成しています。畳み込みニューラル ネットワークに基づく関係抽出や事前トレーニング済みモデルに基づく関係抽出など、深層学習で関係抽出を行う方法は多数ありますその中でも、畳み込みニューラルネットワークに基づく手法は、最も代表的な手法の1つです。

畳み込みニューラル ネットワークに基づく関係抽出アルゴリズム

関係抽出の分野に適用される畳み込みニューラル ネットワークのコア アルゴリズムはPCNN アルゴリズムです。まず、単語埋め込みと単語の位置埋め込みによって文をベクトル表現に変換し、畳み込みニューラル ネットワークの畳み込み演算とプーリング演算によって文ベクトルの特徴ベクトルを抽出し、最後に関係予測を行います。は発表された。

PCNN アルゴリズムは、入力モジュール、畳み込みモジュール、プーリング モジュール、分類モジュールの 4 つのモジュールで構成されます. モデル構造は次のとおりです.
ここに画像の説明を挿入
単語ベクトル: コンピュータは人間の文字を認識できないため、word2vec などの単語ベクトル構築ツールを使用して各単語を変換します.文中 低次元の実数値ベクトルに変換されるため、コンピューターは各単語を理解して認識できます。

位置ベクトル: 位置ベクトルは、文内の各単語とエンティティのペアの相対位置を表し、単語 was からエンティティ Bob と Canada までの相対距離は、それぞれ 1 と -3 です。
ここに画像の説明を挿入
特徴抽出: 特徴抽出とは、文の主な特徴を抽出して、文の意味情報を表すことです。入力文の長さが一定でないため、先頭エンティティと末尾エンティティ間の関係情報が文のどこにでも分散している可能性があります。つまり、対象エンティティ ペアの関係タイプを予測するには、文からさまざまな局所特徴を抽出する必要があります。 . 畳み込みニューラル ネットワークでは、畳み込み演算は、これらの局所的な特徴を取得するための一般的な方法です。

セグメント化されたプーリング: 一般的に使用されるプーリング操作には、最大プーリング、平均プーリング、およびグローバル プーリングが含まれます. 最大プーリングを例にとると、各特徴ベクトルの最も代表的な特徴がキャプチャされます. セグメント化プーリングの場合, 2 つの特定のエンティティの位置に従って,畳み込み文特徴ベクトルを 3 つのセグメントに分割し、各セグメントに対して最大プーリング操作を実行します。
ここに画像の説明を挿入

関係分類: 各文の特徴ベクトルを、関係分類用のソフトマックス分類器に入力します。特徴が異なる関係に属する確率が計算され、確率が最も高い関係が文内のエンティティ ペアの関係として選択されます。
ここに画像の説明を挿入

損失関数に基づく逆伝播最適化: 確率的勾配降下 (SGD) 手法を使用して、対数尤度 J(θ) を最大化します。ここに画像の説明を挿入
ニューラル ネットワークのさまざまな層のニューロンのパラメーターは、バックプロパゲーション アルゴリズムを使用して最適化されます。ここに画像の説明を挿入

遠隔教師による関係抽出

原因:上記の監修に基づく関係性抽出の問題:多くの分野で、ラベル付けコーパスが不足している、手作業によるラベル付けのコストが高い、時間と労力がかかるという問題があります。
戦略: 自動化された方法でコーパスに迅速に注釈を付けることができるかどうか。
方法:リモート監視

リモート監視に基づく基本的な仮定は、トリプレット R(E1,E2) がナレッジ マップから取得でき (注: R は関係を表し、El と E2 は 2 つのエンティティを表す)、El と E2 が文内で共起する場合です。 S の場合、S は E1 と E2 の間の関係 R を表し、これは正のトレーニング例としてマークされます。

リモート監視の問題: リモート監視では、エンティティ ペアは 1 つの関係のみに対応すると想定されますが、実際には、エンティティ ペアは同時に複数の関係を持つことができます。

小標本関係抽出

原因: 多くの分野で、アノテーション コーパスが不十分である、手動アノテーションのコストが高い、時間と労力がかかるという問題があります。
戦略: 少量のラベル付きコーパスで、性能要件を満たす関係抽出を実現できるかどうか。
方法:小標本関係抽出.

小さなサンプルの学習タスク: 小さなサンプルのトレーニング セットには多くのカテゴリが含まれており、各カテゴリには複数のサンプルがあります。トレーニング フェーズでは、C カテゴリがトレーニング セットからランダムに選択され、各カテゴリにはタスクを構築するための K 個のサンプルがあり、モデルのサポート セットとして入力されます。次に、C の残りのデータからバッチが抽出されます。カテゴリ (バッチ) サンプルは、モデル、クエリ セット (クエリ セット) の予測オブジェクトとして使用されます。つまり、モデルはこれらの C カテゴリを C*K データからどのように区別するかを学習する必要があり、このようなタスクは C-way K-shot 問題と呼ばれます。

関節摘出

大まかに言えば、関係抽出タスクは、エンティティ抽出タスクと関係抽出タスクの2 つのサブタスクに分けられますエンティティ抽出タスクは名前付きエンティティ認識に似ています. 関係抽出タスクの本質は, 抽出されたエンティティ間の関係を分類することです. それは分類タスクです. この方法に基づく関係抽出はパイプライン法と呼ばれます.

エンドツーエンド抽出とも呼ばれる結合抽出は、入力テキストを変更せずに元のテキストをモデルに直接送信してトレーニングし、最終結果を出力することを指します結合抽出とは、Pipeline の 2 つのサブタスク モデルを 1 つのタスク モデルに結合し、このモデルでエンティティとその関係を同時に抽出することです。

既存の結合抽出モデルは、一般に、共有パラメータの結合抽出モデルと結合復号化の結合抽出モデルの 2 つのカテゴリに分類されます。

パラメータを共有するジョイント抽出モデル

ジョイントは、2 つのサブモデル間のパラメーター共有によって実現され、エンティティまたは関係は、異なるデコード方法を使用して取得されます。

共有パラメータはサブモデル間の相互作用を強化できます, 主に単語埋め込み層と共有符号化層を共有します. その後, 2つのサブタスクは一般に2つのサブタスクの特性に従い, 独自のモデルを使用します. 例えば, LSTM +CRF は、エンティティ抽出のシーケンス アノテーション結果を取得するためによく使用されます。; 関係抽出のサブタスクでは、特徴抽出に CNN がよく使用され、最後に関係分類に Softmax が使用されます。
ここに画像の説明を挿入

関節復号化のための関節抽出モデル

1 つのデコード方法を使用して、エンティティと関係を同時に取得します。ジョイント デコーディングは、エンティティ、エンティティと関係、および関係の間の相互作用を実現できます。

結合抽出には順次ラベル付けの方法が使用されます。つまり、エンティティとその関係を個別に識別するのではなく、エンティティとその関係が直接抽出されます。結合抽出にシーケンス ラベル付けを使用するコア アイデアは、関係とエンティティを同時にラベル付けすることです. エンティティは「関係を持つエンティティ」であるため、関係抽出タスクはシーケンス ラベル付けタスクに変換できます. 一般的なラベル付け方法は主に全体的な BIOES ラベル付け、全体的な BIES コールアウト、全体的な BIO コールアウトなどを含みます。

イベント抽出

基本的な考え方:イベントとは、情報の一形態として、特定の人や物が特定の時間や場所で相互作用するという客観的な事実を指します。誰が、どこで、何をしたか。イベント抽出の目的は、構造化されていない自然言語テキストからイベントの発生を正確に記述できる構造化テキストを抽出することです。
ここに画像の説明を挿入
ACE 2005 は、現在最も広く使用されているイベント抽出データセットであり、英語、中国語、アラビア語の 3 つの言語によるトレーニング データが含まれています。ACE 2005 は、文中のイベント トリガー ワード、イベント タイプ、イベント要素、および対応する要素の役割をマークし、合計 33 のサブイベント タイプを含む 8 つのイベント タイプを定義しました。異なるイベント タイプには、異なるイベント要素の役割が含まれています。
サブタスク:

1. イベント検出

テキストに含まれるイベントを検出して分類する: 従来のイベント検出方法では、テキスト内のイベント トリガー ワードを識別してから、トリガー ワードを分類します。
イベント検出の主な研究方法は、テンプレート マッチングと機械学習に基づいています。
ここに画像の説明を挿入

動的マルチプール畳み込みニューラル ネットワークに基づくイベント検出モデルには、単語埋め込み学習、語彙レベルの特徴抽出、文レベルの特徴抽出、イベント分類の 4 つのモジュールが含まれており、モデル構造は次のとおりです。および文レベルの特徴
ここに画像の説明を挿入
その中で、語彙レベルの特徴表現は、単語埋め込みベクトルを最初から最後まで 1 つずつ連結することによって形成され、文レベルの特徴には、構成されたコンテキスト単語ベクトル特徴 (CWF) と位置特徴ベクトル (PF) が含まれます。センテンス内の各単語と候補トリガー ワードとの間の相対距離。
畳み込み演算: 文全体のセマンティクスは、畳み込みカーネルを介して文レベルの特徴に対して畳み込み演算を実行し、それを特徴マップに圧縮することによって取得されます。
動的マルチプーリング: 畳み込み演算で得られた特徴マップを、トリガー候補となる単語を境界として 2 つの部分に分割し、各特徴マップに対して最大プーリングを実行し、すべてのプーリング結果を接合して固有ベクトルを取得します。
分類: 動的マルチプーリングによって得られた特徴ベクトルと語彙レベルの特徴表現を接合して新しい特徴ベクトルを取得し、全結合層と Softmax 分類器を使用してイベントの分類結果を取得します。

DMCNN を使用してイベント検出を実現:
以下は、Pytorch に基づく DMCNN イベント検出の具体的な実装コードです. 全体的な構造は、入力として単語ベクトルによって表される文のコンテキストに基づいており、文レベルの特徴は畳み込みによって取得されますおよび動的マルチプーリング操作、語彙レベルの機能を備えたスプライシングが分類器に入力され、最後にクロスエントロピー損失関数を使用して損失が計算され、モデル パラメーターが調整されます。

def forward(self): 
	x = torch.cat((self.char_lookup(self.char_inputs), self.pf_lookup(self.pf_inputs)), dim=-1)     #x: 句子级特征向量
	y = self.char_lookup(self.lxl_inputs).view(self.config.batch_t, -1)     #y 词汇级特征向量
	x = torch.tanh(self.conv(x.permute(0, 2, 1)))     # 经过卷积操作之后得到的特征向量
	x = x.permute(0, 2, 1) 
	x = self.pooling(x)     # 动态多池化操作得到的特征向量

self.conv = nn.Conv1d(self.config.char_dim+self.config.pf_t, self.config.feature_t, self.config.window_t,  bias=True) # 卷积 
self.L = nn.Linear(2*self.confifig.feature_t + 3*self.confifig.char_dim, self.confifig.num_t, bias=True) # 全连接层 
self.loss = nn.CrossEntropyLoss() 	# 交叉熵损失函数 
def pooling(self, conv): 	#动态多池化
	mask = np.array([[0, 0], [0, 1], [1, 0]]) 
	mask_emb = nn.Embedding(3, 2).cuda() 
	mask_emb.weight.data.copy_(torch.from_numpy(mask)) 
	mask = mask_emb(self.masks) # conv [batch, sen-2, feature] mask [batch, sen-2, 2] 
	pooled, _ = torch.max(torch.unsqueeze(mask*100, dim=2) + torch.unsqueeze(conv, dim=3), dim=1) 
	pooled -= 100 
	pooled = pooled.view(self.config.batch_t, -1) #torch.Size([170, 400]) 
	return pooled

2. イベント要素抽出

テキストからイベントトリガーワードを発見し、要素が果たす役割を判断します。イベント要素の抽出は、パターンマッチングによる方法と機械学習による方法に分けることができます。
イベント トリガー ワード: イベントの発生を示すコア ワード、主に動詞または名詞;
イベント要素: 人、時間、場所などのイベント参加者。

シーケンスアノテーションに基づくイベント要素抽出方法は、まず文中の各単語を単語埋め込みモジュールに入力して単語ベクトルを取得し、それを双方向長短期記憶ニューラルネットワーク (Bi-LSTM) に入力して出力します。各ラベルスコアで文中の単語の予測を行い、最終的に条件付き確率場 (CRF) を介して最終的な予測ラベルを取得します。モデル構造は次のとおりです。
ここに画像の説明を挿入
単語埋め込みベクトル: 次の層の入力として、文内の各単語を単語ベクトル形式に変換します。
Bi-LSTM モジュール: 文中の各単語の単語埋め込みベクトルが双方向 LSTM の入力として使用され、順方向および逆方向 LSTM によって出力される隠れ状態が接合されて、完全な隠れ状態シーケンスが得られます。文の特徴ベクトル。
CRF モジュール: CRF レイヤーの役割は、制約ルールを増やして、間違った予測結果の可能性を減らすことです。たとえば、文の最初の単語のラベルは、IX ではなく、常に BX または O のラベルで始まります。これは、文の先頭の最初の単語が、役割を果たす単語の中間部分であってはならないためです。

おすすめ

転載: blog.csdn.net/zag666/article/details/128211934