1. 序章

このチュートリアルでは、テキストデータから日付、時刻、住所を検索して抽出する方法を学習します。

電子メール、ドキュメント、またはその他のテキストコーパスを処理する必要があるかどうかにかかわらず、ロジックは同じです。 このタスクは、実際には非常に一般的な古典的なNLPタスクです。

これには、電子メールからの日時抽出、多数のドキュメントからの顧客およびクライアントのアドレスの抽出、および同様の他のプロセスのための自動システムの構築が含まれます。

2. 固有表現抽出(NER)

名前付きエンティティ認識(NER)は、テキストで言及されている名前付きエンティティを見つけて分類することを目的とした問題です。 これらのエンティティは、人の名前、組織、場所、住所、時間表現など、事前定義されたカテゴリに分類されます。 この問題は、機械学習の分野における自然言語処理(NLP)領域の一部です。

過去10年間で、固有表現抽出について多くの研究が行われてきました。 これで、トランスフォーマー-ベースのGPT-3、BERTなどのより高度な方法がNLP関連のすべての問題の解決に支配的になり始めているのを目の当たりにすることができます。 コメントに基づいて関数のコードを書くことさえできます。

NERも例外ではありません。 最初に、この問題を解決するためのより古典的なアプローチについて説明します。 次に、変圧器の電力を利用する方法を学び、実際の例を示します。

3. ルールベースのパーサー

ルールベースのパーサーは、通常ハードコードされた部分を持つ一連の命令を使用して定義されるアルゴリズムです。 構文解析の一般的な方法は、字句解析器と構文解析器の両方を使用します。 字句解析プログラムは単語を構成文字に分割し、構文アナライザーはこれらの文字が言語構造の観点から何を意味するかを判別します。

私たちの場合、このアプローチは、日付、時刻、および住所の形式がコーパス全体で一貫している場合に役立つ可能性があります。  したがって、より複雑で時間的に複雑な方法を使用する必要はありません。

たとえば、ドキュメントの日付形式が dd-mm-yyyy である場合、ほとんどの場合、正規表現またはregexで構成されるパーサーを簡単に定義できます。 それらは、すべてのプログラミング言語で多かれ少なかれ類似しています。 さらに、エンティティを認識するためのキーワードを使用して辞書を定義できます。

たとえば、アドレス抽出キーワードはstreetまたはstのようになります。

要約すると、問題が単純で、ルールやキーワードを使用して簡単に定義できる場合は、このアプローチをお勧めします。このアプローチは最速であり、追加のパッケージや依存関係を設定する必要はありません。

4. 分類子

この問題を解決する興味深い方法の1つは、機械学習分類器を構築することです。 たとえば、問題を二項分類として定義できます。この場合、目標は単語をアドレスとして分類するか、アドレスとして分類しないことです。 同様に、問題のスケッチは、クラスの日付、時刻、住所などを含むマルチクラス分類である可能性があります。

このソリューションの最初のステップは、機能を構築することです。 これらの機能は、現在の単語のいくつかの統計的指標、または近隣の単語の指標で構成されている場合があります。 たとえば、次の文を考えてみましょう。

「ウォールストリートでは、1792年5月17日に金融業界が正式に始まりました。」

最初のステップは、文をトークン(単語)に分割することです。各トークンは、分類子のデータセットの1つのサンプル(行)を表します。 特徴工学の観点から、私たちは非常に創造的であり、可能な限り多くの異なる特徴を構築しようとする必要があります。 表現される可能性のある機能には、単語内の文字または記号の数、大文字の有無、数字またはキーワードの有無などがあります。 さらに、ラベルまたはターゲットは単語のクラスです。

この場合、前述の文の特徴を含むデータセットは次のようになります。

要約すると、このアプローチは、分類器がトレーニング中にパターンを認識できるように、テキストのコーパスが大きい場合に良い結果をもたらす可能性があります。

また、このアプローチでは、特徴エンジニアリングとトレーニングの間でプロセスが繰り返されるため、解決に時間がかかる場合があることに注意してください。

5. トランスフォーマー

変圧器は、NLPの革新的なアーキテクチャです。 これらは現在、テキストの意味を理解する必要があるほとんどすべてのテキスト関連のタスクに使用されています。 簡単に言えば、それらは注意メカニズムを備えたニューラルネットワークであり、監視なしのテキストの巨大なコーパスでトレーニングされ、後で特定のタスク用に微調整されます。 最も人気のあるトランスフォーマーの1つは、BERT(トランスフォーマーからの双方向エンコーダー表現)モデルです。

これらはすべて非常に複雑に聞こえますが、今日では、ますます人気が高く、最も使用されているNLPライブラリ Hugging Face のおかげで、BERTの使用が簡素化されています。 推論用のAPIが提供されているサイトで、トークン分類のモデルのいくつかを試すこともできます。 アイデアは、既存のモデルを直接使用するか、さらに、目的に合わせて微調整することです。

一般に、このアプローチは、医学からの用語、タンパク質名、化学物質の名前など、特定の用語を抽出する必要がある場合に非常に役立ちます。 ただし、そのためには、モデルの微調整のために注釈付きのテキストを用意する必要があります。

6. ハイブリッドモデル

では、前述の方法のいくつかを1つのモデルに組み合わせてみませんか。 基本的に、これは人気のあるNLPライブラリspaCyのNERモデルです。 品詞タグ付け、接頭辞、接尾辞、および単語埋め込みからのベクトルによってサポートされるその他の統計属性などの機能を備えたニューラルネットワーク分類子を使用します。

その結果、数行のコードでこのモデルを簡単にテストできます。

住所や通りの名前を認識することはできませんが、日付、時刻、イベント、組織、地政学的エンティティ、人物名などの他のエンティティを正常に検出して抽出したことがわかります。

7. 結論

この記事では、固有表現抽出の問題を解決するいくつかの方法を検討しました。 一般に、正しい解決策は1つではなく、アプローチはタスクの複雑さに大きく依存します。

正規表現を使用して日付を抽出するだけでよいのか、トランスフォーマーを使用して複数のエンティティを抽出する必要があるのかを知るのは私たちの責任です。 1つ確かなことは、いくつかの異なる方法があり、このトピックに関して利用できる情報がたくさんあるということです。