diff --git a/mian_wieksze copy.py b/mian_wieksze copy.py new file mode 100644 index 0000000..bb5c339 --- /dev/null +++ b/mian_wieksze copy.py @@ -0,0 +1,150 @@ +import nltk +import pandas as pd +from sklearn.neural_network import MLPClassifier +from nltk.tokenize import word_tokenize +from gensim.models import Word2Vec +import numpy as np +nltk.download('punkt') + +# w pliku train.tsv w kolumnach 25706, 58881, 73761 trzeba zamienic w tekscie tabulator na 4 spacje +train = pd.read_csv('train/train.tsv', sep='\t', names=['y', 'x'], header=None) +print(train["y"][0], train["x"][0]) + +# https://www.geeksforgeeks.org/python-word-embedding-using-word2vec/ +slowa_train = [] +for tekst in train["x"]: + pom = [] + for slowo in word_tokenize(tekst): + pom.append(slowo.lower()) + slowa_train.append(pom) +print(slowa_train[0]) + +# https://radimrehurek.com/gensim/models/word2vec.html +model = Word2Vec(sentences=slowa_train, vector_size=100, window=5, min_count=1, workers=4) +model.save("word2vec.model") + +wektor = model.wv['przyjmujący'] +print(wektor) + +podobne = model.wv.most_similar('przyjmujący', topn=5) +print(podobne) + +teksty = [] +for tekst in train["x"]: + pom = None + for slowo in word_tokenize(tekst): + wektor = model.wv[slowo.lower()] + if pom is None: + pom = wektor + else: + pom = np.concatenate((pom,wektor)) + teksty.append(pom) +print(teksty[0].shape) +#print(teksty[0]) + +liczba_wejscia = 1000#0 + +poprawione_teksty = [] +for wektor in teksty: + if len(wektor)>liczba_wejscia: + poprawione_teksty.append(wektor[:liczba_wejscia]) + else: + poprawione_teksty.append(np.pad(wektor,(0,liczba_wejscia-len(wektor)), mode='constant', constant_values=0)) +print(poprawione_teksty[0].shape) +#print(poprawione_teksty[0]) + +print(train["y"].to_numpy()) + +X = poprawione_teksty +y = train["y"].to_numpy() + +clf = MLPClassifier() # activation="tanh" +clf.fit(X, y) + +# w pliku in.tsv w kolumnach 1983, 5199 trzeba zamienic w tekscie tabulator na 4 spacje +dev_in = pd.read_csv('dev-0/in.tsv', sep='\t', names=['x'], header=None) +print(dev_in["x"][0]) + +dev_expected = pd.read_csv('dev-0/expected.tsv', sep='\t', names=['y'], header=None) +print(dev_expected["y"][0]) + +teksty_dev= [] +for tekst in dev_in["x"]: + pom = None + for slowo in word_tokenize(tekst): + wektor = None + try: + wektor = model.wv[slowo.lower()] + except KeyError: + pass + if wektor is not None: + if pom is None: + pom = wektor + else: + pom = np.concatenate((pom,wektor)) + teksty_dev.append(pom) +print(teksty_dev[0].shape) +#print(teksty_dev[0]) + +poprawione_teksty_dev = [] +for wektor in teksty_dev: + if len(wektor)>liczba_wejscia: + poprawione_teksty_dev.append(wektor[:liczba_wejscia]) + else: + poprawione_teksty_dev.append(np.pad(wektor,(0,liczba_wejscia-len(wektor)), mode='constant', constant_values=0)) +print(poprawione_teksty_dev[0].shape) +#print(poprawione_teksty_dev[0]) + +przewidywania_dev = clf.predict(poprawione_teksty_dev) +print(przewidywania_dev) + +with open("dev-0/out.tsv", "w", encoding="utf-8") as uwu: + for p in przewidywania_dev: + uwu.write(str(p)+"\n") + +mianownik = 0 +licznik=0 +for e,o in zip(dev_expected["y"].to_list(),przewidywania_dev): + mianownik +=1 + if e==o: + licznik +=1 +print(licznik,"/",mianownik,licznik/mianownik) + + +# w pliku in.tsv w kolumnach 1983, 5199 trzeba zamienic w tekscie tabulator na 4 spacje +test = pd.read_csv('test-A/in.tsv', sep='\t', names=['x'], header=None) +print(test["x"][0]) + +teksty_test = [] +for tekst in test["x"]: + pom = None + for slowo in word_tokenize(tekst): + wektor = None + try: + wektor = model.wv[slowo.lower()] + except KeyError: + pass + if wektor is not None: + if pom is None: + pom = wektor + else: + pom = np.concatenate((pom,wektor)) + teksty_test.append(pom) +print(teksty_test[0].shape) +#print(teksty_test[0]) + +poprawione_teksty_test = [] +for wektor in teksty_test: + if len(wektor)>liczba_wejscia: + poprawione_teksty_test.append(wektor[:liczba_wejscia]) + else: + poprawione_teksty_test.append(np.pad(wektor,(0,liczba_wejscia-len(wektor)), mode='constant', constant_values=0)) +print(poprawione_teksty_test[0].shape) +print(poprawione_teksty_test[0]) + +przewidywania = clf.predict(poprawione_teksty_test) +print(przewidywania) + +with open("test-A/out.tsv", "w", encoding="utf-8") as uwu: + for p in przewidywania: + uwu.write(str(p)+"\n")