Identificador lingüísticoCompatible with Milvus v2.5.15+
language_identifier es un tokenizador especializado diseñado para mejorar las capacidades de búsqueda de texto de Milvus automatizando el proceso de análisis del idioma. Su función principal es detectar el idioma de un campo de texto y, a continuación, aplicar dinámicamente un analizador preconfigurado que sea el más adecuado para ese idioma. Esto es especialmente valioso para las aplicaciones que manejan varios idiomas, ya que elimina la necesidad de asignar manualmente un idioma a cada entrada.
Al dirigir de forma inteligente los datos de texto al proceso de procesamiento adecuado, language_identifier agiliza la entrada de datos multilingües y garantiza una tokenización precisa para las posteriores operaciones de búsqueda y recuperación.
Flujo de trabajo de detección de idiomas
language_identifier realiza una serie de pasos para procesar una cadena de texto, un flujo de trabajo que es fundamental para que los usuarios comprendan cómo configurarlo correctamente.
Flujo de trabajo de detección de idioma
Entrada: El flujo de trabajo comienza con una cadena de texto como entrada.
Detección del idioma: Esta cadena se pasa primero a un motor de detección de idioma, que intenta identificar el idioma. Milvus admite dos motores: whatlang y lingua.
Selección del analizador:
Éxito: Si el idioma se detecta correctamente, el sistema comprueba si el nombre del idioma detectado tiene un analizador correspondiente configurado en su diccionario
analyzers. Si se encuentra una coincidencia, el sistema aplica el analizador especificado al texto de entrada. Por ejemplo, un texto "mandarín" detectado se enviaría a un tokenizadorjieba.Fallback: Si la detección falla, o si se detecta correctamente un idioma pero no se ha proporcionado un analizador específico para él, el sistema utiliza por defecto un analizador preconfigurado. Este es un punto crucial de aclaración; el analizador
defaultes una alternativa tanto para el fallo de detección como para la ausencia de un analizador adecuado.
Una vez elegido el analizador adecuado, el texto se tokeniza y se procesa, completando así el flujo de trabajo.
Motores de detección de idiomas disponibles
Milvus permite elegir entre dos motores de detección de idiomas:
La selección depende de los requisitos específicos de rendimiento y precisión de su aplicación.
Motor |
Velocidad |
Precisión |
Formato de salida |
Lo mejor para |
|---|---|---|---|---|
|
Rápido |
Bueno para la mayoría de los idiomas |
Nombres de idiomas (por ejemplo, Referencia: Columna de idiomas en la tabla de idiomas admitidos |
Aplicaciones en tiempo real donde la velocidad es crítica |
|
Más lento |
Mayor precisión, especialmente para textos cortos |
Nombres en inglés (por ejemplo, Referencia: Lista de idiomas admitidos |
Aplicaciones en las que la precisión es más importante que la velocidad |
Una consideración crítica es la convención de nomenclatura del motor. Aunque ambos motores devuelven nombres de idiomas en inglés, utilizan términos diferentes para algunos idiomas (por ejemplo, whatlang devuelve Mandarin, mientras que lingua devuelve Chinese). La clave del analizador debe coincidir exactamente con el nombre devuelto por el motor de detección elegido.
Configuración
Para utilizar correctamente el tokenizador language_identifier, es necesario seguir los siguientes pasos para definir y aplicar su configuración.
Paso 1: Elija sus idiomas y analizadores
El núcleo de la configuración de language_identifier consiste en adaptar sus analizadores a los idiomas específicos que tiene previsto admitir. El sistema funciona emparejando el idioma detectado con el analizador correcto, por lo que este paso es crucial para un procesamiento de texto preciso.
A continuación se recomienda la asignación de idiomas a los analizadores Milvus adecuados. Esta tabla sirve de puente entre la salida del motor de detección de idiomas y la mejor herramienta para el trabajo.
Idioma (salida del detector) |
Analizador recomendado |
Descripción |
|---|---|---|
|
|
Tokenización del inglés estándar con stemming y filtrado de palabras vacías. |
|
|
Segmentación de palabras chinas para texto no delimitado por espacios. |
|
|
Un tokenizador robusto para alfabetos complejos, incluido el japonés. |
|
|
Configuración personalizada para acentos y caracteres franceses. |
La concordancia es clave: El nombre de su analizador debe coincidir exactamente con el idioma de salida del motor de detección. Por ejemplo, si utiliza
whatlang, la clave para el texto chino debe serMandarin.Mejores prácticas: La tabla anterior proporciona configuraciones recomendadas para algunos idiomas comunes, pero no es una lista exhaustiva. Para obtener una guía más completa sobre la elección de analizadores, consulte Elija el analizador adecuado para su caso de uso.
Salida del detector: Para obtener una lista completa de los nombres de los idiomas devueltos por los motores de detección, consulte la tabla de idiomas compatibles con Whatlang y la lista de idiomas compatibles con Lingua.
Paso 2: Definir analyzer_params
Para utilizar el tokenizador language_identifier en Milvus, cree un diccionario que contenga estos componentes clave:
Componentes obligatorios:
analyzersconfig set - Un diccionario que contiene todas las configuraciones del analizador, que deben incluir:default- El analizador de reserva utilizado cuando falla la detección del idioma o no se encuentra ningún analizador coincidente.Analizadores específicos de idioma - Cada uno definido como
<analyzer_name>: <analyzer_config>, donde:analyzer_namecoincide con la salida del motor de detección elegido (por ejemplo,"English","Japanese")analyzer_configsigue el formato estándar de los parámetros del analizador (véase Descripción general del analizador)
Componentes opcionales:
identifier- Especifica qué motor de detección de idiomas se va a utilizar (whatlangolingua). Si no se especifica, el valor predeterminado eswhatlangmapping- Crea alias personalizados para sus analizadores, lo que le permite utilizar nombres descriptivos en lugar del formato de salida exacto del motor de detección.
El tokenizador funciona detectando primero el idioma del texto de entrada y, a continuación, seleccionando el analizador adecuado de su configuración. Si la detección falla o no existe ningún analizador que coincida, automáticamente vuelve a su analizador default.
Recomendado: Coincidencia directa de nombres
Los nombres de los analizadores deben coincidir exactamente con la salida del motor de detección de idiomas elegido. Este método es más sencillo y evita posibles confusiones.
Tanto para whatlang como para lingua, utilice los nombres de idioma que aparecen en sus respectivas documentaciones:
whatlang idiomas soportados (utilice la columna"Idioma")
analyzer_params = {
"tokenizer": {
"type": "language_identifier", # Must be `language_identifier`
"identifier": "whatlang", # or `lingua`
"analyzers": { # A set of analyzer configs
"default": {
"tokenizer": "standard" # fallback if language detection fails
},
"English": { # Analyzer name that matches whatlang output
"type": "english"
},
"Mandarin": { # Analyzer name that matches whatlang output
"tokenizer": "jieba"
}
}
}
}
Enfoque alternativo: Nombres personalizados con mapeo
Si prefiere utilizar nombres de analizadores personalizados o necesita mantener la compatibilidad con configuraciones existentes, puede utilizar el parámetro mapping. De este modo, se crean alias para los analizadores, y funcionarán tanto los nombres originales del motor de detección como los nombres personalizados.
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "lingua",
"analyzers": {
"default": {
"tokenizer": "standard"
},
"english_analyzer": { # Custom analyzer name
"type": "english"
},
"chinese_analyzer": { # Custom analyzer name
"tokenizer": "jieba"
}
},
"mapping": {
"English": "english_analyzer", # Maps detection output to custom name
"Chinese": "chinese_analyzer"
}
}
}
Después de definir analyzer_params, puede aplicarlos a un campo VARCHAR cuando defina un esquema de colección. Esto permite a Milvus procesar el texto de ese campo utilizando el analizador especificado para una tokenización y filtrado eficientes. Para más detalles, consulte Ejemplo de uso.
Ejemplos
Aquí hay algunas configuraciones listas para usar en escenarios comunes. Cada ejemplo incluye tanto la configuración como el código de verificación para que pueda probar la configuración inmediatamente.
Detección de inglés y chino
from pymilvus import MilvusClient
# Configuration
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "whatlang",
"analyzers": {
"default": {"tokenizer": "standard"},
"English": {"type": "english"},
"Mandarin": {"tokenizer": "jieba"}
}
}
}
# Test the configuration
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
# English text
result_en = client.run_analyzer("The Milvus vector database is built for scale!", analyzer_params)
print("English:", result_en)
# Output:
# English: ['The', 'Milvus', 'vector', 'database', 'is', 'built', 'for', 'scale']
# Chinese text
result_cn = client.run_analyzer("Milvus向量数据库专为大规模应用而设计", analyzer_params)
print("Chinese:", result_cn)
# Output:
# Chinese: ['Milvus', '向量', '数据', '据库', '数据库', '专', '为', '大规', '规模', '大规模', '应用', '而', '设计']
Idiomas europeos con normalización de acentos
# Configuration for French, German, Spanish, etc.
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "lingua",
"analyzers": {
"default": {"tokenizer": "standard"},
"English": {"type": "english"},
"French": {
"tokenizer": "standard",
"filter": ["lowercase", "asciifolding"]
}
}
}
}
# Test with accented text
result_fr = client.run_analyzer("Café français très délicieux", analyzer_params)
print("French:", result_fr)
# Output:
# French: ['cafe', 'francais', 'tres', 'delicieux']
Notas de uso
Un solo idioma por campo: Opera sobre un campo como una unidad de texto única y homogénea. Está diseñado para manejar diferentes idiomas en diferentes registros de datos, como por ejemplo un registro que contenga una frase en inglés y el siguiente una frase en francés.
No admite cadenas de texto en varios idiomas: No está diseñado para manejar una única cadena que contenga texto de varias lenguas. Por ejemplo, un único campo
VARCHARque contenga tanto una frase en inglés como una frase entrecomillada en japonés se procesará como una única lengua.Procesamiento de la lengua dominante: En los casos de mezcla de idiomas, es probable que el motor de detección identifique el idioma dominante y aplique el analizador correspondiente a todo el texto. El resultado será una tokenización deficiente o nula del texto extranjero incrustado.