NLPの問題の90%を解決する方法を段階的に教えます

NLPの問題の90%を解決する方法を段階的に教えます

[[223595]]

はじめに: この記事では、著者の Emmanuel Ameisen が、機械学習の手法を使用してほとんどの NLP 問題を解決する方法を段階的に説明します。この記事では、Twitter の内容が災害イベントに関連しているかどうかという典型的な分類ケースを引用し、テキスト データを処理するための手順を詳しく説明します。

テキストデータはどこにでもある

既存のビジネスでも、新しいビジネスを立ち上げる場合でも、テキスト データを使用して製品の機能を検証、改善、拡張できます。テキストデータから意味を抽出し、そこから学習する科学は自然言語処理 (NLP) と呼ばれ、現在非常にホットな研究テーマとなっています。

NLP は非常に大規模な研究分野であり、毎日新しく刺激的な結果を生み出しています。数百の企業と協力した結果、当社の Insight チームは、より頻繁に出現するいくつかの重要な実用的なアプリケーションを発見しました。

  • ユーザー/顧客のさまざまなユーザー グループを識別します (例: ユーザー離脱、生涯価値、製品の好みなどを予測します)
  • フィードバックの分類(肯定的および否定的なコメント/意見、衣服のサイズや快適さなどの特定の属性に関する言及など)を正確に検出して抽出します。
  • 意図に基づいてテキストを分類する(例:一般的なヘルプのリクエスト、緊急の問題の処理)

インターネット上には NLP に関する記事やガイドが多数存在するため、これらの問題に対処するための徹底的かつ効果的なガイダンスやアドバイスを見つけるのは困難でした。

この記事がどのように役立つか

私たちは今年、何百ものプロジェクトを実施し、米国全土のトップチームからのアドバイスを参考にして、機械学習を使用して上記の問題を解決する方法を説明するこの記事をまとめました。まずは最もシンプルなアプローチから始めて、特徴エンジニアリング、単語埋め込み、ディープラーニングなどのより洗練されたソリューションへと進みます。

この記事を読むと、次の方法がわかります。

  • データの収集、準備、テスト
  • まずはシンプルなモデルを構築し、必要に応じてディープラーニングに移行する
  • モデルを解釈して理解し、ノイズではなく有効な情報を実際に取得していることを確認します。

この記事は、効果的な標準化プロセスのステップバイステップのガイドと概要です。

この記事には、関連するすべてのテクノロジが実演され、適用されているインタラクティブ ノートブックも付属しています。以下を読みながらコードを実行してみてください。

ステップ1: データを収集する

サンプルデータソース

すべての機械学習の問題は、電子メール、投稿、ツイートなどのデータから始まります。テキスト情報の一般的なソースは次のとおりです。

製品レビュー(Amazon、Yelp、その他のアプリストアから)

ユーザー生成コンテンツ (ツイート、Facebook 投稿、StackOverflow の質問など)

問題解決(顧客リクエスト、技術サポート、チャットログ)

ソーシャルメディアデータセットにおける災害

この記事では、CrowdFlower が提供する「ソーシャル メディア上の災害」というデータセットを使用します。

寄稿者は、「火災」「隔離」「混乱」などの検索語を含む 10,000 件を超えるツイートを調べ、そのツイートが災害に関するものか (ジョーク、映画レビュー、災害以外の出来事ではないか) を分類しました。

私たちの仕事は、映画で描写されているような無関係なトピックではなく、実際に災害に関係するツイートを特定することです。なぜ?潜在的な応用例の 1 つは、アダム・サンドラー主演の新作映画の公開など、他の無関係な情報に気を取られることなく、法執行官に特に最新ニュースを警告することです。このタスクの特に難しい点は、どちらの場合もツイートを検索するときに同じ検索用語を使用するため、微妙な違いによってのみ区別できることです。

以下の記事では、災害イベントに関連するツイートを「災害」、それ以外のツイートを「無関係」と表記します。

ラベル

すでにデータにラベルを付けているので、ツイートがどのように分類されているかはわかっています。 Richard Socher 氏が言うように、複雑な教師なし学習法を最適化するよりも、モデルをトレーニングするのに十分なデータを見つけてラベル付けする方が、より速く、より簡単で、より安価です。

