Rust语言处理库lingua-malay-language-model的使用:支持马来语自然语言处理与文本分析

Rust语言处理库lingua-malay-language-model的使用:支持马来语自然语言处理与文本分析

Malay language model for Lingua

这是用于马来语的语言模型,被Rust生态系统中最准确的自然语言检测库Lingua所使用。

版本更新

版本1.2.0

  • 通过包含独特和最常见的ngram来增强语言模型,以支持独立于其他语言的绝对置信度指标。

版本1.1.0

  • 语言模型文件现在使用Brotli算法压缩,平均减少了15%的文件大小。

安装

在项目目录中运行以下Cargo命令:

cargo add lingua-malay-language-model

或者在Cargo.toml中添加以下行:

lingua-malay-language-model = "1.2.0"

完整示例代码

以下是一个使用lingua-malay-language-model进行马来语文本检测的完整示例:

use lingua::{Language, LanguageDetector, LanguageDetectorBuilder};

fn main() {
    // 创建语言检测器,包含马来语支持
    let languages = vec![Language::Malay];
    let detector: LanguageDetector = LanguageDetectorBuilder::from_languages(&languages).build();
    
    // 待检测的马来语文本
    let text = "Saya suka makan nasi lemak pada waktu pagi.";
    
    // 检测文本语言
    let detected_language = detector.detect_language_of(text);
    
    // 输出结果
    match detected_language {
        Some(language) => println!("检测到的语言是: {}", language),
        None => println!("无法确定语言"),
    }
}

扩展示例代码

下面是一个更完整的示例,演示如何检测多种语言中包含马来语的情况:

use lingua::{Language, LanguageDetector, LanguageDetectorBuilder};

fn main() {
    // 创建支持多种语言的语言检测器
    let languages = vec![
        Language::Malay,
        Language::English,
        Language::Indonesian,
        Language::Chinese
    ];
    
    let detector: LanguageDetector = LanguageDetectorBuilder::from_languages(&languages)
        .with_preloaded_language_models()
        .build();
    
    // 待检测的多语言文本
    let texts = vec![
        "Saya berasal dari Malaysia",  // 马来语
        "Hello how are you",          // 英语
        "Saya berasal dari Indonesia", // 印尼语
        "我来自中国"                   // 中文
    ];
    
    // 批量检测文本语言
    for text in texts {
        let result = detector.detect_language_of(text);
        match result {
            Some(lang) => println!("文本: '{}' 检测为: {}", text, lang),
            None => println!("无法确定文本: '{}' 的语言", text),
        }
    }
    
    // 获取检测置信度
    let confidence_scores = detector.compute_language_confidence_values(texts[0]);
    println!("\n检测置信度:");
    for (lang, confidence) in confidence_scores {
        println!("{}: {:.4}", lang, confidence);
    }
}

1 回复

Rust语言处理库lingua-malay-language-model的使用:支持马来语自然语言处理与文本分析

介绍

lingua-malay-language-model是一个用于马来语自然语言处理的Rust库,提供了马来语文本分析的基本功能。这个库特别适合需要处理马来语文本的开发者,包括但不限于:

  • 马来语文本分类
  • 情感分析
  • 关键词提取
  • 基础文本处理

安装

在Cargo.toml中添加依赖:

[dependencies]
lingua-malay-language-model = "0.1"  # 请使用最新版本号

基本使用方法

1. 初始化模型

use lingua_malay_language_model::MalayLanguageModel;

fn main() {
    let model = MalayLanguageModel::new();
    // 使用模型进行各种操作...
}

2. 分词示例

use lingua_malay_language_model::MalayLanguageModel;

fn main() {
    let model = MalayLanguageModel::new();
    let text = "Saya suka makan nasi lemak di Malaysia.";
    let tokens = model.tokenize(text);
    
    println!("分词结果: {:?}", tokens);
    // 输出: ["Saya", "suka", "makan", "nasi", "lemak", "di", "Malaysia", "."]
}

3. 词性标注

use lingua_malay_language_model::MalayLanguageModel;

fn main() {
    let model = MalayLanguageModel::new();
    let text = "Dia sedang membaca buku.";
    let pos_tags = model.pos_tagging(text);
    
    println!("词性标注结果: {:?}", pos_tags);
    // 输出: [("Dia", "PRON"), ("sedang", "AUX"), ("membaca", "VERB"), ("buku", "NOUN"), (".", "PUNCT")]
}

