""" Zadanie domowe wybrać jedno z poniższych repozytoriów i je sforkować: https://git.wmi.amu.edu.pl/kubapok/paranormal-or-skeptic-ISI-public https://git.wmi.amu.edu.pl/kubapok/sport-text-classification-ball-ISI-public stworzyć klasyfikator bazujący na prostej sieci neuronowej feed forward w pytorchu (można bazować na tym jupyterze). Zamiast tfidf proszę skorzystać z jakieś reprezentacji gęstej (np. word2vec). stworzyć predykcje w plikach dev-0/out.tsv oraz test-A/out.tsv wynik accuracy sprawdzony za pomocą narzędzia geval (patrz poprzednie zadanie) powinien wynosić conajmniej 0.67 proszę umieścić predykcję oraz skrypty generujące (w postaci tekstowej a nie jupyter) w repo, a w MS TEAMS umieścić link do swojego repo termin 25.05, 70 punktów """ import pandas as pd import spacy from net import FFN import numpy as np import torch from utils import create_embeddings_file, load_embeddings_file from nltk.tokenize import word_tokenize # sp = spacy.load('en_core_web_sm') # def word2vec(word): # return sp(word).vector # return np.random.uniform(low=0.0, high=1.0, size=(384,)) train_data = pd.read_csv("train/in.tsv", sep='\t') train_data.columns = ['PostText', 'Timestamp'] train_expected = pd.read_csv("train/expected.tsv", sep='\t') train_expected.columns = ['Label'] # test_data = pd.read_csv("test-A/in.tsv", sep='\t') # test_data.columns = ['PostText', 'Timestamp'] # dev_data = pd.read_csv('dev-0/in.tsv', sep='\t') # dev_data.columns = ['PostText', 'Timestamp'] # dev_expected = pd.read_csv('dev-0/expected.tsv', sep='\t') # dev_expected.columns = ['Label'] # create_embeddings_file(dev_data['PostText'], 'dev-0/embeddings.csv', word2vec) # create_embeddings_file(test_data['PostText'], 'test-A/embeddings.csv', word2vec) # create_embeddings_file(train_data['PostText'], 'train/embeddings.csv', word2vec) # train_data = load_embeddings_file('train/embeddings.csv').to_numpy() # dev_data = load_embeddings_file('dev-0/embeddings.csv').to_numpy() # test_data = load_embeddings_file('test-A/embeddings.csv').to_numpy() model = FFN(300, 1, 300, 300, 0.01, 4, 100) # model.double() # model.train([np.asarray(word_tokenize(x)) for x in train_data['PostText']], train_expected['Label']) model.load() model.double() model.test([np.asarray(word_tokenize(x)) for x in train_data['PostText']], train_expected['Label'], "train/out.tsv")