paranormal-or-skeptic/.ipynb_checkpoints/Untitled (2)-Copy4-checkpoint.ipynb
Karol Idaszak d857418231 init
2022-06-21 11:49:53 +02:00

61 KiB
Raw Permalink Blame History

import glob
import pandas as pd
import re
import tensorflow as tf
from collections import Counter
import numpy as np
count = Counter()
filenames1 = []
for filename in glob.glob('Systemy_dialogowe/data/*.tsv'):
    filenames1.append(filename)
def prep(filenames):
    df = pd.DataFrame(columns=['Rola', 'Wypowiedź', 'Act'])
    for filename in filenames:
        temp = pd.read_csv(filename, sep='\t', names=["Rola", "Wypowiedź", "Act"])
        df = pd.concat([df, temp], ignore_index=True)
    return df
df = prep(filenames1)
df = df.loc[df['Rola'] == 'user']
df = df.fillna('null')
df
Rola Wypowiedź Act
1 user Witam hello()
3 user Co możesz dla mnie zrobić? help()
5 user Jakie są moje repozytoria? request(repos)
7 user ok. co nowego w Zajęcia AI? affirm() & request(repo = Zajecia AI)
9 user Tylko tyle? reqmore()
... ... ... ...
1409 user upewniam się null
1411 user pokaż mi raport request(repo)
1414 user zmienić null
1416 user Tak ack
1466 user elo hello()

585 rows × 3 columns

df['Act'].unique()
array(['hello()', 'help()', 'request(repos)',
       'affirm() & request(repo = Zajecia AI)', 'reqmore()',
       'request(notifications)', 'request(notification = 1)',
       'request(link)', 'affirm() & reqmore()',
       'request(repo = Projekt  Sklep)', 'request(issues)', 'ack()',
       'request(commits = mattyl34)', 'request(commits = -5)',
       'affirm() & request(repo = Gra - kółko i krzyżyk)', 'thankyou()',
       'inform()', 'helpresponse()', 'request(repo = Zajecia AI)',
       'request(delete)', 'ack() & inform()',
       'request(repo = Projekt-sklep)', 'request(files = 1:3)',
       'request()', 'bye()', 'request(file)',
       'helpresponse() & request(repo)', 'request(command)',
       'request(repo = Projekt - Sklep)', 'request(authors)',
       'request(Bob)', 'request(repo = system)',
       'request(repo = super_stronka_internetowa)',
       'request(date, pr = 2)', 'request(repo = nazwaRepozytorium)',
       'request(repo = zadania)', 'request(author, pr = 1)',
       'request(deny, pr = 1)', 'request(rollback, commit = last)',
       'request(repo = zajecia)', 'request(newPR)', 'inform(branches)',
       'inform(title)', 'request(repo = pizza)', 'request(bilet)',
       'request(repo)', 'inform(capriciosa)', 'inform(gGphJD)', 'affirm',
       'help', 'hello', 'inform(qgphjd)', 'null', 'bye',
       'inform(qwdqwdqaswdaqdfqfwqwfq)', 'inform(qGphJs)',
       'inform(qgphid)', 'inform(pGphJD)', 'thankyou', 'inform(qGphJ0)',
       'inform(qGphJ)', 'inform(DJhpGq)', 'inform(phgdj)',
       'inform(QgPHjd)', 'ack'], dtype=object)

split by &

ignore args and ()

{'request', 'inform', 'bye', 'reqmore', 'help', 'ack', 'affirm', 'hello', 'thankyou', 'null'}

new = pd.DataFrame(columns=['Wypowiedź', 'Act'])
values = set()
for index, row in df.iterrows():
    act = row[2].split('&')
    act = [re.sub('\(.*\)', '', x) for x in act]
    act = [re.sub(' ', '', x) for x in act]
    act = [re.sub('helpresponse', 'help', x) for x in act]
    [values.add(x) for x in act]
    temp = pd.DataFrame({'Wypowiedź':row[1], 'Act': act})
    new = pd.concat([new, temp], ignore_index=True)
