"Una lectura obligada para empezar a recuperar información" #8 Modelo de índice invertido (conciso)
Recordando el modelo de espacio vectorial, sabemos que el documento de impacto debe ser el vector más cercano a la consulta. Al realizar una consulta, si solo busca en todos los documentos similares posibles (la consulta contiene al menos una palabra clave), puede reducir en gran medida el desperdicio de recursos.
Luego, primero debe obtener los documentos que han aparecido en cada $término en la consulta, luego obtener la unión y finalmente calcular la similitud en la unión: la idea de "filtrar"
En este momento, mediante métodos de indexación especiales, el filtrado de documentos se puede lograr más rápido. Alguien ha propuesto la idea de Hash, pero la desventaja de Hash es que no se puede realizar una coincidencia difusa. Cuando la consulta del usuario es ligeramente diferente del término $ del diccionario, es posible que esté muy separada en la tabla hash.
Introducimos el concepto de "inversión" a través de un conjunto de comparaciones:
A partir de esto, podemos obtener la estructura de la organización de archivos invertida:
Con Lo anterior Con la arquitectura, cuando el usuario ingresa una consulta, podemos extraer el término $, acceder directamente al archivo de índice correspondiente y luego buscar el archivo publicado según el enlace. Para varios términos $, primero puede completar operaciones lógicas como intersección y unión, y luego acceder al conjunto de documentos filtrados después de obtener los resultados.
A partir de esto, podemos conocer los pasos de indexación al rastrear nuevos documentos:
A continuación, presenta cómo los motores de búsqueda analizan los documentos recién rastreados, que generalmente están fuera de línea Completados (en línea es el proceso de consulta del usuario).
Sin embargo, debido a la diversidad de documentos, a menudo se encuentran varios problemas durante el proceso de análisis: formato de archivo, idioma nacional, codificación de caracteres, palabras vacías, etc. Estos problemas suelen resolverse mediante métodos heurísticos.
El token proviene de la cadena original del documento, que es la palabra original extraída según la división de espacios. En la práctica, debemos considerar subcuestiones como si se deben conservar las s, si se deben conservar los guiones, si se deben desarmar los nombres propios y la incrustación de números.
Para diferentes idiomas, han surgido muchos problemas nuevos, como el uso extensivo de ' en francés, el fenómeno compuesto de sustantivos en alemán, la inaplicabilidad de los participios espaciales en chino y japonés, y vacaciones en japonés. Orden de escritura en árabe y más.
En el texto muchas veces es necesario detener las palabras sin sentido que aparecen con más frecuencia. ¿Cómo utilizar palabras vacías para comprimir el espacio en el análisis de documentos? ¿Cómo distinguir palabras vacías en la optimización de consultas? ¿Cómo identificar cuándo una palabra vacía tiene sentido? Todas estas son cuestiones a considerar.
En inglés, las palabras suelen combinarse definiendo "clases de equivalencia". Las palabras suelen fusionarse en sus prototipos, pero existen reglas especiales para palabras especiales, como por ejemplo "EE.UU." se fusiona con "USA" y "antidiscriminación" se fusiona con "antidiscriminación".
Para algunas palabras, diferentes formas pueden contener diferente semántica, como ventana/ventanas/Windows. En este momento, al realizar la consulta, primero puede realizar una expansión asimétrica, buscar los elementos de expansión y luego realizar la unión.
Principalmente para sinónimos y homónimos, en este caso también se puede resolver mediante conjuntos de equivalencia y expansión asimétrica.
Además, cuando hay errores ortográficos en inglés en la consulta del usuario, el método comúnmente utilizado es Soundex (método de detección), que devuelve cadenas homófonas. Soundex es un conjunto de equivalencias de voz generado en base a heurísticas del habla. Este método también se usa ampliamente en Pinyin chino.
Las formas de palabras como sustantivos, verbos y adjetivos se unifican en raíces de palabras, y los números singulares y plurales, personas posesivas y tiempos verbales se unifican en prototipos.
Después de analizar el documento, podemos almacenar el nuevo documento directamente en el conjunto de documentos o utilizar tecnología de generación abstracta para generar un proxy (sustituto del documento) para reducir el espacio de almacenamiento.
Además, cuando buscamos documentos de páginas, sus formatos de archivo pueden ser diferentes, como HTML, XML, etc. , por lo que debemos realizar una purificación de la página después de recuperar la página web para obtener documentos de texto y enlaces internos fácilmente identificables.
Como se mencionó en artículos anteriores, la tabla de diccionario utilizada para unir $term y doc suele ser una matriz dispersa.
El archivo invertido almacena el contenido de cada línea en forma de una lista vinculada, es decir, todos los documentos que contienen este $término y su información básica están concatenados. Cada elemento de la lista vinculada se denomina lanzamiento.
Entre ellos, la información básica puede incluir: ID del documento (el identificador único del documento), puntero de posición (la posición del documento en el archivo Doc) y el factor de peso original.
Los factores de ponderación originales se almacenan para facilitar el cálculo de la ponderación de los términos durante las búsquedas. Puede incluir df, tf, frecuencia máxima, número total de documentos, etc.
Además, los elementos de la lista vinculada se ordenan por ID de documento, lo que resulta beneficioso para fusionar y combinar listas invertidas de varias páginas.
El archivo de índice generalmente almacena el ID de $term en el archivo de registro, la cantidad de documentos que contienen $term y la posición (puntero) de $term en forma de diccionario.
A continuación se enumeran varias formas comunes de organización de archivos de índice:
Como se mencionó anteriormente, al analizar un documento para obtener un índice, la forma más sencilla es extraer primero el token y luego obtener $término como índice. Sin embargo, en un modelo de indexación verdaderamente eficaz, normalmente es necesario seleccionar primero las características de los documentos para formar el índice.
El problema de la selección de características se puede transformar en el cálculo de pesos de $term, y un documento con un peso mayor generalmente representa mejor el documento.
Como se mencionó anteriormente, tf y su método de cálculo de peso derivado son los métodos de cálculo de peso más utilizados en los modelos IR. No repetiré la introducción aquí, solo mencionaré un teorema interesante, la ley de Zipf.
Este teorema describe el siguiente fenómeno: en un conjunto de documentos grande, después de contar la clasificación tf de cada entrada, recuerde que la clasificación es R y la frecuencia es F, entonces hay
En la práctica, las palabras de mayor rango suelen ser palabras vacías, las palabras más "importantes" suelen ser menos frecuentes y las palabras más raras no suelen tener valor universal. Esto también es coherente con la idea de tf idf, como se muestra en la siguiente figura.
En documentos invertidos, eliminar palabras vacías y poco comunes y conservar palabras importantes puede ahorrar mucho espacio de grabación.
Para un conjunto de documentos de cierto tamaño, ¿cuántas palabras se necesitan para indexar todos los documentos? Es cuestión de dimensionar el diccionario según el tamaño del conjunto de documentos. La ley de Sipp se estima así:
Donde, k suele tomar un número entero entre 10 y 100, y suele tomar un decimal entre 0,4 y 0,6. Haga un dibujo de la siguiente manera:
En el espacio vectorial, los documentos están representados por vectores ponderados por vectores base.
Podemos calcular la similitud entre documentos. Cuanto mayor sea la similitud, más compacto será el espacio y viceversa. La complejidad requerida para calcular la similitud entre dos conjuntos de documentos.
Por supuesto, si primero calcula un "documento promedio" y luego calcula la similitud de otros documentos, solo necesita calcular la complejidad.
El modelo de discriminación de términos analiza su importancia introduciendo un nuevo término $ como vector base y observando cambios en la similitud. La idea general es: