2011-02-24 16 views
4

私は文字列入力を受け、Google APIを使ってランク付けされた書籍リストを返すAndroidアプリを開発しています。Android&ファジーマッチング、nグラム、Levenshtein距離

私は、入力した内容が1つの本である可能性が高いかどうかを確認するために、ユーザーが入力するオープンエンドの文字列をリストの最初の項目と比較する方法を探しています。私は本、タイトル、著者、説明などの情報がたくさんあるので、どこでも検索できます。

例は次のとおりです。

 
'eyre affair fforde', 'fforde eyre affair', 'the eyre affair' 
----> 
'Likely' to be 'The Eyre Affair by Jasper Fforde' 

これについて移動するための最良の方法だろうか?私はlevenshtein距離を見てきましたが、そのようなオープンエンドの入力、nグラムは良い方法、またはあいまいなマッチングで動作するとは思わない。

他のアイデアはありますか?

答えて

7

私はこれらのいずれかとなるだろう:

SimMetrics(SimMetricsは、類似性または距離メトリック、例えばレーベンシュタイン距離、L2距離、コサイン類似度、ジャカード類似性などなどのオープンソースの拡張可能なライブラリです)

コモンズラングLevenshteinDistance

か聞いたり、スペルミスを取り除くために:soundexまたはmetaphone

+0

鮮やかなリンクをありがとうございました。 –

+0

@ puppetmaster04:あなたは大歓迎以上です、私は助けてくれると嬉しいです。私はあなたの質問を読んで、あなたのアプリがどのように発展するのか不思議です。 – Chris

+0

残念ながら、SimMetrics以外のリンクはすべて無効です – MrMaffen