new.head(10)
print(values)
{'help', 'reqmore', 'bye', 'thankyou', 'hello', 'affirm', 'ack', 'inform', 'request', 'null'}
unique = ['request', 'inform', 'bye', 'reqmore', 'help', 'ack', 'affirm', 'hello', 'thankyou', 'null']
sorted_values = {}
for item in unique:
    temp = new.loc[new['Act'] == item]
#     print(new.loc[new['Act'] == item])
    sorted_values[item] = temp
    temp.to_csv(f'data_sorted//{item}', sep='\t', index=False)
sorted_values
{'request':                                 Wypowiedź      Act
 2              Jakie są moje repozytoria?  request
 4             ok. co nowego w Zajęcia AI?  request
 6          Mam jakieś nowe powiadomienia?  request
 8           Opowiedz mi o powiadomieniu 1  request
 9    Podaj mi linka do tego powiadomienia  request
 ..                                    ...      ...
 571                    Próbuję ponownie    request
 573                             próbuję    request
 577           pokaż mi raport projektu     request
 584           pokaż mi raport projektu     request
 587                    pokaż mi raport     request
 
 [130 rows x 2 columns],
 'inform':                    Wypowiedź     Act
 26               to wszystko  inform
 33       Oki, to będzie tyle  inform
 76   To nie, to już wszystko  inform
 103     moja gałąź, "master"  inform
 104                  moja PR  inform
 ..                       ...     ...
 535                 gGphJD    inform
 545                  qGphJ    inform
 552                 DJhpGq    inform
 578                  phgdj    inform
 579                 QgPHjd    inform
 
 [68 rows x 2 columns],
 'bye':                                     Wypowiedź  Act
 50                                Do widzenia  bye
 56                      Dziękuję, do widzenia  bye
 77                                       Papa  bye
 141                                    exit    bye
 164                                    exit    bye
 172  Nic z tych komend mnie nie interesuje     bye
 195                                    exit    bye
 203  Nic z tych komend mnie nie interesuje     bye
 234                                    exit    bye
 242  Nic z tych komend mnie nie interesuje     bye
 284                                    exit    bye
 292  Nic z tych komend mnie nie interesuje     bye
 322                                Nie chcę    bye
 345                                    exit    bye
 353  Nic z tych komend mnie nie interesuje     bye
 383                                Nie chcę    bye
 393                   To wszystko, dziękuje    bye
 416                                    exit    bye
 424  Nic z tych komend mnie nie interesuje     bye
 454                                Nie chcę    bye
 464                   To wszystko, dziękuje    bye
 471                             Do widzenia    bye
 494                                    exit    bye
 502  Nic z tych komend mnie nie interesuje     bye
 532                                Nie chcę    bye
 542                   To wszystko, dziękuje    bye
 549                             Do widzenia    bye,
 'reqmore':                                             Wypowiedź      Act
 5                                         Tylko tyle?  reqmore
 7                                              Jakie?  reqmore
 11  okej. jakie jeszcze informacje możesz mi przek...  reqmore
 12                                        O tym samym  reqmore
 15                 Co jeszcze możesz dla mnie zrobić?  reqmore
 18                                             Jakie?  reqmore
 20                                   A pozostałe dwa?  reqmore
 24       ok; A jakby były to powiedziałbyś mi o nich?  reqmore,
 'help':                                              Wypowiedź   Act
 1                           Co możesz dla mnie zrobić?  help
 28                          Jakie są dostępne funkcje?  help
 35   Chciałabym się dowiedzieć jakie usługi oferujecie  help
 42                    Chciałbym poznać funkcję systemu  help
 58                Jak mi możesz pomóc;  Chcę nowe repo  help
 ..                                                 ...   ...
 567                              pokaż listę komend     help
 568                               pokaż listę komend    help
 581                                            pokaż    help
 582                                            pokaż    help
 583       wyjaśnij mi komendę pokaż mi listę komend     help
 
 [140 rows x 2 columns],
 'ack':                Wypowiedź  Act
 16                   Tak  ack
 32   Oki, to będzie tyle  ack
 39                   tak  ack
 48              Rozumiem  ack
 73                   tak  ack
 80                   Tak  ack
 85                   Tak  ack
 91                   tak  ack
 94         Tak, poproszę  ack
 101                  tak  ack
 107                  tak  ack
 110                  tak  ack
 113                  tak  ack
 589               Tak     ack,
 'affirm':                                              Wypowiedź     Act
 3                          ok. co nowego w Zajęcia AI?  affirm
 10   okej. jakie jeszcze informacje możesz mi przek...  affirm
 21           ok. Są jakieś failujące testy w tym repo?  affirm
 23        ok; A jakby były to powiedziałbyś mi o nich?  affirm
 117                                       kontynuuj     affirm
 122                                       kontynuuj     affirm
 137                                 chcę kontynuować    affirm
 145                                       kontynuuj     affirm
 160                                 chcę kontynuować    affirm
 169                                     kontynuować     affirm
 176                                       kontynuuj     affirm
 191                                 chcę kontynuować    affirm
 200                                     kontynuować     affirm
 211                                 Chcę kontynuować    affirm
 215                                       kontynuuj     affirm
 230                                 chcę kontynuować    affirm
 239                                     kontynuować     affirm
 250                                 Chcę kontynuować    affirm
 259                to nie chce zmieniać konfiguracji    affirm
 265                                       kontynuuj     affirm
 280                                 chcę kontynuować    affirm
 289                                     kontynuować     affirm
 300                                 Chcę kontynuować    affirm
 309                to nie chce zmieniać konfiguracji    affirm
 316                                        kontynuuj    affirm
 326                                       kontynuuj     affirm
 341                                 chcę kontynuować    affirm
 350                                     kontynuować     affirm
 361                                 Chcę kontynuować    affirm
 370                to nie chce zmieniać konfiguracji    affirm
 377                                        kontynuuj    affirm
 388                                        kontynuuj    affirm
 397                                       kontynuuj     affirm
 412                                 chcę kontynuować    affirm
 421                                     kontynuować     affirm
 432                                 Chcę kontynuować    affirm
 441                to nie chce zmieniać konfiguracji    affirm
 448                                        kontynuuj    affirm
 459                                        kontynuuj    affirm
 475                                       kontynuuj     affirm
 490                                 chcę kontynuować    affirm
 499                                     kontynuować     affirm
 510                                 Chcę kontynuować    affirm
 519                to nie chce zmieniać konfiguracji    affirm
 526                                        kontynuuj    affirm
 537                                        kontynuuj    affirm
 566                       No dobra, to kontynuujemy     affirm
 570                                      kontynuować    affirm
 572                                      Kontynuować    affirm
 585                                     kontynuujmy     affirm,
 'hello':                    Wypowiedź    Act
 0                      Witam  hello
 27              Dzień dobry!  hello
 34               Dzień dobry  hello
 41                     Cześć  hello
 51   Dzień dobry panie bocie  hello
 57                       Elo  hello
 78               Dzień dobry  hello
 82                     Witam  hello
 88               Dzień dobry  hello
 92               Dzień dobry  hello
 99               Dzień dobry  hello
 105              Dzień dobry  hello
 111              Dzień dobry  hello
 124                  Widam    hello
 147                  Widam    hello
 165                  Witam    hello
 178                  Widam    hello
 196                  Witam    hello
 204           Dzień dobry!    hello
 217                  Widam    hello
 235                  Witam    hello
 243           Dzień dobry!    hello
 252            Dzień dobry    hello
 267                  Widam    hello
 285                  Witam    hello
 293           Dzień dobry!    hello
 302            Dzień dobry    hello
 312            Dzień dobry    hello
 328                  Widam    hello
 346                  Witam    hello
 354           Dzień dobry!    hello
 363            Dzień dobry    hello
 373            Dzień dobry    hello
 384                  Cześć    hello
 399                  Widam    hello
 417                  Witam    hello
 425           Dzień dobry!    hello
 434            Dzień dobry    hello
 444            Dzień dobry    hello
 455                  Cześć    hello
 465                  Cześć    hello
 477                  Widam    hello
 495                  Witam    hello
 503           Dzień dobry!    hello
 512            Dzień dobry    hello
 522            Dzień dobry    hello
 533                  Cześć    hello
 543                  Cześć    hello
 550                    Elo    hello
 576           Dzień dobry     hello
 590                      elo  hello,
 'thankyou':                   Wypowiedź       Act
 25                 dziękuję  thankyou
 40   dziękuję za informację  thankyou
 49    To wszystko, dziękuje  thankyou
 74                   Dzięki  thankyou
 81                      Nie  thankyou
 87    Rozumiem, to wszystko  thankyou
 98                      Nie  thankyou
 108                     Nie  thankyou
 260              Dziękuje    thankyou
 310              Dziękuje    thankyou
 371              Dziękuje    thankyou
 389  podoba mi się raport    thankyou
 392                Dobrze    thankyou
 442              Dziękuje    thankyou
 460  podoba mi się raport    thankyou
 463                Dobrze    thankyou
 520              Dziękuje    thankyou
 538  podoba mi się raport    thankyou
 541                Dobrze    thankyou
 575      Dzięki za pomoc     thankyou,
 'null':                               Wypowiedź   Act
 128              chcę zmienić projekt    null
 130  A jak mogę zmienić konfigurację?    null
 131                 CHCĘ INNY PROJEKT    null
 132                        zgłoś błąd    null
 135         Chcę zmienić konfigurację    null
 ..                                  ...   ...
 562                     Chcę zmienić     null
 574                           zmienić    null
 580                           zmienic    null
 586                      upewniam się    null
 588                           zmienić    null
 
 [83 rows x 2 columns]}
