類似度頻度調査

目的

一個のバースマークの検索結果を見て,何件以上が必要でそれ以外は見る必要がないよねということを言いたい

実験

検索結果の類似度でソートして,二つの類似度を比較してみる.

script: ./greater_than_seach_sim.py

結果

基本的に検索結果の類似度より上にpochiの類似度があることがわかる

具体的な内訳

search_sim > pochi: 631
other: 132618

# 詳細に見る
greater_than_count: 631, 0.75: 4, 0.5: 365, 0.25: 549, other: 132618
greater_than_count: 631, 0.75: 4, 0.5: 365, 0.25: 549, search_0.75: 28, search_0.5: 394, search_0.25: 559, other: 132618

# pochi::0.75のやつのみを有効にした
greater_than_count: 631, pochi::0.75: 4, pochi::0.5: 365, pochi::0.25: 549, search::0.75: 4, search::0.5: 4, search::0.25: 4, other: 132618

基本的に検索結果よりpochiの類似度の方が大きいことがわかる. 検索エンジンの閾値を下げることによって,検出漏れが増えることがわかる. 結果を見る感じpochi::0.75 = 4なので,28 - 4 = 24件が誤検出となる.(検索エンジンの類似度が0.75以上でpochiも0.75の類似度も0.75以上なので検出漏れはないが誤検出はある)

検出漏れ

631 - 559 = 72 / 631 = 11%なので検出漏れはこの数字 まぁ少ない

それ以外は絶対検索エンジンの類似度より上なので検出漏れはない

件数での閾値

類似度は見たけどどれだけの件数取ればいいかがまだわからない.

実験

0.75, 0.5, 0.25の閾値で何件検索結果があるかを調査

script: check_search_rows.py

結果

# 件数
# 0.75, 0.5, 0.25, all
[34, 1704, 34757, 133249]

# 0.25以下の正解数 -> 検出漏れ数
search_sim < 0.25 and pochi > 0.75: 383 / 98492(0.25以下の件数) => 0.38886407017828856%

なら34757件取るのかと言われるともっと上を目指したい.

0.5ならどうか

search_sim < 0.5 and pochi >= 0.75 => 2078
else => 129467

2078 / 131545(2078 + 129467) => 1.5796875593903228% まぁ少ない

1704件ならまぁまぁ及第点だと思うが今回は2gramでやったので,これを6gramなどでやることが必要そうではある.