[自然言語処理] 自然言語処理 --- NLP 入門ガイド

1. NLPとは

NLP の正式名はNatuarl Language Processingです。これは中国語で自然言語処理を意味し、人工知能の分野における重要な方向性です

自然言語処理 (NLP) の最も優れた側面の 1 つは、コンピューターと人間の言語の間の相互作用を研究する、人工知能から計算言語学に至るまで、複数の分野にわたる計算研究です。コンピューターが大規模な自然言語コーパスをどのように正確かつ迅速に処理できるかに焦点を当てています。自然言語コーパスとは何ですか?これは現実世界の言語で表現された言語学習であり、テキストからの一連の抽象的な規則や、言語と別の言語との関係を理解するための包括的なアプローチです。

人間の言語は、豊富な意味情報を含む抽象的な情報記号であり、人間はその意味を容易に理解できます。コンピュータは数値情報しか処理できず、人間の言語を直接理解することはできないため、人間の言語を数値に変換する必要があります。それだけでなく、人間間のコミュニケーションにはコンテキスト情報が関係しており、これはコンピューターにとって大きな課題でもあります。

2. NLP タスクの種類

まず、次の図に示すように、NLP タスクのタイプを見てみましょう。

ここに画像の説明を挿入します

主に次の 4 つのカテゴリに分類されます。

  • カテゴリからシーケンスへ
  • カテゴリへのシーケンス
  • シーケンス間の同期
  • 非同期シーケンス間

「カテゴリー」はラベルまたは分類として理解でき、「シーケンス」はテキストまたは配列として理解できます。 NLP のタスクの概要は、あるデータ型を別のデータ型に変換するプロセスです。これはほとんどの機械学習モデルと同じか類似しているため、NLP のテクノロジー スタックをマスターすることは、機械学習のテクノロジー スタックをマスターすることと同等です。

従来の手法と深層学習手法の比較 NLP

ここに画像の説明を挿入します

3. NLPの前処理

上記の NLP タスクを完了するには、NLP タスクの基本プロセスである前処理が必要です。前処理には、コーパス収集、テキストクリーニング、単語分割、ストップワードの削除 (オプション)、標準化と特徴抽出などが含まれます。

ここに画像の説明を挿入します

図の赤い部分は、NLP タスクの前処理プロセスであり、他の機械学習タスクのプロセスとは異なります。

英語 NLP コーパスの前処理のための 6 つのステップ

ここに画像の説明を挿入します

  1. 分詞 – トークン化
  2. ステミング – ステミング
  3. 見出し語化 – 見出し語化
  4. 品詞のタグ付け – 品詞
  5. 固有表現認識 – NER
  6. チャンキング – チャンキング

中国語 NLP コーパスの前処理の 4 つのステップ

  • 中国語の単語の分割 – 中国語の単語の分割
  • 品詞のタグ付け – 品詞
  • 固有表現認識 – NER
  • ストップワードを削除する

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

NLP のタスクでは、質の高いコーパスが大量になければ、賢い女性でもご飯抜きの食事を作るのは難しく、仕事ができません。

コーパスを入手するにはさまざまな方法がありますが、最も一般的な方法は、Wikipedia コーパスなどのオープンソース コーパスを直接ダウンロードすることです。

ただし、このようなオープンソース コーパスは通常、ビジネスの個別のニーズを満たすことができないため、特定のコンテンツをキャプチャする独自のクローラーを開発する必要があります。これもコーパスを取得する方法です。もちろん、どのインターネット企業も、ユーザー レビュー、電子書籍、製品説明など、自社のビジネスに基づいた大量のコーパス データを保有しています。これらはすべて優れたコーパスです。

サンプルデータソース

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

  • 製品レビュー (Amazon、Yelp、およびさまざまなアプリストア)
  • ユーザー生成コンテンツ (ツイート、Facebook 投稿、StackOverflow の質問)
  • トラブルシューティング (顧客のリクエスト、サポート チケット、チャット ログ)

現在、データはインターネット企業にとって石油であり、そこには莫大なビジネス価値が含まれています。したがって、友人は日々の仕事の中でデータを収集する習慣を身に付ける必要があります。優れたコーパスに出会ったら、忘れずにそれをバックアップしてください (もちろん、合理的かつ合法的な条件の下で)。問題。

