Rust自然语言处理库lingua-croatian-language-model的使用,支持克罗地亚语识别与文本处理的NLP模型

Rust自然语言处理库lingua-croatian-language-model的使用,支持克罗地亚语识别与文本处理的NLP模型

克罗地亚语语言模型

这是用于克罗地亚语的语言模型,由Lingua使用,它是Rust生态系统中最准确的自然语言检测库。

变更日志

版本1.2.0

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

版本1.1.0

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

安装

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

cargo add lingua-croatian-language-model

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

lingua-croatian-language-model = "1.2.0"

使用示例

以下是使用lingua-croatian-language-model进行克罗地亚语识别的完整示例:

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

fn main() {
    // 创建语言检测器并包含克罗地亚语
    let languages = vec![Language::Croatian];
    let detector: LanguageDetector = LanguageDetectorBuilder::from_languages(&languages).build();
    
    // 待检测的克罗地亚语文本
    let croatian_text = "Ovo je primjer teksta na hrvatskom jeziku.";
    
    // 检测语言
    let detected_language = detector.detect_language_of(croatian_text);
    
    // 输出结果
    match detected_language {
        Some(language) => println!("检测到的语言: {:?}", language),
        None => println!("无法确定语言"),
    }
}

完整示例代码

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

fn main() {
    // 1. 初始化检测器
    let languages = vec![
        Language::English,
        Language::French,
        Language::German,
        Language::Spanish,
        Language::Croatian,  // 包含克罗地亚语
    ];
    
    let detector = LanguageDetectorBuilder::from_languages(&languages)
        .with_preloaded_language_models()
        .build();
    
    // 2. 准备测试数据
    let texts = vec![
        ("English text", Language::English),
        ("Texte en français", Language::French),
        ("Deutscher Text", Language::German),
        ("Texto en español", Language::Spanish),
        ("Ovo je primjer teksta na hrvatskom jeziku", Language::Croatian),
    ];
    
    // 3. 测试并输出结果
    for (text, expected_language) in texts {
        let detected_language = detector.detect_language_of(text);
        println!("文本: {}", text);
        println!("预期语言: {:?}", expected_language);
        println!("检测结果: {:?}", detected_language);
        println!("---");
    }
    
    // 4. 置信度检测示例
    let croatian_sentence = "Dobar dan, kako ste danas?";
    let confidence_values = detector.compute_language_confidence_values(croatian_sentence);
    
    println!("\n置信度分析:");
    for (language, confidence) in confidence_values {
        println!("{:?}: {:.4}", language, confidence);
    }
}

其他信息

  • 许可证: Apache-2.0
  • 版本: 1.2.0
  • 大小: 1.72 MiB
  • 分类: 文本处理

1 回复

lingua-croatian-language-model:克罗地亚语NLP处理库

lingua-croatian-language-model 是 Rust 语言中一个专门用于克罗地亚语自然语言处理的库,提供语言识别和文本处理功能。它是 lingua 语言检测库的克罗地亚语扩展模型。

主要功能

  1. 克罗地亚语文本检测
  2. 克罗地亚语文本处理
  3. 与其他语言的高精度区分

安装方法

Cargo.toml 中添加依赖:

[dependencies]
lingua = "1.3"
lingua-croatian-language-model = "0.1"

基本使用方法

1. 语言检测

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

fn main() {
    let languages = vec![Language::English, CROATIAN];
    let detector: LanguageDetector = LanguageDetectorBuilder::from_languages(&languages).build();
    
    let text = "Ovo je primjer teksta na hrvatskom jeziku.";
    
    match detector.detect_language_of(text) {
        Some(language) => println!("检测到的语言: {:?}", language),
        None => println!("无法确定语言"),
    }
}

2. 多语言混合检测

use lingua::{LanguageDetectorBuilder, Language};
use lingua_croatian_language_model::CROATIAN;

fn main() {
    let detector = LanguageDetectorBuilder::from_all_languages()
        .with_preloaded_language_models()
        .build();
    
    let croatian_text = "Dobar dan, kako ste danas?";
    let english_text = "This is an example text in English.";
    let mixed_text = "Ovo je mješoviti tekst. This is a mixed text.";
    
    println!("克罗地亚语检测: {:?}", detector.detect_language_of(croatian_text));
    println!("英语检测: {:?}", detector.detect_language_of(english_text));
    println!("混合文本检测: {:?}", detector.detect_language_of(mixed_text));
}

