NLP 入門チュートリアル シリーズ

NLP関連知識の紹介まとめ

第 1 章 自然言語と単語の分散表現



序文

NLP の簡単な紹介と独自の要約。
自然言語処理の目標は、コンピューターに言語を理解させることです。私たちの言語は単語で構成されており、意味も単語で構成されているため、コンピューターが自然言語を理解するには、単語の意味を理解する必要があります。言葉の意味を表現する方法をいくつか紹介します。


1. シソーラス辞書に基づく方法

名前が示すように、同義語辞書では、同じ意味 (同義語) または類似した意味を持つ単語が同じグループにグループ化されます。また、上下や全体の関係など、その他の粒度の関係がある場合もあります。オートバイや車と同じように、自動車は自動車です。WordNet は NLP 分野で最も有名な同義語辞書で、単語の同義語を取得し、単語間の類似度を計算できます。WordNet を使用する場合は、まずNLTKモジュールをインストールする必要があります。
もちろん、シソーラス辞書にも次の問題があります。

  1. 時代の変化に適応するのは難しく、時間が経てば経つほど、チキン あなたはとても美しいです一方で、言葉の意味、用法、軽蔑的な属性などは変化する可能性があります。
  2. 英語でも中国語でも維持費が膨大、単語数も膨大、莫大な人件費がかかる
  3. 単語間の微妙な違いを示すことができない
    このため、シソーラス辞書を使用する際には多くの問題が発生します。次に、別のカウントベースのアプローチを紹介します。

2. カウントベースのメソッド

この方法を使用する場合、まずコーパスを使用する必要があります。この方法の目的は、コーパスからエッセンスを自動的かつ効率的に抽出することです。たとえば、「学ぶと幸せになる」というコーパスがあります。これを前処理する必要があります。簡単に言えば、次の手順があります。

  1. すべての単語を小文字に変換する
  2. 単語に ID を付けます (0: 学習、1: 作成など)。同様に、逆マッピングにも必要があります。

次に、単語をベクトルとして表す必要があります。それには次のことが必要です分布式假设。単語の意味はその周囲の単語によって形成されます。

1. 単語に関する分散された仮定

単語の分散表現では、単語が固定長ベクトルとして表現されます。このようなベクトルは、密なベクトルで表現されるという特徴がある。密なベクトルとは、ベクトルの各要素 (そのほとんどはゼロ以外の実数で表されます) を意味します。さらに、単語のコンテキストとは、その単語の周囲の語彙とコンテキストのサイズ (つまり、どのように表現されるか) を指します。多くの単語が周囲にある) は、ウィンドウ サイズ (ウィンドウ サイズ) と呼ばれます。ウィンドウ サイズは 1 で、コンテキストには左右に 1 つの単語が含まれます。以下同様です。分散仮定を使用して、次に単語を表現するためにベクトルを使用する方法を検討します。分散仮定に基づいています。

2. 共起行列

単語 ID を取得したら、共起行列を使用して単語を表すことができます。

学ぶ 作る 自分 ハッピー
学ぶ 0 1 0 0
作る 1 0 1 0
自分 0 1 0 1
ハッピー 0 0 1 0

このうち、表の1行目は学習のコンテキストがmakesのみであることを意味するので1、2行目はmakesのコンテキストが学習と私というようにマークされています。このようにして、各単語のベクトル表現が得られます。

3. ベクトル間の類似性

単語ベクトル表現を使用すると、単語間の類似性を評価できます。 or や などの多くの方法があります。向量内积let 欧氏距离x 余弦相似度= ( x 1 , x 2 . . . , xn ) 、 y = ( y 1 , y 2 . . . ) yn ) x=(x_1,x_2...,x_n),y=(y_1,y_2...y_n)バツ=( ×1バツ2... バツy=( y1y2... y)の場合、それらのコサイン類似度は次のように表すことができます:
類似度 ( x , y ) = x ∗ y ∣ ∣ x ∣ ∣ ∣ y ∣ = x 1 y 1 + . . . xnynx 1 2 + . . xn 2 y 1 2 + . . . + yn 2 類似度(x,y)=\frac{x*y}{||x|||y|}=\frac{x_1y_1+...x_ny_n}{ \sqrt{x^2_1+. . .x^2_n\sqrt{y^2_1+...+y^2_n}}}同様性質( x , _ _ _ _ _y =∣∣ x ∣∣∣ y バツはい=バツ12+... ×n2y12+...+yn2 バツ1y1+... ×y
この式では、分子はベクトルの内積、分母はベクトルの L2 ノルムです。求内积之前,先对向量进行正规化コサイン類似度は「2つのベクトルがどの程度同じ方向を向いているか」を表します。2 つのベクトルがまったく同じ方向を向いている場合、コサイン類似度は 1 となり、完全に反対の方向を向いている場合、コサイン類似度は -1 になります。関連するコードを実装する場合、除算が含まれるため、0ベクトルに遭遇するとエラーが発生するため、除算の際に非常に小さな値を加算する必要があります。

4. 類似語ソート

類似性を使用して単語を並べ替えることができます。手順は次のとおりです。

  1. クエリ単語の単語ベクトルを取り出す
  2. クエリ単語と他のすべての単語の間のコサイン類似度を個別に検索します。
  3. 降順で表示する

要約する

ここまででカウンティングをベースにした基本的な内容はほぼ紹介しましたが、次回はその改良版を紹介します。

おすすめ

転載: blog.csdn.net/weixin_39524208/article/details/131335502