diff --git a/config.toml b/config.toml index 9b3d8cf5dc4abeac8982d0454f700d5a88ecda1f..3ec56d632914b71d2d8d07dbd43bf4bbf7041629 100644 --- a/config.toml +++ b/config.toml @@ -1,4 +1,4 @@ auth = "12345" -term_frequency_threshold = 2 +term_frequency_threshold = 1 max_predict_count = 5 blocked_words = "" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index df9a833e7feda119f3e0c5f6c7d049c56e46c795..f58c712321a93d949fd212f10f706f5b5097bf6b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,10 +38,9 @@ fn main() -> Result<(), io::Error> { } } - let markov_chain = basic_set::from_file_path_and_config("../../data/data.csv",config.clone()) - .unwrap_or(basic_set::from_file_path_and_config("data/data.csv",config.clone()) - .unwrap_or(basic_set::from_file_path_and_config("data.csv",config.clone()) - .unwrap_or(basic_set::SetPredictor::new()))); + let markov_chain = basic_markov::from_file_path_and_config( + vec!["../../data/data.csv","data/data.csv","data.csv"],config.clone()) + .unwrap_or(basic_markov::MarkovChainPredictor::new()); // let term_frequency_threshold = match config.get("term_frequency_threshold") { diff --git a/src/predictors/basic_markov.rs b/src/predictors/basic_markov.rs index 7839581a15c4f17504f6cef217695567967dee0b..eebc5aae2b30ed6fa4eec79551e6bbcbd09e65e5 100644 --- a/src/predictors/basic_markov.rs +++ b/src/predictors/basic_markov.rs @@ -116,20 +116,32 @@ pub fn from_file_path(file_path: &str) -> Result<MarkovChainPredictor, std::io:: } -pub fn from_file_path_and_config(file_path: &str, config: HashMap<String, impl Into<String>>) -> Result<MarkovChainPredictor, std::io::Error> { +pub fn from_file_path_and_config(file_paths: Vec<&str>, config: HashMap<String, impl Into<String>>) -> Result<MarkovChainPredictor, std::io::Error> { let mut configuration = HashMap::new(); for (key, value) in config { configuration.insert(key, value.into()); } - let file = File::open(file_path)?; - let mut reader = ReaderBuilder::new().from_reader(file); + let mut markov_chain: MarkovChainPredictor = MarkovChainPredictor::new(); markov_chain.configuration = configuration; - for result in reader.records() { - let record = result?; - if let Some(query) = record.get(5) { - markov_chain.update(query); + for path in file_paths { + println!("Trying to open data file at {}",path); + match File::open(path) { + Ok(file) => { + println!("Reading data file..."); + let mut reader = ReaderBuilder::new().from_reader(file); + + for result in reader.records() { + let record = result?; + if let Some(query) = record.get(5) { + markov_chain.update(query); + } + } + }, + Err(e) => { + println!("Error while reading: {}",e); + } } } diff --git a/src/predictors/basic_set.rs b/src/predictors/basic_set.rs index ee009339db7a7d934a006cd707a35f8dea07e53e..43d5fd84aae850577cce112e41946a54d574351b 100644 --- a/src/predictors/basic_set.rs +++ b/src/predictors/basic_set.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, fs::File}; +use std::{collections::HashMap, f32::consts::E, fs::File}; use csv::ReaderBuilder; @@ -104,22 +104,32 @@ pub fn from_file_path(file_path: &str) -> Result<SetPredictor, std::io::Error> { } -pub fn from_file_path_and_config(file_path: &str, config: HashMap<String, impl Into<String>>) -> Result<SetPredictor, std::io::Error> { +pub fn from_file_path_and_config(file_paths: Vec<&str>, config: HashMap<String, impl Into<String>>) -> Result<SetPredictor, std::io::Error> { let mut configuration = HashMap::new(); for (key, value) in config { configuration.insert(key, value.into()); } - println!("Trying to open data file at {}",file_path); - let file = File::open(file_path)?; - println!("Reading data file..."); - let mut reader = ReaderBuilder::new().from_reader(file); + let mut markov_chain: SetPredictor = SetPredictor::new(); markov_chain.configuration = configuration; - for result in reader.records() { - let record = result?; - if let Some(query) = record.get(5) { - markov_chain.update(query); + for path in file_paths { + println!("Trying to open data file at {}",path); + match File::open(path) { + Ok(file) => { + println!("Reading data file..."); + let mut reader = ReaderBuilder::new().from_reader(file); + + for result in reader.records() { + let record = result?; + if let Some(query) = record.get(5) { + markov_chain.update(query); + } + } + }, + Err(e) => { + println!("Error while reading: {}",e); + } } }