人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

あるものに対してキャッチコピーのような文章を募集したところ、約4万件の回答を得ました。
この投稿作品はデータベースに収められていて、文字数は1件あたり50文字前後の日本語です。

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

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

●質問者: chocococoa
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:postgreSQL カラム キャッチコピー グルーピング データ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●70ポイント ベストアンサー

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


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

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

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

◎質問者からの返答

String::Trigram

python-ngram

PHP:similar_text

PHP: levenshtein

ありがとうございます!

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


2 ● rolexbaidu
●0ポイント

http://www.lv-google.net/E-gc7.htm


3 ● pahoo
●10ポイント

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


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

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


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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