【自然言語処理】単語ベクトルとは?

自然言語処理

こんにちは! zhackです!

私は過去に自然言語処理を用いたプロジェクトに参画していました。
その時に学んだことをアウトプットしたいなぁと思ったので、今回から自然言語処理について記事を投稿していきます。

現状、以下の記事を想定してます。

  1. 単語ベクトルとは(本記事)
  2. 単語ベクトル作成方法
    2.1 Skip-Gram Modelの解説
    2.2 CBOW Modelの解説
  3. 文ベクトル作成方法
  4. 文章の意味の把握
  5. 分かち書き・形態素解析
  6. 日本語と英語の違い
  7. 自然言語処理とCNN(未定)

※内容は変動する可能性がございます。

今回は、この中でも単語ベクトルについてまとめようと思います。

 

自然言語処理とは

まず、自然言語とは何でしょうか。それは普段、私たちが利用している言語です。

日本語や英語、フランス語など、人間が会話をするときに使っている言語のことを自然言語と呼びます。

プログラミング等、PCが理解することの言語をプログラミング言語という言語と対比して、人が扱う言語を自然言語と呼ばれます。

この自然言語に対して、なにかしらの処理を行うことを自然言語処理と呼びます。

この自然言語処理の手法について、大別して、

  • 自然言語を自然言語のまま、処理を行うもの
  • 自然言語を数値情報に変換して、処理を行うもの

の二つ存在します。

本記事で紹介する「単語ベクトル」は二つ目の手法で、
単語を数値情報に変換したものです。

なお、本記事では、対象とする自然言語は英語とします。

日本語については、後日掲載予定です。

自然言語を数値化する!Word2Vec!

Word2Vecとは

「Word2Vec」は、自然言語を「単語ベクトル」に変換する手法を指します。

Word2Vec(word to vector)というように、「単語からベクトルへ」という意味ですね。

では、単語ベクトルとはどのようなものでしょうか。

単語ベクトルとは

数学で、ベクトルについて勉強したことがあると思います。

ベクトルは、例えばXYの2軸で表現される空間内の点を、
原点( 0, 0 )を起点に、( x, y )の形で、座標が表現されているものでした。

単語ベクトルは、各単語がこの座標空間内の各点に対応させたものになります。
※ただし、実際の座標空間は2次元空間ではなく、多次元空間になることが多いです。

では、どのように各単語を座標空間内の点に対応させるのでしょうか。

単語ベクトルの作成方法

例として、この世の中に、「りんご」「車」「明るい」の三つの単語しか存在しなかった場合、以下のように3次元のベクトルを作ることが一番簡単です。

しかし、実際にはこの世の中には単語が数えきれないほど存在し、上記のようなベクトルを作成することは難しいです。

原理的には可能ですが、非常に多次元な座標空間になってしまいます。

そこで、単語の持つ意味や性質を活用することで、次元数を減らしていきます

ここでキーワードとなるのは”分散表現”という考え方です。
ベクトルの各要素に単語を割り振るのではなく、各要素には単語を構成する要素が割り振られます。

具体的には、例えば「りんご」を分散表現したい場合、
『赤い』『丸い』『食べ物』の要素から構成するといった感じです。

なにができるのか?

単語ベクトルは数値情報なので、計算をすることができます。
この数値情報は、その単語の意味や性質を表すので、意味や性質の加算や減算ができます。

例えば、

王 - 男 + 女 = 女王

といったことも可能です。

また、ベクトルのコサイン類似度が高いものから、類義語を探したりすることも可能です。

単語ベクトルを使った面白い記事があるので、共有させていただきますね。

どうしたら「彼女」から「奥さん」になれるかを『Word2Vec』に聞いてみた | AI専門ニュースメディア AINOW
工学部女子大生のranranです。 私は彼氏のことが大好きで、いつも彼氏のことばかり考えています。もちろん、将来的には彼氏の「奥さん」へと昇格したいと考えています。しかし、このまま時間の流れに身を任せていてれば、自然と「彼女」から「奥さん」になれるのでしょうか? 非常に不安です。 既婚者に聞いてみた 不安で居ても立って...

 

アルゴリズム一覧

現状、存在する単語ベクトルの作成方法について一部を掲載します。

  • Skip-Gram
  • CBOW

こちらについては後日、記事を掲載予定です。

こちらの記事です!

【自然言語処理】単語ベクトル作成アルゴリズム Skip-Gram Modelを解説
こんにちは! zhackです! 先日、自然言語処理シリーズの第一弾として、単語ベクトルについて説明いたしました。 今回は単語ベクトルの生成方法として、Skip-Gram Modelについて解説していきます。 また、Skip...
【自然言語処理】CBOW Modelについて解説
こんにちは! zhackです! 今回は単語ベクトルの生成方法の一つ、CBOW Modelについて私の理解を解説していきます。 (今回の記事は、少し内容に自信がありません。。 内容に間違いがある場合はコメントいただけますとありが...

さいごに

なんとなくイメージできましたでしょうか。

今回は、単語ベクトルについて説明しました。

次回は、どのように単語ベクトルを生成するのか、その方法について説明します。
※今回とは異なり、少し技術的な話になります。

ではでは!

 

コメント

  1. […] 【自然言語処理】単語ベクトルとは?こんにちは! zhackです! 私は過去に… […]

タイトルとURLをコピーしました