Pengidentifikasi BahasaCompatible with Milvus v2.5.15+

language_identifier adalah tokenizer khusus yang dirancang untuk meningkatkan kemampuan pencarian teks Milvus dengan mengotomatiskan proses analisis bahasa. Fungsi utamanya adalah untuk mendeteksi bahasa bidang teks dan kemudian secara dinamis menerapkan penganalisis yang telah dikonfigurasi sebelumnya yang paling sesuai untuk bahasa tersebut. Hal ini sangat berharga untuk aplikasi yang menangani berbagai bahasa, karena menghilangkan kebutuhan untuk penetapan bahasa secara manual berdasarkan per input.

Dengan merutekan data teks secara cerdas ke jalur pemrosesan yang sesuai, language_identifier merampingkan konsumsi data multibahasa dan memastikan tokenisasi yang akurat untuk operasi pencarian dan pengambilan selanjutnya.

Alur kerja deteksi bahasa

language_identifier melakukan serangkaian langkah untuk memproses string teks, sebuah alur kerja yang sangat penting bagi pengguna untuk memahami cara mengonfigurasinya dengan benar.

Language Detection Workflow Alur Kerja Deteksi Bahasa

  1. Masukan: Alur kerja dimulai dengan string teks sebagai masukan.

  2. Deteksi bahasa: String ini pertama-tama diteruskan ke mesin pendeteksi bahasa, yang mencoba mengidentifikasi bahasa. Milvus mendukung dua mesin: whatlang dan lingua.

  3. Pemilihan penganalisis:

    • Sukses: Jika bahasa berhasil dideteksi, sistem akan memeriksa apakah nama bahasa yang terdeteksi memiliki penganalisis yang sesuai yang dikonfigurasikan dalam kamus analyzers Anda. Jika ditemukan kecocokan, sistem akan menerapkan penganalisis yang ditentukan pada teks masukan. Sebagai contoh, teks "Mandarin" yang terdeteksi akan dialihkan ke tokenizer jieba.

    • Mundur: Jika pendeteksian gagal, atau jika bahasa berhasil dideteksi namun Anda belum menyediakan penganalisis khusus untuk bahasa tersebut, sistem akan beralih ke penganalisis default yang telah dikonfigurasi sebelumnya. Ini adalah titik klarifikasi yang penting; penganalisis default adalah fallback untuk kegagalan deteksi dan ketiadaan penganalisis yang cocok.

Setelah penganalisis yang sesuai dipilih, teks diberi tanda dan diproses, menyelesaikan alur kerja.

Mesin pendeteksi bahasa yang tersedia

Milvus menawarkan pilihan antara dua mesin pendeteksi bahasa:

Pemilihannya tergantung pada kinerja spesifik dan persyaratan akurasi aplikasi Anda.

Mesin

Kecepatan

Akurasi

Format Keluaran

Terbaik Untuk

whatlang

Cepat

Baik untuk sebagian besar bahasa

Nama bahasa (misalnya, "English", "Mandarin", "Japanese")

Referensi Kolom bahasa dalam tabel bahasa yang didukung

Aplikasi waktu nyata di mana kecepatan sangat penting

lingua

Lebih lambat

Ketepatan yang lebih tinggi, terutama untuk teks pendek

Nama dalam bahasa Inggris (misalnya, "English", "Chinese", "Japanese")

Referensi: Daftar bahasa yang didukung

Aplikasi yang mengutamakan keakuratan daripada kecepatan

Pertimbangan penting adalah konvensi penamaan mesin. Meskipun kedua mesin mengembalikan nama bahasa dalam bahasa Inggris, mereka menggunakan istilah yang berbeda untuk beberapa bahasa (misalnya, whatlang mengembalikan Mandarin, sementara lingua mengembalikan Chinese). Kunci penganalisis harus sama persis dengan nama yang dikembalikan oleh mesin pendeteksi yang dipilih.

Konfigurasi

Untuk menggunakan tokenizer language_identifier dengan benar, langkah-langkah berikut harus diambil untuk menentukan dan menerapkan konfigurasinya.

Langkah 1: Pilih bahasa dan penganalisis Anda

Inti dari pengaturan language_identifier adalah menyesuaikan penganalisis Anda dengan bahasa tertentu yang Anda rencanakan untuk didukung. Sistem bekerja dengan mencocokkan bahasa yang terdeteksi dengan penganalisis yang tepat, sehingga langkah ini sangat penting untuk pemrosesan teks yang akurat.

Di bawah ini adalah pemetaan bahasa yang direkomendasikan ke penganalisis Milvus yang sesuai. Tabel ini berfungsi sebagai jembatan antara output mesin pendeteksi bahasa dan alat terbaik untuk pekerjaan tersebut.

Bahasa (Keluaran Detektor)

Penganalisis yang Direkomendasikan

Deskripsi

English

type: english

Tokenisasi bahasa Inggris standar dengan pemangkasan dan penyaringan kata henti.

Mandarin (via whatlang) atau Chinese (via lingua)

tokenizer: jieba

Segmentasi kata dalam bahasa Mandarin untuk teks yang tidak dibatasi spasi.

Japanese

tokenizer: icu

Tokenisasi yang kuat untuk skrip yang kompleks, termasuk bahasa Jepang.