4. 情感分析

use lingua_malay_language_model::MalayLanguageModel;

fn main() {
    let model = MalayLanguageModel::new();
    let text = "Saya sangat gembira hari ini!";
    let sentiment = model.analyze_sentiment(text);
    
    println!("情感分析结果: {:?}", sentiment);
    // 可能输出: Positive(0.85)
}

5. 关键词提取

use lingua_malay_language_model::MalayLanguageModel;

fn main() {
    let model = MalayLanguageModel::new();
    let text = "Malaysia adalah sebuah negara yang indah dengan pantai yang cantik dan makanan yang lazat.";
    let keywords = model.extract_keywords(text, 3); // 提取3个关键词
    
    println!("关键词: {:?}", keywords);
    // 可能输出: ["Malaysia", "pantai", "makanan"]
}

高级功能

自定义词典

use lingua_malay_language_model::MalayLanguageModel;

fn main() {
    let mut model = MalayLanguageModel::new();
    
    // 添加自定义词汇
    model.add_custom_word("kekwa", Some("NOUN"), None);
    
    let text = "Saya ada seekor kekwa.";
    let pos_tags = model.pos_tagging(text);
    
    println!("自定义词汇处理结果: {:?}", pos_tags);
}

停用词过滤

use lingua_malay_language_model::MalayLanguageModel;

fn main() {
    let model = MalayLanguageModel::new();
    let text = "Saya pergi ke pasar untuk membeli ikan.";
    let filtered = model.remove_stopwords(text);
    
    println!("过滤停用词后: {}", filtered);
    // 输出: "pergi pasar membeli ikan."
}

性能提示

  1. 模型初始化可能较慢,建议作为长期运行的服务时只初始化一次
  2. 对于大批量文本处理,考虑使用批处理方法
  3. 可以缓存频繁使用的分析结果

注意事项

  • 该库主要针对标准马来语,方言支持可能有限
  • 某些功能可能需要互联网连接以下载额外的模型数据
  • 处理非常长的文本时可能需要分割文本以获得最佳性能

完整示例代码

下面是一个综合使用lingua-malay-language-model库的完整示例:

use lingua_malay_language_model::MalayLanguageModel;

fn main() {
    // 初始化模型
    let mut model = MalayLanguageModel::new();
    
    // 示例1:分词
    let text1 = "Saya belajar bahasa Rust.";
    let tokens = model.tokenize(text1);
    println!("分词示例:");
    println!("输入: {}", text1);
    println!("输出: {:?}\n", tokens);
    
    // 示例2:词性标注
    let text2 = "Mereka sedang bermain bola di taman.";
    let pos_tags = model.pos_tagging(text2);
    println!("词性标注示例:");
    println!("输入: {}", text2);
    println!("输出: {:?}\n", pos_tags);
    
    // 示例3:情感分析
    let text3 = "Saya kecewa dengan keputusan ini.";
    let sentiment = model.analyze_sentiment(text3);
    println!("情感分析示例:");
    println!("输入: {}", text3);
    println!("输出: {:?}\n", sentiment);
    
    // 示例4:关键词提取
    let text4 = "Universiti Malaya adalah universiti tertua di Malaysia yang terletak di Kuala Lumpur.";
    let keywords = model.extract_keywords(text4, 3);
    println!("关键词提取示例:");
    println!("输入: {}", text4);
    println!("输出: {:?}\n", keywords);
    
    // 示例5:自定义词典
    model.add_custom_word("Rust", Some("NOUN"), None);
    let custom_text = "Rust adalah bahasa pengaturcaraan yang selamat.";
    let custom_pos = model.pos_tagging(custom_text);
    println!("自定义词典示例:");
    println!("输入: {}", custom_text);
    println!("输出: {:?}\n", custom_pos);
    
    // 示例6:停用词过滤
    let stop_text = "Saya ingin pergi ke kedai buku itu.";
    let filtered = model.remove_stopwords(stop_text);
    println!("停用词过滤示例:");
    println!("输入: {}", stop_text);
    println!("输出: {}\n", filtered);
}

这个完整示例展示了lingua-malay-language-model库的主要功能,包括分词、词性标注、情感分析、关键词提取、自定义词典和停用词过滤。您可以根据实际需求调整代码和输入文本。

希望这个库能帮助您在Rust项目中轻松处理马来语文本分析任务!

回到顶部