2016-06-24 4 views
1

私はデータベースに多くのコンテンツアイテムを格納しており、ユーザーが興味を持っているタグを知っています。たとえば、アリスは、「ヘルスケア」、「スポーツ」、「社会的」などのタグに関心を示しています。各コンテンツアイテムは、1つまたは複数のタグを含む。 Aliceに新しいコンテンツを推薦するために、これらをどのように一致させるのですか?あなたがこれをアプローチする方法をコンテンツとユーザーの関心を一致させる(タグに基づいて)

array:3 [ 
    'healthcare' => 2.20 
    'sports' => 1.30 
    'socal' => 0.5 
] 

:重みのように行動スコア、

CREATE TABLE `content_tag` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `item_id` INT(11) NOT NULL, 
    `tag_id` INT(11) NOT NULL, 
    PRIMARY KEY (`id`) 
); 

CREATE TABLE `tag` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(50) NOT NULL, 
    PRIMARY KEY (`id`) 
); 

そして、私は(関連性)と一緒にアリスの関心を持っている:

は、これらの基本的なデータベーステーブルを考えてみましょうか?

これには余弦のようなアルゴリズムを使用する方法がありますか、それとも文章のみですか?

+0

これまでに何を試しましたか?結果をソートする際にスコアが「重み」として機能しますか? –

+1

MySQLの[FIELD](http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field)関数をチェックアウトすることができます(興味のスコアリングに基づいてカスタムソートを行います)。 'ORDER BY'でも動作します。 –

+0

@ MagnusEriksson 'FIELD'関数は非常に有望です。私はこれを調べます。 – JasonK

答えて

2

アリスとアイテムの類似点を見つけて並べ替えることができます。したがって、最も類似したアイテムが推奨されます。

類似性メトリックの1つは、コサイン類似度です(あなたが示唆するように)、以下のように動作します。

各項目について、タグを使用してベクトルを作成できます。私の知る限り、あなたの商品にはスコアがないので、アイテムベクトルの値は0または1になります。各値は特定のアイテムの1つのタグを表します。

商品説明

[0,0,1,1,0,0] - >最初の値は「ヘルスケア」を表し、2番目はスポーツのためのものであり、最後のタグはタグ5のものです。このアイテムにはtag5がありません。その値はです。

また、アイテムに類似したベクトルもあります。 たとえば、アリスのベクトルは次のとおりです。もし類似計算することができるベクターを作成した後 [2.20,1.30,0.5,0,0,0]

(コサイン類似度を用いて、例えば。)

各ユーザのサイズとアイテムベクトルと等しいことシステム内のすべてのタグの数。 この例では、システムに6つの異なるタグがあります。

+0

@JasonK私はそれがあなたのために働くことを願っています – mokarakaya

関連する問題