ステップ 2: データのクリーニング - テキストのクリーニング

私たちが従う最初のルールは、「モデルは常にデータと同じくらい優れている」というものです。

データ サイエンティストの重要なスキルの 1 つは、次のステップでモデルとデータのどちらを扱うべきかを知ることです。経験則としては、まずデータを調べてからクリーンアップすることです。クリーンなデータセットにより、モデルは無関係なノイズを過剰に照合するのではなく、意味のある特徴を学習することができます。

さまざまなチャネルを通じて必要なコーパスを取得したら、次にそれをクリーンアップする必要があります。多くのコーパス データは直接使用できず、無用な記号や特殊なテキスト構造が多数含まれているためです。

データ型は次のように分類されます。

  • 構造化データ: リレーショナル データ、json など。
  • 半構造化データ: XML、HTML など。
  • 非構造化データ: Word、PDF、テキスト、ログなど。

元のコーパスデータを処理しやすい形式に変換する必要があるため、HTMLやXMLを処理する場合には、機能が豊富で使いやすいPythonのlxmlライブラリが使用されるのが一般的です。一部のログ データまたはプレーン テキスト データについては、正規表現を使用して処理できます。

正規表現は、単一の文字列を使用して、特定の構文ルールに準拠する一連の文字列を記述し、一致させます。 Python のサンプルコードは次のとおりです。

import re
 
# 定义中文字符的正则表达式
re_han_default = re.compile("([\u4E00-\u9FD5]+)", re.U)
 
sentence = "我/爱/自/然/语/言/处/理"
 
# 根据正则表达式进行切分
blocks= re_han_default.split(sentence)
 
for blk in blocks:
    # 校验单个字符是否符合正则表达式
    if blk and re_han_default.match(blk):
        print(blk)

出力:

我
爱
自
然
语
言
处
理

上記に加えて、中国語のエンコーディングにも注意する必要があります。Windows プラットフォームでの中国語のデフォルトのエンコーディングは GBK (gb2312) であり、Linux プラットフォームでの中国語のデフォルトのエンコーディングは UTF-8 です。 NLP タスクを実行する前に、さまざまな説明不能な問題を回避するために、さまざまなソースからのコーパスのエンコーディングを統一する必要があります。

コーパスのエンコーディングを事前に決定できない場合は、シンプルで使いやすい Python の chardet ライブラリを使用してエンコーディングを検出することをお勧めします。コマンドライン: chardetect somefile とコード開発の両方をサポートします。

データをクリーニングするためのチェックリストは次のとおりです。

  • 英数字以外の文字など、無関係な文字をすべて削除します。
  • テキストを個々の単語に分割してトークン化する
  • Twitter での「@」メンションや URL などの無関係な単語を削除します。
  • すべての文字を小文字に変換して、「hello」、「Hello」、「HELLO」などの単語が同じように扱われるようにします。
  • スペルミスの単語や別のスペルの単語を組み合わせて 1 つの表現にすることを検討してください (例: 「cool」/「kewl」/「coolool」)
  • 語頭の削減を検討する (「am」、「are」、「is」などの単語を「be」などの一般的な形式に削減する)

これらの手順に従い、追加のエラーがないか確認した後、クリーンなラベル付きデータを使用してモデルのトレーニングを開始できます。

ステップ 3: 単語の分割

中国語と英語の分詞の典型的な 3 つの違い

ここに画像の説明を挿入します

違い 1: 単語分割方法が異なり、中国語はより難しい

英語には区切り文字として自然なスペースがありますが、中国語にはありません。そのため、どのように切り分けるかが難しい点であり、また、中国語では一つの単語に複数の意味が含まれる場合が多く、曖昧になりやすいです。難しい部分については、以下で詳しく説明します。

違い 2: 英単語には複数の形式がある

英単語には変化が豊富にあります。これらの複雑な変換に対処するために、英語 NLP には中国語と比較して、見出語化とステミングと呼ばれるいくつかの独自の処理ステップがあります。中国語は必要ありません

品詞の復元: dos、done、doing、did は、品詞の復元を通じて復元する必要がありました。

ステミング: city、children、those などの単語は、city、child、those などの基本的な形式に変換する必要があります。

違い 3: 中国語の単語の分割では粒度の問題を考慮する必要がある

