File size: 1,520 Bytes
6371026
d82e758
6371026
 
 
 
 
 
 
 
 
 
 
 
 
 
 
527b3f6
 
 
 
 
 
898db63
6371026
 
527b3f6
6371026
 
527b3f6
d82e758
898db63
d82e758
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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)