Exemplo n.º 1
0
 def __init__(self):
     self.frame = Frame()
     self.condition = Condition()
     self.port = 8080
     self.connected = False
     self.sample = ""
     self.max_sockets = 1024
     self.stream_id = b'12345'
     self.threads = []
Exemplo n.º 2
0
 def make_frame(self, code, callargs={}, global_names=None, local_names=None):
     """
     make frame
     :rtype: object
     """
     if global_names is not None and local_names is not None:
         local_names = global_names
     elif self.frames:
         global_names = self.current_frame.global_names
         local_names = {}
     else:
         global_names = local_names = {
             '__builtins__': __builtins__,
             '__name__': '__main__',
             '__doc__': None,
             '__package__': None,
         }
     local_names.update(callargs)
     frame = Frame(code, global_names, local_names, self.current_frame)
     return frame
Exemplo n.º 3
0
    def __init__(self):
        # create default personalities
        cm = Character_Manager()
        cm.save("character_default")
        cm.save("character_stable")
        cm.save("character_empathetic")
        cm.save("character_irascible")

        # set up logging
        logging.basicConfig(
            level=logging.INFO,
            filename='../logs/app.log',
            filemode="w",
            format='%(asctime)s %(name)s/%(levelname)s - - %(message)s',
            datefmt='%d.%m.%y %H:%M:%S')
        self.logger = logging.getLogger("controller")
        self.logger.setLevel(logging.INFO)

        # read config file and save values in variables
        self.config = configparser.ConfigParser()
        self.config.read("../config/config.ini")
        self.botname = self.config.get("default", "botname")
        self.username = self.config.get("default", "username")
        self.classifier_data = [
            self.config.get("net", "classifier_type"),
            self.config.get("net", "dataset"),
            self.config.get("net", "feature_set")
        ]
        self.logger.info("Conifg loaded: {}, {}, {}".format(
            self.botname, self.username, self.classifier_data))

        # initialize emotional variables
        self.lex_happiness = pd.read_csv("../lexica/clean_happiness.csv",
                                         delimiter=",",
                                         dtype={
                                             "text": str,
                                             "affect": str,
                                             "stems": str
                                         },
                                         float_precision='round_trip')
        self.lex_sadness = pd.read_csv("../lexica/clean_sadness.csv",
                                       delimiter=",",
                                       dtype={
                                           "text": str,
                                           "affect": str,
                                           "stems": str
                                       },
                                       float_precision='round_trip')
        self.lex_anger = pd.read_csv("../lexica/clean_anger.csv",
                                     delimiter=",",
                                     dtype={
                                         "text": str,
                                         "affect": str,
                                         "stems": str
                                     },
                                     float_precision='round_trip')
        self.lex_fear = pd.read_csv("../lexica/clean_fear.csv",
                                    delimiter=",",
                                    dtype={
                                        "text": str,
                                        "affect": str,
                                        "stems": str
                                    },
                                    float_precision='round_trip')
        self.LIST_OF_LEXICA = self.lex_happiness, self.lex_sadness, self.lex_anger, self.lex_fear
        self.list_happiness = self.lex_happiness["stems"].tolist()
        self.list_sadness = self.lex_sadness["stems"].tolist()
        self.list_anger = pd.Series(self.lex_anger["stems"].tolist())
        self.list_fear = self.lex_fear["stems"].tolist()
        self.lex_happiness_adj = pd.read_csv(
            "../lexica/clean_happiness_adj.csv",
            delimiter=",",
            dtype={
                "text": str,
                "intensity": float
            },
            float_precision='round_trip')
        self.lex_sadness_adj = pd.read_csv("../lexica/clean_happiness_adj.csv",
                                           delimiter=",",
                                           dtype={
                                               "text": str,
                                               "intensity": float
                                           },
                                           float_precision='round_trip')
        self.lex_anger_adj = pd.read_csv("../lexica/clean_happiness_adj.csv",
                                         delimiter=",",
                                         dtype={
                                             "text": str,
                                             "intensity": float
                                         },
                                         float_precision='round_trip')
        self.lex_fear_adj = pd.read_csv("../lexica/clean_happiness_adj.csv",
                                        delimiter=",",
                                        dtype={
                                            "text": str,
                                            "intensity": float
                                        },
                                        float_precision='round_trip')
        self.logger.info("Lexica loaded")

        # initialize ml-variables
        if self.config.getboolean("default", "firstlaunch"):
            # das md-model ist ca 80mb, das lg ca 1g
            # self.nlp = spacy.load("en_core_web_lg")
            self.nlp = spacy.load("en_core_web_md")
        else:
            self.nlp = spacy.load("../models/spacy")
        self.spell = SpellChecker()

        # create bot, responsible for generating answers and classifier, for analysing the input
        self.character = Character(
            self.config.getboolean("default", "firstlaunch"))
        self.classifier = Classifier(self.classifier_data, self.LIST_OF_LEXICA,
                                     self.nlp)
        self.bot = Bot(self.lex_happiness, self.lex_sadness, self.lex_anger,
                       self.lex_fear, self.list_happiness, self.list_sadness,
                       self.list_anger, self.list_fear, self.lex_happiness_adj,
                       self.lex_sadness_adj, self.lex_anger_adj,
                       self.lex_fear_adj, self.nlp)
        if self.config.getboolean("default", "firstlaunch"): self.bot.train()

        # create frame and update widgets with initial values
        self.frame = Frame(self.botname, self.character.get_emotional_state(),
                           self.character.get_emotional_history())
        self.frame.register_subscriber(self)
        self.frame.show()

        # save all session data after the frame is closed
        self.save_session()
        logging.shutdown()