def preprocess(line):
    txt = line
    txt = re.sub(
        "(£|§|!|@|#|\$|%|\^|&|\*|\(|\)|_|-|\+|=|\\{|\[|\\}|\]|:|;|\"|'|\|\\\\|\<|,|\>|\.|\?|/|~|`|\|||)",
        "",
        txt,
    )
    txt = txt.lower()
    txt = re.sub("[0-9]", "", txt)
    txt = re.sub("[ \t]+", " ", txt)
    txt = re.sub(" +$", "", txt)
    txt = re.sub("ą", "a", txt)
    txt = re.sub("ć", "c", txt)
    txt = re.sub("ę", "e", txt)
    txt = re.sub("ł", "l", txt)
    txt = re.sub("ń", "n", txt)
    txt = re.sub("ó", "o", txt)
    txt = re.sub("ś", "s", txt)
    txt = re.sub("ź", "z", txt)
    txt = re.sub("ż", "z", txt)
    words = txt.split()
    words = [w[:6] if len(w) > 6 else w for w in words]
    out = []
    for word in words:
#         if word not in stopwords:
          out.append(word)
    for stem in out:
        count[stem] += 1
    text = " ".join(out)
#     print(text)
    return text
from tensorflow.keras.utils import to_categorical
from numpy import argmax