リチャード・ソッチャーの高度なテクニック

ステップ2: データをクリーンアップする

私たちが従うべき最初のルールは、「モデルはデータと同じくらい優れている必要がある」ということです。

データ サイエンティストにとって重要なスキルは、次のステップがモデルとデータのどちらに取り組むべきかを知ることです。経験則としては、まずデータを観察し、その後データをクリーンアップするのが良いでしょう。クリーンなデータセットにより、モデルは無関係なノイズの影響を受けることなく、意味のある特徴を学習できます。

データのクリーニングについては、次のリストを参照してください。(詳細についてはコードを参照してください)

  • 英数字以外の文字など、関係のない文字を削除します。
  • テキストをトークン化し、個々の単語に分割します
  • @やその他のリマインダー、URLリンクなどの無関係な単語を削除します
  • すべての文字を小文字に変換します。「hello」、「Hello」、「HELLO」は同じ単語として扱われます。
  • スペルミスのある単語や複数のスペルがある単語を特定の表現にバインドします (例: "cool"/"kewl"/"cooool")
  • 見出し語化を考慮する(例:「am」、「are」、「is」を「be」として扱う)

これらの手順を完了し、他のエラーがないか確認したら、このクリーンなラベル付きデータを使用してモデルをトレーニングする準備が整います。

ステップ3: データを表現する適切な方法を見つける

機械学習モデルは数値を入力として受け取ります。たとえば、画像を処理するモデルでは、各カラー チャネルの各ピクセルの明るさを表すためにマトリックスを使用する場合があります。

デジタルマトリックスで表現されたスマイリーフェイス

私たちのデータセットは一連の文章です。アルゴリズムがデータから特徴を抽出するには、まず、数字の文字列など、アルゴリズムが理解できる表現方法を見つける必要があります。

ワンホットエンコーディング - Bag of Words

コンピュータでテキストを解釈する通常の方法は、各文字を個別の数値 (ASCII コードなど) としてエンコードすることです。この単純な表現を使用して分類器を作成する場合、データ内の単語の構造を最初から学習する必要がありますが、これはほとんどのデータセットでは実現が困難です。したがって、より高度なアプローチが必要です。

たとえば、データセット内のすべての単語の語彙を作成し、各単語を一意のインデックスに関連付けることができます。各文は、語彙内の独立した単語の数に対応する数字の文字列で構成されます。リスト内のインデックスを使用すると、文中に単語が出現する回数をカウントできます。このアプローチは Bag of Words モデルと呼ばれ、文中の単語の順序を完全に無視します。次の図に示すように:

bag-of-words モデルを使用して文を表します。左側に文章、右側にモデル表現があります。ベクトル内の各インデックスは特定の単語を表します。

組み込み視覚化

「ソーシャル メディアの災害」のサンプル語彙には約 20,000 語が含まれており、各文は長さ 20,000 のベクトルで表されます。各文には語彙の小さなサブセットのみが含まれているため、ベクトルの大部分はゼロで埋められます。

埋め込みが実際に質問に関連する情報(ツイートが災害に関連しているかどうかなど)をキャプチャしているかどうかを確認するには、埋め込みを視覚化して結果が適切に分散されているかどうかを確認するのがよい方法です。通常、語彙は非常に大きく、20,000 次元のデータを視覚化することは基本的に不可能であることを考慮して、PCA と呼ばれる手法を使用してデータを 2 次元に削減しました。次のように描きます。

Bag of Words埋め込みの視覚化

2 つのクラスは適切に分離されていないようですが、これは選択した埋め込み方法の特徴である可能性もあれば、単に次元削減によるものである可能性もあります。 Bag-of-Words 機能が役立つかどうかを理解するために、それらに基づいて分類器をトレーニングしてみることができます。

ステップ4: 分類

問題に初めて取り組むときは、通常、問題を解決できる最も単純なツールを選択するのが最善のアプローチです。データ分類に関しては、汎用性と解釈可能性から、ロジスティック回帰が最も人気のあるアルゴリズムです。このアルゴリズムはトレーニングが簡単で、結果も解釈可能なので、モデルから最も重要な係数を簡単に抽出できます。