French

type: standard, filter: ["lowercase", "asciifolding"]

Konfigurasi khusus yang menangani aksen dan karakter bahasa Prancis.

  • Pencocokan adalah Kuncinya: Nama penganalisis Anda harus sama persis dengan keluaran bahasa mesin pendeteksi. Misalnya, jika Anda menggunakan whatlang, kunci untuk teks bahasa Mandarin harus Mandarin.

  • Praktik terbaik: Tabel di atas menyediakan konfigurasi yang direkomendasikan untuk beberapa bahasa yang umum, tetapi ini bukan daftar yang lengkap. Untuk panduan yang lebih komprehensif dalam memilih penganalisis, lihat Memilih Penganalisis yang Tepat untuk Kasus Penggunaan Anda.

  • Keluaran detektor: Untuk daftar lengkap nama bahasa yang dikembalikan oleh mesin pendeteksi, lihat tabel bahasa yang didukung Whatlang dan daftar bahasa yang didukung Lingua.

Langkah 2: Tentukan parameter penganalisis

Untuk menggunakan tokenizer language_identifier di Milvus, buatlah kamus yang berisi komponen-komponen kunci berikut ini:

Komponen yang diperlukan:

  • analyzers config set - Kamus yang berisi semua konfigurasi penganalisis, yang harus disertakan:

    • default - Penganalisis mundur yang digunakan ketika deteksi bahasa gagal atau tidak ada penganalisis yang cocok yang ditemukan

    • Penganalisis khusus bahasa - Masing-masing didefinisikan sebagai <analyzer_name>: <analyzer_config>, di mana:

      • analyzer_name cocok dengan keluaran mesin deteksi yang Anda pilih (misalnya, "English", "Japanese")

      • analyzer_config mengikuti format parameter penganalisis standar (lihat Ikhtisar Penganalisis)

Komponen opsional:

  • identifier - Menentukan mesin pendeteksi bahasa mana yang akan digunakan (whatlang atau lingua). Setelan default ke whatlang jika tidak ditentukan

  • mapping - Membuat alias khusus untuk penganalisis Anda, sehingga Anda dapat menggunakan nama deskriptif alih-alih format keluaran mesin pendeteksi yang tepat

Tokenizer bekerja dengan pertama-tama mendeteksi bahasa teks input, kemudian memilih penganalisis yang sesuai dari konfigurasi Anda. Jika deteksi gagal atau tidak ada penganalisis yang cocok, maka secara otomatis akan kembali ke penganalisis default.

Nama penganalisis Anda harus sama persis dengan keluaran mesin pendeteksi bahasa yang Anda pilih. Pendekatan ini lebih sederhana dan menghindari potensi kebingungan.

Untuk whatlang dan lingua, gunakan nama bahasa seperti yang ditunjukkan dalam dokumentasi masing-masing:

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"
            }
        }
    }
}

Pendekatan alternatif: Nama khusus dengan pemetaan

Jika Anda lebih suka menggunakan nama penganalisis khusus atau perlu menjaga kompatibilitas dengan konfigurasi yang ada, Anda dapat menggunakan parameter mapping. Hal ini akan membuat alias untuk penganalisis Anda-baik nama mesin pendeteksi asli maupun nama kustom Anda akan berfungsi.

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"
        }
    }
}

Setelah mendefinisikan analyzer_params, Anda dapat menerapkannya ke bidang VARCHAR ketika mendefinisikan skema koleksi. Hal ini memungkinkan Milvus untuk memproses teks dalam bidang tersebut menggunakan penganalisis yang ditentukan untuk tokenisasi dan pemfilteran yang efisien. Untuk detailnya, lihat Contoh penggunaan.

Contoh

Berikut adalah beberapa konfigurasi siap pakai untuk skenario umum. Setiap contoh menyertakan kode konfigurasi dan verifikasi sehingga Anda dapat langsung menguji penyiapannya.

Deteksi bahasa Inggris dan Cina

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', '向量', '数据', '据库', '数据库', '专', '为', '大规', '规模', '大规模', '应用', '而', '设计']

Bahasa Eropa dengan normalisasi aksen

# 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']

Catatan penggunaan

  • Bahasa tunggal per bidang: Fitur ini beroperasi pada sebuah bidang sebagai satu unit teks yang homogen. Fitur ini dirancang untuk menangani bahasa yang berbeda di berbagai catatan data yang berbeda, seperti satu catatan yang berisi kalimat bahasa Inggris dan catatan berikutnya berisi kalimat bahasa Prancis.

  • Tidak ada string bahasa campuran: Tidak dirancang untuk menangani string tunggal yang berisi teks dari berbagai bahasa. Sebagai contoh, satu bidang VARCHAR yang berisi kalimat bahasa Inggris dan frasa bahasa Jepang yang dikutip akan diproses sebagai satu bahasa.

  • Pemrosesan bahasa dominan: Dalam skenario bahasa campuran, mesin pendeteksi kemungkinan akan mengidentifikasi bahasa yang dominan, dan penganalisis yang sesuai akan diterapkan ke seluruh teks. Hal ini akan menghasilkan tokenisasi yang buruk atau tidak ada sama sekali untuk teks asing yang disematkan.