Tool Icon

固有表現抽出 (NER)

バージョン:
2023.1
Last modified: January 30, 2023

固有表現抽出 (NER) ツールを使用すると、テキスト内の人物、場所、物などのエンティティを識別できます。このツールは、spaCy パッケージの固有表現抽出機能を活用します。事前定義したエンティティセットまたは独自のカスタムエンティティを使用できます。 

このツールは Alteryx Intelligence Suite の一部です。Intelligence Suite を使用するには、Designer に加え、ライセンスと追加インストーラーが別途必要です。Designer をインストール後、Intelligence Suite をインストールし、無料トライアルを開始 します。

言語サポート

固有表現抽出 (NER) ツールは、英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語に対応しています。

ツールコンポーネント

固有表現抽出 (NER) ツールには、4 つのアンカーがあります。

  • D 入力アンカー: 識別するエンティティを持つテキストデータに接続します。
  • E 入力アンカー (オプション): 識別するカスタムエンティティとデータを接続します。このデータには、カスタムエンティティ名と、モデルのトレーニングに使用するラベルが含まれている必要があります。
  • D 出力アンカー: データ内のエンティティに関する情報を表示するデータの新しい列を出力します。
  • M 出力アンカー: 新しいデータと組み合わせて使用できるように、モデルオブジェクトを下流に出力します。モデルオブジェクトは、予測ツールで利用することができます。

既定のモデルの設定

ツールの設定

  1. キャンバスにツールをドラッグします。
  2. D 入力アンカーを、識別するエンティティを持つテキストデータに接続します。
  3. テキストデータの 言語 を選択します。
  4. テキストを含む列 を選択します。
  5. ワークフローを 実行 します。

既定の英語エンティティリスト

  • PERSON: 架空の人物と実在人物。
  • NORP: 国籍、宗教、または政治団体。
  • FAC: 建物、空港、高速道路、橋などの施設。
  • ORG: 企業、政府機関、公共機関などの組織。
  • GPE: 国、都市、州などの地理的なエンティティ。
  • LOC: 山脈、海域、大陸などの GPE 以外の場所。
  • PRODUCT: 車両や食品などの製品。サービスを除きます。
  • EVENT: 固有の名称を持つハリケーン、戦争、スポーツイベントなどの事象。
  • WORK_OF_ART: 書物、音楽、映画などの芸術作品。
  • LAW: 法律の元となった固有表現を持つ文書。
  • LANGUAGE: 固有表現を持つ言語。
  • DATE: 日付エンティティ。
  • TIME: 時刻エンティティ (1 日未満)。
  • PERCENT: 割合。「%」と「パーセント」が含まれます。
  • MONEY: 金額 (単位を含む)。
  • QUANTITY: 高さ、重量、距離などの測定値。
  • ORDINAL: 第 1、第 2、第 3 などの序数エンティティ。
  • CARDINAL: 他の数値カテゴリに分類されない数字。

その他の言語の既定エンティティリストは、spaCy の ドキュメント に記載されています。

カスタムのモデルの設定

独自のカスタムエンティティを使用してモデルをトレーニングする場合は、[新しいエンティティでトレーニング] を選択します。ソースコンテンツに各カスタムエンティティのインスタンスが少なくとも 20 個含まれている必要があります。カスタムエンティティを E 入力アンカーに接続します。

カスタムエンティティリストの形式

テキスト入力ツール を使用して、独自のカスタムエンティティを E 入力アンカーに渡すことができます。ツールはエンティティリストを使用して、新しいモデルをトレーニングします。エンティティリストの形式の例を以下に挙げます。

エンティティ ラベル
リースリング GRAPE
ソーヴィニヨンブラン GRAPE
ピノノワール GRAPE
シラー GRAPE
カベルネソービニヨン GRAPE

ツールの設定

  1. キャンバスにツールをドラッグします。
  2. D 入力アンカーを、識別するエンティティを持つテキストデータに接続します。
  3. E 入力アンカーをカスタムエンティティリストに接続します。
  4. D 入力アンカーに接続されているテキストデータの 言語 を選択します。
  5. D 入力アンカーに接続されているテキストデータから テキストを含む列 を選択します。
  6. [新しいエンティティでトレーニング] を選択します。
  7. E 入力アンカーに接続されているカスタムエンティティリストから、エンティティを含む列 を選択します。
  8. E 入力アンカーに接続されているカスタムエンティティリストから、ラベルを含む列 を選択します。
  9. モデルで 大文字小文字を区別 する場合は、このチェックボックスをオンにします。
  10. (オプション)[モデルをトレーニング] セクションを設定します。詳細については、以下のセクションを参照してください。
  11. ワークフローを 実行 します。

モデルをトレーニング

エポック

エポックは、ニューラルネットワークによるトレーニングセット全体の全てのデータの一回の通過処理 (前方パスと後方パス) です。エポックとイテレーションは関連していますが、同じものではありません。イテレーションは、トレーニングセットのバッチにおける全てのデータの一回の通過処理です。

エポック数を増やすと、モデルがトレーニングセットで学習できる時間が長くなります。ただし、計算コストも増加します。

