> For the complete documentation index, see [llms.txt](https://docs.allganize.ai/nlu-api-dashboard/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allganize.ai/nlu-api-dashboard/1.1.0-jp/model-management/pafmansumetorikku/gu-you-biao-xian-chou-chu-named-entity-recognition.md).

# 固有表現抽出(Named Entity Recognition)

固有表現抽出の主要なメトリックとその計算方法

固有表現抽出(Named Entity Recognition) APIは、自然言語のテキストから、人物、組織、場所、その他の特定のタイプのエンティティなど、意味のあるキーワード（エンティティ）を抽出します。

## パフォーマンスメトリック

固有表現抽出は、モデルのパフォーマンスを測定するために3つのメトリックを使用します。

### 1. Precision (精度 )

Precisionは、モデルがどれだけ正確かを測定します。正しい予測と予測の比率から値を計算できます。

### 2. Recall(再現率)

Recallは、モデルがカテゴリを見つける能力を測定します。正しい予測とサンプルの数の比率から値を計算できます。

### 3. F1スコア&#x20;

PrecisionとRecallは、モデルの異なる側面を示します。いくつかの状況では、Precisionが高くてRecallを気にしないモデルが必要であったり、逆の状況もあります。PrecisionとRecallが共に良好なモデルが必要な場合には、単一のメトリックが役立ちます。その目的のために、以下の定義でF1スコアは最も有名なメトリックの1つです。

**F1 Score = 2 \* Precision \* Recall / (Precision + Recall)**

{% hint style="info" %}
固有表現抽出では、次の2つの理由から、正確度はパフォーマンス指標として使用されません。そのため、「N/A」の値として表示されます。<br>

1.データの不均衡：ほとんどのNERデータセットでは、非エンティティトークン（一般的な単語など）の数がエンティティトークンよりもかなり多くなっています。そのため、モデルはすべてのトークンを非エンティティと予測するだけで高い正確度を達成できます。そのため、データの不均衡のために正確度はモデルのパフォーマンスを適切に反映しません。 \
\
2.分類エラーの重要性：固有表現抽出では、エンティティの種類を正確に分類することが重要です。たとえば、人名を組織名として誤って分類することは重大なエラーです。しかし、正確度は単に予測が正しい答えに一致するかどうかを評価するだけで、エンティ
{% endhint %}

## メトリックの計算方法

固有表現抽出のトレーニングは、ユーザーが選択したテストセットで成功裏に終了すると、評価ステップをトリガーします。例として、2つのフレーズを選び、モデルの評価を行います。&#x20;

<figure><img src="https://226085260-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjM9Cr4PQJGCzV55AIK6r%2Fuploads%2FrUpuUOpXRpuH9lK0TBfV%2FScreenshot%202023-03-21%20at%204.02.46%20PM.png?alt=media&amp;token=2f42c003-5e93-4bf2-bb31-861b5a5977d3" alt=""><figcaption><p>[Image 1] Test samples for NER</p></figcaption></figure>

以下の画像2のメトリックの詳細ページには、各表現のモデルのパフォーマンスが表示されています。トレーニングセットで見つかる2つの表現のみを切り取りました。

&#x20;ダッシュボードには、フレーズA142に6つのTECHNOLOGY関連の表現が含まれ、フレーズA128には3つのCOUNTRY関連の表現が含まれていることが表示されています。これらの数値は、メトリック詳細ページのサンプル列にも表示されます。

<figure><img src="https://226085260-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjM9Cr4PQJGCzV55AIK6r%2Fuploads%2FUqT4oImvfKtNl0CYSb0f%2FScreenshot%202023-03-21%20at%204.06.25%20PM.png?alt=media&amp;token=2ab95143-4339-4dc9-afcf-1a79dd717fa7" alt=""><figcaption><p>[Image 2] Metrics Detail page  (Model History Tab > Details for each model)</p></figcaption></figure>

Inferenceタブページでは、モデルの推論結果を確認できます。

<figure><img src="https://226085260-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjM9Cr4PQJGCzV55AIK6r%2Fuploads%2FAWEcqWWRVATdtxHb9M0t%2FScreenshot%202023-03-21%20at%204.04.30%20PM.png?alt=media&amp;token=005db09c-38a0-47ef-b09f-2a524e624755" alt=""><figcaption></figcaption></figure>

TECHNOLOGYの表現の混同行列は、TECHNOLOGY関連の表現が正しい表現であるフレーズA142のみを使用して作成できます。A142の推論結果には3つのTECHNOLOGY関連の表現があり、すべて正しい表現です。しかし、結果から3つのTECHNOLOGY関連の表現が欠落しています。したがって、真陽性は3、偽陰性は3です。

<figure><img src="https://226085260-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjM9Cr4PQJGCzV55AIK6r%2Fuploads%2FnoGSegZE6ogdPGaxFd3d%2FScreenshot%202023-03-21%20at%204.07.55%20PM.png?alt=media&amp;token=b1cc5e20-96da-432c-a22c-a631989da0d8" alt=""><figcaption><p>[Image 4] Confusion Matrix of Entity 'TECHNOLOGY'</p></figcaption></figure>

まず、以下のように各エンティティごとにパフォーマンスメトリックを計算できます。&#x20;

上記の混同行列と前のセクションの方程式から、Precision、Recall、F1スコアを計算できます。

* Precision(精度) = TP / (TP + FP) = 3 / (3 + 0) \* 100 = **100%**
* Recall(再現率) = TP / (TP + FN) = 3 / (3 + 3) \* 100 = **50%**
* F1スコア(F1-score) = 2 \* Precision \* Recall / (Precision + Recall) = 2 \* 100 \* 50 / (100 + 50) = **66.7%**

※TP=真陽性、FP=偽陽性、FN=偽陰性

同様の比較を行い、COUNTRY関連の表現の混同行列を作成できます。推論結果には1つのCOUNTRY関連の表現があり、これは正しい表現です。ただし、結果から2つのCOUNTRY関連表現が欠落しているため、COUNTRY関連の表現の精度は100％であり、再現率は33.3％です

表現レベルの評価に基づいて、各メトリックの加重平均を用いてモデルレベルのメトリックを計算することができます。例えば、モデルの再現率は次のようになります。

Recall= (RecallTECHNOLOGY \* SupportTECHNOLOGY + RecallCOUNTRY \* SupportCOUNTRY) / Supporttotal\
\= (50 \* 6 + 33.3 \* 3) / (6 + 3) = **44.4%**

同様の方法で、モデルの精度やF1スコアを簡単に取得することができます。

<figure><img src="https://226085260-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjM9Cr4PQJGCzV55AIK6r%2Fuploads%2F7vbb4hh5Zz4fASicmoo6%2FScreenshot%202023-03-21%20at%204.08.37%20PM.png?alt=media&amp;token=a7a2c781-e8d4-4c77-95f2-83a6b71e430b" alt=""><figcaption><p>[Image 5] Perfomance Metrics by Model version</p></figcaption></figure>

## 表現レベルの評価  <a href="#id-3.1.-interpreting-entity-level-evaluation-metrics" id="id-3.1.-interpreting-entity-level-evaluation-metrics"></a>

F再現率と適合率の結果には、以下のような解釈が可能です。

<figure><img src="https://226085260-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjM9Cr4PQJGCzV55AIK6r%2Fuploads%2F8TW3z8bNsPtHVt75O0rA%2FScreenshot%202023-03-21%20at%204.09.17%20PM.png?alt=media&amp;token=57d1f820-7071-4769-80d4-bdedd431c92d" alt=""><figcaption><p>[Image 6] Entity-level evaluation Metrics</p></figcaption></figure>

PrecisionとRecallが共に高い場合、モデルによって表現がうまくハンドリングされていることを意味し、両方が低い場合は、モデルがまだ表現の認識や区別を正しく行っておらず、認識しても信頼度が低いことを示します。&#x20;

Precisionは高いがRecallが低い場合は、モデルがこの表現を正しく検出できないが、一度検出された場合は信頼性が高いことを示します。&#x20;

Recallは高いがPrecisionが低い場合は、モデルが表現自体を正しく検出しているが、それを他の表現として認識する可能性が高いことを示します。
