名前付きエンティティの認識

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

テキスト列の名前付きエンティティを認識します

カテゴリ: Text Analytics

注意

適用対象: Machine Learning Studio (クラシック) のみ

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

モジュールの概要

この記事では、Machine Learning Studio (クラシック) の 固有表現認識 モジュールを使用して、テキスト列内の人、会社、場所などの名前を識別する方法について説明します。

名前付きエンティティの認識は、機械学習および自然言語処理 (NLP) の研究の重要な領域です。これは、次のような多くの現実の世界の質問に回答するために使用されます。

  • ツイートに人物の名前は含まれますか? そのツイートでは彼の現在の場所も提供されていますか?

  • ニュース記事にはどの企業のことが記載されていますか?

  • 指定された製品は、クレームまたはレビューで言及されましたか?

名前付きエンティティの一覧を取得するには、テキスト列が含まれるデータセットを入力として指定します。 次 固有表現認識 モジュールでは、人 (PER)、場所 (LOC)、組織 (ORG) の 3 種類のエンティティを識別します。

このモジュールでは、これらの単語が見つかった場所によってシーケンスのラベルも付け、さらに分析で用語を使用できます。

次の表に、単純な入力文、およびモジュールで生成された用語と値の例を示します。

入力テキスト モジュールの出力
“Boston is a great place to live.” 0,Boston,0,6,LOC

出力は次のように解釈できます。

  • 最初の 0 は、この文字列がモジュールに対する最初の記事の入力であることを意味します。

    1 つの記事に複数のエンティティを含めることができるので、出力に記事の行番号を含めることは記事へのマッピング機能で重要です。

  • Boston は認識されるエンティティです。

  • 0 の は、 Boston エンティティが入力 Boston 文字列の最初の文字から始まるという意味です。 インデックスは 0 から始ります。

  • 6 は、エンティティの長さが Boston 6 を意味します。

  • LOC は、エンティティが Boston 場所または場所を意味します。 サポートされているその他の名前付きエンティティ型は、person (PER) と organization () ですORG

データを構成する固有表現認識

  1. Studio ( クラシック固有表現認識 実験に新しいモジュールを追加します。 モジュールは、次のカテゴリText Analyticsできます。

  2. [ストーリー] という 名前の入力で、分析するテキストを含むデータセットを接続します。

    "ストーリー" には、名前付きエンティティの抽出に使用するテキストが含まれている必要があります。

    ストーリーとして使用される列 には複数 の行が含まれている必要があります。各行は文字列で構成されます。 文字列は、文のように短くするか、ニュース記事のように長くすることができます。

    テキスト列を含む任意のデータセットを接続できます。 ただし、入力データセットに複数の列が含まれている場合は、[データセット内の列の選択] を使用して、分析するテキストを含む列のみを選択します。

    注意

    現時点では、2 番目 の入力であるカスタム リソース (Zip) はサポートされていません。

    今後、さまざまなエンティティの種類を識別するために、ここでカスタム リソース ファイルを追加できます。

  3. 実験を実行します。

結果

モジュールは、認識された各エンティティの行を含むデータセットをオフセットと共に出力します。

入力テキストの各行には複数の名前付きエンティティが含まれている場合があります。この場合、名前付きエンティティを含む入力行を識別するために、記事 ID 番号が自動的に生成され、出力に含まれます。 記事 ID は、入力データセット内の行の自然な順序に基づいて作成されます。

この出力データセットを CSV に変換してダウンロードしたり、再使用用のデータセットとして保存したりすることができます。

Web サービスで名前付きエンティティ認識を使用する

Machine Learning Studio (クラシック) から Web サービスを発行し、C#、Python、または R などの別の言語を使用して Web サービスを使用する場合は、まず Web サービスのヘルプ ページで提供されるサービス コードを実装する必要があります。

Web サービスが複数行を出力する場合、C#、Python または R コードに追加する Web サービスの URL には、scoremultirow の代わりに score の接尾語が必要になります。

たとえば、Web サービスに次の URL を使用するとします。 https://ussouthcentral.services.azureml.net/workspaces/<workspace id>/services/<service id>/score

複数行の出力を有効にするには、URL を に変更します。 https://ussouthcentral.services.azureml.net/workspaces/<workspace id>/services/<service id>/scoremultirow

この Web サービスを発行するには、固有表現認識 モジュールの後に R スクリプトの実行モジュールを追加して、複数行の出力をセミコロン (;)) で区切られた 1 つのに変換する必要があります。 複数行の出力を 1 行に統合するのは、入力行ごとに複数のエンティティを返すためです。

たとえば、2 つの名前付きエンティティを含む入力文があるとします。 入力の各行に対して 2 行を返すのではなく、次に示すようにセミコロンで区切って、複数のエンティティを含む 1 行を返すことができます。

入力テキスト Web サービスの出力
Microsoft has two office locations in Boston. 0,Microsoft,0,9,ORG,;,0,Boston,38,6,LOC,;

次のコード サンプルに、これを実行する方法を示します。

# Map 1-based optional input ports to variables  
d <- maml.mapInputPort(1) # class: data.frame  
y=length(d) ##size of cols  
x=dim(d)[1] ##size of rows  
longd=matrix("NA",nrow=1,ncol=x*(y+1))  
for (i in 1:x)  
  {   
     for (j in 1:y)  
     {  
       longd[1,j+(i-1)*(y+1)]=toString(d[i,j])   
     }  
     longd[1,j+(i-1)*(y+1)+1]=c(";")  
  }   

final_output=as.data.frame(longd)  
# Select data.frame to be sent to the output Dataset port  
maml.mapOutputPort("final_output");  

このブログでは、名前付きエンティティ認識のしくみ、その背景、および考えられるアプリケーションの詳細な説明を提供します。

また、機械学習で一般的に使用されるテキスト 分類 方法を使用する方法のデモについては、Azure AI Gallery の次のサンプル実験を参照してください。

  • ニュース分類のサンプル: 特徴ハッシュを使用して、記事をカテゴリの定義済みリストに分類します。

  • 類似企業のサンプル: Wikipedia の記事のテキストを使用して企業を分類します。

  • テキスト分類の手順 1/5: データの準備: テキスト分類のこの 5 部のチュートリアルでは、Twitter メッセージからのテキストを使用して感情分析が実行されます。 さまざまなテキスト前処理方法も示されています。

テクニカル ノート

言語のサポート

現在、名前付きエンティティの認識モジュールは英語テキストのみをサポートしています。 英語文の組織名、人物名および場所を検出できます。 他の言語でモジュールを使用すると、エラーが発生しない可能性がありますが、結果は英語のテキストほど良い結果ではありません。

今後、Office 自然言語ツールキットで提供されている多言語コンポーネントを使用し、その他の言語のサポートを有効にできるようになります。

想定される入力

名前 説明
データ テーブル 分析するテキスト列を含む入力データセット (DataTable)。
CustomResources Zip (オプション) 追加のカスタム リソースを含む ZIP 形式のファイル。

このオプションは現在使用できず、上位互換性のみのために提供されています。

出力

名前 説明
エンティティ データ テーブル 文字オフセットおよびエンティティの一覧

こちらもご覧ください

Text Analytics
特徴ハッシュ
Vowpal Wabbit 7-4 モデルのスコアリング
Vowpal Wabbit 7-4 モデルのトレーニング