たとえば、「中国科学技術大学」には多くの分類方法があります。

  • 中国科学技術大学
  • 中国 \ 科学技術 \ 大学
  • 中国 \ 科学 \ 技術 \ 大学

粒度が大きいほど意味は正確になりますが、思い出すことも少なくなります。したがって、中国語では、異なる粒度を選択するには、異なるシナリオと要件が必要になります。これは英語では利用できません。

中国語の単語の分割は比較的大きなトピックであり、関連する知識ポイントと技術スタックが非常に豊富であり、中国語の単語の分割を理解することは、NLP のほとんどを理解することに等しいと言えます。

中国語の単語分割における 3 つの主要な問題

ここに画像の説明を挿入します

難しさ 1: 統一された基準がない

現時点では、中国語の単語の分割に関する統一標準はなく、一般に受け入れられている仕様もありません。企業や組織にはそれぞれ独自の方法やルールがあります。

難しさ 2: 曖昧な単語を分割する方法

たとえば、「卓球のオークションは終了しました」には、2 つの異なる意味を表現する 2 つの分詞方法があります。

  • 卓球 \ オークション \ 終了しました
  • 卓球 \ ラケット \ 販売中 \ 終了しました

難易度 3: 新しい単語の認識

情報爆発の時代には、3 日ごとに新しい単語が大量に出現するため、これらの新しい単語をいかに迅速に識別するかは大きな課題です。たとえば、「青いスキニー椎茸」が人気になったとき、それをすぐに特定する必要がありました。

中国語の単語分割は 20 年以上の開発を経て、多くの困難を乗り越え、大きな進歩を遂げてきましたが、次の図に示すように、大きく 2 つの段階に分けられます。

ここに画像の説明を挿入します

辞書一致とルール

利点: 高速、低コスト

短所: 適応性があまり高くなく、効果は分野によって大きく異なります。

基本的な考え方は辞書照合に基づいており、分割対象の中国語テキストを一定のルールに従って分割および調整し、辞書の単語と照合します。照合が成功すると、中国語の単語に基づいて単語が分割されます。辞書の照合に失敗した場合は、調整するか再選択するなど、それだけです。代表的な手法としては、順方向最大値マッチング、逆方向最大値マッチング、双方向マッチングなどがある。

統計と機械学習に基づく

利点: 適応力が高い

デメリット:コストが高い、速度が遅い

現在、このタイプのアルゴリズムとして一般的に使用されているのは、HMM、CRF、およびその他のアルゴリズムです。たとえば、Stanford および Hanlp の単語分割ツールは CRF アルゴリズムに基づいています。 CRFを例に挙げると、基本的な考え方は漢字にラベルを付けて訓練することであり、単語の出現頻度だけでなく文脈も考慮し、優れた学習能力を備えているため、曖昧な単語の認識に優れた結果をもたらします。そして未登録の単語。

一般的な単語セグメンターは、機械学習アルゴリズムと辞書を組み合わせて使用​​し、一方では単語分割の精度を向上させることができ、他方ではドメイン適応性を向上させることができます。

現在、中国語の単語分割技術の主流は、辞書最大確率パス + 未登録単語認識 (HMM) に基づくソリューションを採用しており、その代表的なものは、人気の多言語中国語単語分割パッケージである jieba 単語分割です。

中国語単語分割ツール

次のランキングは、GitHub の星の数に基づいています。

  1. ハンプ
  2. スタンフォード分詞
  3. ansjトークナイザー
  4. ハルビン工業大学LTP
  5. KCWSトークナイザー
  6. ジエバ
  7. 清華大学THULAC
  8. ICTCLAS

英単語分割ツール

  1. 難しい
  2. スペーシー
  3. ゲン
  4. NLTK

ステップ 4: 標準化

標準化とは、ストップワード、語彙、トレーニングデータなどの削除など、後続の処理に必要な基本データを提供することです。

単語の分割が完了したら、「どこで」、「さらに」、「何を」などのストップワードを削除できますが、このステップは必要ありません。選択は実際のビジネスに基づいて行う必要があります。たとえば、キーワード マイニングを削除する必要があり、ワード ベクトルのトレーニングにストップ ワードは必要ありません。

