Rust葡萄牙语自然语言处理库lingua-portuguese-language-model的使用,支持高效文本分析与语言模型处理
Rust葡萄牙语自然语言处理库lingua-portuguese-language-model的使用,支持高效文本分析与语言模型处理
Portuguese language model for Lingua
这是用于葡萄牙语的语言模型,被Lingua使用。Lingua是Rust生态系统中最准确的自然语言检测库。
变更日志
版本1.2.0
- 通过包含独特和最常见的ngrams来增强语言模型,以支持独立于其他语言的绝对置信度指标。
版本1.1.0
- 语言模型文件现在使用Brotli算法压缩,平均减少了15%的文件大小。
安装
在项目目录中运行以下Cargo命令:
cargo add lingua-portuguese-language-model
或者在Cargo.toml中添加以下行:
lingua-portuguese-language-model = "1.2.0"
完整使用示例
use lingua::{Language, LanguageDetector, LanguageDetectorBuilder};
use lingua_portuguese_language_model::PORTUGUESE;
fn main() {
// 创建语言检测器,包含葡萄牙语和其他可选语言
let languages = vec![Language::Portuguese, Language::English, Language::Spanish];
let detector: LanguageDetector = LanguageDetectorBuilder::from_languages(&languages)
.with_preloaded_language_models()
.build();
// 要检测的葡萄牙语文本
let text = "Olá, como você está? Esta é uma frase em português.";
// 检测语言
let detected_language = detector.detect_language_of(text);
match detected_language {
Some(language) => println!("检测到的语言: {:?}", language),
None => println!("无法确定语言"),
}
// 计算所有语言的置信度
let confidence_values = detector.compute_language_confidence_values(text);
println!("语言置信度:");
for (language, confidence) in confidence_values {
println!("{:?}: {:.4}", language, confidence);
}
}
技术细节
- 文件大小: 1.19 MiB
- 许可证: Apache-2.0
- 分类: 文本处理(Text processing)
扩展完整示例
use lingua::{Language, LanguageDetector, LanguageDetectorBuilder};
use lingua_portuguese_language_model::PORTUGUESE;
fn main() {
// 初始化语言检测器,支持多种语言
let languages = vec![
Language::Portuguese,
Language::English,
Language::Spanish,
Language::French,
Language::German
];
let detector = LanguageDetectorBuilder::from_languages(&languages)
.with_preloaded_language_models()
.build();
// 测试多个文本样本
let samples = vec![
("葡萄牙语", "O Brasil é um país lindo e diversificado."),
("英语", "The quick brown fox jumps over the lazy dog"),
("西班牙语", "El niño juega en el parque"),
("混合文本", "Olá, hello, bonjour"),
];
for (desc, text) in samples {
println!("\n分析文本: {}", desc);
println!("文本内容: {}", text);
// 检测主要语言
if let Some(lang) = detector.detect_language_of(text) {
println!("主要语言: {:?}", lang);
} else {
println!("无法确定主要语言");
}
// 获取所有语言的置信度
let confidences = detector.compute_language_confidence_values(text);
println!("详细置信度:");
for (lang, conf) in confidences {
println!(" {:?}: {:.2}%", lang, conf * 100.0);
}
}
// 批量检测示例
let batch_texts = vec![
"Bom dia, como vai você?",
"Good morning, how are you?",
"Buenos días, ¿cómo estás?"
];
println!("\n批量检测结果:");
for result in detector.detect_languages_in(batch_texts) {
match result {
Some(lang) => println!("检测到语言: {:?}", lang),
None => println!("无法确定语言"),
}
}
}
1 回复