Sinonim

Filter synonym menulis ulang token menurut kamus sinonim, sehingga istilah yang terkait dapat dicocokkan selama pencarian. Filter ini mendukung dua mode operasi dan dua cara untuk memasok kamus:

  • Modeoperasi - mode expand mempertahankan token asli dan mengeluarkan sinonim tambahan di sampingnya; mode normalisasi (expand: false) menulis ulang token ke bentuk kanonik.

  • Sumber kamus - kamus kecil dapat dimasukkan ke dalam konfigurasi filter melalui larik synonyms; kamus besar harus disimpan sebagai sumber daya file dan direferensikan melalui synonyms_file.

Format kamus

Kamus sinonim adalah dokumen teks biasa (atau larik sebaris) yang setiap barisnya mendefinisikan satu aturan. Ada dua bentuk aturan yang didukung.

Aturan pemetaan

fast, quick => speedy

Token di sebelah kiri (fast, quick) ditulis ulang ke token di sebelah kanan (speedy). Beberapa target diperbolehkan:

small, little => tiny, compact

Dengan expand: true, token asli disimpan di samping target:

  • Masukkan fast dengan expand: truefast, speedy

  • Masukkan fast dengan expand: falsespeedy

Kelompok kesetaraan

happy, joyful, cheerful

Semua token yang terdaftar dianggap setara:

  • Dengan expand: true, setiap kemunculan token apa pun dalam grup memancarkan setiap token dalam grup. Masukan happyhappy, joyful, cheerful.

  • Dengan expand: false, setiap kemunculan ditulis ulang ke token pertama dalam grup. Masukan joyfulhappy; masukan happy sudah menjadi token pertama dan tidak berubah.

Konfigurasi

Filter synonym adalah filter khusus. Tentukan "type": "synonym" bersama dengan setidaknya salah satu dari synonyms (sebaris) atau synonyms_file (eksternal), ditambah bendera expand.

analyzer_params = {
    "tokenizer": "standard",
    "filter": [
        {
            "type": "synonym",
            "synonyms": [                       # inline rules (optional)
                "fast, quick => speedy",
                "happy, joyful, cheerful",
            ],
            "synonyms_file": {                  # external rules (optional)
                "type": "remote",
                "resource_name": "en_synonyms",
                "file_name": "synonyms.txt",
            },
            "expand": True,
        }
    ],
}

Filter synonym menerima parameter berikut ini.

Parameter

Deskripsi

Default

synonyms

Larik sebaris string aturan. Setiap string menggunakan format kamus yang dijelaskan di atas. Cocok untuk kamus kecil (hingga beberapa lusin aturan).

-

synonyms_file

Referensi ke sumber daya file yang menyimpan aturan sinonim, satu per baris. Digunakan untuk kamus yang lebih besar. Lihat File kamus eksternal di bawah ini.

-

expand

Bendera boolean yang mengontrol bagaimana aturan berlaku. true mempertahankan token asli dan mengeluarkan sinonim di sampingnya; false menulis ulang token ke bentuk kanoniknya (sisi kanan pemetaan, atau token pertama dari grup ekuivalensi).

false

Anda dapat menentukan synonyms, synonyms_file, atau keduanya. Jika keduanya ada, filter akan menggabungkan kedua sumber tersebut. Filter beroperasi pada token yang dihasilkan oleh tokenizer; oleh karena itu, filter ini harus digabungkan dengan tokenizer seperti tokenizer standar.

File kamus eksternal

Untuk kamus berukuran produksi, daftarkan file sebagai sumber daya file jarak jauh dan rujuk dari synonyms_file.

from pymilvus import MilvusClient

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

# Register the file once, then reference it from any analyzer that needs it.
client.add_file_resource(
    name="en_synonyms",
    path="file/synonyms.txt",     # full S3 object key, including rootPath
)

analyzer_params = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms_file": {
            "type": "remote",
            "resource_name": "en_synonyms",
            "file_name": "synonyms.txt",
        },
        "expand": True,
    }],
}

Lihat Mengelola Sumber Daya File untuk alur kerja lengkap (unggah, daftarkan, daftar, hapus) dan untuk formulir alternatif "type": "local".

Contoh

Sebelum menerapkan penganalisis ke skema koleksi, verifikasi perilakunya dengan run_analyzer. Contoh-contoh berikut ini menggunakan larik synonyms sebaris untuk mempersingkat; ganti dengan synonyms_file untuk kamus yang lebih besar.

expand: true - Pertahankan yang asli, tambahkan sinonim

from pymilvus import MilvusClient

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

analyzer_params = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms": [
            "fast, quick => speedy",
            "happy, joyful, cheerful",
        ],
        "expand": True,
    }],
}

print(client.run_analyzer(["a fast car"], analyzer_params))
# → [['a', 'fast', 'speedy', 'car']]

print(client.run_analyzer(["i am happy today"], analyzer_params))
# → [['i', 'am', 'happy', 'joyful', 'cheerful', 'today']]

Baik fast dan happy dipertahankan; sinonimnya dipancarkan di sampingnya.

expand: false - menulis ulang ke bentuk kanonik

analyzer_params_norm = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms": [
            "fast, quick => speedy",
            "happy, joyful, cheerful",
        ],
        "expand": False,
    }],
}

print(client.run_analyzer(["a fast car"], analyzer_params_norm))
# → [['a', 'speedy', 'car']]

print(client.run_analyzer(["i am happy today"], analyzer_params_norm))
# → [['i', 'am', 'happy', 'today']]

Aturan pemetaan menulis ulang fast menjadi speedy. Kelompok ekuivalensi membiarkan happy tidak berubah karena ini adalah token pertama dari kelompok tersebut; masukan yang berisi joyful atau cheerful akan ditulis ulang menjadi happy.

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?