Red de conocimiento informático - Aprendizaje de programación - Tesauro de ElasticSearch, ¡aprenda más sobre él!

Tesauro de ElasticSearch, ¡aprenda más sobre él!

Este artículo presenta principalmente qué es el análisis, qué es un tesauro y cómo funciona el tesauro que viene con ElasticSearch. Finalmente, presentará cómo se crea el tesauro chino.

Primero, qué es el análisis:

Como sugiere el nombre, el análisis de texto es el proceso de convertir texto completo en una serie de palabras (términos/tokens), también conocido como división. En ES, el análisis se implementa a través de analizadores, que pueden integrarse o personalizarse según sus necesidades.

Tomemos un ejemplo simple de segmentación de palabras: si escribe Mastering Elasticsearch, automáticamente lo dividirá en dos palabras, una para mastering y otra para elasticsearch. Puede ver que las palabras también se convierten a minúsculas.

Después de una breve comprensión de Análisis y Analizador, echemos un vistazo a los componentes de Parser:

Parser es un componente que se especializa en procesar palabras. Consta de los tres siguientes. partes:

p>

Al mismo tiempo, las tres partes del Analizador también son secuenciales, como se muestra en la figura, pasan por el filtro de caracteres, el tokenizador y el etiquetador de arriba a abajo. Filtros de caracteres, tokenizador y filtros de tokens: este orden es fácil de entender. Después de que ingresa un texto, primero se deben procesar los datos del texto, luego la segmentación de palabras y finalmente se filtran los resultados de la segmentación de palabras.

Entre ellos, ES tiene muchos tokenizadores integrados:

A continuación, se explicarán los tokenizadores anteriores y luego la primera API muy útil: _analyzer API:

Puede comprender cómo funciona el tokenizador a partir de los siguientes tres aspectos:

Luego, después de comprender la API del analizador, echemos un vistazo al vocabulario integrado de ES:

Primero, Presentemos el tesauro de Stamdard Analyzer:

Es el tesauro predeterminado de ES. Segmenta las palabras de entrada una por una y luego convierte la transposición a minúsculas una vez completada la segmentación. la transposición se convierte a minúsculas y las palabras vacías están desactivadas de forma predeterminada.

Así es como funciona usando Kibana. En las herramientas de desarrollo de Kibana, especificamos el analizador como estándar e ingresamos el texto En 2020, Java es el mejor lenguaje del mundo. Luego lo ejecutamos:

Los resultados son los siguientes:

Puede ver que el texto de entrada se convierte con espacios, letras que no son como Java a minúsculas y algunas palabras vacías como en no se eliminan.

Entre ellos, token es el resultado después de la división; start_offset es el desplazamiento inicial; end_offset es la posición del desplazamiento final es la posición después de la división.

Echemos un vistazo al tokenizador de Simple Analyzer:

Contiene solo tokenizador en minúsculas, que se dividirá en caracteres no alfabéticos y los caracteres no alfabéticos se eliminarán. Finalmente, convierta. el resultado de la segmentación a minúsculas.

Como puedes ver en los resultados, el número 2020 se ha eliminado, lo que significa que los caracteres no alfabéticos se han eliminado y todas las palabras se han convertido a letras minúsculas.

Ahora, veamos el léxico del Analizador de espacios en blanco:

Es muy simple, como puedes ver por el nombre, está dividido por espacios, así que veamos cómo funciona:

Como puede ver, solo está dividido por espacios, los números de 2020 siguen ahí.

El siguiente es el analizador de Stop:

Consiste en el tokenizador de Lowe Case y el filtro de token de Stop.

En comparación con el analizador simple mencionado anteriormente, tiene un filtro de detención que elimina modificadores como, a, is, etc.

Veamos de nuevo los resultados. Veamos los resultados nuevamente:

Puedes ver que fue filtrado por el filtro de detención.

A continuación, veamos el analizador de palabras clave:

No realiza ningún procesamiento de textos, solo genera la entrada como un término, así que veamos los resultados:

p>

Podemos ver que no realiza ningún procesamiento de textos en el texto de entrada, simplemente lo genera como un término.

A continuación, veamos el Analizador de patrones:

Puede dividir palabras mediante expresiones regulares. De forma predeterminada, usa \W+ para dividir, lo que significa que las coincidencias que no sean letras serán. corte, y dado que los resultados son los mismos que los del Stamdard Analyzer, no los mostraremos.

ES proporciona un analizador de idiomas para entradas en diferentes idiomas. Puede especificar diferentes idiomas. Usemos inglés para dividir palabras:

Puedes ver que el idioma ha sido Cambiar a idioma. y también proporciona un filtro de detención que puede eliminar palabras como en, es, etc.

Como puedes ver, el idioma se ha cambiado a languag, y también tiene un filtro de parada donde se eliminan palabras como in, is, etc.

Finalmente, veamos la segmentación de palabras chinas:

La segmentación de palabras chinas tiene una dificultad especial. No separan naturalmente las palabras con espacios como en las oraciones chinas. Al estar simplemente segmentado en palabras individuales, es necesario segmentarlo en palabras significativas, pero estas palabras se entenderán de manera diferente en diferentes contextos.

Tome el siguiente ejemplo:

Entonces, echemos un vistazo al ICU Analyzer Lexicon, que proporciona soporte Unicode para un mejor soporte de los idiomas asiáticos.

Comencemos con palabras divididas estándar y comparemos con ICU.

El resultado no se muestra. Las palabras se cortan una por una. Obviamente el efecto no es muy bueno. Luego se usa ICU para segmentar las palabras:

. Se puede ver que está dividido por países, hay empresas cerradas sucesivamente, obviamente el resultado es mucho mejor que ahora.

Hay muchos participios chinos, aquí tienes algunos:

IK:

jieba:

THULAC:

Puedes instalarlo tú mismo.

Puedes instalarlo tú mismo y comprobar el efecto de la segmentación de palabras chinas.

Este artículo presentará el segmentador de palabras integrado de ElasticSearch, aprenderá a usar la API _analyzer para ver cómo segmenta las palabras y, finalmente, presentará cómo se completa la segmentación de palabras en chino.