Tener un corpus de más de un millón de documentos.
Para un documento dado, desea encontrar documentos similares usando coseno como en el modelo de espacio vectorial
Todos los tf se han normalizado usando frecuencia aumentada, para evitar un sesgo hacia documentos más largos como en este tf-idf :
Han precalculado todos
Haga que los valores para el denominador se calculen previamente.
Por lo tanto, para un determinado debe obtener una puntuación superior a 1 millón de
Tener un umbral de 0,6 coseno para similitud d 1 d 2
Puedo observar eso para un determinadohay un rango bastante estrecho depara coseno 0.6
Por ejemplo, en una búsqueda de similar para un coseno de 0.6 y ade 7.7631 luegorango de 7.0867 a 8.8339
Donde fuera del umbral del coseno 0.6rango de 0.7223 a 89.3395
Esto fue con normalización de documentos tf estándar.
Está mirando MUCHOque no tienen la posibilidad de ser un coseno 0.6 partido El | El | d 2 | El | ≥ ≥ | El | d 1 | El | El | El | d 2 | El | El | El | d 2 | El | El | El | d 2 | El |
Finalmente la pregunta:
para dary coseno de> = 0.6 ¿cómo puede determinar el rango deque tiene una oportunidad?
Quepuedo eliminar de forma segura? El | El | d 2 | El | El | El | d 2 | El |
También sé el número de términos en y si hay un rango de conteo de términos.d 2
A través de la experimentacióny
parece ser seguro, pero es de esperar que haya un rango que sea seguro
El | El | d 2 | El | < | El | d 1 | El | / .8
Creé algunos casos de prueba con algunos términos únicos, algunos no tan únicos y otros comunes. Efectivamente, puede tomar el término más exclusivo y aumentar esa frecuencia en la comparación. El numerador (producto de puntos) subirá y también lo hará || comparar || y obtendrá un coseno muy cerca de 1.
Tipo de relacionado y NO la pregunta.
También estoy usando el tf-idf para agrupar documentos en grupos. La base de clientes a la que estoy vendiendo está acostumbrada a cerca de grupos dup. Ahí estoy tomando un enfoque relacionado en el que considero el recuento de términos más pequeño y lo evalúo contra el recuento de términos hasta 3 veces. Por lo tanto, un conteo a término de 10 mira de 10 a 30 (4-9 ya tenían su oportunidad en 10). Aquí puedo darme el lujo de perder uno y recogerlo en otro. He terminado el 10% y la proporción más grande es 1.8.
Identifique las fallas en este análisis.
Como lo señaló AN6U5, hay una falla en este análisis.
Ya no es un coseno si el documento está normalizado en ponderado
Y como señaló Mathew tampoco puede concluir d1⋅d2≤d1⋅d1
Estoy todavía con la esperanza de algo que me diera una tapa dura, pero la gente que parece saber estas cosas no me están diciendo
que no quieren cambiar la pregunta por lo que sólo ignorar este
voy a hacer algunos análisis y tal vez enviar una pregunta separada sobre el documento de normalización
para el propósito de esta pregunta asume que el documento está normalizado en bruto tf
Lo siento, pero no soy bueno con el marcado que se usa para hacer las ecuaciones.
Así que en mi notación
|| d1 || = sqrt (suma (w1 x w1))
d1 punto d2 = suma (w1 X w2)
Suponga que d1 es el documento más corto
El mejor d1 punto d2 que se puede lograr es d1 punto d1
Si d1 se casa con 100 paul 20
Y d2 se casa con 100 paul 20 peter 1
Normalizado
d1 se casa 1 paul 1/5
d2 se casa 1 paul 1/5 peter 1/100
Claramente casarse y paul tienen el mismo idf en ambos documentos
El mejor punto d1 posible d2 es d1 punto d1
La coincidencia máxima posible con d1 es d1
cos = d1 punto d1 / || d1 || || d2 ||
cuadrado ambos lados
cos X cos = (d1 punto d1) X (d1 punto d1) / ((d1 punto d1) X (d2 punto d2)) cos X cos = (d1 punto d1) / (d2 punto d2)
toma el cuadrado raíz de ambos lados
cos = || d1 || / || d2 ||
es || d2 || no limitado por el cos?
Si solo uso || d2 || > = cos || d1 || y || d2 || <= || d1 || / cos obtengo la velocidad computacional que necesito