0

たくさんのテキスト (タイトル + メッセージ) があり、それらにタグを追加したいと考えています。この方法で各テキストを処理しました。

  1. 冠詞、代名詞など ('a'、'an'、'the'、'him'、'them' など) を無視する
  2. ハイフネーションを無視する
  3. 固有名詞を保存する

各テキストのタグの種類とそのエントリの数を取得します。

これで、タグとテキスト ID の関係頻度の表ができました。

                 tag_id1 | tag_id2 | tag_id3 | tag_id4
      text_id1  | 10     |  1      | 3       |   1   
      text_id2  | 1      |  1      | 1       |   1
      text_id3  | 13     |  0      | 2       |   0
      text_id4  | 9      |  1      | 2       |   1
      text_id5  | 0      |  0      | 0       |   0

mysqlクエリでtext_id1の同様のテキストを特定するにはどうすればよいですか? ソートされたリスト text_id3 text_id4 text_id2 のようなものを取得したい

「Jaccard similarity」アルゴリズムは、タグ関係を計算するだけなので十分ではありません

4

2 に答える 2

1

類似度の 1 つの尺度は、各タグ フィールドの差の絶対値です。次のように SQL で計算できます。

select t2.name, abs(t1.tag_id1-t2.tag_id1)+abs(t1.tag_id2-t2.tag_id2)+
abs(t1.tag_id3-t2.tag_id3)+abs(t1.tag_id4-t2.tag_id4) score from 
tag t1, tag t2 where t1.name='text_id1' and t2.name != 'text_id1' 
order by score asc;
+----------+-------+
| name     | score |
+----------+-------+
| text_id4 |     2 |
| text_id3 |     6 |
| text_id2 |    11 |
| text_id5 |    15 |
+----------+-------+
于 2013-09-06T16:38:09.677 に答える