acts = ['inform', 'reqmore', 'thankyou', 'ack', 'affirm', 'hello', 'request', 'help', 'null', 'bye']
to_num = {act: idx for idx, act in enumerate(acts)}
prep = pd.DataFrame(columns=['Wypowiedź', 'Act'])
values = set()
max_len = 0
for index, row in new.iterrows():
    temp = preprocess(row[0])
    one_hot_encode = to_categorical(to_num[row[1]], num_classes=len(acts))
#     one_hot_encode = np.asarray(one_hot_encode).astype('float32')
    max_len = max(max_len, len(temp))
    frame = pd.DataFrame({'Wypowiedź': temp, 'Act': [np.asarray(one_hot_encode).astype('float32')]})
    prep = pd.concat([prep, frame], ignore_index=True)
# print(prep)
max_len
53
prep = prep.sample(frac=1).reset_index(drop=True)
prep
Wypowiedź Act
0 czesc [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, ...
1 chcial odrzuc pr [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, ...
2 capric [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
3 oki to bedzie tyle [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
4 qgphjd [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
... ... ...
586 wyjasn mi komend pokaz mi liste komend [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...
587 wyjasn mi komend [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...
588 zmieni konfig [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, ...
589 ggphjd [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
590 chce zmieni konfig [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, ...

591 rows × 2 columns

num_words = 130

for item in count.most_common(num_words):
    print(item)
('mi', 219)
('pokaz', 133)
('komend', 124)
('projek', 97)
('raport', 84)
('wyjasn', 68)
('chce', 61)
('zmieni', 57)
('konfig', 45)
('jakie', 43)
('kontyn', 41)
('liste', 41)
('sa', 31)
('w', 27)
('funkcj', 26)
('dzien', 25)
('dobry', 25)
('dostep', 25)
('to', 24)
('mozesz', 22)
('repozy', 21)
('nie', 21)
('pomoc', 19)
('tak', 17)
('a', 16)
('czym', 16)
('moge', 15)
('chcial', 14)
('jeszcz', 12)
('dzieku', 12)
('ggphjd', 12)
('o', 11)
('jak', 10)
('witam', 9)
('co', 9)
('mnie', 9)
('repo', 9)
('wszyst', 9)
('z', 9)
('capric', 9)
('qgphjd', 9)
('lista', 9)
('sie', 8)
('system', 8)
('widam', 8)
('inny', 8)
('zglos', 8)
('blad', 8)
('exit', 8)
('inform', 7)
('adawda', 7)
('qwdqwd', 7)
('qgphjs', 7)
('nic', 7)
('tych', 7)
('intere', 7)
('ok', 6)
('mam', 6)
('nowe', 6)
('podaj', 6)
('do', 6)
('powied', 6)
('czesc', 6)
('qgphid', 6)
('dialog', 6)
('qgphj', 6)
('zajeci', 5)
('issue', 5)
('jest', 5)
('pr', 5)
('pgphjd', 5)
('napraw', 5)
('bylem', 5)
('botem', 5)
('i', 5)
('zle', 5)
('przepi', 5)
('kod', 5)
('moje', 4)
('ai', 4)
('powiad', 4)
('ostatn', 4)
('uslugi', 4)
('oferuj', 4)
('zobacz', 4)
('widzen', 4)
('no', 4)
('zrobic', 3)
('tyle', 3)
('jakies', 3)
('tym', 3)
('sklep', 3)
('pierws', 3)
('elo', 3)
('help', 3)
('status', 3)
('podoba', 3)
('dobrze', 3)
('dla', 2)
('nowego', 2)
('opowie', 2)
('okej', 2)
('przeka', 2)
('commit', 2)
('failuj', 2)
('testy', 2)
('jakby', 2)
('byly', 2)
('nich', 2)
('powiaz', 2)
('oki', 2)
('bedzie', 2)
('moich', 2)
('za', 2)
('na', 2)
('temat', 2)
('pliku', 2)
('rozumi', 2)
('zatem', 2)
('dzieki', 2)
('potraf', 2)
('moim', 2)
('moja', 2)
('pizza', 2)
('github', 2)
('briefi', 2)
('poka', 2)
('probuj', 2)
('tylko', 1)
('linka', 1)
train_size = int(prep.shape[0] * 0.70)

validation_size = int(prep.shape[0] * 0.85)

train_sentences = prep.Wypowiedź[:train_size]
train_labels = prep.Act[:train_size]

test_sentences = prep.Wypowiedź[train_size:validation_size]
test_labels = prep.Act[train_size:validation_size]

validation_sentences = prep.Wypowiedź[validation_size:]
validation_labels = prep.Act[validation_size:]
train = pd.concat([train_sentences, train_labels], ignore_index=False, axis=1)
test = pd.concat([test_sentences, test_labels], ignore_index=False, axis=1)
validation = pd.concat([validation_sentences, validation_labels], ignore_index=False, axis=1)

train, test
# pd.Series(array) 
(                         Wypowiedź  \
 0                            czesc   
 1                 chcial odrzuc pr   
 2                           capric   
 3               oki to bedzie tyle   
 4                           qgphjd   
 ..                             ...   
 408                    o tym samym   
 409                         pgphjd   
 410  pokaz mi raport projek adawda   
 411  w czym jeszcz mozesz mi pomoc   
 412          opowie mi o zajeci ai   
 
                                                    Act  
 0    [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, ...  
 1    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, ...  
 2    [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...  
 3    [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...  
 4    [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...  
 ..                                                 ...  
 408  [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...  
 409  [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...  
 410  [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, ...  
 411  [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...  
 412  [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, ...  
 
 [413 rows x 2 columns],
                   Wypowiedź                                                Act
 413   pokaz mi lista komend  [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...
 414                  qgphjd  [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
 415   pokaz mi liste komend  [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...
 416                  qgphjs  [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
 417  jakie sa dostep funkcj  [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...
 ..                      ...                                                ...
 497                  kontyn  [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...
 498             chce kontyn  [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...
 499                   czesc  [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, ...
 500                  kontyn  [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...
 501             chce kontyn  [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...
 
 [89 rows x 2 columns])
from keras.preprocessing.text import Tokenizer

tokenizer = Tokenizer(num_words=num_words)
tokenizer.fit_on_texts(train['Wypowiedź'])
word_index = tokenizer.word_index
test['Wypowiedź']
413     pokaz mi lista komend
414                    qgphjd
415     pokaz mi liste komend
416                    qgphjs
417    jakie sa dostep funkcj
                ...          
497                    kontyn
498               chce kontyn
499                     czesc
500                    kontyn
501               chce kontyn
Name: Wypowiedź, Length: 89, dtype: object
# train['Wypowiedź'] = train['Wypowiedź'].apply(func = lambda row : tokenizer.texts_to_matrix(tokenizer.texts_to_sequences(row))) 
# test['Wypowiedź'] = test['Wypowiedź'].apply(func = lambda row : tokenizer.texts_to_matrix(tokenizer.texts_to_sequences(row))) 


# train['Wypowiedź'] = train['Wypowiedź'].apply(tokenizer.texts_to_matrix(train['Wypowiedź']))#.apply(func = lambda row : tokenizer.texts_to_matrix(tokenizer.texts_to_sequences(row))) 
# test['Wypowiedź'] = test['Wypowiedź'].apply(func = lambda row : tokenizer.texts_to_matrix(tokenizer.texts_to_sequences(row))) 
train['Wypowiedź'] = (tokenizer.texts_to_sequences(train['Wypowiedź']))
test['Wypowiedź'] = (tokenizer.texts_to_sequences(test['Wypowiedź']))
validation['Wypowiedź'] = (tokenizer.texts_to_sequences(validation['Wypowiedź']))
# train[train['Wypowiedź'].str.len() == 1]
train['Wypowiedź'][5]
[69]
len(train['Wypowiedź'][5]), len(train['Wypowiedź'][200])
(1, 4)
# type(train['Wypowiedź'][0]),type(test['Wypowiedź'][588]),type(train['Act'][0]),type(test['Act'][588])
from keras.preprocessing.sequence import pad_sequences

temp_a = pad_sequences(
    train['Wypowiedź'].tolist(), maxlen=max_len, padding="post", truncating="post"
)
temp_b = pad_sequences(
    test['Wypowiedź'].tolist(), maxlen=max_len, padding="post", truncating="post"
)
temp_c = pad_sequences(
    validation['Wypowiedź'].tolist(), maxlen=max_len, padding="post", truncating="post"
)
train['Wypowiedź'] = temp_a.tolist()
test['Wypowiedź'] = temp_b.tolist()
validation['Wypowiedź'] = temp_c.tolist()

# train=train.reshape(1,train.shape[0])
# mel=mel.reshape(1,mel.shape[0])

# train['Wypowiedź'] = train['Wypowiedź'].apply(lambda row : pad_sequences(
#     row, maxlen=max_len, padding="post", truncating="post"
# ))
# test['Wypowiedź'] = test['Wypowiedź'].apply(lambda row : pad_sequences(
#     row, maxlen=max_len, padding="post", truncating="post"
# )) 
test['Wypowiedź']
413    [2, 1, 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
414    [40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
415    [2, 1, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
416    [67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
417    [10, 13, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
                             ...                        
497    [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
498    [7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
499    [58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
500    [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
501    [7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
Name: Wypowiedź, Length: 89, dtype: object
import keras
early_stopping = keras.callbacks.EarlyStopping(
    monitor="val_loss", patience=5, restore_best_weights=True, verbose=0
)

# checkpoint_callback = keras.callbacks.ModelCheckpoint(
#         filepath='.', monitor='val_loss', verbose=0, save_weights_only=True,
#         save_freq='epoch', mode='auto', save_best_only=True)

reduce_lr_on_plateau = keras.callbacks.ReduceLROnPlateau(
    monitor="acc", factor=0.1, patience=2, verbose=0
)

callbacks_list = [early_stopping, reduce_lr_on_plateau]
test
Wypowiedź Act
413 [2, 1, 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,... [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...
414 [40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,... [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
415 [2, 1, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,... [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...
416 [67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,... [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
417 [10, 13, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,... [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, ...
... ... ...
497 [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...
498 [7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...
499 [58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,... [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, ...
500 [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...
501 [7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...

89 rows × 2 columns

# train['Wypowiedź'] = train['Wypowiedź'].tolist()
# test['Wypowiedź'] = test['Wypowiedź'].tolist()

train['Wypowiedź'] = train['Wypowiedź'].apply(lambda row: np.asarray(row).astype('float32'))
test['Wypowiedź'] = test['Wypowiedź'].apply(lambda row : np.asarray(row).astype('float32'))
validation['Wypowiedź'] = validation['Wypowiedź'].apply(lambda row : np.asarray(row).astype('float32'))

train['Act'] = train['Act'].apply(lambda row : np.asarray(row).astype('float32'))
test['Act'] = test['Act'].apply(lambda row : np.asarray(row).astype('float32'))
validation['Act'] = validation['Act'].apply(lambda row : np.asarray(row).astype('float32'))
# train['Wypowiedź'] = train['Wypowiedź'].apply(lambda row: tf.convert_to_tensor(np.asarray(row).astype('float32')))
# test['Wypowiedź'] = test['Wypowiedź'].apply(lambda row : tf.convert_to_tensor(np.asarray(row).astype('float32')))

# train['Act'] = train['Act'].apply(lambda row : tf.convert_to_tensor(np.asarray(row).astype('float32')))
# test['Act'] = test['Act'].apply(lambda row : tf.convert_to_tensor(np.asarray(row).astype('float32')))
 train['Wypowiedź'][2]
array([60.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.], dtype=float32)
type(train['Wypowiedź']),type(test['Wypowiedź']),type(train['Act']),type(test['Act'])
(pandas.core.series.Series,
 pandas.core.series.Series,
 pandas.core.series.Series,
 pandas.core.series.Series)
train_x = tf.convert_to_tensor(train['Wypowiedź'].tolist())
train_y = tf.convert_to_tensor(train['Act'].tolist())
test_x = tf.convert_to_tensor(test['Wypowiedź'].tolist())
test_y = tf.convert_to_tensor(test['Act'].tolist())

validation_x = tf.convert_to_tensor(validation['Wypowiedź'].tolist())
validation_y = tf.convert_to_tensor(validation['Act'].tolist())
len(validation_y)
89
train_x[0]
<tf.Tensor: shape=(53,), dtype=float32, numpy=
array([58.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.], dtype=float32)>
# # import keras_tuner as kt
# from tensorflow.keras.models import Sequential
# from tensorflow.keras.layers import (
#     Flatten,
#     Dense,
#     Embedding,
#     Conv1D,
#     GlobalMaxPooling1D,
#     MaxPooling1D,
# )


# model = Sequential()
# model.add(
#     Embedding(
#         num_words,
#         output_dim=128,
#         input_length=max_len,
#     )
# )
# model.add(
#     Conv1D(
#         filters=64,
#         kernel_size=3,
#         padding="same",
#         activation="relu",
#         strides=1,
#     )
# )
# model.add(MaxPooling1D(pool_size=2, padding='same'))
# model.add(Flatten())
# model.add(
#     Dense(
#         units=128,
#         activation="relu",
#     )
# )
# model.add(
#     Dense(
#         units=128,
#         activation="relu",
#     )
# )   
# model.add(Dense(10, activation="softmax"))
# model.compile(optimizer="rmsprop", loss="categorical_crossentropy", metrics=["acc"])
# ########################################units????
# model.summary()
# # build_model(kt.HyperParameters())
  tf.shape(train_x[0]), tf.shape(train_y[0]), tf.shape(test_x[0]), tf.shape(test_y[0]),
(<tf.Tensor: shape=(1,), dtype=int32, numpy=array([53])>,
 <tf.Tensor: shape=(1,), dtype=int32, numpy=array([10])>,
 <tf.Tensor: shape=(1,), dtype=int32, numpy=array([53])>,
 <tf.Tensor: shape=(1,), dtype=int32, numpy=array([10])>)
# model.fit(train_x, train_y,  validation_data=(test_x, test_y), callbacks=callbacks_list, verbose=1, epochs=100)
import keras_tuner as kt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import (
    Flatten,
    Dense,
    Embedding,
    Conv1D,
    GlobalMaxPooling1D,
    MaxPooling1D,
)


def build_model(hp):

    model = Sequential()
    model.add(
        Embedding(
            num_words,
            output_dim=hp.Int("output_dim", min_value=128, max_value=1024, step=128),
            input_length=max_len,
        )
    )
    model.add(
        Conv1D(
            filters=hp.Int("filters0", min_value=64, max_value=512, step=64),
            kernel_size=hp.Int("kernel_size0", min_value=1, max_value=3, step=1),
            padding="same",
            activation="relu",
            strides=hp.Int("strides0", min_value=1, max_value=4, step=1),
        )
    )
    model.add(MaxPooling1D(pool_size=2, padding='same'))
    if hp.Boolean("conv1"):
        model.add(
            Conv1D(
                filters=hp.Int("filters1", min_value=32, max_value=256, step=32),
                kernel_size=hp.Int("kernel_size1", min_value=1, max_value=3, step=1),
                padding="same",
                activation="relu",
                strides=hp.Int("strides1", min_value=1, max_value=4, step=1),
            )
        )
        model.add(MaxPooling1D(pool_size=2, padding='same'))
    model.add(Flatten())
    model.add(
        Dense(
            units=hp.Int("units0", min_value=128, max_value=512, step=64),
            activation="relu",
        )
    )
#     if hp.Boolean("dense1"):
    model.add(
        Dense(
            units=hp.Int("units1", min_value=64, max_value=512, step=64),
            activation="relu",
        )
    )
    if hp.Boolean("dense2"):
        model.add(
            Dense(
                units=hp.Int("units2", min_value=64, max_value=256, step=32),
                activation="relu",
            )
        )    
    model.add(Dense(10, activation="softmax"))
    model.compile(optimizer="rmsprop", loss="binary_crossentropy", metrics=["acc"])
    return model
########################################units????


# model.add(GlobalMaxPooling1D())
# model.compile(optimizer="rmsprop", loss="binary_crossentropy", metrics=["acc"])
# model.summary()
    build_model(kt.HyperParameters())
tuner = kt.Hyperband(
    build_model,
    "val_loss",
    30,
    factor=3,
    hyperband_iterations=3,
)
tuner.search(train_x, train_y,  validation_data=(test_x, test_y), callbacks=callbacks_list, verbose=1)
Trial 270 Complete [00h 00m 05s]
val_loss: 0.045697689056396484

Best val_loss So Far: 0.03326363489031792
Total elapsed time: 00h 20m 11s
INFO:tensorflow:Oracle triggered exit
best_hps=tuner.get_best_models(num_models=1)
# model = tuner.hypermodel.build(best_hps)
best_hps[0]
<keras.engine.sequential.Sequential at 0x2034189a530>
best_hps[0].evaluate(validation_x, validation_y, batch_size=128)
1/1 [==============================] - 0s 30ms/step - loss: 0.2305 - acc: 0.8315
[0.23047222197055817, 0.8314606547355652]
# model.save(classification.h5)