2012-08-08 18 views
6

Bien, estoy un poco confundido. Sin embargo, esta debería ser una pregunta simple y directa.TF-IDF Uso simple - NLTK/Scikit Learn

Después de calcular la matriz TF-IDF del Documento contra todo el corpus, me sale un resultado muy similar a esto:

array([[ 0.85..., 0. ..., 0.52...], 
     [ 1. ..., 0. ..., 0. ...], 
     [ 1. ..., 0. ..., 0. ...], 
     [ 1. ..., 0. ..., 0. ...], 
     [ 0.55..., 0.83..., 0. ...], 
     [ 0.63..., 0. ..., 0.77...]]) 

¿Cómo se utiliza este resultado para obtener el documento más similar en contra de la búsqueda ¿consulta? Básicamente, estoy tratando de volver a crear una barra de búsqueda para Wikipedia. Basado en una consulta de búsqueda, quiero devolver los artículos más relevantes de Wikipedia. En este escenario, hay 6 artículos (filas) y la consulta de búsqueda contiene 3 palabras (columnas).

¿Debo sumar todos los resultados en las columnas o sumar todas las filas? ¿El valor más grande es el más relevante o el valor más bajo es el más relevante?

Respuesta

4

¿Está familiarizado con cosine similarity? Para cada artículo (vector A) calcule su similitud con la consulta (vector B). Luego clasifíquelos en orden descendente y elija el resultado principal. Si está dispuesto a refactorizar, la biblioteca gensim es excelente.

+1

Bueno, en realidad estoy siguiendo este tutorial: http: //pyevolve.sourceforge.net/wordpress/? P = 1589 ... Lo que no tiene sentido es cómo usar vectores TF-IDF entre los artículos originales y la consulta de búsqueda . – tabchas

+1

Si está utilizando tf-idf como su esquema de ponderación, aún desea normalizar su consulta. Su matriz contiene tres términos, todos los cuales están representados en la consulta; por lo tanto, el vector de frecuencia sin formato de la consulta es (1,1,1). sqrt ((1^2) + (1^2) + (1^2)) = 1.73 y 1/1.73 = 0.57. Entonces su vector de consulta es (0.57,0.57,0.57). Ahora puede tratar la consulta como otro documento. La similitud del coseno de este vector de consulta y algún otro vector de documento es su producto de punto. Para el primer artículo: ((.57 * .85) + (.57 * 0) + (.57 * .52)) = 0.2964. Repita esto para todos los artículos y gana el puntaje más alto. – verbsintransit

+0

Entonces, ¿no tengo que entrenar un clasificador de algún tipo? – tabchas

Cuestiones relacionadas