///|
fn main {
let training_segmenter = @segment.DictSegmenter::new()
let classifier = @analysis.NaiveBayesClassifier::new()
classifier.train(
"technology",
training_segmenter.segment("MoonBit 自然语言处理 分词 关键词"),
)
classifier.train(
"everyday",
training_segmenter.segment("天气 公园 散步"),
)
let text = "MoonBit 支持高效的自然语言处理。MoonNLP 提供分词和关键词提取。"
let pipeline = @analysis.DocumentPipeline::with_classifier(classifier)
match pipeline.analyze(text, 3, 2) {
Ok(analysis) => {
println("sentences=" + analysis.sentences.length().to_string())
println("tokens=" + analysis.tokens.length().to_string())
println("keywords=" + format_keywords(analysis.keywords))
println("summary=" + format_strings(analysis.summary))
println(
"classification=" + format_classification(analysis.classification),
)
}
Err(message) => println("document analysis error=" + message)
}
}
///|
fn format_keywords(values : Array[(String, Double)]) -> String {
let result = StringBuilder()
for index in 0.. 0 {
result.write_string(", ")
}
result.write_string(word)
}
result.to_string()
}
///|
fn format_strings(values : Array[String]) -> String {
let result = StringBuilder()
for index in 0.. 0 {
result.write_string(" | ")
}
result.write_string(values[index])
}
result.to_string()
}
///|
fn format_classification(value : String?) -> String {
match value {
Some(label) => label
None => "none"
}
}