■ 2 つの文(日本語のもの)の間の類似度を算出するアルゴリズムを紹介してください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/11/03 01:15:55
  • 終了:2006/11/10 01:20:03

回答(2件)

id:korn_freak No.1

negipo回答回数12ベストアンサー獲得回数12006/11/03 01:48:32

ポイント35pt

門外漢なのでちょっと怪しい回答になります。ご了承下さい。

形態素解析

http://ja.wikipedia.org/wiki/形態素解析

や、

N-gram

http://www.shuiren.org/chuden/teach/n-gram/index-j.html

を用いて各文書から要素を抽出し、さらに文書間の各要素の共起関係を見ることで類似度がある程度算出出来ると思います。全要素中の何%が共起していた、と言うような。

一般的にはTF/IDFを用いて算出した文書を規定するような重要語句を用いて、意味空間に特徴ベクトルとして各文書を定義し、さらに各ベクトル間の距離を求める方法が挙げられるようですが

http://www.dl.kuis.kyoto-u.ac.jp/lecture/doc/infosystem02.pdf

2文書の類似度を算出するとなると、データベースとなるような文書群が存在しない為にTF/IDFを適用する意味が殆ど無いように思います。

id:s34itl No.2

s34itl回答回数117ベストアンサー獲得回数42006/11/07 17:07:06

ポイント35pt

目的がわからないので、一般的な方法を2つ紹介します。

--------

日本語に限らず自然言語処理では、2つの文の類似度というか、相違度を測る尺度として、「編集距離」がよく使われます。英語のスペルチェックで広く使われている考え方です。

http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%83%99%E3%83%B...

・文字列Aのある箇所に1文字を挿入すれば文字列Bと一致する場合(挿入)

・文字列Aのある箇所に1文字を削除すれば文字列Bと一致する場合(削除)

・文字列Aのある箇所の前後を入れ替えれば文字列Bと一致する場合(置換)

をそれぞれ距離1と定義し、このような箇所がいくつあるかにより、2つの文字列間の相違度を数値化します。同じ文字列なら距離距離=0となります。

挿入、削除、置換を行なう単位としては、目的に応じて、文字、単語の双方が使われます。また、置換は削除と挿入の2操作に還元できることから、置換を使わない流儀もあります。

距離計算アルゴリズムは下記に載っています。

http://www-06.ibm.com/jp/developerworks/java/041217/j_j-jazzy.ht...

http://hp.vector.co.jp/authors/VA007799/viviProg/doc5.htm

--------

別の考え方として、異なる語であっても意味的に似た単語であれば類似度が高くなるよう、シソーラス(類語集)を用いる方法があります。シソーラスは単語が階層的にグループ化されているため、階層の違いを距離に見立てて類似度を計算しようというものです。単語の類似度を集計して文の類似度とします。

二単語の類似度計算には多くの方法が提案されています。(シソーラス and 距離 で検索すれば多数見つかります。)例えば、下のurlの26ページには、二単語の類似度として、(dc×2)/(di+dj) が提案されています。(di、dj、dcは、単語i、単語j、共通上位ノードcの深さ)

http://www.jaist.ac.jp/~kshirai/lec/i223/09.pdf

この場合、シソーラスを入手する必要がありますが、有料のものでは次があります。

http://shop.vector.co.jp/service/catalogue/sr073054/

日大の荻野先生に連絡すれば無償で送ってくださるそうです(利用条件に注意)。

http://www.chs.nihon-u.ac.jp/jp_dpt/ogino/

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • 単純で全く実用的ではないが、問題をうまく捉えるのに有効な答え、てのもあるなぁ、と思ったので記しておく。 ■ 2 つの文(日本語のもの)の間の類似度を算出するアルゴリズムを紹介
  • txqz life - タブ整理日 2007-12-18 18:18:02
    タブ整理日 -no title no title no title ■ 2 つの文(日本語のもの)の間の類似度を算出するアルゴリズムを紹介してください。 - 人力検索はてな あとでみるYouTube 2006-10-08 - てれびのスキマ 2006-12-24
  • [Memo]2つの日本語の文書の類似度を調べて省略するってのがやりたい 形態素解析ってのをやって、n-gram解析ってのをすれば なんとなくしょぼい感じには、いけそうだ。 これ参考にしてみる
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません