You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为icu4x WordSegmenter添加自定义词典优化泰语分词

为icu_segmenter::WordSegmenter添加泰语自定义词典的实现方法

icu_segmenter的WordSegmenter支持通过自定义词典扩展分词能力,针对泰语生僻人名的场景,可按以下步骤实现:

1. 准备自定义词典文件

创建一个UTF-8编码的纯文本文件(比如thai_custom_names.txt),每行写入一个需要优先识别的生僻人名或自定义词汇:

สมชาย_สุขใจ
วิภาดี_จันทร์ดวง
กิตติศักดิ์_เพชรสวัสดิ์

2. 在代码中加载并应用自定义词典

使用WordSegmenterBuilder结合DictionarySet,将自定义词典与默认泰语LSTM分词模型整合,示例代码如下:

use icu_segmenter::{WordSegmenter, WordSegmenterBuilder, DictionarySet};
use std::fs;

fn main() {
    // 读取自定义词典文件
    let dict_content = fs::read_to_string("thai_custom_names.txt")
        .expect("无法读取自定义词典文件");
    
    // 构建词典集合并添加泰语自定义词汇
    let mut dict_set = DictionarySet::new();
    dict_set.add(
        "th",
        dict_content.lines().map(|line| line.as_bytes()).collect(),
    ).expect("添加泰语自定义词典失败");
    
    // 构建融合自定义词典的分词器
    let segmenter = WordSegmenterBuilder::new()
        .with_dictionary_set(dict_set)
        .build_or_load_default("th")
        .expect("构建泰语分词器失败");
    
    // 测试分词效果
    let test_text = "สมชาย_สุขใจไปเยี่ยมวิภาดี_จันทร์ดวงที่โรงเรียน";
    let segments = segmenter.segment_str(test_text);
    
    for (start_idx, end_idx) in segments {
        println!("{}", &test_text[start_idx..end_idx]);
    }
}

3. 关键注意事项

  • 词典文件需保证每行仅含一个完整词汇,无多余空格或空行
  • 泰语对应的locale标识为"th",必须与添加词典时指定的locale一致,否则自定义词汇不会生效
  • build_or_load_default方法会保留默认LSTM模型的原有分词能力,同时优先识别自定义词典中的词汇,兼顾基础效果与自定义需求

内容的提问来源于stack exchange,提问作者mash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:40:03