【勉強会資料】大規模言語モデル入門 第6章 固有表現認識

[大規模言語モデル入門](https://amzn.asia/d/16Wzurj ) の輪読会を開催したので、発表に使った資料を一部修正して公開します。

他の章の資料も公開していくので、よろしければご覧ください。
1. [【勉強会資料】 大規模言語モデル入門 第1章 はじめに](https://qiita.com/maekeso/items/e5a979df839ee766b3cc)
2. [【勉強会資料】 大規模言語モデル入門 第2章 Transformer](https://qiita.com/maekeso/items/5fc89e53429a8cb1ac48)
3. [【勉強会資料】 大規模言語モデル入門 第3章 大規模言語モデルの基礎](https://qiita.com/uminchu987/items/335c401eed06012af51d)
4. [【勉強会資料】 大規模言語モデル入門 第4章 大規模言語モデルの進展](https://qiita.com/maekeso/items/fcb3e623a9814fc4d57b)
5. [【勉強会資料】 大規模言語モデル入門 第5章-1 大規模言語モデルのファインチューニング](https://qiita.com/uminchu987/items/cb68991489ed40540f26)
6. [【勉強会資料】 大規模言語モデル入門 第5章-2 大規模言語モデルのファインチューニング](https://qiita.com/maekeso/items/3fed95ef506fefbb0542)
7. [【勉強会資料】 大規模言語モデル入門 第6章 固有表現認識](https://qiita.com/uminchu987/items/78485ea6d6455b08f5f7)
8. [【勉強会資料】 大規模言語モデル入門 第7章 要約生成](https://qiita.com/maekeso/items/e2f78606ca93c607c913)
9. [【勉強会資料】 大規模言語モデル入門 第8章 文埋め込み](https://qiita.com/uminchu987/items/e1e7dadcfa47955c1ad6)
10. [【勉強会資料】 大規模言語モデル入門 第9章 質問応答](https://qiita.com/maekeso/items/2aec33eacbf1b315f3f4)

# 固有表現認識とは？
特定の人物や場所などの固有表現を抽出して定義されたラベルに分類するタスク
例）
テキスト：「大谷翔平は岩手県水沢市出身のプロ野球選手」
固有表現：人名（大谷翔平）　地名（岩手県水沢市）

**固有表現のタイプ**
Message Understanding Conference(MUC)では下記の7タイプが存在
+ 組織名(ORGANIZATION)
+ 人名(PERSON)
+ 地名(LOCATION)
+ 日付表現(DATE)
+ 時間表現(TIME)
+ 金額表現(MONEY)
+ 割合表現(PERCENT)
Information Retrieval and Extraction Exercise(IREX)では、固有物名が追加される
さらに150種類に拡張した拡張固有表現階層も存在

# 固有表現システムの作成
対象とする文章や分野で必要とされるラベルの種類や数が異なる。
作成したい固有表現認識システムに合わせて、データセットを作成してモデルを作成する必要がある。
タスクに応じてデータセットの作成方法やモデルの実装が異なる

**Flat NER**
最も基本的な固有表現認識タスク。
テキスト上で固有表現ラベルが重複せず、連続した固有表現しか存在しない設定のタスク。
テキスト：「大谷翔平は岩手県水沢市出身」
　　　　　　ー人名ー　ーーー地名ーーー

**Nested NER**
テキスト上で固有表現ラベルが重複する場合があるものの、連続した固有表現しか存在しない設定のタスク。
テキスト：「愛知県庁は　　2019年　　に組織改正」
　　　　　　ー地名ー　ー時間表現ー
　　　　　　ー施設名ー

「愛知県庁」という語句は、地名と施設名の２つの固有表現を持っている。

**Discontinuous NER**
テキスト上で固有表現ラベルが不連続の例示が存在する設定のタスク
テキスト：「5月26日　　及び27日、G7サミットが開催」
　　　　　　ー時間表現ー
　　　　　ーー時間表現\\\\\\\\ーー　
5月26日と5月27日を固有表現として抽出したい状況。
様々なタスクがあるが、実応用上ではflat NERが採用されている。

固有表現が連続している、連続してないってどういうこと？
名前の間に他の単語が挟まっているかどうか

# アプローチ方法
**系列ラベリングアプローチ（sequence labeling approch）**
トークン列の各要素に対して、固有表現をラベル付けする方法
トークン列：「愛知県　庁　は　2019　年度　に　組織　改正」
ラベリング：「施設名　施設名　✖　時間　時間　✖　✖　✖」
トークン列と同じ長さのラベル列を予測することで固有表現を抽出
ラベル間の遷移を考慮することでモデルの性能が向上する場合がある。
flatNERを解くことを想定しているので、他のタスクだと適用するのが難しい

**スパンベースアプローチ（span-based approch）**
文字列やトークン列の任意の範囲（スパン）に対してラベルを分類する方法
トークン列：「愛知県(1)　庁(2)　は(3)　2019(4)　年度(5)　に(6)　組織(7)　改正(8)」
ラベリング：「地名(1,1)　施設名(1,2)　✖(1,3) ＊＊＊時間(4,4)　時間(4,5)　＊＊✖(8,8)」
重複のある固有表現に対応出来るため、nestedNERタスクを解くアプローチとして使われる。長いスパンの固有表現や未知語を含む固有表現は難しい。

**生成型のアプローチ(generative approch)**
テキスト上の固有表現の範囲と固有表現ラベルを生成する手法
トークン列：「愛知県(1)　庁(2)　は(3)　2019(4)　年度(5)　に(6)　組織(7)　改正(8)」
ラベリング：「１１地名　１２施設名　４５時間」
nestedNERやdiscontinuous NERのような複雑な構造を持つ固有表現を抽出するタスクに対応できる柔軟な手法。
GPT４などのエンコーダ構成と相性が良いので今後主流になるかも

文字列とトークン列の各要素の位置を対応づけることをアライメントと呼ぶ
そもそも固有表現の目的は、テキストから固有表現を抜き出して、適切なラベルを予測すること。そのため、抽出した固有表現とそのラベルが、人手でラベル付けされたデータセットの固有表現と一致しているかを評価する。適合率と再現率、F値で評価する

# ビダビアルゴリズム
動的計画法の一種であるビダビアルゴリズム
最もスコアが高くなるパスのみを保持する。計算量を削減するのに役立つ

言語の場合だと、ラベル間の遷移可能性を計算する際に用いられる。
地名の後に人名はこないだろうとか。
この遷移の重みを一致ではなく、自動的に計算するために、条件付き確率場を用いる。

**ビダビアルゴリズムの主な用途**
+ 音声認識:音声データから最も可能性の高い単語の系列を見つける
+ 自然言語処理：文章に対する品詞タグ付けや文の構造解析
+ 生物情報学：DNAやタンパク質配列の解析

# 参考文献
- [大規模言語モデル入門](https://amzn.asia/d/3xTMT8o)