G検定 自然言語処理

株式会社リュディアです。今回はG検定対策として自然言語処理についてまとめてみます。

一般に自然言語処理の流れについてまとめてみます。まず処理対象となる文書全体のことをコーパスといいます。コーパスに対して以下の順に処理をしていきます。

形態素解析(字句解析)

英語のように単語がスペースで区切られている言語では不要なのですが、日本語ではまず最小単位の単語に切り出す必要があります。

構文解析

形態素解析で単語単位に切り出した後に構文という観点から単語間の関係を解析します。例えば「私は太郎です」という文章で考えます。形態素解析が終わると「私」「は」「太郎」「です」と切り分けられています。この切り分けられた情報から「は」の前後には主語と補語が来る、といった関係をモデリングするのが構文解析です。この段階で意味は理解できていないことに注意が必要です。

必要な解析や処理
構文解析の後に、文の意味を理解したいのか、文脈を理解したいのか、あるいは単語の関係を取得したいのか、といった内容により処理内容が変わります。ただし形態素解析と構文解析は古くからコンパイラの作成でも使われているもので自然言語処理では必須の内容と考えてよいと思います。lex や yacc というプログラムは有名です。

これらとは別にパース処理という用語もあります。これは一般に文書から必要な部分を抜き出す処理を言います。必要な部分がどのように定義されるか、によって前述した自然言語処理の流れの中のどこまで済ませておく必要があるかは変わります。

次に G検定でも出てくる自然言語処理の具体的な手法 についてです。

BoW (Bag-of-Words)
Bag-of-Wordsでは単語の順序は保持されず、テキスト中に単語が何回現れたかを表現します。自然言語処理の流れで言うと形態素解析が終われば BoW の処理が可能であることはわかりますよね。BoWの処理後のデータでは切り分けた単語の出現回数以外の情報は失われています。

Bag-of-n-Grams

Bag-of-n-Gramsは Bag-of-Words を拡張し、n-Grams ( n個 ) の単語をまとめた単位で何回現れたかを表現します。n = 1 の場合が BoW です。BoWを拡張したことはわかりますが、あまり大きな成果は得られないようです。

Word2Vec

BoW とは異なり単語の意味をベクトルで表現化します。BoW では単語の出現回数を数えたデータを取得していましたよね? 意味をベクトルで表現することで単語同志の意味の足し算、引き算をベクトル演算として行うことができます。

Doc2Vec

Word2Vec が単語の意味を扱ったのに対し、Doc2Vec では任意の長さの文章をベクトルで表現します。Word (単語) が Doc (文章) になっていることからもわかると思います。いわゆる分散表現を獲得することができます。

では、ごきげんよう。

いいなと思ったら応援しよう!