extern crate underthesea_core; #[cfg(test)] mod tests { use std::collections::HashSet; use underthesea_core::featurizers::CRFFeaturizer; #[test] fn test_crf_featurizer() { let sentences = vec![ vec![ vec!["Messi".to_string(), "X".to_string()], vec!["giành".to_string(), "X".to_string()], vec!["quả".to_string(), "X".to_string()], vec!["Bóng".to_string(), "X".to_string()], vec!["Đá".to_string(), "X".to_string()], vec!["1".to_string(), "X".to_string()], ] ]; let feature_configs = vec![ "T[0]".to_string(), "T[0].is_in_dict".to_string() ]; let mut dictionary = HashSet::new(); dictionary.insert("giành".to_string()); dictionary.insert("quả".to_string()); dictionary.insert("bóng".to_string()); let new_featurizer = CRFFeaturizer::new(feature_configs, dictionary); assert_eq!(new_featurizer.feature_configs[0], "T[0]"); let expected: Vec>> = vec![ vec![ vec!["T[0]=Messi".to_string(), "T[0].is_in_dict=False".to_string()], vec!["T[0]=giành".to_string(), "T[0].is_in_dict=True".to_string()], vec!["T[0]=quả".to_string(), "T[0].is_in_dict=True".to_string()], vec!["T[0]=Bóng".to_string(), "T[0].is_in_dict=True".to_string()], vec!["T[0]=Đá".to_string(), "T[0].is_in_dict=False".to_string()], vec!["T[0]=1".to_string(), "T[0].is_in_dict=False".to_string()] ], ]; let output = new_featurizer.process(sentences); assert_eq!(output, expected); } }