エポック数を増やすと、モデルのエラーを削減できます。ただし、余分な計算コストに見合うほどの削減量にならない場合もあります。また、エポック数を増やしすぎると過学習の問題が発生する場合がある一方で、エポック数が足りない場合は学習不足の問題が発生する場合があります。

既定では、ツールは 10 エポックを使用します。

早期停止

早期停止とは、固有表現抽出 (NER) ツールで使用される畳み込みニューラルネットワークのような反復的な機械学習に対して、学習を停止するべきタイミングを提示する機能です。固有表現抽出 (NER) では、F1 が早期停止の基準となります。

早期停止が役に立つのは、モデルが過学習を起こしている場合です。過学習の原因は、学習中のモデルが回答の暗記にとどまり、データに内在するパターンを認識しないときに発生します。また、早期停止を使用することで、必要なエポック数以上にアルゴリズムが実行されるのを回避することもできます。

モデルがデータを過学習している場合、あるいはエポック数を増やしてもモデルが改善されない場合は、早期停止を使用します。

既定では、ツールは早期停止を使用します。

バッチサイズ

バッチはトレーニングデータセット全体に対するサブセットです。

バッチサイズを小さくすると、いつでもニューラルネットワークを通過するデータ量を調整することができます。これにより、全データを一度にニューラルネットワークに通過させる場合よりも少ないメモリ消費でモデルをトレーニングできます。バッチ処理によってトレーニングがスピードアップすることがあります。ただし、データをバッチに分割すると、モデルのエラーが増加する場合もあります。

すべてのデータを一度に処理できない場合、またはトレーニング時間を短縮する場合は、データをバッチに分割します。

既定では、ツールはバッチサイズ 32 を使用します。

出力

D 出力アンカーは、出力に次の 2 つの列を追加します。

  • entities: この列には、エンティティのタグと説明がリスト形式になった JSON 出力が格納されます。
    • entity: モデルによって検出されたエンティティ。
    • label: エンティティラベル。
    • character_index: テキスト本文にある単語の 1 文字目のインデックス。インデックスは 0 から始まります。
    • word_index: テキスト本文の単語のインデックス。インデックスは 0 から始まります。
    • entity_length: エンティティの文字の長さ。
  • entity_diagram: この列にはラベル付けされたエンティティを持つテキストが含まれており、参照ツール で表示できます。

M 出力アンカーには、モデルオブジェクトが含まれます。モデルオブジェクトを保存し、予測ツール を使用して新しいデータに使用できます。

JSON 出力の解析方法

JSON 出力を表形式のデータに変換するために、以下のサンプルフローでは、JSON パース列分割クロスタブの各ツールを組み合わせて使用しています。

  1. 固有表現抽出ツールの出力を JSON パースツールの入力に渡します。
  2. [JSON フィールド] の下にあるエンティティ列を選択します。
  3. [単一の文字列フィールドに値を出力する] を選択します。
  4. JSON パースツールの出力を列分割の入力に渡します。
  5. [分割する列] で JSON 名列を選択し、[区切り記号] をピリオド (.) に設定します。
  6. [列に分割する] を選択し、[列数] を 3 に設定します。
  7. 列分割ツールの出力をクロスタブツールの入力に渡します。
  8. クロスタブツールを以下のように設定します。
    1. 以下の値でデータをグループ化: 元のテキストデータを含む列名と、2 番目の分割 JSON 名列を選択します (既定では JSON_Name2)。
    2. 列ヘッダーの変更: 3 番目の分割 JSON 名列を選択します (既定では JSON_Name3)。
    3. 新しい列の値: JSON_ValueString を選択します。
    4. 値を集計する方法: [連結] を選択します。
  9. ワークフローを実行します。これで、クロスタブツールの出力に、固有表現抽出 (NER) ツールの出力の表形式が含まれるようになりました。

FAQ

カスタムエンティティおよびラベルリストを使用すると、階層はどのように決定されますか。

このアルゴリズムでは、最初にカスタムリストが優先されます。

エンティティは正規化されていますか。たとえば、NER ツールは、Michael Jordan と Air Jordan が同じ人物であることを認識できますか。

既定では「いいえ」です。NER は、Michael Jordan と Air Jordan を既存の同じ人物として認識できません。ただし、カスタムエンティティとラベルリストを渡すことで、新しいモデルをトレーニングしてこれを行うことができます。注: NER ツールは、検索と置換の代わりにはなりません。このアルゴリズムは、ソースデータ内の関連付けに基づいて、Michael Jordan の他のニックネームを取得する場合があります。

NER は混合した言語をサポートしていますか。

いいえ、NER は指定された言語のみをサポートします。たとえば、英語を指定した場合、NER はソースデータ内の英語のテキストのみを検索します。ソースデータに NER でサポートされている他の言語テキスト (フランス語のテキストなど) が含まれている場合は、フランス語のテキスト用に別の NER プロセスをキャンバスに作成して、最後に結果を結合できます。

このページは役に立ちましたか?

Alteryx 製品のご利用中に何か問題がございましたら、Alteryx コミュニティにアクセスするか、サポートにお問い合わせください。このフォームを送信できない場合E メールでお送りください。