語彙リストはコーパス内のすべての固有の単語のリストを作成するもので、各単語はインデックス値に対応しており、インデックス値は変更できません。ボキャブラリの最大の機能は、単語をベクトルに変換することです。これが One-Hot エンコーディングです。

次のような語彙があるとします。

我
爱
自然
语言
处理

次に、次の One-Hot エンコーディングを取得できます。

我:  [1, 0, 0, 0, 0]
爱:  [0, 1, 0, 0, 0]
自然:[0, 0, 1, 0, 0]
语言:[0, 0, 0, 1, 0]
处理:[0, 0, 0, 0, 1]

このようにして、単語をコンピュータで直接処理できる数値データに簡単に変換できます。 One-Hot コーディングは一部の NLP タスクをより効率的に完了できますが、依然として多くの問題があります。

語彙の次元が特に大きい場合、One-Hot エンコーディング後の単語ベクトルは非常にまばらになり、One-Hot エンコーディングでは単語の意味情報も欠如します。これらの問題のため、有名な Word2vec と Word2vec のアップグレード バージョンである BERT が登場しました。

モデルをトレーニングする際には、語彙に加えてトレーニング データも提供する必要があります。モデル学習は大きく 2 つのカテゴリに分類できます。

教師あり学習。既知の答えを持つラベル付きデータセット上で、モデルによって与えられる予測結果は実際の答えに可能な限り近く、予測タスクに適しています。
教師なし学習。ラベルなしの学習 データは、データの隠れた構造に関するいくつかの規則を明らかにするものであり、記述タスクに適しています。
さまざまな学習タスクに応じて、さまざまな標準化されたデータを提供する必要があります。一般にラベル付きデータを取得するコストは非常に高価であり、教師なし学習ではそのようなコストはかかりませんが、実際の問題を解く場合には効果が高い教師あり学習が依然として主流となっています。

注釈付きのトレーニング データは大まかに次のようになります (センチメント分析用のトレーニング データ)。

距离 川沙 公路 较近 公交 指示 蔡陆线 麻烦 建议 路线 房间 较为简单	__label__1
商务 大床 房 房间 很大 床有 2M 宽 整体 感觉 经济 实惠 不错 !	__label__1
半夜 没 暖气 住 ! 	__label__0

各行が学習サンプル、__label__0と__label__1が分類情報、残りが単語分割後のテキストデータです。

ステップ 5: 特徴抽出

モデルをより適切にトレーニングするには、テキストの元の特徴を特定の特徴に変換する必要があります。変換には主に統計と埋め込みの 2 つの方法があります。

オリジナルの機能: テキストや画像などを人間または機械に変換する必要があります。

特定の特性: オブジェクトの重要性やサイズなど、人間によって整理および分析されており、直接使用できます。

4. NLPの表現方法

現在一般的に使用されているテキスト表現方法は次のように分類されます。

  • 離散表現。
  • 分散表現。

離散表現

ワンホット
ワンホット エンコーディングは、「ワンホット エンコーディング」または「ダム エンコーディング」とも呼ばれ、最も伝統的で基本的な単語 (または文字) の特徴表現です。方法 。このエンコーディングは、単語 (または単語) を、辞書 (または辞書) の長さを次元とするベクトルとして表します (辞書はコーパスから生成されます)。このベクトルでは、現在の単語位置の値は 1 で、残りは 1 です。位置は0です。

テキストはワンホット エンコード手順を使用します。

  • コーパスに基づいて辞書 (語彙) を作成し、単語と索引 (stoi、itos) のマッピングを作成します。
  • 文をインデックス付き表現に変換します。
  • OneHot エンコーダーを作成します。
  • 文章は OneHot エンコーダーを使用してコーディングされました。

One-Hot エンコーディングの特徴は次のとおりです。

  • 単語ベクトルの長さは辞書の長さです。
  • ベクトルでは、単語のインデックス位置の値は 1 で、残りの値は 0 です。
  • One-Hot を使用してエンコードされたテキスト。結果の行列はスパース行列です

欠点:

  • 異なる単語のベクトル表現は互いに直交しており、異なる単語間の関係を測定することはできません。
  • このコーディングは、特定の単語が文中に出現するかどうかのみを反映し、さまざまな単語の重要性を測定することはできません。
  • One-Hot を使用してテキストをエンコードすると、高次元の疎行列が生成され、コンピューティング リソースとストレージ リソースが無駄になります。

