|
from service_dops_api.dops_config import ServiceDopsConfig |
|
import pandas as pd |
|
class DopsClassifier: |
|
|
|
def __init__(self,config: ServiceDopsConfig): |
|
self.config = config |
|
|
|
def run_regular_search(self,text,dop_name): |
|
result = {} |
|
options_patterns = self.config.option_patterns_dict[dop_name] |
|
result = {key: 1 if value.search(text) else 0 for key, value in options_patterns.items()} |
|
if 1 not in result.values(): |
|
result[self.config.dops_default_values[dop_name]] = 1 |
|
else: |
|
result[self.config.dops_default_values[dop_name]] = 0 |
|
return result |
|
|
|
def convert_search_to_human(self,dict_from_search,dop_name): |
|
result = {} |
|
result['dop_name'] = dop_name |
|
result['values'] = [key for key, value in dict_from_search.items() if value == 1] |
|
result['default_values'] = list(dict_from_search.keys()) |
|
return result |
|
|
|
def run_all_dops(self,text): |
|
all_dops = self.config.option_patterns_dict.keys() |
|
result_list = [] |
|
for dop in all_dops: |
|
temp_dop = self.run_regular_search(text,dop) |
|
result_list.append(self.convert_search_to_human(temp_dop,dop)) |
|
return result_list |
|
|
|
def run_all_dops_1_0(self,text): |
|
all_dops = self.config.option_patterns_dict.keys() |
|
dops = {} |
|
for dop in all_dops: |
|
temp_dop = self.run_regular_search(text,dop) |
|
dops = {**dops,**temp_dop} |
|
return pd.json_normalize(dops) |