logo

固有表現の認識

固有表現認識 (NER) のテクニックです 自然言語処理 (NLP) エンティティの識別と分類に重点を置いています。 NER の目的は、非構造化テキストから構造化情報を自動的に抽出し、テキストの要約、ナレッジ グラフの構築、質問応答、ナレッジ グラフの構築などのさまざまなアプリケーションで、機械が意味のある方法でエンティティを理解して分類できるようにすることです。この記事では、 NER モデルの基礎、方法、実装。

固有表現認識 (NER) とは何ですか?

名前エンティティ認識 (NER) とも呼ばれます エンティティの識別 エンティティのチャンク化、 そして エンティティの抽出 。 NER は、非構造化テキスト内の名前付きエンティティを識別して分類することを目的とした情報抽出のコンポーネントです。 NER には、テキスト内の重要な情報の識別と、事前定義された一連のカテゴリへの分類が含まれます。エンティティとは、人名、組織、場所、時間表現、数量、パーセンテージ、その他の事前定義されたカテゴリなど、テキスト内で一貫して語られたり参照されたりするものです。

NER システムは、質問応答、情報検索、機械翻訳など、さまざまなドメインにわたるアプリケーションに使用されます。 NER は他のデータの精度を高める上で重要な役割を果たします。 NLP 品詞のタグ付けや解析などのタスク。 NLP の核心は 2 段階のプロセスであり、関係する 2 つの段階を以下に示します。



  • テキストからエンティティを検出する
  • さまざまなカテゴリに分類する

NERのあいまいさ

  • 人間にとって、カテゴリーの定義は直感的に非常に明確ですが、コンピューターの場合、分類には多少のあいまいさがあります。いくつかのあいまいな例を見てみましょう:
    • 2019 年ワールドカップで優勝したイングランド (団体) vs 2019 年ワールドカップはイングランド (開催地) で開催されました。
    • ワシントン (場所) は米国の首都です vs 米国の初代大統領はワシントン (人物) でした。

固有表現認識 (NER) はどのように機能しますか?

固有表現認識の仕組みについては以下で説明します。

  • NER システムは、入力テキスト全体を分析して、名前付きエンティティを識別して見つけます。
  • 次に、システムは大文字化ルールを考慮して文の境界を識別します。単語が大文字で始まる場合、それが新しい文の始まりである可能性があると想定して、文の終わりを認識します。文の境界を知ることは、テキスト内のエンティティを文脈化するのに役立ち、モデルが関係と意味を理解できるようになります。
  • NER は、ドキュメント全体を請求書、領収書、パスポートなどのさまざまなタイプに分類するようにトレーニングできます。文書分類により NER の多用途性が強化され、さまざまな文書タイプの特定の特性とコンテキストに基づいてエンティティ認識を適応させることができます。
  • NER は、教師あり学習を含む機械学習アルゴリズムを採用して、ラベル付きデータセットを分析します。これらのデータセットには、注釈付きエンティティの例が含まれており、モデルが新しい未確認データ内の類似エンティティを認識するのに役立ちます。
  • 複数のトレーニング反復を通じて、モデルはコンテキスト上の特徴、構文構造、およびエンティティ パターンの理解を洗練させ、時間の経過とともに精度を継続的に向上させます。
  • 新しいデータに適応するモデルの機能により、言語、コンテキスト、エンティティ タイプの変化に対応できるため、より堅牢かつ効果的になります。

固有表現認識 (NER) メソッド

語彙ベースの方法

NER は、単語または用語のリストを含む辞書を使用します。このプロセスには、これらの単語のいずれかが特定のテキストに存在するかどうかを確認することが含まれます。ただし、このアプローチは、精度と効果を維持するために辞書を継続的に更新し、注意深くメンテナンスする必要があるため、一般的には使用されません。

ルールベースの方法

ルールベースの NER メソッドは、情報の抽出をガイドする事前定義されたルールのセットを使用します。これらのルールはパターンとコンテキストに基づいています。パターンベースのルールは、単語の構造と形式に焦点を当て、その形態学的パターンを調べます。一方、コンテキストベースのルールでは、周囲の単語、またはテキスト ドキュメント内で単語が出現するコンテキストが考慮されます。このパターンベースのルールとコンテキストベースのルールの組み合わせにより、固有表現認識 (NER) における情報抽出の精度が向上します。

機械学習ベースの手法

機械学習アルゴリズムによるマルチクラス分類

  • 1 つの方法は、モデルをトレーニングすることです。 マルチクラス分類 さまざまな機械学習アルゴリズムを使用しますが、多くのラベル付けが必要になります。モデルのラベル付けに加えて、文の曖昧さに対処するためにコンテキストを深く理解することも必要です。このため、単純な機械学習アルゴリズムにとっては困難な作業になります。