バッグ オブ ワード (BOW)
例:

  • ジェーンは深センに行きたいと思っています。
  • ボブは上海に行きたいと思っています。
    バッグオブワード モデルでは、語順と語彙情報は考慮されません。各単語は互いに独立しています。単語を入力してください。 「袋」に入れて、各単語の頻度を数えます。

Bag of Words モデルのコーディング機能:

  • Bag-of-Words モデルは、(単語や単語ではなく) テキストをエンコードします。
  • エンコードされたベクトルの長さは辞書の長さになります。
  • このエンコードでは、単語の出現順序は無視されます。
  • ベクトルでは、単語のインデックス位置の値は、その単語がテキスト内に出現する回数であり、インデックス位置の単語がテキスト内に出現しない場合、値は 0 になります。

欠点がある

  • このエンコーディングは単語の位置情報を無視します。位置情報はテキスト内で非常に重要な情報です。単語の位置に応じて意味は大きく異なります(たとえば、「猫はネズミを食べるのが大好きです」と「」のエンコーディングは異なります)ネズミは猫を食べるのが大好きです」も同じです)。
  • このエンコード方法はテキスト内に単語が出現する回数をカウントしますが、一般的な単語 (「I」、「is」、「the」など) とキーワード (「」など) を区別することはできません。自然言語「処理」、「NLP」など) テキスト内の重要性。

TF-IDF (用語頻度 - 逆文書頻度)
バッグオブワード モデルが一般的な単語 (「である」など) を区別できないという問題を解決するため、「的」など)や固有名詞(「自然言語処理」、「NLP」など)のテキストの重要性を考慮して、TF-IDF アルゴリズムが誕生しました。

TF-IDF の正式名は、用語頻度 - 逆ドキュメント頻度、用語頻度 - 逆テキスト頻度とも呼ばれます。で:

統計的手法は主に、単語の単語頻度 (TF) と逆文書頻度 (IDF) を計算します。

  • TF (用語頻度): 現在のテキストに出現する特定の単語の頻度。頻度が高い単語は、重要な単語 (「自然言語処理」など) または一般的な単語 (「私」、「です」、「」など) です。の」など);
  • IDF (逆ドキュメント頻度): 逆ドキュメント頻度。テキスト頻度とは、コーパス全体における特定の単語を含むテキストの割合を指します。逆テキスト頻度はテキスト頻度の逆数です。
    次に、各単語はその重要性を測定するために TF-IDF 値を取得します。計算式は次のとおりです。

ここに画像の説明を挿入します

アドバンテージ

  • 実装はシンプルで、アルゴリズムは理解しやすく、強力な解釈可能性を備えています。
  • IDF の計算方法から、一般的な単語 (「私」、「是」、「的」など) がコーパス内の多くの記事に出現するため、IDF の値は非常に小さくなることがわかります。一方、キーワード (「自然言語処理」、「NLP」など) は特定の分野の記事にのみ表示され、IDF の値は比較的大きくなります。したがって、TF-IDF はいくつかの一般的なものを除外できます。 ; 記事の重要な単語を保持しながら、無関係な単語を削除します。

欠点がある

  • 単語の位置情報は反映できないため、キーワードを抽出する際には単語の位置情報(タイトル、文頭、文末など)を重視する必要があります。
  • IDF はノイズを抑制しようとする重み付けであり、テキスト内の頻度が低い単語が優先される傾向があるため、IDF の精度が低くなります。
  • TF-IDF はコーパスに大きく依存しています (特に、同様のコーパスをトレーニングする場合、同じタイプの一部のキーワードが隠蔽されることがよくあります。たとえば、TF-IDF をトレーニングする場合、コーパスにはエンターテイメント ニュースが多く、次にエンターテイメント関連のキーワードが含まれます)。は低くなります)ので、トレーニングには高品質のコーパスを選択する必要があります。

分散表現

