¿Dónde puedo encontrar un algoritmo de relevancia marginal máxima en Python para la eliminación de redundancia en dos documentos?

En realidad, es bastante corto para implementarlo usted mismo. Considere la siguiente implementación a continuación. Las descripciones de los parámetros deben ser claras dado que uno ha leído el documento original [1]

def mmr_sorted (docs, q, lambda_, similarity1, similarity2):
“” “Ordenar una lista de documentos por Máxima relevancia marginal

Realiza la clasificación de relevancia marginal máxima en un conjunto de
documentos descritos por Carbonell y Goldstein (1998)
en su artículo “El uso de MMR, reorganización basada en la diversidad
para reordenar documentos y producir resúmenes ”

: param docs: un conjunto de documentos para clasificar
por relevancia marginal máxima
: param q: consulta para la cual los documentos son resultados
: parámetro lambda_: parámetro lambda, un flotante entre 0 y 1
: similitud de parámetro1: función sim_1. toma un documento y la consulta
como argumento y calcula su similitud
: similitud param2: función sim_2. toma dos documentos como argumentos
y calcula su puntaje de similitud
: return: a (documento, puntaje mmr) diccionario ordenado de los documentos
dado en el primer argumento, ordenó mi MMR
“” ”
selected = collections.OrderedDict ()
mientras está configurado (seleccionado)! = docs:
restante = docs – conjunto (seleccionado)
mmr_score = lambda x: lambda_ * similarity1 (x, q) – (1-lambda _) * max ([similarity2 (x, y) para y en el conjunto (seleccionado) – {x}] o [0])
next_selected = argmax (restante, mmr_score)
selected [next_selected] = len (seleccionado)
volver seleccionado

def argmax (teclas, f):
return max (claves, clave = f)

Requiere que pase dos funciones de similitud y un conjunto de documentos. Las funciones de similitud deben ser capaces de manejar los documentos que desea clasificar.

Notas al pie

[1] http://www.cs.cmu.edu/~jgc/publi…