データを 2 つのセットに分割します。トレーニング セットはモデルを一致させるために使用され、テスト セットは未知のデータに対するアプリケーションの効果を観察するために使用されます。トレーニング後、75.4% の精度を達成しました。結果は悪くないです!最も一般的なクラス (「無関係」) は 57% にしか達しません。ただし、75% の精度でも十分であり、モデルを理解せずに適用を開始すべきではありません。

ステップ5: 検査

混同マトリックス

最初のステップは、モデルがどのような種類のエラーを起こす可能性があるか、また、どのようなエラーを最も起こしたくないかを理解することです。この例では、無関係なツイートが災害と関連付けられる場合が偽陽性であり、無関係なツイートが実際の災害と関連付けられる場合が偽陰性です。すべての潜在的なインシデントへの対応を優先したい場合は、偽陰性率を下げる必要があります。リソースが限られている場合は、誤報を減らすために誤報率を下げることを優先する必要があります。この情報は、モデルの予測と実際のラベルを比較する混同行列を使用して視覚化できます。理想的には、マトリックスは左上隅から右下隅(予測値と実際の値が最も一致する場所)まで走る対角線を形成します。

混同マトリックス(緑は高い割合、青は低い割合)

私たちの分類器は、偽陽性よりも偽陰性を多く生成します(比例して)。言い換えれば、私たちのモデルが犯す最も一般的なエラーは、災害イベントを無関係なカテゴリに誤って分類することです。誤検知によって法執行機関に高いコストがかかる場合、これは私たちの分類器にとって良いことかもしれません。

モデルを説明し図解する

モデルを検証し、その予測を説明するには、モデルが決定を下すためにどの単語を使用するかを観察する必要があります。データ自体に偏りがある場合、分類器はサンプル データに基づいて正確な予測を行うことができますが、モデルを現実世界に適用した結果は理想的なものにはなりません。災害と無関係なクラスで最も重要な単語をプロットしました。単語の重要度をバッグ・オブ・ワードとロジスティック回帰でプロットするのは非常に簡単で、予測を行うためにモデルが使用する係数を抽出して並べ替えるだけです。

Bag of Words モデル: 単語の重要度

私たちの分類器は、いくつかの特徴 (hiroshima、massacre) を正しく識別しましたが、いくつかの意味のない単語 (heyoo、x1392) については明らかに過剰適合しました。現在、私たちの bag-of-words モデルは大量の語彙を処理しており、すべての単語が平等に扱われています。ただし、一部の単語は非常に頻繁に出現し、予測にノイズを与えるだけです。次に、単語の頻度を考慮した方法で文を表現し、データからより多くの情報を取得できるかどうかを確認します。

ステップ6: 単語の構造を説明する

TF-IDF

モデルが意味のある単語にさらに注意を払うようにするために、バッグオブワード モデルで TF-IDF (用語頻度、逆文書頻度) スコアリングを実行できます。 TF-IDF は、データセット内の希少性に基づいて単語にスコアを付け、頻繁に出現してノイズのみを追加する単語を削除します。新しい埋め込みの PCA 投影は次のとおりです。

TF-IDF埋め込みの可視化

上の写真では、2 つの色がより明確に区別されていることがわかります。これにより、分類器が 2 つのグループを区別しやすくなります。これがより良い結果につながるかどうか見てみましょう。新しい埋め込みを使用してトレーニングされた別のロジスティック回帰モデルは、76.2% の精度を達成しました。

これはごくわずかな改善です。私たちのモデルはより重要な単語に気づき始めているでしょうか?モデルが「不正行為」をすることなく、より良い結果が得られれば、そのモデルは改善されたとみなすことができます。

TF-IDF: 単語の重要度

選択された単語はより関連性が高いようです。テスト セット マトリックスはわずかに増加しただけですが、モデルによって選択された語彙に対する信頼度が高まったため、顧客と対話する必要がある一部のシステムに自信を持ってモデルを展開できるようになりました。

ステップ7: セマンティクスを活用する

ワード2ベクトル

