retroc2/run.ipynb

15 KiB

import lzma
import sys
from io import StringIO
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
import numpy

pathX = "./train/train.tsv.xz"
# pathX = "./train/in.tsv"
# pathY = "./train/meta.tsv.xz"
nrows = 100000
# data = lzma.open(pathX, mode='rt', encoding='utf-8').read()
# stringIO = StringIO(data)
# df = pd.read_csv(stringIO, sep="\t", header=None)
df = pd.read_csv(pathX, sep='\t', nrows=nrows, header=None)
# df = df.drop(df.columns, axis=1)
# topics = pd.read_csv(pathY, sep='\t', nrows=nrows, header=None)
print(len(df.index))

# print(len(topics.index))
100000
def mergeTexts(a, b, c):
    return str(a) + " " + str(b) + " " + str(c)
def getMean(a, b):
    return ((a + b)/2)
df["year"] = df.apply(lambda x: getMean(x[0], x[1]), axis = 1)
df["text"] = df.apply(lambda x: x[4], axis = 1)
df = df.drop(columns = [0,1,2,3,4], axis=1)
df.sample(5)
year text
63552 2013.212329 dnia 10 października 2012r., znak (...)/, Zakł...
89500 2013.656164 postępowania, skarżąca wniosła, jak na wstępie...
94039 1925.015068 dzieją się ciągle awantury, nieustają podejrze...
62566 2012.348361 Samodzielnego Publicznego Zespołu Opieki Zdrow...
87553 1975.494521 doprowadzających przeładowywane produkty od st...
topics = df.pop('year')
df.sample(5)
text
85466 pokoJenie dOInu Burbonów, zaprzestalo we Frano...
416 non. Jakiekolwiek próby odbudowy takich instyt...
36354 000 ludzi, a który był iście tryumf.ilnym. trw...
95566 do robienia lodów. Ogrodzenia do kląbów w wiel...
58632 ftcitnciu>a4ii. Dzień już dal nogę i mrugali g...
topics.sample(5)
22843    1991.500000
12830    1937.157534
63119    1919.500000
77638    2010.130137
5577     1934.768493
Name: year, dtype: float64
vectorizer = TfidfVectorizer(lowercase=True, stop_words=['polish'])
X = vectorizer.fit_transform(df.to_numpy().ravel())
vectorizer.get_feature_names_out()
array(['00', '000', '0000', ..., 'תורהט', 'תותיירב', 'תשדוקמ'],
      dtype=object)
# vectorizer.transform("Ala ma kotka".lower().split())
# df = df.reset_index()
tfidfVector = vectorizer.transform(df["text"])

    
# from sklearn.model_selection import train_test_split
# from sklearn.naive_bayes import GaussianNB
# 
# gnb = GaussianNB()
# gnb.fit(tfidfVector.todense(), topics)
from sklearn.linear_model import LinearRegression

reg = LinearRegression().fit(tfidfVector, topics)
testXPath = "./dev-0/in.tsv"
testYPath = "./dev-0/expected.tsv"

testX = pd.read_csv(testXPath, sep='\t', nrows=19998, header=None)

testY = pd.read_csv(testYPath, sep='\t', nrows=19998, header=None)
testX.sample(5)
0
9194 że w moich oczach umizgasz się do niej. Rzeczy...
3959 reką dopoty, dopóki nic wyiaanię !Prawiü Bye m...
19210 końcach klapy wentylacyjnej i zapobiegają odch...
6080 lat cię- owe g\\\\\\\\ allowne walki w dziennikars...
18845 elektr,yczne] ny, poszanowania ładu i po- roc1...
testY.sample()
0
3849 1956.476776
testXtfidfVector = vectorizer.transform(testX[0])
reg.score(testXtfidfVector, testY[0])
-0.3101240322770993
testXPath = "./test-A/in.tsv"
testYPath = "./test-A/out.tsv"

# testX = pd.read_csv(testXPath, sep='\t', nrows=nrows, header=None, skip_blank_lines=False)
# testY = pd.read_csv(testYPath, sep='\t', nrows=nrows, header=None)
reviews = []
with open(testXPath, 'r', encoding="utf8") as openfile:
    for line in openfile:
        reviews.append(line)
    testX = pd.DataFrame(reviews)
testXtfidfVector = vectorizer.transform(testX[0])
print(testX.shape[0])

print(testXtfidfVector.shape[0])
14220
14220
pred = reg.predict(testXtfidfVector)
print(len(pred))

import csv
with open(testYPath, 'w', newline='') as f_output:
    tsv_output = csv.writer(f_output, delimiter='\n')
    tsv_output.writerow(pred)
14220