From 34b429530fc99e72e3f3dea359e14c649cddef49 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 6 Dec 2021 22:13:06 -0300 Subject: [PATCH] Python --- python/data/EECCvirtual-Visa.pdf | Bin 0 -> 146822 bytes python/src/ai/dictionary.py | 285 +++++++++++++++++++++++++++++++ python/src/ai/models.py | 243 ++++++++++++++++++++++++++ python/src/ai/network.py | 123 +++++++++++++ python/src/ai/phrase.py | 102 +++++++++++ python/src/ai/word.py | 84 +++++++++ 6 files changed, 837 insertions(+) create mode 100644 python/data/EECCvirtual-Visa.pdf create mode 100644 python/src/ai/dictionary.py create mode 100644 python/src/ai/models.py create mode 100644 python/src/ai/network.py create mode 100644 python/src/ai/phrase.py create mode 100644 python/src/ai/word.py diff --git a/python/data/EECCvirtual-Visa.pdf b/python/data/EECCvirtual-Visa.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7ea5ef83eb3f28d55d88f4cdb01f6c97353a08ed GIT binary patch literal 146822 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%0AU`(L@ z?w7?z!L9Jc6Wb`s$Jc~=EGLJd6Swy3h#zFP8C`4hY-4iIrOn;J?=Lz*V-xh0m<#F9 z37U0&veQegr@c>4=!QRKd=dRA{9(iSOS$KfPV+w}t5(XlaaJ~Fv>(JGs!}|xesN~kLhuM7K^7!jY&W9HLx>-9 zEh8QV`<$NdMK8+|dA-HdLe`8w%I{{=@T(xOXmos_c+#G91+W4V{R?_=Dj7$j_BvQD z>*7#tp@#PSIsMzIOWQ*dXR54wM_2qU0~w3bZ*i=gLZJ!HPQ<)Pdd3L9&&edc=4Q_j zko!b!C_&YAxIsNazCY(C{DNoj=L6huJhvsMCflHS@X1=@7jv2uFF{0sijSpSkLMa zvYlDKxTcpsp5ok&UlWO&32UE8#dW!cP2{PqfAB>-mdKu`f*$=cs5$fO_8MO>a(KT% znXIs9mwKkkQBB&!6~_T8xkeVGDHau^=8`wisq#IYid7}vCa>V&9Zs*55l{ZEkUy^e z_>4s11q>{M6VMSbPZ||;P{)9-QKI*F779>@5jQ+=k%?^^hcqZ1kB?xAKW&Q@^+9RpqzBSHtR|)`CAvt! zsG2^VOA`Kivy~0X`;FN$07S$S&Z*eD!fYN|o82tMRYy{kJ`~U!Ol67(Wg)`Z;E@o& z4AB_4M@qVR3qPNU+snJirtf1y6x`14Avx)7YN;a7zT*T(sCrNQoUqA&LGem-f3Q@68MCu{BZu9g$|3UebxKer}nAZ`Q%Ir3f{H3G;v60 zm69$wxYlAqLcu17ZdyQ4p1`e@bF#U2KQlo4Y(lMMWRTa2aZp~3P_^YB2MB!AnNfK- z_to7;s8_bE-I<fm(ehby%tLD5c7@)cy0|;! z&y9q{``*TG3AW*dB55U|b9W^_54|gyk}WDvEsP22K%WH}ybFciR_UcR-)$88LMLa{ zAjETxTJ~Gr5V=O}y!Izv2HEOSR$o2R+7hMrJ-=&3t2~xXy!k#Cs8^}No+GQ+X{UqV zcb;L4r;8^Uv~2Ixl(&?!r@T<|;fX$}a2pl0$bMokdGK>2(d|rjr_#IDLY!_ueW#