理論的根拠:

  • 1954 年にハリスは分布仮説を提案し、この方法の理論的基礎を築きました。単語の意味は、近くに頻繁に出現する単語によって与えられます (類似した文脈を持つ単語は同様の意味論を持ちます)。
  • 1957 年、ファースは分布仮説をさらに詳しく説明し、明確にしました。単語は、それが保持する会社によって特徴付けられます (単語の意味論は、その文脈によって決まります)。
    n - gram
    n-gram は言語モデル (Language Model、LM) です。言語モデルは確率に基づく識別モデルであり、モデルの入力は文(単語の並び)であり、出力は文の確率、つまりこれらの単語の結合確率です。 (注: 言語モデルは、文が通常の人によって発話されたかどうかを判断することです。)

共起行列
まずウィンドウ サイズを指定し、次にウィンドウ (および対称ウィンドウ) 内の単語の共起数を単語ベクトルとしてカウントします。

コーパス:

  • 私はディープラーニングが好きです。
  • 私はNLPが好きです。
  • 飛ぶのが楽しいです。

備考: 指定したウィンドウサイズは 1 (つまり、左右の window_length=1、バイグラムに相当) 統計データは次のとおりです: (I, like)、(Iike, deep)、(deep, learning)、 (学習、.)、(私、好き)、(好き、NLP)、(NLP、.)、(私、楽しむ)、(楽しむ、飛ぶ)、(飛ぶ、.)。次に、コーパスの共起行列を次の表に示します。

ここに画像の説明を挿入します

上記の共起行列から、like と fun はどちらも単語 I の付属語に出現しており、統計的数値もほぼ等しいため、意味的および文法的な意味がほぼ同じであることがわかります。

アドバンテージ

  • 文内の単語の順序が考慮されます。

欠点がある

  • 単語リストの長さは非常に長いため、単語ベクトルの長さも非常に大きくなります。
  • 共起行列もスパース行列です (SVD や PCA などのアルゴリズムを使用して次元削減を実行できますが、計算量が非常に多くなります)。
    Word2Vec

word2vec モデルは、2013 年に Google チームによってリリースされた単語表現方法です。この方法が導入されるとすぐに、事前トレーニングされた単語ベクトルの使用が NLP の分野で花開きました。

word2vecモデル

word2vec には CBOW と SKIP-GRAM の 2 つのモデルがあります。

  • CBOW: 文脈上の単語を使用して中心の単語を予測します。

ここに画像の説明を挿入します

  • SKIP-GRAM: 中心の単語を使用して文脈単語を予測します。
    ここに画像の説明を挿入します

アドバンテージ

  • 意味的および文法的な情報は、単語の文脈を考慮して学習されます。
  • 取得された単語ベクトルの次元は小さいため、ストレージとコンピューティング リソースが節約されます。
  • 高い汎用性があり、さまざまな NLP タスクに適用できます。

欠点がある

  • 単語とベクトルの間には 1 対 1 の関係があり、多義性の問題を解決することはできません。
  • word2vec は静的モデルであり、汎用性は非常に高いですが、特定のタスクに対して動的に最適化することはできません。

GloVe
GloVe は、スタンフォード大学の Jeffrey と Richard によって提供された単語ベクトル表現アルゴリズムです。GloVe の正式名は、Global Vectors for Word Representation です。グローバル ベクトル表現に基づくアルゴリズムです。単語頻度統計 (カウントベースおよび全体的な統計) 単語表現アルゴリズム。このアルゴリズムは、グローバル行列因数分解とローカル コンテキスト ウィンドウの利点を組み合わせたものです。

注: Glove モデルの導出式は比較的複雑なので、ここでは詳細な導出は行いませんが、詳細については公式 Web サイト (https://nlp.stanford.edu/projects/glove/) を確認してください。

効果

ここに画像の説明を挿入します

アドバンテージ

  • 単語の文脈とグローバルコーパスの情報を考慮して、意味論的および文法的情報が学習されます。
  • 取得された単語ベクトルの次元は小さいため、ストレージとコンピューティング リソースが節約されます。
  • 高い汎用性があり、さまざまな NLP タスクに適用できます。

欠点がある

  • 単語とベクトルの間には 1 対 1 の関係があり、多義性の問題を解決することはできません。
  • Glove も静的モデルであり、汎用性は非常に高いものの、特定のタスクに合わせて動的に最適化することはできません。

ELMO
word2vec アルゴリズムとグローブ アルゴリズムによって取得された単語ベクトルはすべて静的単語ベクトルです (静的単語ベクトルは多義語の意味論を融合し、トレーニング後のコンテキストに従って変化しません) )、静的な単語ベクトルは多義性の問題を解決できません (たとえば、「今日 7 ポンドのリンゴを買いました」と「今日 7 ポンドのリンゴを買いました」、リンゴは多義性です)。 ELMO モデルによってトレーニングされた単語ベクトルは、多義性の問題を解決できます。