条件付きランダムフィールド (CRF)

  • 条件付きランダム フィールドは、NLP スピーチ タガーと NLTK。 これは、単語などの逐次データをモデル化するために使用できる確率モデルです。
  • CRF は文の文脈を深く理解できます。このモデルでは、入力は {	ext{X}} = left { vec{x}_{1} ,vec{x}_{2} ,vec{x}_{3}, ldots,vec{x} _{T} 右 }
    p(y | mathbf{x}) = frac{1}{z(vec{x})} prod_{t=1}^{T} expleft{ sum_{k=1} ^{K} omega_k f_k(y_t, y_{t-1}, vec{x}_t) 
ight}

深層学習ベースの手法

  • 深層学習 NER システムは単語を組み立てることができるため、以前の方法よりもはるかに正確です。これは、さまざまな単語間の意味的および構文的関係を理解できる単語埋め込みと呼ばれる手法が使用されているという事実によるものです。
  • また、分析トピック固有の単語や高レベルの単語を自動的に学習することもできます。
  • これにより、深層学習 NER を複数のタスクの実行に適用できるようになります。 ディープラーニング 反復的な作業のほとんどをそれ自体で行うことができるため、研究者などは時間をより効率的に使用できます。

Python で NER を実装するにはどうすればよいですか?

NERシステムの実装にはSpacyライブラリを活用します。コードは colab 上で実行できますが、視覚化を目的としています。ローカル環境を推奨します。以下を使用して必要なライブラリをインストールできます。

!pip install spacy !pip install nltk ! python -m spacy download en_core_web_sm>

重要なライブラリをインストールする

Python3

import> pandas as pd> import> spacy> import> requests> from> bs4>import> BeautifulSoup> nlp>=> spacy.load(>'en_core_web_sm'>)> pd.set_option(>'display.max_rows'>,>200>)>
>
>

スペイシーを使用したNER

次のコードでは、 スペイシー、 テキストを処理し、名前付きエンティティを抽出するための自然言語処理ライブラリ。このコードは、処理されたドキュメント内で識別された名前付きエンティティを反復処理し、各エンティティのテキスト、開始文字、終了文字、およびラベルを印刷します。

Python3

content>=> 'Trinamool Congress leader Mahua Moitra has moved the Supreme Court against her expulsion from the Lok Sabha over the cash-for-query allegations against her. Moitra was ousted from the Parliament last week after the Ethics Committee of the Lok Sabha found her guilty of jeopardising national security by sharing her parliamentary portal's login credentials with businessman Darshan Hiranandani.'> doc>=> nlp(content)> for> ent>in> doc.ents:> >print>(ent.text, ent.start_char, ent.end_char, ent.label_)>
>
>

出力:

Congress 10 18 ORG Mahua Moitra 26 38 PERSON the Supreme Court 49 66 ORG the Lok Sabha 94 107 PERSON Moitra 157 163 ORG Parliament 184 194 ORG last week 195 204 DATE the Ethics Committee 211 231 ORG Darshan Hiranandani 373 392 PERSON>

出力には、エンティティの名前、テキスト内のエンティティの開始位置と終了位置、および予測されたラベルが表示されました。

視覚化する

displacy.render>spaCy の関数は、テキスト内の名前付きエンティティを視覚化するために使用されます。認識されたエンティティとそのそれぞれのカテゴリを示す色付きのハイライトを含む視覚的表現が生成されます。

Python3

from> spacy>import> displacy> displacy.render(doc, style>=>'ent'>)>
>
>

出力:

Python で NER を実装するにはどうすればよいですか?

次のコードを使用して、spaCy によって抽出された名前付きエンティティから、各エンティティのテキスト、タイプ (ラベル)、補題を含むデータフレームを作成します。

Python3

entities>=> [(ent.text, ent.label_, ent.lemma_)>for> ent>in> doc.ents]> df>=> pd.DataFrame(entities, columns>=>[>'text'>,>'type'>,>'lemma'>])> print>(df)>
>
>

出力:

text type lemma 0 Congress ORG Congress 1 Mahua Moitra PERSON Mahua Moitra 2 the Supreme Court ORG the Supreme Court 3 the Lok Sabha PERSON the Lok Sabha 4 Moitra ORG Moitra 5 Parliament ORG Parliament 6 last week DATE last week 7 the Ethics Committee ORG the Ethics Committee 8 Darshan Hiranandani PERSON Darshan Hiranandani>

データ フレームは、名前付きエンティティ、そのタイプ、および見出し語形式の構造化表現を提供します。

よくある質問 (FAQ)

1. NER システムの目的は何ですか?

NER の目的は、非構造化テキストから構造化情報を自動的に抽出し、機械がテキストの要約、ナレッジ グラフの構築、質問応答、ナレッジ グラフの構築などのさまざまなアプリケーションで意味のある方法でエンティティを理解して分類できるようにすることです。

2. NLP における NER の手法とは何ですか?

NLP における NER の方法には次のものがあります。

  • 辞書ベースの NER。
  • ルールベース
  • ML ベース
  • ディープラーニングベース。

3. NLP における NER の用途は何ですか?

NER は、品詞のタグ付けや解析などの他の NLP タスクの精度を高める上で重要な役割を果たします。

4. BERT は固有表現認識を行うことができますか?

はい、BERT は NER に使用できます。