use rnltk::sentiment::{SentimentModel, CustomWords}; use rnltk::token; use rnltk::stem; struct Setup { custom_words: CustomWords } impl Setup { fn new() -> Self { let custom_word_dict: &str = include_str!("../test_data/test.json"); let custom_words: CustomWords = serde_json::from_str(custom_word_dict).unwrap(); Setup { custom_words } } } #[test] fn sentiment_from_tokenized_sentence() { let setup = Setup::new(); let sentiment = SentimentModel::new(setup.custom_words); let text = "I betrayed the bees!"; let tokenized_text = token::tokenize_sentence(text); let tokens: Vec<&str> = tokenized_text.iter().map(|token| &**token).collect(); let sentiment_description = sentiment.get_term_vector_description(&tokens); let description = "stressed"; assert_eq!(sentiment_description, description); } #[test] fn stems_from_tokenized_sentence() { let text = "I betrayed the bees!"; let tokenized_text = token::tokenize_sentence(text); let tokens: Vec<&str> = tokenized_text.iter().map(|token| &**token).collect(); let stems: Vec = tokens.iter().map(|token| stem::get(token).unwrap()).collect(); let stems: Vec<&str> = stems.iter().map(|stem| &**stem).collect(); let stemmed_tokens = vec!["i", "betrai", "the", "bee"]; assert_eq!(stems, stemmed_tokens); }