R言語で文字列の類似度を計算する

a1380_001345

ビッグデータによる解析で注目されているのは、文字列解析です。

数値解析はこれまでも行われてきましたが、非定型で定量化されていない文字列のデータをどう解析するかは大きな課題でした。しかし、いろいろ解析手法が編み出されてきており、かつIT技術の進歩によって膨大なデータを取り扱えるようになっていることから、現実的に使える分析になっています。

これまでR言語による分析をはじめたと書いてきましたが、今回は具体的な文字列解析に関する内容を書いておこうと思います。

 

文字列の類似度を定量化する

2つの文字列を比較して、どの程度類似しているかを定量化します。いろいろ手法はあると思っていますが、とりあえず使いやすそうなのは「レーベンシュタイン距離」です。

レーベンシュタイン距離(レーベンシュタインきょり)あるいは編集距離(へんしゅうきょり)は、情報理論において、二つの文字列がどの程度異なっているかを示す数値である。具体的には、文字の挿入や削除、置換によって、一つの文字列を別の文字列に変形するのに必要な手順の最小回数として与えられる。

レーベンシュタイン距離 – Wikipedia

R言語の場合、「MiscPsycho」というパッケージにレーベンシュタイン距離を計算できる関数が用意されています。R言語ってこういうパッケージで簡単に用途を広げられるのが素晴らしいですよね。

aとbの文字列の類似度を計算する場合
library(MiscPsycho)
string(a,b)

 

文字列の全てではなく特定のキーワードを抽出する

文字列の比較を行うにしても、全てを単純に比較するより単語を抽出した方が効果的な場合もあります。そういう場合は、名詞だけを取り出してみましょう。

R言語では、「RMeCab」というパッケージで簡単に名詞などに分解するような、形態素解析を行うことが可能です。

aの文章を形態素解析する場合
library(RMeCab)
result <- RMeCab(a) # 形態素に分解したリストが生成される
unlist(result) # リストを表示

基本的な操作は以下の資料を参考にしました。

 

OsakaR_3: R言語によるテキストマイニング入門 from Yuichiro Kobayashi

 

ちなみに、Macの環境でRMeCabのインストールがうまくいかなかったので、以下のリンクを参考に実施しました。

RMeCab – RとLinuxと…

 

これで、文字列の類似度を比較することもできるし、形態素解析を組み合わせて、比較の精度を向上させることだってできます。しかも、パッケージを2つインストールするだけで、R言語上ですぐに実行できるのだから、本当に良い世の中になったものです。勉強するための資料もインターネット上にたくさん存在しているし。利用しないともったいない。

今度は、株価分析もやろうかなーと思っていますよ。

「R言語で文字列の類似度を計算する」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です