Tokenizador ElasticSearch, infórmese sobre él
Este artículo presenta principalmente qué es Análisis, qué es un segmentador de palabras y cómo funciona el segmentador de palabras integrado de ElasticSearch. Finalmente, presentará cómo se realiza la segmentación de palabras en chino.
Primero, hablemos de qué es el Análisis:
Como sugiere el nombre, el análisis de texto es el proceso de convertir el texto completo en una serie de palabras (término/token), también llamada segmentación de palabras. En ES, el análisis se implementa a través de un tokenizador (Analyzer). Puede utilizar el analizador integrado de ES o personalizar un analizador según demanda.
Tomemos un ejemplo simple de segmentación de palabras: por ejemplo, si ingresa Mastering Elasticsearch, se dividirá automáticamente en dos palabras, una es mastering y la otra es elasticsearch. las palabras también se convierten a minúsculas.
Después de comprender brevemente Análisis y Analizador, echemos un vistazo a la composición del segmentador de palabras:
El segmentador de palabras es un componente que se especializa en la segmentación de palabras. de las siguientes tres partes:
Al mismo tiempo, las tres partes del Analizador también están en orden. Como se puede ver en la figura, de arriba a abajo pasan por los filtros de personajes, Tokenizer y Token. Filtros: este orden es más fácil de entender. Primero se debe ingresar un texto, se procesan los datos del texto, luego se realiza 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. Antes de explicar, echemos un vistazo a una API muy útil: _analyzer API:
p>
Puede comprobar cómo funciona el segmentador de palabras de las siguientes tres formas:
Después de comprender la API del analizador, echemos un vistazo a la palabra integrada. segmentador de ES:
Primero, introduzcamos el segmentador de palabras Stamdard Analyzer:
Es el segmentador de palabras predeterminado de ES. Segmentará el texto de entrada según las palabras. se convertirá a minúsculas. Manejo, las palabras vacías predeterminadas están desactivadas.
Usemos Kibana para ver cómo funciona. Especifique el Analizador como estándar en las herramientas de desarrollo de Kibana e ingrese el texto En 2020, Java es el mejor lenguaje del mundo, y luego lo ejecutamos:
Los resultados de la ejecución son los siguientes:
Se puede ver que el texto de entrada se convierte según espacios y no letras, como convertir Java a minúsculas, algunas palabras vacías no se eliminan. como en.
Entre ellos, token es el resultado de la segmentación de palabras; start_offset es el desplazamiento inicial; end_offset es la posición de desplazamiento final es la posición de segmentación de la palabra.
Echemos un vistazo al tokenizador de Simple Analyzer:
Solo incluye el tokenizador de minúsculas. Se dividirá según las letras que no sean letras, las que no sean letras se eliminarán y. finalmente corte por la mitad El texto separado se convierte a minúsculas, luego se usa el texto de entrada y el segmentador de palabras se cambia a simple para la segmentación de palabras. Los resultados de ejecución son los siguientes:
Como puede ser. Como se ve en los resultados, el número 2020 se ha eliminado. Muestra que, de hecho, se eliminarán las letras que no son letras y todas las palabras se han convertido a minúsculas.
Ahora, echemos un vistazo al segmentador de palabras de Whitespace Analyzer:
Es muy simple según el nombre, también puedes ver que está segmentado según espacios. Eche un vistazo a cómo funciona:
Se puede ver que incluso si está dividido en espacios, el número 2020 sigue ahí, la primera letra de Java todavía está en mayúscula y. , todavía se conserva.
Veamos a continuación el tokenizador Stop Analyzer:
Está compuesto por el tokenizador de Lowe Case y los filtros de token de Stop. En comparación con el analizador simple que acabamos de mencionar, tiene un filtro de parada adicional. , stop eliminará los modificadores como the, a, is, etc. Echemos un vistazo también a los resultados de ejecución:
Puedes ver que palabras como in is the son filtradas por stop. filtrar.
A continuación, echemos un vistazo al Analizador de palabras clave:
En realidad, no realiza el procesamiento de segmentación de palabras, solo genera la entrada como Término. Echemos un vistazo a los resultados de la ejecución. :
Como puede ver, el texto de entrada no se segmenta en palabras, sino que se genera directamente como Término.
A continuación, eche un vistazo al Analizador de patrones:
Puede segmentar palabras mediante expresiones regulares. El valor predeterminado es usar \W+ para segmentar, es decir, los caracteres que no son letras. segmentado. , dado que los resultados de ejecución son los mismos que los de Stamdard Analyzer, no se muestran.
ES proporciona un segmentador de palabras Language Analyzer para la entrada de idiomas de diferentes países. En él se pueden especificar diferentes idiomas. Usemos el inglés para segmentar las palabras:
. Se puede ver que el idioma ha cambiado. Se ha convertido en idioma y también tiene un filtro de parada. También se han eliminado palabras como in y is.
Finalmente, veamos la segmentación de palabras chinas:
La segmentación de palabras chinas tiene dificultades específicas. A diferencia del inglés, las palabras están separadas por espacios naturales, no pueden simplemente En lugar de. Al dividirlo en palabras individuales, es necesario dividirlo en palabras significativas, pero en diferentes contextos, existen diferentes interpretaciones.
Por ejemplo, el siguiente ejemplo:
Entonces, echemos un vistazo al tokenizador ICU Analyzer, que proporciona soporte Unicode y admite mejor los idiomas asiáticos.
Primero utilizamos estándar para segmentar las palabras para facilitar la comparación con UCI.
Los resultados de la ejecución no se mostrarán. La segmentación de palabras está segmentada palabra por palabra. Obviamente, el efecto no es muy bueno. A continuación, use ICU para segmentar las palabras. /p>
Puedes ver que se ha dividido en varios países y las empresas han cerrado una tras otra. El efecto es obviamente mucho mejor que antes.
Existen muchos segmentadores de palabras en chino, aquí tienes algunos:
IK:
jieba:
THULAC:
Puede instalarlo usted mismo y ver su efecto de segmentación de palabras chinas.
Este artículo presenta principalmente la segmentación de palabras que viene con ElasticSearch, aprende a usar la API _analyzer para ver su segmentación de palabras y, finalmente, presenta cómo realizar la segmentación de palabras en chino.