0

私のiPhoneアプリケーションは、次のスキーマを持つSQLiteデータベースを使用しています。

  • items(id、name、...)->このテーブルには50レコードが含まれています
  • tags(id、name)->このテーブルには50レコードが含まれています
  • item_tags(id、item_id、tag_id、user_id)
  • 類似性(id、item1_id、item2_id、score)

アイテム、タグ、item_tags、および類似性テーブルには事前定義されたレコードが入力されているため、異なるアイテム間の類似性もオフラインで計算されています(アイテムのタグに基づくコサイン類似性アルゴリズムを使用)。

ユーザーは、アイテムにタグを追加したり、後でカスタムタグを削除したりできます。これが発生するたびに、アイテム間の類似度スコアをローカルで更新する必要があります。つまり、サーバーアプリケーションに接続する必要はありません。

今の私の質問は次のとおりです:そうするための最も効率的な方法は何ですか?これまでのところ、iPhoneアプリケーションの起動時に、すべてのアイテムとタグの用語ドキュメントマトリックス(各アイテムのタグ頻度を反映)を計算し、アプリケーションが実行されている限り、このマトリックスをメモリに保持します。タグが追加または削除されるたびに、このマトリックスを使用してデータベースの類似性を更新します。ただし、これはかなり非効率的です。何か提案はありますか?

ありがとう!

4

1 に答える 1

2

このプレゼンテーションは次のことに役立ちます。

http://www.slideshare.net/jnvms/incremental-itembased-collaborative-filtering-4095306

于 2011-05-14T17:46:40.110 に答える