cUhf&CKF@F5_j{_KojM7(){ zJu`zqoxKT{QoASla>K9PXi9D^JKM%Afg=19RzNh741QJ&k)BoX0cTEmZY@k=XRp-J zWJ9>_Iw|4QXKlG|(Q1R#;iP}1`C!hG0Y(bACNG#^l;C&x6>hgSWOhq9#D_>&Vl!JO zf#k0qr(2sBTrm_%w=BFNipoh7Jr25e4>J9ZI0EX_5uHKKCy~X5?RQ$kA_~d-#x6pYf_lZq>o`HxtzXqudC??ySvH@Nm#buzYaRti8Lsjw z#vsq=?Tta#2UkTu#LfWygEn@phP_dew`qQLA1%u5O4H%_N1}RnGra2KTtAp|i)DSI znBdJ4p+dn5*%<5NS?8kwT##*($pJ*gWnFa3MB8%pa9xTZeeCqG+jJ?&EJcs?VfGcFEs1BZ`Z9idNb{aaY`W@@<$_D!Lg^e`I zO!L@v!p`RhX1iahwmYk+xU{SrTd8wa7fE=QNG&={#bQ;CG9>cd7d}+o>;4tm;uLt- z=EYSi&G-?i2Z53xk!#~1q~lKd(MyrB6pP$C0~(n?TBnM^?y)@rc7=+TK02JTyL#YL0;RZq z<4v$y{m3`mz3Bhs(ZSGvcyw}--$Xix3`!a(D5Iz%D~zGcwQO9US^&6JwpMsBEloF5 zTMIK+0Qc{Pq?@a?qw_z{N*10Tj?U&T|FonrJiV)pqk{~Fd}c+0hN0`ZMdMPgH*q${%&!9gVrmTl2vef~+)?HMGVGj8zMxRFuDbbCp{$@a zxq6d%(q)zp050MlpWl$Q0o;xR2Myqq2($R%KlP~O2NnKS zQv<-D5IF3=@H}_6up}oD0)XL|`riek2*tSechCP8Ol0EkCxFAhWk5J4i1EApTLy-M z5y%@dAt*%X=2$Qo1`)cU2SUP;@S8F?1T*`8uK|R?AUD?lBfucw4LvXdiohI>|H21E zLclk%U;--0n|1)9;6Jc{5kR4v^T8l6#7)dV2xi6`>w@9PKgJ?KLVscbAwf6sf#EPD z=*D~)S0Vnu41^2al!4(8%kP$~gPF6Z6Q=w3)&09$=7}g=5)4NG zk+Lu-2nIqx5C|az9OFbe1QddR%gBPo|9=gGe}(Z(oL&F9h8VC2BqqAY!6A#1BPaPE DDf5U@ literal 0 HcmV?d00001 diff --git a/python/src/ai/dictionary.py b/python/src/ai/dictionary.py new file mode 100644 index 0000000..c42caef --- /dev/null +++ b/python/src/ai/dictionary.py @@ -0,0 +1,285 @@ +import json +import os + +import numpy as np +import sklearn +import enlighten +from sklearn.preprocessing import LabelEncoder + +import src.contabilidad.pdf as pdf +import src.contabilidad.text_handler as th +from src.ai.models import Phrase, phrase_factory, Word, word_factory +from src.contabilidad.log import LOG_LEVEL + + +class Dictionary: + def __init__(self, filename, logger): + self.filename = filename + self._logger = logger + self.__processed = [] + self.__phrases = None + self.__words = None + self.load() + + def load(self): + if not os.path.isfile(self.filename): + return + with open(self.filename, 'r') as file: + data = json.load(file) + if 'words' in data.keys(): + self.__words = [] + [self.__words.append(word_factory(w)) for w in data['words']] + if 'phrases' in data.keys(): + self.__phrases = [] + [self.__phrases.append(phrase_factory(ph)) for ph in data['phrases']] + if 'processed' in data.keys(): + self.__processed = [] + self.__processed = data['processed'] + + def save(self): + self.sort_words() + self.sort_phrases() + with open(self.filename, 'w') as file: + json.dump(self.to_json(), file, indent=2) + + def to_data(self): + encoder = LabelEncoder() + data = encoder.fit_transform([w.get_word() for w in self.get_words()]) + [self.__words[i].set_fit(f) for i, f in enumerate(data)] + print(data) + # return [ph.to_data() for ph in self.get_phrases()] + + def to_json(self): + output = { + 'processed': [], + 'words': [], + 'phrases': [] + } + if self.__processed is not None and len(self.__processed) > 0: + output['processed'] = self.__processed + if self.__words is not None and len(self.__words) > 0: + output['words'] = [w.to_json() for w in self.__words] + if self.__phrases is not None and len(self.__phrases) > 0: + output['phrases'] = [p.to_json() for p in self.__phrases] + return output + + def find_phrase(self, phrase: Phrase = None, phrase_dict: dict = None, phrase_list: list = None): + if not self.__phrases: + return -1 + if phrase is not None: + phrase_list = [w.get_word() for w in phrase.get_words()] + elif phrase_dict is not None: + phrase_list = phrase_dict['words'] + elif phrase_list is not None: + pass + else: + return -1 + return find_phrase(self.__phrases, phrase_list) + + def add_phrase(self, phrase: Phrase = None, phrase_dict: dict = None, phrase_list: list = None): + if self.__phrases is None: + self.__phrases = [] + if phrase is not None: + pass + elif phrase_dict is not None: + phrase = phrase_factory(phrase_dict) + elif phrase_list is not None: + phrase = phrase_factory({'words': phrase_list}) + else: + return self + i = self.find_phrase(phrase) + if i > -1: + self.__phrases[i].add_freq() + return self + self.__phrases.append(phrase) + return self + + def add_phrases(self, phrase_list: list): + if self.__phrases is None: + self.__phrases = [] + phs = [sorted(w.get_word() for w in p) for p in self.__phrases] + with enlighten.get_manager() as manager: + with manager.counter(total=len(phrase_list), desc='Phrases', unit='phrases', color='green') as bar1: + for i, phrase in enumerate(phrase_list): + # print(f'Adding phrase {i}.') + p2 = sorted([w.get_word() for w in phrase]) + if p2 in phs: + k = phs.index(p2) + self.__phrases[k].add_freq() + continue + ph = phrase_factory({'words': phrase}) + self.__phrases.append(ph) + phs.append(p2) + bar1.update() + + def get_phrases(self): + return self.__phrases + + def sort_phrases(self): + if self.__phrases is None: + return + try: + def sort_phrase(p): + if p is None: + return 0 + if isinstance(p, Phrase): + return p.get_freq(), p.get_type().get_desc(), len(p.get_words()) + return p['frequency'], p['type']['description'], len(p['words']) + self.__phrases = sorted(self.__phrases, + key=sort_phrase) + except Exception as e: + self._logger.log(repr(self.__phrases), LOG_LEVEL.ERROR) + self._logger.log(e) + return self + + def sort_words(self): + if self.__words is None: + return + try: + def sort_word(w): + if w is None: + return 0 + if isinstance(w, Word): + return w.get_freq(), w.get_type().get_desc(), w.get_word() + return w['frequency'], w['type']['description'], w['word'] + self.__words = sorted(self.__words, key=sort_word, reverse=True) + except Exception as e: + self._logger.log(repr(self.__words)) + self._logger.log(e) + return self + + def find_word(self, word: Word = None, word_dict: dict = None, word_str: str = None): + if not self.__words: + return -1 + if word is not None: + word_str = word.get_word() + elif word_dict is not None: + word_str = word_dict['word'] + elif word_str is not None: + pass + else: + return -1 + + return find_word(self.__words, word_str) + + def add_word(self, word: Word = None, word_dict: dict = None, word_str: str = None): + if self.__words is None: + self.__words = [] + if word is not None: + pass + elif word_dict is not None: + word = word_factory(word_dict) + elif word_str is not None: + word = word_factory({'word': word_str}) + else: + return self + i = self.find_word(word) + if i > -1: + self.__words[i].add_freq() + return self + self.__words.append(word) + return self + + def add_words(self, words: list): + [self.add_word(word=w) for w in words if isinstance(w, Word)] + [self.add_word(word_dict=w) for w in words if isinstance(w, dict)] + [self.add_word(word_str=w) for w in words if isinstance(w, str)] + return self + + def get_words(self): + return filter_unique_words(self.__words) + + def match_words(self, word_list: list): + new_list = [] + for w in word_list: + wi = self.find_word(word_str=w) + new_list.append(self.__words[wi]) + return new_list + + def append_to_phrase(self, seed: list = None, length: int = 1): + if seed is None: + return [self.__words[0]] + max_index = max(seed) + length + if max_index > len(self.__words): + if length == 1: + return False + return self.append_to_phrase(seed, length - 1) + return seed + self.__words[max_index] + + def get_possible_phrases(self, word_list): + print('Adding words.') + self.add_words(word_list) + + print('Creating phrases.') + with enlighten.get_manager() as manager: + with manager.counter(total=len(word_list)**2, desc='Phrases', unit='words', color='red') as bar1: + phrases = [] + for length in range(1, len(word_list) + 1): + bar2 = bar1.add_subcounter(color='green') + for start in range(0, len(word_list)): + phrase = build_phrase(word_list, start, start + length) + phrase = self.match_words(phrase) + phrases.append(phrase) + start += length + bar2.update() + bar1.update() + + print(f'Created {len(phrases)} phrases.') + phrases = sorted(phrases, key=lambda e: len(e)) + + print('Adding phrases.') + # Really slow (~115000 phrases in one pdf) + self.add_phrases(phrases) + return self.__phrases + + def is_processed(self, filename: str): + return os.path.basename(filename) in self.__processed + + def process(self, filename: str, password: str = None): + if self.is_processed(filename): + print('Already processed.') + return + t = filename.split('.') + temp = os.path.realpath(os.path.join(os.path.dirname(filename), t[0] + '-temp.pdf')) + print('Removing PDF encryption.') + pdf.remove_encryption(filename, password, temp) + print('Getting text') + obj = pdf.get_text(temp) + os.remove(temp) + print('Getting possible phrases.') + phrases = self.get_possible_phrases(th.split_words(obj)) + self.__processed.append(os.path.basename(filename)) + return phrases + + +def build_phrase(word_list, start: int, end: int = None): + if end is None: + return word_list[start:] + return word_list[start:end] + + +def filter_unique_words(words): + new_list = [] + for w in words: + if w not in new_list: + new_list.append(w) + return new_list + + +def validate_phrase(phrase): + return True + + +def find_phrase(phrases: list, phrase: list): + phrase_list = [sorted([w.get_word() for w in p.get_words()]) for p in phrases] + sphrase = sorted(phrase) + if sphrase in phrase_list: + return phrase_list.index(sphrase) + return -1 + + +def find_word(words: list, word: str): + word_list = [w.get_word() for w in words] + if word in word_list: + return word_list.index(word) + return -1 diff --git a/python/src/ai/models.py b/python/src/ai/models.py new file mode 100644 index 0000000..184a0ba --- /dev/null +++ b/python/src/ai/models.py @@ -0,0 +1,243 @@ +import json + + +class Type: + def __init__(self, _id, _description): + self.__id = _id + self.__description = _description + + def get_id(self): + return self.__id + + def get_desc(self): + return self.__description + + def to_json(self): + return self.get_id() + + def __repr__(self): + return json.dumps({ + 'id': self.get_id(), + 'description': self.get_desc() + }) + + +def type_factory(_type: str, _id: int): + if _type == 'Word' or _type == 'WordType': + t = WordType() + elif _type == 'Phrase' or _type == 'PhraseType': + t = PhraseType() + else: + return None + t.load(_id) + return t + + +class WordType(Type): + STRING = 0 + NUMERIC = 1 + CURRENCY = 2 + DATE = 4 + + def __init__(self): + super().__init__(0, 'string') + + def load(self, word_type: int): + if word_type == self.STRING: + self.__description = 'string' + elif word_type == self.NUMERIC: + self.__description = 'numeric' + elif word_type == self.CURRENCY: + self.__description = 'currency' + elif word_type == self.DATE: + self.__description = 'date' + return self + + +class PhraseType(Type): + TEXT = 0 + TITLE = 1 + HEADER = 2 + MOVEMENT = 4 + INVALID = 99 + + def __init__(self): + super(PhraseType, self).__init__(0, 'text') + + def load(self, phrase_type: int): + if phrase_type == self.TEXT: + self.__description = 'text' + elif phrase_type == self.TITLE: + self.__description = 'title' + elif phrase_type == self.HEADER: + self.__description = 'header' + + +class Word: + def __init__(self): + self.__id = 0 + self.__word = None + self.__type_id = 0 + self.__type = None + self.__frequency = 1 + + def set_id(self, idx: int): + self.__id = idx + return self + + def set_word(self, word: str): + self.__word = word + return self + + def set_type(self, word_type): + if isinstance(word_type, WordType): + self.__type_id = word_type.get_id() + # self.__type = word_type + if isinstance(word_type, int): + self.__type_id = word_type + # self.__type = type_factory('Word', word_type) + return self + + def add_freq(self, amount: int = 1): + self.__frequency += amount + return self + + def get_id(self) -> int: + return self.__id + + def get_word(self) -> str: + return self.__word + + def get_type_id(self) -> int: + return self.__type_id + + def get_type(self) -> WordType: + if self.__type is None: + self.__type = type_factory('Word', self.__type_id) + return self.__type + + def get_freq(self) -> int: + return self.__frequency + + def to_json(self) -> dict: + output = { + 'id': self.get_id(), + 'word': self.get_word(), + 'type': self.get_type_id(), + 'freq': self.get_freq() + } + return output + + def __repr__(self): + return json.dumps(self.to_json()) + + +def word_factory(word: dict) -> Word: + w = Word() + w.set_id(word['id']) + w.set_word(word['word']) + if 'type' in word: + w.set_type(word['type']) + if 'freq' in word: + w.add_freq(word['freq'] - 1) + return w + + +class Phrase: + def __init__(self): + self.__id = 0 + self.__words = None + self.__type_id = 0 + self.__type = None + self.__frequency = 1 + + def set_id(self, idx: int): + self.__id = idx + return self + + def add_word(self, word): + if isinstance(word, Word): + self.__words.append(word.get_id()) + if isinstance(word, dict): + if 'id' in word: + self.__words.append(word['id']) + if isinstance(word, int): + self.__words.append(word) + return self + + def set_words(self, words: list): + if self.__words is None: + self.__words = [] + for w in words: + if isinstance(w, Word): + self.add_word(w) + if isinstance(w, dict): + self.add_word(w) + if isinstance(w, int): + self.add_word(w) + return self + + def set_type(self, phrase_type): + if isinstance(phrase_type, PhraseType): + self.__type_id = phrase_type.get_id() + # self.__type = phrase_type + if isinstance(phrase_type, int): + self.__type_id = phrase_type + # self.__type = type_factory('Phrase', phrase_type) + return self + + def add_freq(self, amount: int = 1): + self.__frequency += amount + return self + + def get_id(self) -> int: + return self.__id + + def get_words(self) -> list: + return self.__words + + def get_type_id(self) -> int: + return self.__type_id + + def get_type(self) -> PhraseType: + if self.__type is None: + self.__type = type_factory('Phrase', self.__type_id) + return self.__type + + def get_freq(self) -> int: + return self.__frequency + + def match(self, word_list: list): + if len(word_list) != len(self.__words): + return False + new_words = sorted(self.__words) + new_list = sorted(word_list) + if new_words == new_list: + return True + return False + + def to_json(self): + output = { + 'id': self.get_id(), + 'words': self.get_words(), + 'type': self.get_type_id(), + 'freq': self.get_freq() + } + return output + + def __repr__(self): + return json.dumps(self.to_json()) + + def __len__(self): + return len(self.get_words()) + + +def phrase_factory(phrase: dict) -> Phrase: + ph = Phrase() + ph.set_id(phrase['id']) + ph.set_words(phrase['words']) + if 'type' in phrase: + ph.set_type(phrase['type']) + if 'freq' in phrase: + ph.add_freq(phrase['freq'] - 1) + return ph diff --git a/python/src/ai/network.py b/python/src/ai/network.py new file mode 100644 index 0000000..10d2d31 --- /dev/null +++ b/python/src/ai/network.py @@ -0,0 +1,123 @@ +import json +import os +import tensorflow as tf +import sklearn +import numpy as np +from sklearn.preprocessing import LabelEncoder + +import src.contabilidad.pdf as pdf +import src.contabilidad.text_handler as th + + +class Layer: + def __init__(self): + self.__weights = None + self.__bias = None + + def set_size(self, inputs: int, size: int): + self.__weights = [[0 for j in range(0, inputs)] for i in range(0, size)] + self.__bias = [0 for i in range(0, size)] + + def add_weight(self, vector: list, idx: int = None): + if idx is None: + self.__weights.append(vector) + return self + self.__weights = self.__weights[:idx] + [vector] + self.__weights[idx:] + return self + + def set_weight(self, value: float, weight_index: int, input_index: int): + self.__weights[weight_index][input_index] = value + + def set_bias(self, value: list): + self.__bias = value + + def train(self, input_values: list, output_values: list): + output = self.get_output(input_values) + errors = [] + for i, v in enumerate(output): + error = (output_values[i] - v) / output_values[i] + new_value = v * error + + def to_json(self): + return { + 'bias': self.__bias, + 'weights': self.__weights + } + + def get_output(self, vector: list): + output = [] + for i, weight in enumerate(self.__weights): + val = 0 + for j, v in enumerate(weight): + val += v * vector[j] + output[i] = val + self.__bias[i] + return output + + +def layer_factory(layer_dict: dict): + layer = Layer() + layer.set_bias(layer_dict['bias']) + [layer.add_weight(w) for w in layer_dict['weights']] + return layer + + +class Network: + def __init__(self, filename: str): + self._filename = filename + self.__layers = None + + def load(self): + with open(self._filename) as f: + data = json.load(f) + if 'layers' in data.keys(): + self.add_layers(data['layers']) + + def add_layers(self, layers: list): + for lr in layers: + layer = layer_factory(lr) + self.__layers.append(layer) + + +class AI: + def __init__(self, dictionary_filename, logger): + self.__dict = None + self.__network = None + self.__sources = None + self.filename = '' + + def add_source(self, text): + if self.__sources is None: + self.__sources = [] + self.__sources.append(text) + return self + + def set_filename(self, filename: str): + self.filename = filename + return self + + def process_sources(self): + for source in self.__sources: + self.process(**source) + + def process(self, filename, password): + encoder = LabelEncoder() + t = filename.split('.') + temp = os.path.realpath(os.path.join(os.path.dirname(filename), t[0] + '-temp.pdf')) + pdf.remove_encryption(filename, password, temp) + obj = pdf.get_text(temp) + os.remove(temp) + word_list = th.split_words(obj) + fits = encoder.fit_transform(word_list) + print(fits) + phrases = [] + for length in range(1, len(word_list) + 1): + for start in range(0, len(word_list)): + phrase = word_list[start:(start + length)] + phrase = np.append(np.array([fits[word_list.index(w)] for w in phrase]), + np.zeros([len(word_list) - len(phrase)])) + phrases.append(phrase) + phrases = np.array(phrases) + print(phrases.shape) + + def active_train(self): + pass diff --git a/python/src/ai/phrase.py b/python/src/ai/phrase.py new file mode 100644 index 0000000..a80a325 --- /dev/null +++ b/python/src/ai/phrase.py @@ -0,0 +1,102 @@ +import json +from src.ai.word import Word, WordType + + +class PhraseType: + TEXT = 0 + TITLE = 1 + HEADER = 2 + MOVEMENT = 3 + INVALID = 99 + + def __init__(self): + self.__id = 0 + self.__description = 'text' + + def get_id(self): + return self.__id + + def get_desc(self): + return self.__description + + def to_json(self): + return self.__id + + def load(self, phrase_id: int): + self.__id = phrase_id + if phrase_id == self.TITLE: + self.__description = 'title' + elif phrase_id == self.HEADER: + self.__description = 'header' + elif phrase_id == self.MOVEMENT: + self.__description = 'movement' + elif phrase_id == self.INVALID: + self.__description = 'invalid' + return self + + +def phrase_factory(phrase: list, phrase_type: int = None, frec: int = 1): + pt = PhraseType() + if phrase_type is not None: + pt.load(phrase_type) + ph = Phrase() + ph.set_phrase(phrase).set_type(pt).add_frec(frec - 1) + return ph + + +class Phrase: + def __init__(self): + self.__phrase = None + self.__type = None + self.__frec = 1 + + def to_json(self): + return { + 'phrase': [w.to_json() for w in self.__phrase], + 'type': self.__type.to_json(), + 'frec': self.__frec + } + + def set_phrase(self, phrase: list): + [self.add_word(w) for w in phrase] + return self + + def get_phrase(self): + return self.__phrase + + def set_type(self, phrase_type: PhraseType): + self.__type = phrase_type + return self + + def get_type(self): + return self.__type + + def add_word(self, word: Word, pos: int = None): + if self.__phrase is None: + self.__phrase = [] + if pos is None: + self.__phrase.append(word) + return self + self.__phrase = self.__phrase[:pos] + [word] + self.__phrase[pos:] + return self + + def add_frec(self, amount: int = 1): + self.__frec += amount + + def match(self, words: list): + if len(words) != len(self.__phrase): + return False + for w in self.__phrase: + if w not in words: + return False + return True + + def __repr__(self): + print(self.__phrase) + return json.dumps({ + 'phrase': [w.to_json() for w in self.get_phrase()], + 'type': self.get_type().get_desc() + }) + + def __len__(self): + return len(self.__phrase) diff --git a/python/src/ai/word.py b/python/src/ai/word.py new file mode 100644 index 0000000..274670a --- /dev/null +++ b/python/src/ai/word.py @@ -0,0 +1,84 @@ +import json + + +class WordType: + STRING = 0 + NUMERIC = 1 + CURRENCY = 2 + DATE = 3 + + def __init__(self): + self.__id = 0 + self.__description = 'string' + + def to_json(self): + return self.__id + + def load(self, word_id: int): + self.__id = word_id + if word_id == self.NUMERIC: + self.__description = 'numeric' + elif word_id == self.CURRENCY: + self.__description = 'currency' + elif word_id == self.DATE: + self.__description = 'data' + return self + + def get_id(self): + return self.__id + + def get_desc(self): + return self.__description + + def __repr__(self): + return { + 'id': self.get_id(), + 'description': self.get_desc() + } + + +def word_factory(word: str, word_type: int = None, frec: int = 1): + wt = WordType() + if word_type is not None: + wt.load(word_type) + w = Word() + w.set_word(word).set_type(wt).add_frec(frec - 1) + return w + + +class Word: + def __init__(self): + self.__word = None + self.__type = None + self.__frec = 1 + + def to_json(self): + return { + 'word': self.__word, + 'type': self.__type.to_json(), + 'frec': self.__frec + } + + def set_word(self, word: str): + self.__word = word + return self + + def get_word(self): + return self.__word + + def set_type(self, word_type: WordType): + self.__type = word_type + return self + + def get_type(self): + return self.__type + + def add_frec(self, amount: int = 1): + self.__frec += amount + return self + + def __repr__(self): + return json.dumps({ + 'word': self.get_word(), + 'type': self.get_type().get_desc() + })