修复一个bug,更新按热度搜索的打分公式
This commit is contained in:
+2
-1
@@ -9,4 +9,5 @@ k1 = 1.5
|
|||||||
b = 0.75
|
b = 0.75
|
||||||
n = 2449
|
n = 2449
|
||||||
avg_l = 237.86198448346263
|
avg_l = 237.86198448346263
|
||||||
|
hot_k1 = 1.0
|
||||||
|
hot_k2 = 1.0
|
||||||
|
|||||||
+10
-1
@@ -23,6 +23,9 @@ class SearchEngine:
|
|||||||
N = 0
|
N = 0
|
||||||
AVG_L = 0
|
AVG_L = 0
|
||||||
|
|
||||||
|
HOT_K1 = 0
|
||||||
|
HOT_K2 = 0
|
||||||
|
|
||||||
conn = None
|
conn = None
|
||||||
|
|
||||||
def __init__(self, config_path, config_encoding):
|
def __init__(self, config_path, config_encoding):
|
||||||
@@ -38,6 +41,8 @@ class SearchEngine:
|
|||||||
self.B = float(config['DEFAULT']['b'])
|
self.B = float(config['DEFAULT']['b'])
|
||||||
self.N = int(config['DEFAULT']['n'])
|
self.N = int(config['DEFAULT']['n'])
|
||||||
self.AVG_L = float(config['DEFAULT']['avg_l'])
|
self.AVG_L = float(config['DEFAULT']['avg_l'])
|
||||||
|
self.HOT_K1 = float(config['DEFAULT']['hot_k1'])
|
||||||
|
self.HOT_K2 = float(config['DEFAULT']['hot_k2'])
|
||||||
|
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
@@ -50,6 +55,9 @@ class SearchEngine:
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def sigmoid(self, x):
|
||||||
|
return 1 / (1 + math.exp(-x))
|
||||||
|
|
||||||
def clean_list(self, seg_list):
|
def clean_list(self, seg_list):
|
||||||
cleaned_dict = {}
|
cleaned_dict = {}
|
||||||
n = 0
|
n = 0
|
||||||
@@ -142,7 +150,8 @@ class SearchEngine:
|
|||||||
td = now_datetime - news_datetime
|
td = now_datetime - news_datetime
|
||||||
BM25_score = (self.K1 * tf * w) / (tf + self.K1 * (1 - self.B + self.B * ld / self.AVG_L))
|
BM25_score = (self.K1 * tf * w) / (tf + self.K1 * (1 - self.B + self.B * ld / self.AVG_L))
|
||||||
td = (timedelta.total_seconds(td) / 3600) # hour
|
td = (timedelta.total_seconds(td) / 3600) # hour
|
||||||
hot_score = math.log(BM25_score) + 1 / td
|
# hot_score = math.log(BM25_score) + 1 / td
|
||||||
|
hot_score = self.HOT_K1 * self.sigmoid(BM25_score) + self.HOT_K2 / td
|
||||||
if docid in hot_scores:
|
if docid in hot_scores:
|
||||||
hot_scores[docid] = hot_scores[docid] + hot_score
|
hot_scores[docid] = hot_scores[docid] + hot_score
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -64,7 +64,15 @@
|
|||||||
|
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<hr>
|
<hr>
|
||||||
© 2016 <a href="http://bitjoy.net/" target="_blank">bitjoy.net</a>
|
©
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var today = new Date();
|
||||||
|
var year = today.getFullYear();
|
||||||
|
document.write(year)
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<a href="http://bitjoy.net/" target="_blank">bitjoy.net</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user