自然言語処理の流れ
1)テキストを構造化された中間表現に変換する前処理が必要
前処理では、
文字列を単語に切り分ける、
単語列に文としての構造を付与する、
構造を意味に結び付けること
等が必要になる。
これらはsubstr, strsplit, sapplyなどが必要になるな。
形態素解析は前処理でよく行われる。
日本語の文字列を単語ごとに切り分ける「形態素解析」
日本語の文字列を単語ごとに切り分ける処理のことを形態素解析と言います。日本語は英語のように単語間に区切りがないので、品詞ごとに区切ることになります。
例えば、「男の中の男だね」という文は以下のような品詞に区切られます。
品詞とは、名詞や動詞など単語の機能のこと。
2) ベクトル化
形態素解析で、文字列を単語ごとに切り分けられましたが、この単語列をテキストマイニングで扱いやすいように構造化する必要があります。そこで、テキストをベクトルで表することを考えてみます。
ベクトル化できれば、
例えば簡単にベクトル同士の近さを計算でき、
テキストマイニングで扱いやすくなります。
それぞれの単語がそのテキストでどの程度重要かを重み付けし、ベクトルで表してみましょう。
例えば、名詞の単語を抽出し、その単語のテキストでの頻度をベクトル化してみます。「男の中の男の中でも特に男臭い男は男の中の男の中の男となる」というテキストは、以下のようにベクトル化されます。
(男, 中) = (6, 4)
goi <- vector(‘list’, length(w3))
names(goi) <- w3
for(j in 1:length(goi)){
if(j %% 10000==0) cat(‘j=’,j,’\n’)
goi[[j]] <- vector(‘list’, length(w5[[j]]))
for(jj in 1:length(w5[[j]])){
ww <- w5[[j]][jj]
if(is.na(ww)) next
goi[[j]][[jj]]<-w7[[which(ww==w8)]]
}
}
もベクトル化だ。