Milvus
Zilliz
Home
  • Guía del usuario
  • Home
  • Docs
  • Guía del usuario

  • Esquema y campos de datos

  • Analizador

  • Tokenizadores

  • Jieba

Jieba

El tokenizador jieba procesa el texto chino descomponiéndolo en las palabras que lo componen.

El tokenizador jieba conserva los signos de puntuación como fichas separadas en la salida. Por ejemplo, "你好!世界。" se convierte en ["你好", "!", "世界", "。"]. Para eliminar estos signos de puntuación independientes, utilice el filtro removepunct filtro.

Configuración

Milvus admite dos enfoques de configuración para el tokenizador jieba: una configuración simple y una configuración personalizada.

Configuración simple

Con la configuración simple, sólo necesita configurar el tokenizador en "jieba". Por ejemplo

# Simple configuration: only specifying the tokenizer name
analyzer_params = {
    "tokenizer": "jieba",  # Use the default settings: dict=["_default_"], mode="search", hmm=True
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "jieba");
const analyzer_params = {
    "tokenizer": "jieba",
};
analyzerParams = map[string]any{"tokenizer": "jieba"}
# restful
analyzerParams='{
  "tokenizer": "jieba"
}'

Esta configuración simple es equivalente a la siguiente configuración personalizada:

# Custom configuration equivalent to the simple configuration above
analyzer_params = {
    "type": "jieba",          # Tokenizer type, fixed as "jieba"
    "dict": ["_default_"],     # Use the default dictionary
    "mode": "search",          # Use search mode for improved recall (see mode details below)
    "hmm": True                # Enable HMM for probabilistic segmentation
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("type", "jieba");
analyzerParams.put("dict", Collections.singletonList("_default_"));
analyzerParams.put("mode", "search");
analyzerParams.put("hmm", true);
// javascript
analyzerParams = map[string]any{"type": "jieba", "dict": []any{"_default_"}, "mode": "search", "hmm": true}
# restful

Para obtener más información sobre los parámetros, consulte Configuración personalizada.

Configuración personalizada

Para un mayor control, puede proporcionar una configuración personalizada que le permita especificar un diccionario personalizado, seleccionar el modo de segmentación y activar o desactivar el modelo oculto de Markov (HMM). Por ejemplo

# Custom configuration with user-defined settings
analyzer_params = {
    "tokenizer": {
        "type": "jieba",           # Fixed tokenizer type
        "dict": ["customDictionary"],  # Custom dictionary list; replace with your own terms
        "mode": "exact",           # Use exact mode (non-overlapping tokens)
        "hmm": False               # Disable HMM; unmatched text will be split into individual characters
    }
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("type", "jieba");
analyzerParams.put("dict", Collections.singletonList("customDictionary"));
analyzerParams.put("mode", "exact");
analyzerParams.put("hmm", false);
// javascript
analyzerParams = map[string]any{"type": "jieba", "dict": []any{"customDictionary"}, "mode": "exact", "hmm": false}
# restful

Parámetro

Descripción

Valor por defecto

type

El tipo de tokenizador. Está fijado en "jieba".

"jieba"

dict

Una lista de diccionarios que el analizador cargará como fuente de vocabulario. Opciones incorporadas:

  • "_default_": Carga el diccionario de chino simplificado integrado en el motor. Para más detalles, consulte dict.txt.

  • "_extend_default_": Carga todo lo que hay en "_default_" más un suplemento adicional de chino tradicional. Para más detalles, consulta dict.txt.big.

    También puedes combinar el diccionario incorporado con cualquier número de diccionarios personalizados. Ejemplo: ["_default_", "结巴分词器"].

["_default_"]

mode

El modo de segmentación. Valores posibles:

  • "exact": Intenta segmentar la frase de la manera más precisa, por lo que es ideal para el análisis de texto.

  • "search": Se basa en el modo exacto al dividir aún más las palabras largas para mejorar la recuperación, por lo que es adecuado para la tokenización en motores de búsqueda.

    Para más información, consulte el proyecto GitHub de Jieba.

"search"

hmm

Un indicador booleano que indica si se activa el modelo oculto de Markov (HMM) para la segmentación probabilística de palabras que no se encuentran en el diccionario.

true

Después de definir analyzer_params, puede aplicarlos a un campo VARCHAR al definir un esquema de colección. Esto permite a Milvus procesar el texto en ese campo utilizando el analizador especificado para una tokenización y filtrado eficientes. Para más detalles, consulte Ejemplo de uso.

Ejemplos

Antes de aplicar la configuración del analizador a su esquema de recopilación, verifique su comportamiento utilizando el método run_analyzer.

Configuración del analizador

analyzer_params = {
    "tokenizer": {
        "type": "jieba",
        "dict": ["结巴分词器"],
        "mode": "exact",
        "hmm": False
    }
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("type", "jieba");
analyzerParams.put("dict", Collections.singletonList("结巴分词器"));
analyzerParams.put("mode", "exact");
analyzerParams.put("hmm", false);
// javascript
analyzerParams = map[string]any{"type": "jieba", "dict": []any{"结巴分词器"}, "mode": "exact", "hmm": false}
# restful

Verificación mediante run_analyzerCompatible with Milvus 2.5.11+

from pymilvus import (
    MilvusClient,
)

client = MilvusClient(uri="http://localhost:19530")

# Sample text to analyze
sample_text = "milvus结巴分词器中文测试"

# Run the standard analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Standard analyzer output:", result)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.vector.request.RunAnalyzerReq;
import io.milvus.v2.service.vector.response.RunAnalyzerResp;

ConnectConfig config = ConnectConfig.builder()
        .uri("http://localhost:19530")
        .build();
MilvusClientV2 client = new MilvusClientV2(config);

List<String> texts = new ArrayList<>();
texts.add("milvus结巴分词器中文测试");

RunAnalyzerResp resp = client.runAnalyzer(RunAnalyzerReq.builder()
        .texts(texts)
        .analyzerParams(analyzerParams)
        .build());
List<RunAnalyzerResp.AnalyzerResult> results = resp.getResults();
// javascript
import (
    "context"
    "encoding/json"
    "fmt"

    "github.com/milvus-io/milvus/client/v2/milvusclient"
)

client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
    Address: "localhost:19530",
    APIKey:  "root:Milvus",
})
if err != nil {
    fmt.Println(err.Error())
    // handle error
}

bs, _ := json.Marshal(analyzerParams)
texts := []string{"milvus结巴分词器中文测试"}
option := milvusclient.NewRunAnalyzerOption(texts).
    WithAnalyzerParams(string(bs))

result, err := client.RunAnalyzer(ctx, option)
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
# restful

Salida esperada

['milvus', '结巴分词器', '中', '文', '测', '试']
Tabla de contenidos

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

¿Fue útil esta página?