私たちの最高のモデルは、高レベルのシグナルワードを拾い上げることに成功しました。しかし、このモデルを展開すると、トレーニング セットに登場していない単語に遭遇する可能性が高くなります。そうすると、以前のモデルは、トレーニング中に類似の単語に遭遇したにもかかわらず、これらのツイートを正確に分類できない可能性があります。

この問題を解決するには、単語の意味を理解する必要があります。つまり、「good」と「positive」は「apricot」と「continent」よりも近いことを理解する必要があります。意味を把握するために、Word2Vec というツールを使用します。

事前に学習した単語を使用する

Word2Vec は、単語の連続的な埋め込みを見つけるための技術です。大量のテキストを読み、類似の文脈に現れる単語を記憶することで学習します。十分なデータでトレーニングした後、語彙内の各単語に対して 300 次元のベクトルが生成され、意味が似ている単語同士がより近くなります。

この記事の著者は、大規模なコーパスで事前トレーニングされたモデルをオープンソース化しました。これを使用して、モデルに意味的知識を導入することができます。事前トレーニング済みのベクトルは、この投稿のリポジトリにあります。

文レベルの表現

文を分類器に素早く埋め込む方法の 1 つは、文内のすべての単語の Word2Vec スコアの平均を取ることです。前回と同じ bag-of-words アプローチを使用しますが、今回は文の文法のみが失われ、意味情報は保持されます。

Word2Vec 文埋め込み

以下は、前述の手法を使用して形成された新しい埋め込みの視覚化です。

Word2Vec 埋め込み視覚化

2 つの色のグループはより明確に区別されるようになり、この新しい埋め込みにより、分類器は 2 つのクラス間の分離を見つけやすくなります。同じモデルを 3 回トレーニング (ロジスティック回帰) した結果、77.7% の精度を達成しました。これはこれまでで最高の結果です。モデルをテストする時が来ました。

複雑さと解釈可能性のトレードオフ

以前のモデルでは、埋め込みが各単語の 1 次元ベクトルとして表現されていないため、どの単語が分類に最も関連しているかを判断することがより困難になります。しかし、ロジスティック回帰の係数は、単語のインデックスではなく、埋め込みの 300 次元に関連しているため、引き続き使用できます。

精度がわずかに向上したとしても、解釈可能性をすべて失うのは厳しいトレードオフのように思われます。しかし、より複雑なモデルを使用する場合は、LIME などのブラックボックスの説明を使用して、分類器がどのように機能するかを確認できます。

ライム

LIME は Github でオープンソース パッケージとして入手できます。ブラックボックスの説明者を使用すると、ユーザーは入力を乱し(この場合は文から単語を削除する)、予測がどのように変化するかを観察することで、典型的な例を使用して任意の分類子の決定を説明できます。

データセット内の文の説明セットを見てみましょう。

正しい災害用語は「関連」として分類されます

ここでは、単語が分類に与える影響は明らかではないようだ

しかし、データセット内の何千もの事例を調査する時間はありません。代わりに、代表的なテスト サンプルに対して LIME を実行し、どの単語が一貫して大きな貢献をしているかどうかを確認します。この方法を使用すると、以前のモデルと同様に単語の重要度スコアを取得し、モデルの予測を検証できます。

Word2Vec: 単語の重要度

相関性の高い単語を見つけることができるモデルは、理解しやすい決定を下すことができることを意味しているようです。これらは以前のモデルからの最も関連性の高い単語であるはずなので、本番環境に安心して適用できます。

ステップ8: 文法へのエンドツーエンドのアプローチ

前回の投稿では、コンパクトな文の埋め込みを生成するための高速かつ効率的な方法について説明しました。しかし、単語の順序を無視すると、文中の文法情報がすべて失われます。これらの方法で十分な結果が得られない場合は、文全体を入力として受け取り、中間表現を構築せずにラベルを予測する、より複雑なモデルを使用できます。一般的なアプローチは、Word2Vec または GloVe や CoVe などの新しい方法を使用して、文を一連の独立した単語ベクトルとして扱うことです。以下でこれを実行します。

効率的なエンドツーエンドのアーキテクチャ (ソース)

