2 Commits

Author SHA1 Message Date
605c905f5d Python 2021-12-22 21:53:30 -03:00
960c418848 Python 2021-12-09 21:14:28 -03:00
4 changed files with 5 additions and 188 deletions

View File

@ -1,5 +1,8 @@
import json import json
import os import os
import time
import timeit
import tensorflow as tf import tensorflow as tf
import sklearn import sklearn
import numpy as np import numpy as np
@ -83,6 +86,7 @@ class AI:
self.__dict = None self.__dict = None
self.__network = None self.__network = None
self.__sources = None self.__sources = None
self._phrases = None
self.filename = '' self.filename = ''
def add_source(self, text): def add_source(self, text):
@ -108,7 +112,6 @@ class AI:
os.remove(temp) os.remove(temp)
word_list = th.split_words(obj) word_list = th.split_words(obj)
fits = encoder.fit_transform(word_list) fits = encoder.fit_transform(word_list)
print(fits)
phrases = [] phrases = []
for length in range(1, len(word_list) + 1): for length in range(1, len(word_list) + 1):
for start in range(0, len(word_list)): for start in range(0, len(word_list)):
@ -117,7 +120,7 @@ class AI:
np.zeros([len(word_list) - len(phrase)])) np.zeros([len(word_list) - len(phrase)]))
phrases.append(phrase) phrases.append(phrase)
phrases = np.array(phrases) phrases = np.array(phrases)
print(phrases.shape) self._phrases = phrases
def active_train(self): def active_train(self):
pass pass

View File

@ -1,102 +0,0 @@
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)

View File

@ -1,84 +0,0 @@
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()
})