あるものに対してキャッチコピーのような文章を募集したところ、約4万件の回答を得ました。

この投稿作品はデータベースに収められていて、文字数は1件あたり50文字前後の日本語です。

この中から「類似した内容を持つレコード」をグルーピングすることって、出来るのでしょうか。
機械的な処理になっても構わないですが、このような処理を行いたい場合に何をすればよいかの検討がつきません。

データ自体は通番と投稿文の2カラムで、これを PostgreSQL に投入して操作していますが、もし PostgreSQL 以外のデータベースで実現できるのであれば、それも知りたいです。

回答の条件
  • 1人2回まで
  • 登録:2009/04/29 02:03:07
  • 終了:2009/05/06 02:05:03

ベストアンサー

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/04/29 07:08:01

ポイント70pt

何をもって「類似」とするか、その考え方にもよりますが、出来ます。データベースの違いは問題になりませんが、類似度を計算するためのプログラミング言語が必要です。


livedoor開発チームが、livedoorキーワードに登録されている内容が Wikipedia の丸写しでないことをチェックするために perl の String::Trigram を使っているとのこと。公式ブログの記事「String::Trigram でテキストの類似度を測る」を参考にしてください。

String::Trigram のアルゴリズムはN-gram言語モデルと呼ばれるもので、Google検索エンジンなどでも利用されています。

Python や PHP での実装方法については「テキストの類似度をプログラムで処理するには」が参考になるでしょう。

id:chocococoa

String::Trigram

python-ngram

PHP:similar_text

PHP: levenshtein

ありがとうございます!

※もしやPHPのMLでお見かけするぱぱぱふぅさんでしょうか!

2009/04/29 07:24:28

その他の回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/04/29 07:08:01ここでベストアンサー

ポイント70pt

何をもって「類似」とするか、その考え方にもよりますが、出来ます。データベースの違いは問題になりませんが、類似度を計算するためのプログラミング言語が必要です。


livedoor開発チームが、livedoorキーワードに登録されている内容が Wikipedia の丸写しでないことをチェックするために perl の String::Trigram を使っているとのこと。公式ブログの記事「String::Trigram でテキストの類似度を測る」を参考にしてください。

String::Trigram のアルゴリズムはN-gram言語モデルと呼ばれるもので、Google検索エンジンなどでも利用されています。

Python や PHP での実装方法については「テキストの類似度をプログラムで処理するには」が参考になるでしょう。

id:chocococoa

String::Trigram

python-ngram

PHP:similar_text

PHP: levenshtein

ありがとうございます!

※もしやPHPのMLでお見かけするぱぱぱふぅさんでしょうか!

2009/04/29 07:24:28
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332009/05/02 09:39:19

ポイント10pt

バレちゃいましたね(苦笑)。その通り、PHPのMLに出入りしている者です。


さて、面白いテーマだったので、similar_text、N-gram、形態素解析(KAKASI、Yahoo!WebAPI)の3種類の方式を使った類似度計算サンプル・プログラムを作ってみました。いずれもPHPスクリプトで、下記で紹介しています。

案の定、方式によって結果に大きな差が出ました。


形態素解析は機械的な処理ではありますが、日本語の構造を意識しているので、同じようなキャッチコピーをふるい分けるという目的に適っていると思います。

しかし、CPUパワーを必要とする処理なので、1文50文字前後とはいえ、4万件を一気に処理するのは厳しいかもしれません。

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

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

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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