ITエンジニア ノイのブログ

ITエンジニアのノイです。 YouTubeで ITエンジニアのお勉強という学習用の動画を公開しています。チャンネル登録お願いします!https://m.youtube.com/channel/UCBKfJIMVWXd3ReG_FDh31Aw/playlists

自然言語処理のベクトル空間

ベクトル空間

自然言語処理ベクトル空間モデルは、テキスト文書をベクトル空間上の数値ベクトルとして表現する手法です。このモデルは、テキストデータを処理し、文章間の類似性や関連性を計算することができます。

文章をベクトルで表す

ベクトル空間モデルでは、各文書が一意の数値ベクトルで表されます。一般的な手法としては、単語の出現頻度や単語の重要度に基づいてベクトルを作成する方法があります。具体的には、文書内の各単語を次元として扱い、その単語の出現頻度や重要度を値としてベクトルの要素に割り当てます。

ベクトル化の手法

ここでは次の4つの方法を紹介します。

  1. One-hot
  2. Bag of Words
  3. Bag of N-grams
  4. TF-IDF

ベクトル化には分散表現もありますが、ここでは従来の手法を紹介します。(別の機会で記事を書きます。)

簡単に概要だけ説明すると、分散表現(Distributional Representation)は、自然言語処理において単語やテキストを数値ベクトルとして表現する手法の一つです。分散表現は、単語の意味や文脈的な情報をベクトル空間上に分散して表現します。

分散表現の代表的な手法には、Word2VecやGloVe、FastTextなどがあります。これらの手法では、大規模なテキストコーパスから学習されたニューラルネットワークモデルを用いて単語の分散表現を学習します。

1.One-hot

One-hotエンコーディングは、カテゴリカルなデータを数値ベクトルとして表現する手法の一つです。 One-hotエンコーディングでは、カテゴリカルな変数(例えば、色の赤・青・緑など)をバイナリ(0または1)の要素を持つベクトルに変換します。変数のカテゴリ数(単語数)に応じて、ベクトルの次元数が決まります。

変換の手順

各カテゴリに一意の整数を割り当てます。次に、ベクトルの次元数をカテゴリの総数とし、対応するカテゴリのインデックスの要素を1に設定し、それ以外の要素を0にします。これにより、各カテゴリが独立した特徴として表現されます。

One-hotエンコーディングの例

"赤"・"青"・"緑"の3つの色をOne-hotエンコーディングする場合、以下のようになります。

  • "赤":[1, 0, 0]
  • "青":[0, 1, 0]
  • "緑":[0, 0, 1]

変数のカテゴリ数が非常に多い場合、ベクトルの次元数が非常に大きくなるため、計算リソースの消費や次元の呪い(curse of dimensionality)といった課題が発生する可能性があります。

2.Bag of Words

"Bag of Words"(BoW)では、文書を単語の集合として扱い、各単語の出現頻度や存在の有無を数値で表現します。

BoWの手法では、まずテキストデータを前処理して、文書を単語に分割します。その後、文書内の各単語を辞書として扱い、辞書内の単語の出現頻度や存在の有無を特徴としてベクトル化します。

変換の手順

文書内の各単語を辞書の単語と比較し、出現頻度や存在の有無を数値で表現します。例えば、ある文書が以下のような単語の集合からなるとします。

["I", "like", "apples", "and", "bananas"]

この場合、BoWによる表現は次のようになります - "I like apples and bananas":[1, 1, 1, 1, 1, 0, 0, 0, 0, ...]

このベクトルでは、辞書内の各単語の存在を表す要素があり、出現した単語は1となり、出現しなかった単語は0となります。ベクトルの次元数は辞書の単語数となります。

BoWは、テキストデータの特徴表現として広く使用されます。特に、文書分類や情報検索などのタスクに応用されます。ただし、BoWは単語の順序や文脈を無視するため、文脈に基づく情報や意味の捉えには限界があります。

3.Bag of N-grams

"Bag of N-grams"は、通常のBag of Words(BoW)手法が単語を特徴として扱うのに対して、単語の連続したn個の組み合わせを特徴として扱います。

N-gramは、テキスト内の連続するn個の単語(または文字)の組み合わせを指します。例えば、"I love apples"という文に対して、2-gram(bigram)を使う場合、次のような組み合わせが抽出されます:

  • "I love"
  • "love apples"

これらのN-gramは、テキスト内での単語の連接性や局所的なパターンを表現するのに役立ちます。BoWと同様に、Bag of N-gramsでは文書内の各N-gramの出現頻度や存在の有無を数値ベクトルとして表現します。

変換の手順

テキストデータをN-gramに分割し、辞書として扱い、各N-gramの出現頻度や存在の有無を特徴としてベクトル化します。BoWと同様に、ベクトルの要素は出現したN-gramを示す1と、出現しなかったN-gramを示す0で表現されます。

Bag of N-gramsは、BoWよりも豊かな情報を捉えることができます。特に、テキスト内の短いフレーズや表現のパターンを考慮するのに有用です。例えば、文書分類や感情分析、テキスト生成などのタスクに応用されます。

注意すべきとこは、N-gramのサイズを大きくすると、特徴の次元数が増え、次元の呪いが発生する可能性があります。また、テキストデータの大きさによっては、膨大な数のN-gramが生成されるため、処理の効率性にも留意する必要があります。

チャンク

N-gramはチャンクを考えます。チャンク(Chunk)は、自然言語処理において文内の意味的に関連のある単語のグループを指します。チャンキング(Chunking)は、文を解析し、文中の単語をチャンクにまとめる処理のことです。

通常、チャンキングは名詞句や動詞句など、特定の品詞の単語のまとまりを抽出するために使用されます。チャンクは通常、文法的な構造を持ち、文内のフレーズや句として解釈できるような単語のグループです。

例として次の文章で考えます。

"彼は美しい花を庭に植えました"。

ここで、名詞句としてのチャンクを抽出すると、「彼」「美しい花」「庭」というグループが抽出されます。動詞句としてのチャンクを抽出すると、「植えました」という単語が抽出されます。

チャンキングは、構文解析や情報抽出などのタスクで使用されます。チャンクにまとめられた単語のグループを特定のパターンやルールに基づいて抽出することで、文内の重要な情報や構造を理解しやすくします。

4.TF-IDF

TF-IDF(Term Frequency-Inverse Document Frequency)は、単語の重要度を評価するために使用されます。

TF

TF(Term Frequency)は、ある文書内での単語の出現頻度を表します。特定の文書内で頻繁に出現する単語は、その文書の内容において重要である可能性が高いと考えられます。

IDF

IDF(Inverse Document Frequency)は、単語の希少性を評価するために使用されます。IDFは、文書集合全体での単語の出現頻度の逆数を計算します。つまり、全体の文書集合において希少な単語は、他の文書との相違点や特徴を持つ可能性が高いと考えられます。

TF-IDFは、TFとIDFを組み合わせた指標であり、単語の重要度を計算します。具体的には、単語のTFとIDFの積を計算し、その値を単語の重要度として扱います。

TF-IDFの値が高い単語は、特定の文書内で頻繁に出現し、かつ他の文書集合において希少な単語です。したがって、TF-IDFは、文書の類似性の計算や情報検索において重要な単語を特徴的に捉えるのに役立ちます。

TF-IDFの算出方法 https://engineernoi.hatenablog.com/entry/2023/05/02/210807

ベクトル空間の応用

これらの手法によって、文章間の類似性を計算することが可能になります。ベクトル空間上での距離や類似性の尺度を使用して、文書同士の関連性を評価することができます。ベクトル空間モデルは、機械学習アルゴリズムに適用して、文書分類や情報検索などのタスクにも使用されます。

youtu.be