3. 置信度检测

use lingua::{LanguageDetectorBuilder, Language};
use lingua_croatian_language_model::CROATIAN;

fn main() {
    let languages = vec![Language::English, CROATIAN];
    let detector = LanguageDetectorBuilder::from_languages(&languages)
        .with_preloaded_language_models()
        .build();
    
    let text = "Zagreb je glavni grad Hrvatske.";
    
    let confidence_values = detector.compute_language_confidence_values(text);
    
    for (language, confidence) in confidence_values {
        println!("{:?}: {:.4}", language, confidence);
    }
}

高级功能

批量检测

use lingua::{LanguageDetectorBuilder, Language};
use lingua_croatian_language_model::CROATIAN;

fn main() {
    let detector = LanguageDetectorBuilder::from_all_languages()
        .with_preloaded_language_models()
        .build();
    
    let texts = vec![
        "Ovo je tekst na hrvatskom.",
        "This is English text.",
        "Ovo je mješoviti text. With some English.",
    ];
    
    let results = detector.detect_languages_in(texts);
    
    for (i, language) in results.into_iter().enumerate() {
        println!("文本 {}: {:?}", i+1, language);
    }
}

性能优化

对于大量文本处理,可以预先加载语言模型:

use lingua::{LanguageDetectorBuilder, Language};
use lingua_croatian_language_model::CROATIAN;

fn main() {
    let detector = LanguageDetectorBuilder::from_languages(&[CROATIAN, Language::English])
        .with_preloaded_language_models()
        .build();
    
    // 后续检测会更快
}

注意事项

  1. 克罗地亚语与塞尔维亚语、波斯尼亚语等相似语言可能有混淆
  2. 短文本检测准确度可能较低
  3. 专业术语或方言可能影响检测结果

这个库为Rust开发者提供了处理克罗地亚语文本的便捷工具,特别适合需要多语言支持的应用场景。

完整示例代码

//! 克罗地亚语NLP处理完整示例
use lingua::{Language, LanguageDetector, LanguageDetectorBuilder};
use lingua_croatian_language_model::CROATIAN;

fn main() {
    // 1. 初始化语言检测器
    let languages = vec![
        Language::English,
        Language::Spanish,
        CROATIAN,
        Language::French,
        Language::German
    ];
    
    let detector: LanguageDetector = LanguageDetectorBuilder::from_languages(&languages)
        .with_preloaded_language_models()
        .build();
    
    // 2. 检测单个文本的语言
    let croatian_text = "Danas je lijep dan u Zagrebu.";
    if let Some(lang) = detector.detect_language_of(croatian_text) {
        println!("检测到语言: {:?}", lang);
    }
    
    // 3. 获取置信度分数
    let mixed_text = "Ovo je tekst na hrvatskom. This is English text.";
    let confidences = detector.compute_language_confidence_values(mixed_text);
    println!("\n语言置信度:");
    for (lang, score) in confidences {
        println!("{:?}: {:.2}%", lang, score * 100.0);
    }
    
    // 4. 批量检测多语言文本
    let texts = vec![
        "Bok! Kako si danas?",
        "Good morning! How are you?",
        "Dobro jutro. Have a nice day!",
        "Ovo je kombinacija hrvatskog i engleskog."
    ];
    
    println!("\n批量检测结果:");
    for (i, result) in detector.detect_languages_in(texts).into_iter().enumerate() {
        println!("文本 {}: {:?}", i + 1, result);
    }
    
    // 5. 性能优化示例
    let optimized_detector = LanguageDetectorBuilder::from_languages(&[CROATIAN, Language::English])
        .with_preloaded_language_models()
        .build();
    
    let long_text = std::iter::repeat("Ovo je dugi hrvatski tekst. ")
        .take(100)
        .collect::<String>();
    
    println!("\n优化后检测结果:");
    println!("{:?}", optimized_detector.detect_language_of(&long_text));
}

这个完整示例演示了:

  1. 初始化支持多种语言(包括克罗地亚语)的检测器
  2. 单个文本语言检测
  3. 获取检测结果的置信度分数
  4. 批量检测多个文本
  5. 性能优化后的检测器使用

输出结果会显示每个文本的检测结果以及对应的置信度分数。

回到顶部