paranormal-or-skeptic-ISI-p.../main.py

54 lines
2.3 KiB
Python

"""
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")