forked from kubapok/en-ner-conll-2003
parent
9d7bf9aeca
commit
e1050c6362
@ -1,150 +0,0 @@
|
||||
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")
|
Loading…
Reference in New Issue
Block a user