Spaces:
Configuration error
Configuration error
| from abc import ABC | |
| from modules.module_WordExplorer import WordExplorer | |
| from modules.module_BiasExplorer import WordBiasExplorer, WEBiasExplorer2Spaces, WEBiasExplorer4Spaces | |
| from typing import List, Tuple | |
| class Connector(ABC): | |
| def parse_word( | |
| self, | |
| word: str | |
| ) -> str: | |
| return word.lower().strip() | |
| def parse_words( | |
| self, | |
| array_in_string: str | |
| ) -> List[str]: | |
| words = array_in_string.strip() | |
| if not words: | |
| return [] | |
| words = [ | |
| self.parse_word(word) | |
| for word in words.split(',') if word.strip() != '' | |
| ] | |
| return words | |
| def process_error( | |
| self, | |
| err: str | |
| ) -> str: | |
| if err: | |
| err = "<center><h3>" + err + "</h3></center>" | |
| return err | |
| class WordExplorerConnector(Connector): | |
| def __init__( | |
| self, | |
| **kwargs | |
| ) -> None: | |
| embedding = kwargs.get('embedding', None) | |
| if embedding is None: | |
| raise KeyError | |
| self.word_explorer = WordExplorer( | |
| embedding=embedding | |
| ) | |
| def plot_proyection_2d( | |
| self, | |
| wordlist_0: str, | |
| wordlist_1: str, | |
| wordlist_2: str, | |
| wordlist_3: str, | |
| wordlist_4: str, | |
| color_wordlist_0: str, | |
| color_wordlist_1: str, | |
| color_wordlist_2: str, | |
| color_wordlist_3: str, | |
| color_wordlist_4: str, | |
| n_alpha: float, | |
| fontsize: int, | |
| n_neighbors: int | |
| ) -> Tuple: | |
| err = "" | |
| neighbors_method = 'sklearn' | |
| wordlist_0 = self.parse_words(wordlist_0) | |
| wordlist_1 = self.parse_words(wordlist_1) | |
| wordlist_2 = self.parse_words(wordlist_2) | |
| wordlist_3 = self.parse_words(wordlist_3) | |
| wordlist_4 = self.parse_words(wordlist_4) | |
| if not (wordlist_0 or wordlist_1 or wordlist_2 or wordlist_1 or wordlist_4): | |
| err = self.process_error("Ingresa al menos 1 palabras para continuar") | |
| return None, err | |
| err = self.word_explorer.check_oov( | |
| [wordlist_0, wordlist_1, wordlist_2, wordlist_3, wordlist_4] | |
| ) | |
| if err: | |
| return None, self.process_error(err) | |
| fig = self.word_explorer.plot_projections_2d( | |
| wordlist_0, | |
| wordlist_1, | |
| wordlist_2, | |
| wordlist_3, | |
| wordlist_4, | |
| color_wordlist_0=color_wordlist_0, | |
| color_wordlist_1=color_wordlist_1, | |
| color_wordlist_2=color_wordlist_2, | |
| color_wordlist_3=color_wordlist_3, | |
| color_wordlist_4=color_wordlist_4, | |
| n_alpha=n_alpha, | |
| fontsize=fontsize, | |
| n_neighbors=n_neighbors, | |
| nn_method = neighbors_method | |
| ) | |
| return fig, self.process_error(err) | |
| class BiasWordExplorerConnector(Connector): | |
| def __init__( | |
| self, | |
| **kwargs | |
| ) -> None: | |
| embedding = kwargs.get('embedding', None) | |
| if embedding is None: | |
| raise KeyError | |
| self.bias_word_explorer_2_spaces = WEBiasExplorer2Spaces( | |
| embedding=embedding | |
| ) | |
| self.bias_word_explorer_4_spaces = WEBiasExplorer4Spaces( | |
| embedding=embedding | |
| ) | |
| def calculate_bias_2d( | |
| self, | |
| wordlist_1: str, | |
| wordlist_2: str, | |
| to_diagnose_list: str | |
| ) -> Tuple: | |
| err = "" | |
| wordlist_1 = self.parse_words(wordlist_1) | |
| wordlist_2 = self.parse_words(wordlist_2) | |
| to_diagnose_list = self.parse_words(to_diagnose_list) | |
| word_lists = [wordlist_1, wordlist_2, to_diagnose_list] | |
| for _list in word_lists: | |
| if not _list: | |
| err = "Debe ingresar al menos 1 palabra en las lista de palabras a diagnosticar, sesgo 1 y sesgo 2" | |
| if err: | |
| return None, self.process_error(err) | |
| err = self.bias_word_explorer_2_spaces.check_oov(word_lists) | |
| if err: | |
| return None, self.process_error(err) | |
| fig = self.bias_word_explorer_2_spaces.calculate_bias( | |
| to_diagnose_list, | |
| wordlist_1, | |
| wordlist_2 | |
| ) | |
| return fig, self.process_error(err) | |
| def calculate_bias_4d( | |
| self, | |
| wordlist_1: str, | |
| wordlist_2: str, | |
| wordlist_3: str, | |
| wordlist_4: str, | |
| to_diagnose_list: str | |
| ) -> Tuple: | |
| err = "" | |
| wordlist_1 = self.parse_words(wordlist_1) | |
| wordlist_2 = self.parse_words(wordlist_2) | |
| wordlist_3 = self.parse_words(wordlist_3) | |
| wordlist_4 = self.parse_words(wordlist_4) | |
| to_diagnose_list = self.parse_words(to_diagnose_list) | |
| wordlists = [wordlist_1, wordlist_2, wordlist_3, wordlist_4, to_diagnose_list] | |
| for _list in wordlists: | |
| if not _list: | |
| err = "Debe ingresar al menos 1 palabra en todas las listas para graficar en 4 espacios" | |
| if err: | |
| return None, self.process_error(err) | |
| err = self.bias_word_explorer_4_spaces.check_oov(wordlists) | |
| if err: | |
| return None, self.process_error(err) | |
| fig = self.bias_word_explorer_4_spaces.calculate_bias( | |
| to_diagnose_list, | |
| wordlist_1, | |
| wordlist_2, | |
| wordlist_3, | |
| wordlist_4 | |
| ) | |
| return fig, self.process_error(err) |