文章分類用の畳み込みニューラル ネットワーク (CNN) はトレーニングが非常に高速で、非常に便利なエントリーレベルのディープラーニング アーキテクチャです。 CNN は画像データでのパフォーマンスで広く知られていますが、テキスト関連のタスクでも優れた結果を提供し、通常、ほとんどの複雑な NLP アルゴリズム (LSTM やエンコーダー/デコーダー アーキテクチャなど) よりもトレーニングが高速です。このモデルは単語の順序を保持し、単語の順序が予測可能なターゲット クラスから貴重な情報を学習します。以前のモデルとは対照的に、彼は「アレックスは植物を食べる」と「植物はアレックスを食べる」を区別することができます。

このモデルのトレーニングには、以前の方法よりも多くの作業は必要ありません (詳細についてはコードを参照してください) が、結果は以前よりも良くなり、精度は 79.5% に達しました。上記のモデルを使用して、次のステップでは、説明したアプローチを使用して行われた予測を調査して説明し、これが実際にユーザーに提供する最適なモデルであることを確認します。今なら自分でも安心して試すことができます。

***

上記の成功した方法を簡単に見てみましょう。

  • 簡単でシンプルなモデルから始めましょう
  • その予測を説明する
  • 発生するエラーを理解する
  • この情報を使用して、次のアクションがデータに対して有効かどうか、またはより複雑なモデルが必要かどうかを判断します。

これらの方法は、ツイートのような小さなテキストを理解して処理するモデルを使用して特定のケースに適用されますが、このアプローチの背後にある考え方は、他の問題にも広く適用できます。この記事が皆さんのお役に立てば幸いです。また、皆さんからのご提案やアドバイスもいただければ幸いです。お気軽に下記にコメントを残してください。または、こちらまたは Twitter で EmmanuelAmeisen にご連絡ください。

<<:  人工知能産業は急速に発展しており、その規模は2020年には1600億ドルを超えるだろう

>>:  「黄金の3月と銀の4月」が到来し、AIはすでに人材採用の分野に浸透しています。あなたにはどのような影響があるでしょうか?

ブログ    
ブログ    

推薦する

人工知能:テクノロジーは無邪気、善と悪は人間の心の中にある

[[338194]]テクノロジーは常に諸刃の剣です。人類の文明の進歩を促進する一方で、時には人類に災...

ChatGPTのおばあちゃんバージョンが爆発しました! Microsoft を裏切り、Win11 の秘密キーを漏洩!

著者: 徐潔成校正:Yun Zhao大規模なモデルを破損させるコストは本当に低すぎます。 ChatG...

9 トピック PyTorch での畳み込みニューラル ネットワーク (CNN) の実装

この写真をまだ覚えていますか?ディープシステムでは、52 個のオブジェクト検出モデルが導入されていま...

気候ガバナンスの年、希望はAIにある

[[391671]]気候変動は今日世界が直面している最大の課題となっています。国連は、2021年が地...

...

...

...

OpenAIの最強のライバルトレーニングAIがLLMブラックボックスを分解し、ビッグモデルの「魂」を予期せず垣間見る

大規模なモデルの「ブラックボックス」を解体するために、人類解釈可能性チームは、新しいモデルをトレーニ...

すべての最大共通部分列を見つけるためのアルゴリズムの実装

1. LCS分析まず、サブシーケンスとは何でしょうか?定義は書きませんが、一目でわかるように例を挙げ...

データ処理を簡単にしますか? Baidu EasyDataが初の高度なインテリジェントデータクリーニング機能をリリース

AI モデルを開発する場合、データの量と品質がモデルの有効性に直接影響します。現場でデータを収集した...

AI戦略に関するCIOの4つの優先事項

テクノロジーリーダーにとって、今は刺激的でもあり、不安でもある時代です。急速に進化するデジタルテクノ...

機械学習と人工知能がサイバーセキュリティを向上させる方法

[[375875]]今日、サイバー攻撃はますます蔓延しており、組織が導入しているセキュリティ ツール...

エッジコンピューティングの価値はデータにある

企業はビジネスニーズの変化に応じてスケールアップおよびスケールダウンできるコンピューティングおよびス...