rust-bert 0.23.0

Ready-to-use NLP pipelines and language models
Documentation
extern crate anyhow;

use rust_bert::pipelines::keywords_extraction::{
    KeywordExtractionConfig, KeywordExtractionModel, KeywordScorerType,
};
use rust_bert::pipelines::sentence_embeddings::{
    SentenceEmbeddingsConfig, SentenceEmbeddingsModelType,
};

fn main() -> anyhow::Result<()> {
    let keyword_extraction_config = KeywordExtractionConfig {
        sentence_embeddings_config: SentenceEmbeddingsConfig::from(
            SentenceEmbeddingsModelType::AllMiniLmL6V2,
        ),
        scorer_type: KeywordScorerType::MaxSum,
        ngram_range: (1, 1),
        num_keywords: 5,
        ..Default::default()
    };

    let keyword_extraction_model = KeywordExtractionModel::new(keyword_extraction_config)?;

    let input = "Rust is a multi-paradigm, general-purpose programming language. \
    Rust emphasizes performance, type safety, and concurrency. Rust enforces memory safety—that is, \
    that all references point to valid memory—without requiring the use of a garbage collector or \
    reference counting present in other memory-safe languages. To simultaneously enforce \
    memory safety and prevent concurrent data races, Rust's borrow checker tracks the object lifetime \
    and variable scope of all references in a program during compilation. Rust is popular for \
    systems programming but also offers high-level features including functional programming constructs.";

    // Credits: Wikimedia https://en.wikipedia.org/wiki/Rust_(programming_language)

    let keywords = keyword_extraction_model.predict(&[input])?;
    for keyword_list in keywords {
        for keyword in keyword_list {
            println!("{:?}, {:?}", keyword.text, keyword.score);
        }
    }
    Ok(())
}