def infer_file_callback(attr, old, new): # run inference on input data and current aspect/opinion lexicons in view global infer_data, stats, aspects SENTIMENT_OUT.mkdir(parents=True, exist_ok=True) df_aspect = pd.DataFrame.from_dict(asp_filter_src.data) aspect_col_list = ["Term", "Alias1", "Alias2", "Alias3"] df_aspect = df_aspect[aspect_col_list] df_aspect.to_csv(SENTIMENT_OUT / "aspects.csv", index=False, na_rep="NaN") df_opinion = pd.DataFrame.from_dict(op_filter_src.data) opinion_col_list = ["Term", "Score", "Polarity", "isAcquired"] df_opinion = df_opinion[opinion_col_list] df_opinion.to_csv(SENTIMENT_OUT / "opinions.csv", index=False, na_rep="NaN") solution = SentimentSolution() if len(infer_src.data["file_contents"]) == 1: infer_data = read_csv(infer_src, index_cols=0) file_name = infer_src.data["file_name"][0] raw_data_path = SENTIMENT_OUT / file_name infer_data.to_csv(raw_data_path, header=False) print(f"Running_SentimentInference on data...") text_status.value = "Running classification on data..." stats = solution.run( data=raw_data_path, aspect_lex=SENTIMENT_OUT / "aspects.csv", opinion_lex=SENTIMENT_OUT / "opinions.csv", ) else: f_contents = infer_src.data["file_contents"] f_names = infer_src.data["file_name"] raw_data_path = SENTIMENT_OUT / infer_src.data["file_name"][ 0].split("/")[0] if not os.path.exists(raw_data_path): os.makedirs(raw_data_path) for f_content, f_name in zip(f_contents, f_names): read_parsed_files(f_content, f_name) print(f"Running_SentimentInference on data...") text_status.value = "Running classification on data..." stats = solution.run( parsed_data=raw_data_path, aspect_lex=SENTIMENT_OUT / "aspects.csv", opinion_lex=SENTIMENT_OUT / "opinions.csv", ) aspects = pd.read_csv(SENTIMENT_OUT / "aspects.csv", encoding="utf-8")["Term"] text_status.value = "Classification completed" show_analysis()
def train_file_callback(attr, old, new): global train_data SENTIMENT_OUT.mkdir(parents=True, exist_ok=True) train = TrainSentiment(parse=True, rerank_model=None) if len(train_src.data["file_contents"]) == 1: train_data = read_csv(train_src, index_cols=0) file_name = train_src.data["file_name"][0] raw_data_path = SENTIMENT_OUT / file_name train_data.to_csv(raw_data_path, header=False) print(f"Running_SentimentTraining on data...") train.run(data=raw_data_path) else: f_contents = train_src.data["file_contents"] f_names = train_src.data["file_name"] raw_data_path = SENTIMENT_OUT / train_src.data["file_name"][ 0].split("/")[0] if not os.path.exists(raw_data_path): os.makedirs(raw_data_path) for f_content, f_name in zip(f_contents, f_names): read_parsed_files(f_content, f_name) print(f"Running_SentimentTraining on data...") train.run(parsed_data=raw_data_path) text_status.value = "Lexicon extraction completed" with io.open(AcquireTerms.acquired_aspect_terms_path, "r") as fp: aspect_data_csv = fp.read() file_data = base64.b64encode(str.encode(aspect_data_csv)) file_data = file_data.decode("utf-8") asp_src.data = { "file_contents": [file_data], "file_name": ["nameFile.csv"] } out_path = LEXICONS_OUT / "generated_opinion_lex_reranked.csv" with io.open(out_path, "r") as fp: opinion_data_csv = fp.read() file_data = base64.b64encode(str.encode(opinion_data_csv)) file_data = file_data.decode("utf-8") op_src.data = { "file_contents": [file_data], "file_name": ["nameFile.csv"] }