当前位置:网站首页>MMR重排(相似度通过编辑距离和重复度计算)
MMR重排(相似度通过编辑距离和重复度计算)
2022-06-28 07:00:00 【骑单车的王小二】
def leven_shtein_score(self,query1,query2):#相对编辑距离(相对编辑距离越小,相似度越高)
bias=0.0001
res=(Levenshtein.distance(query1,query2))/(max(len(query1),len(query2))+bias)
return res
def repeat_score(self,query1,query2):#query间的重复度
bias=0.0001
res = len(list(filter(set(query2).__contains__, query1)))/(len(query2)+bias)
return res
def similar_score(self,querys):#query间相似度计算
similarityMatrix=[[0 for i in range(len(querys))] for j in range(len(querys))]
for i in range(len(querys)):
for j in range(len(querys)):
if i==j:
similarityMatrix[i][j]=1
else:
similarityMatrix[i][j]=max((self.repeat_score(querys[i],querys[j])-self.leven_shtein_score(querys[i],querys[j])),0)
return similarityMatrix
def MMR(self,recScoreDict, similarityMatrix,lambdaConstant=0.5, topN=20):#MMR重排(推荐词的相关分数及推荐词间的相似度矩阵)
s, r = [], [i for i in range(len(recScoreDict))]
while len(r) > 0:
score = 0
selectOne = None
for i in r:
firstPart = recScoreDict[i]
secondPart = 0
for j in s:
sim2 = float(similarityMatrix[i][j])
if sim2 > secondPart:
secondPart = sim2
equationScore = lambdaConstant * firstPart - (1 - lambdaConstant) * secondPart
if equationScore > score:
score = equationScore
selectOne = i
if selectOne == None:
selectOne = i
r.remove(selectOne)
s.append(selectOne)
return (s, s[:topN])[topN > len(s)]
边栏推荐
- Techo Day 腾讯技术开放日,6月28日线上等你!
- freeswitch使用mod_shout模块播放mp3
- Using interceptor and cache to complete interface anti brushing operation
- Freeswitch使用originate转dialplan
- Is it safe to open a stock trading account on your mobile phone?
- Introduction to browser tools: think sky browser, team work browser
- 语音增强-频谱映射
- UPC -- expression evaluation
- Detailed explanation of collection class methods____ (4) Judgment and assignment, etc
- Error reporting - resolve core JS / modules / es error. cause. JS error
猜你喜欢

Linked list (III) - reverse linked list

Reinforcement learning - grid world

MySQL installation steps - how to create a virtual machine under Linux (1)

饿久了,大脑会进入“省电模式”!感官被削弱,还看不清东西丨爱丁堡大学...

eyebeam高级设置

Rn7302 three-phase electric quantity detection (based on STM32 single chip microcomputer)

JS regular expression system explanation (comprehensive summary)

Freeswitch uses origin to dialplan

My MVVM open source project "travel epidemic prevention app" has been released

Compilation principles final review
随机推荐
「杰伦熊」暴跌96.6% 明星带货NFT为何遇冷?
【Rust翻譯】從頭實現Rust异步執行器
Rust FFI 编程 - libc crate
Teach you how to use UCOS
饿久了,大脑会进入“省电模式”!感官被削弱,还看不清东西丨爱丁堡大学...
A small code editor can also run programs -- a summary of sublime Text3 running programs in various languages
How bacnet/ip gateway collects data of building centralized control system
Pytorch RNN learning notes
Puge -- three basic sorting, bubbling, selection and quickness
Detailed explanation of collection class methods____ (4) Judgment and assignment, etc
力扣515.在每棵树行中找最大值
【Rust日报】 2020-04-23 Rust 1.43.0 发布
"Jay bear" plummeted by 96.6%. Why is NFT with star goods cold?
Compile configuration in file
Freeswitch sets the maximum call duration
Voice network VQA: make the user's subjective experience of unknown video quality in real-time interaction known
Servlet value passing JSP
BACnet/IP網關如何采集樓宇集中控制系統數據
[interval DP] stone consolidation
Rn7302 three-phase electric quantity detection (based on STM32 single chip microcomputer)