ELMO の正式名称は「Embedding from Language Models」ですが、この名前はモデルの特徴をよく反映していませんが、ELMO を提案する論文のタイトルは「深い文脈化された単語表現」というアルゴリズムの特徴をより正確に表現しています。

このアルゴリズムの本質は、言語モデルを使用してニューラル ネットワークをトレーニングすることです。単語の埋め込みを使用する場合、単語にはすでにコンテキスト情報が含まれています。このとき、ニューラル ネットワークはコンテキスト情報に基づいて単語の埋め込みを調整できるため、調整された単語の埋め込みにより、このコンテキストにおける特定の意味をより適切に表現できるようになり、静的な単語ベクトルでは多義語を表現できないという問題が解決されます。

ネットワークモデル

ここに画像の説明を挿入します

プロセス

  • 上の図の構造は、文字レベルの畳み込みニューラル ネットワーク (CNN) を使用して、テキスト内の単語を生の単語ベクトルに変換します。
  • 元の単語ベクトルを双方向言語モデルの最初の層に入力します。
  • 前方反復には、単語に関する情報と、その単語の前の語彙またはコンテキスト (つまり、上記) が含まれます。
  • 逆方向の反復には、単語とその単語の後の語彙情報または文脈情報 (つまり、以下) が含まれます。
  • これら 2 つのタイプの反復情報は中間ワード ベクトルを形成します。
  • 中間単語ベクトルはモデルの次の層に入力されます。
  • 最終的なベクトルは、元の単語ベクトルと 2 つの中間単語ベクトルの加重合計です。

効果

図1に示すように:

グローブを使用して学習された単語ベクトルのうち、遊びに似た単語はスポーツに関連するものがほとんどです。これは、コーパス内の遊びに関連するコーパスがスポーツの分野に関連するものが多いためです。
elmo によって学習された単語ベクトルで、play がパフォーマンスの意味を持つ場合、それに似た文もパフォーマンスに似た文になります。

ここに画像の説明を挿入します

5. NLPのビジネスシナリオ

NLP の 4 つの典型的なアプリケーション

ここに画像の説明を挿入します

  • テキストの修正: テキスト内のタイプミスを特定し、ヒントと正しい提案を提供します。
  • 感情分析:主観的な情報を含む文章の感情傾向を判断
  • コメント意見抽出:コメントの懸念事項や意見を分析し、ラベルを出力します
  • 会話の感情認識: 会話の話者が示す感情のカテゴリと信頼レベルを特定します。
  • テキストタグ: 記事の重要な情報を反映できる多次元タグを出力します。
  • 記事分類: 記事のトピック分類と対応する信頼度を出力します。
  • ニュース概要: 重要な情報を抽出し、指定された長さのニュース概要を生成します

これらの目もくらむようなビジネス シナリオに混乱しないでください。実際、上記のビジネスは前に説明した NLP 前処理の出力に基づいていますが、SVM、LSTM、LDA などの異なる機械学習モデルを適用しています。

これらの機械学習モデルのほとんどは分類モデル (シーケンス ラベリングも分類モデルです) であり、クラスタリング モデルはほんのわずかです。これらのモデルは一般化されており、NLP タスクだけではありません。この部分を明確に説明したい場合は、「機械学習入門」について別のトピックを開く必要があるため、ここではあまり詳しく説明しません。

概要: NLP の前処理をマスターしていれば、NLP の入門者とみなされます。これは、後続の処理が一般的な機械学習モデルと手法であるためです。

6. 結論

NLPは非常にやりがいのある仕事であり、また発展の余地が大きい仕事でもあるので、早期エントリーの基準を乗り越えれば、広大な世界が待っています。道は閉ざされており、長いですが、道は近づいています。

7. 参考資料

現場での8種類のテキスト表現とそのメリット・デメリット

https://easyai.tech/ai-definition/nlp/

https://juejin.im/post/5dccbe0ff265da795315a119

おすすめ

転載: blog.csdn.net/u011397981/article/details/130590194