Rimuovi segni di punteggiaturaCompatible with Milvus 2.5.11+
Il filtro removepunct rimuove i token contenenti segni di punteggiatura o spazi bianchi dal flusso di token. Utilizzalo quando desideri un'elaborazione del testo più pulita, incentrata sulle parole significative piuttosto che sui segni di punteggiatura.
Questo filtro è particolarmente efficace con i tokenizzatori jieba, lindera e icu, che conservano i segni di punteggiatura come token separati (ad esempio, "Hello!" → ["Hello", "!"]). Il tokenizzatore standard scarta la punteggiatura durante la tokenizzazione. Il tokenizzatore whitespace conserva la punteggiatura, compresa quella all’interno di un token. Se combinato con whitespace, removepunct rimuove l’intero token se contiene punteggiatura o spazi bianchi; non elimina singoli caratteri dal token.
Configurazione
Il filtro « removepunct » è integrato in Milvus. Per utilizzarlo, è sufficiente specificarne il nome nella sezione « filter » all’interno di « analyzer_params ».
analyzer_params = {
"tokenizer": "jieba",
"filter": ["removepunct"]
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "jieba");
analyzerParams.put("filter", Collections.singletonList("removepunct"));
// node
analyzerParams = map[string]any{"tokenizer": "jieba", "filter": []any{"removepunct"}}
# restful
Il filtro ` removepunct ` opera sui termini generati dal tokenizer, pertanto deve essere utilizzato in combinazione con un tokenizer.
Dopo aver definito i filtri analyzer_params, è possibile applicarli a un campo VARCHAR durante la definizione dello schema di una collezione. Ciò consente a Milvus di elaborare il testo in quel campo utilizzando l’analizzatore specificato per una tokenizzazione e un filtraggio efficienti. Per ulteriori dettagli, consultare la sezione Esempio di utilizzo.
Esempi
Prima di applicare la configurazione dell’analizzatore allo schema della collezione, verificarne il comportamento utilizzando il metodo ` run_analyzer `.
Configurazione dell’analizzatore
analyzer_params = {
"tokenizer": "icu",
"filter": ["removepunct"]
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "icu");
analyzerParams.put("filter", Collections.singletonList("removepunct"));
// node
analyzerParams = map[string]any{"tokenizer": "icu", "filter": []string{"removepunct"}}
# restful
Verifica tramite run_analyzer
from pymilvus import (
MilvusClient,
)
client = MilvusClient(uri="http://localhost:19530")
# Sample text to analyze
sample_text = "Привет! Как дела?"
# 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("Привет! Как дела?");
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{"Привет! Как дела?"}
option := milvusclient.NewRunAnalyzerOption(texts).
WithAnalyzerParams(string(bs))
result, err := client.RunAnalyzer(ctx, option)
if err != nil {
fmt.Println(err.Error())
// handle error
}
# restful
Risultato atteso
['Привет', 'Как', 'дела']