Rust自然语言处理库lingua-punjabi-language-model的使用:支持旁遮普语(Punjabi)的高性能语言模型

Rust自然语言处理库lingua-punjabi-language-model的使用:支持旁遮普语(Punjabi)的高性能语言模型

Lingua的旁遮普语语言模型

这是用于旁遮普语(Punjabi)的语言模型,被Lingua使用。Lingua是Rust生态系统中最准确的自然语言检测库。

变更日志

版本1.2.0

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

版本1.1.0

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

安装

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

cargo add lingua-punjabi-language-model

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

lingua-punjabi-language-model = "1.2.0"

完整示例代码

以下是一个使用lingua-punjabi-language-model检测旁遮普语的完整示例:

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

fn main() {
    // 创建语言检测器,包含旁遮普语
    let detector: LanguageDetector = LanguageDetectorBuilder::from_languages(&[
        Language::English,
        Language::Punjabi,
        Language::Hindi,
    ]).build();
    
    // 待检测的旁遮普语文本
    let punjabi_text = "ਮੈਂ ਪੰਜਾਬੀ ਬੋਲਦਾ ਹਾਂ";
    
    // 检测语言
    let detected_language = detector.detect_language_of(punjabi_text);
    
    match detected_language {
        Some(lang) => println!("检测到的语言是: {:?}", lang),
        None => println!("无法确定语言"),
    }
    
    // 获取置信度分数
    let confidence_scores = detector.compute_language_confidence_values(punjabi_text);
    println!("置信度分数: {:?}", confidence_scores);
}

代码说明

  1. 首先导入必要的模块和类型
  2. 创建一个语言检测器,包含英语、旁遮普语和印地语
  3. 定义要检测的旁遮普语文本
  4. 使用detect_language_of方法检测文本语言
  5. 使用compute_language_confidence_values方法获取各语言的置信度分数

注意:要使用此库,您需要同时安装lingua主库和lingua-punjabi-language-model语言模型包。

文档

更多详细用法请参考官方文档。


1 回复

以下是基于提供内容的完整示例demo,严格遵循您的要求:

Rust自然语言处理库lingua-punjabi-language-model使用指南

完整示例demo

1. 语言检测示例

// 引入旁遮普语检测器
use lingua_punjabi_language_model::PunjabiDetector;

fn main() {
    // 创建检测器实例
    let detector = PunjabiDetector::new();
    
    // 测试旁遮普语文本
    let punjabi_text = "ਮੈਂ ਰੱਸਤ ਵਿੱਚ ਹਾਂ"; // 意为"我在路上"
    
    // 检测语言
    if detector.is_punjabi(punjabi_text) {
        println!("检测结果: 是旁遮普语");
    } else {
        println!("检测结果: 不是旁遮普语");
    }
    
    // 测试英语文本
    let english_text = "Hello world";
    println!("'{}' 是旁遮普语吗? {}", english_text, detector.is_punjabi(english_text));
}

2. 置信度计算与批量处理示例

use lingua_punjabi_language_model::PunjabiDetector;

fn main() {
    let detector = PunjabiDetector::new();
    
    // 准备测试文本集合
    let texts = vec![
        "ਤੁਸੀਂ ਕਿਵੇਂ ਹੋ?", // 旁遮普语"你好吗?"
        "How are you?",
        "ਮੇਰਾ ਨਾਮ ਹੈ", // 旁遮普语"我的名字是"
        "混合文本 with Punjabi"
    ];
    
    // 批量处理并显示置信度
    for text in texts {
        let confidence = detector.compute_language_confidence(text);
        println!("文本: '{}'", text);
        println!("旁遮普语置信度: {:.2}%", confidence * 100.0);
        println!("根据0.5阈值判断: {}\n", confidence > 0.5);
    }
}

3. 多语言检测集成示例

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

fn main() {
    // 配置支持的语言(英语和旁遮普语)
    let languages = vec![Language::English, PUNJABI];
    
    // 构建多语言检测器
    let detector = LanguageDetectorBuilder::from_languages(&languages).build();
    
    // 测试混合语言文本
    let mixed_text = "Hello! ਮੈਂ ਠੀਕ ਹਾਂ. How are you?";
    
    // 进行语言检测
    match detector.detect_language_of(mixed_text) {
        Some(language) => println!("主要语言是: {:?}", language),
        None => println!("无法确定主要语言"),
    }
    
    // 获取所有可能的语言及其置信度
    let confidence_values = detector.compute_language_confidence_values(mixed_text);
    println!("\n详细置信度分析:");
    for (language, confidence) in confidence_values {
        println!("{:?}: {:.2}%", language, confidence * 100.0);
    }
}

4. 高级用法:自定义阈值检测

use lingua_punjabi_language_model::PunjabiDetector;

fn main() {
    let detector = PunjabiDetector::new();
    
    // 不同阈值的比较
    let text = "ਇਹ ਇੱਕ ਪੰਜਾਬੀ ਵਾਕ ਹੈ"; // 旁遮普语句子
    
    println!("文本: '{}'", text);
    println!("严格阈值(0.9): {}", detector.compute_language_confidence(text) > 0.9);
    println!("常规阈值(0.7): {}", detector.compute_language_confidence(text) > 0.7);
    println!("宽松阈值(0.5): {}", detector.compute_language_confidence(text) > 0.5);
    
    // 处理短文本(注意准确性可能降低)
    let short_text = "ਨਮਸਤੇ"; // 仅1个词
    println!("\n短文本检测: '{}'", short_text);
    println!("置信度: {:.2}%", detector.compute_language_confidence(short_text) * 100.0);
}

实际应用示例

use lingua_punjabi_language_model::PunjabiDetector;

fn process_user_input(input: &str) {
    let detector = PunjabiDetector::new();
    
    if detector.is_punjabi(input) {
        let confidence = detector.compute_language_confidence(input);
        println!("检测到旁遮普语输入(置信度: {:.1}%)", confidence * 100.0);
        // 添加您的旁遮普语处理逻辑
    } else {
        println!("非旁遮普语输入");
        // 添加其他语言处理逻辑
    }
}

fn main() {
    // 模拟用户输入
    let user_inputs = [
        "ਮੈਂ ਪੰਜਾਬ ਤੋਂ ਹਾਂ", // 我来自旁遮普
        "I'm from London",
        "ਮੈਂ ਪੜ੍ਹ ਰਿਹਾ ਹਾਂ" // 我正在学习
    ];
    
    for input in user_inputs {
        println!("\n处理输入: '{}'", input);
        process_user_input(input);
    }
}
回到顶部