forked from kubapok/retroc2
40 KiB
40 KiB
retroc2
import lzma
import csv
from stop_words import get_stop_words
import gensim
import itertools
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
from sklearn.linear_model import LinearRegression
def read_data(filename):
all_data = lzma.open(filename).read().decode('UTF-8').split('\n')
return [line.split('\t') for line in all_data][:-1]
train_data = read_data('train/train.tsv.xz')[::250]
train_data[0]
['1985.49315068493', '1985.49589037925', 'PRZEKRÓJ', 'MBC', 'nowią część kultury. U nas już nikt ich nie chce oglądać. Chciałam osiągnąć coś wprost przeciwnego: przywrócić kobietom zaufanie do samych siebie, do własnych mo!liwości. Katharłne Hepburn powłedziala. kłedyi, łe najtrudnłej$ze to ..aprzedawanłe debie jak bukietu Awłeźych kwiatów". Czy pant nie myllt. tak aamo7 Jestem bardziej odprężona niż Katharine. Gwiazdy jej generacji były większymi gwiazdami i musiały być całkiem nadzwyczajne. Nasze pokolenie jest banalniejsze. Jako kobieta i jako aktorka najlepiej czuję się w tłumie. --. Jest szalona rolnica między tym co ludzie o panł myl\'ą. a tllm. kim panł jeBt naprClwdę. Ja tego nie widzę. Był taki okres w naszym ż\'yciu, że Tom i ja n e mieliśmy pieniędzy. NIe pracowałam. Zyliśmy z koie zności bardzo skrom- -. -... .. nie. Zresztą dotychC" as zy- . popiół znad ruin miasta. Ogromny teren, obejmuJący około 58 km t został zamieniony w dymiące pogorzelisko. Ulice miasta pokryte były zwęglonymi zwłokami mieszkańc6w, kt6re w wielu miejscach tworzyły makabryczne stosy. Wśród ofiar znaleźli się wszyscy dostojnicy przybyli poprzedniego dnia z Fort de France. Przez pierwsze dwa dni trwała akcja ratunkowa, nie udało się jednak znale:fć ani jednej żywej istoty. Dopiero w niedzielę, 11 maja, usłyszano czyjeŚ jęki. Odrzucając głazy i gorący jeszcze popiół, odnaleziono mocno poparzonego i całkowicie wyczerpanego młodego człowieka. Okazało si że jest to więzień pochodzący z leo Precheur. Skazano go na tygodniowy pobyt w karnej celi (ciemnicy) za samowolne opuszczenie więzienia. Ta niesubordynacja okazała się dla Sylbarisa zbawienna. Grube mury celi, Rołożonej u pod!1 óża g?ry, uchroniły go od zrmażdźenla i od spalenia\'. Uratowany tak opisał nieprawdopodobną tragedię miasta: To btllo okolo 8 rano... nagle usłyszałem ogromny huk, a potem pTzeraźliwe krzyki ludzi. W sZ]lScy . l .\' , P walali: pa ę nę.... umIeram.... o kilku minutach. WSZ1łstkie ucichły. Wszystkie... :z 1D1/;qtkiem mo;ego... Ogień pochłonął miasto i jego mieszkańców. Spełniła się klątwa rzucona przez wodza karaibskiego przed nies łna ćwierć wiekiem. ANDRZEJ VORBRODT jemy o wiele skromniej, niż większość ludzi z Hollywood. Moje. dzieci chodzą do publicznej szkoły, nie chcę, by wyrastały na .snobów. Myślę, że każda aktorka chyba że gra wyłącznie kr6lowe i księżniczki musi pozostawać w kontakcie z normalnymi ludźmi i z normalnym życiem. Zresztą, gdybym nagle zdecydowała się żyć luksusowo, Tom niechybnie opuściłby mnie\' w mgnieniu oka. Wydawalo mł się nłer4%, e ma pant paC2. UC"ic winy z powodu awołch ]Jłeniędzy... Nic podobnego. Jestem dumna ze sposobu, w jaki wydaję moje pieniądze. Używam ich na cele? w które wierzę i o ktore walczę. - czy t,o prawda. te sfinanaowała pant calkouńcie kampanię elektoralną Toma przy pomocy płenłędZ1l zarobionych na aerobiku\' Tak. czy zna pani włelko\' swojej fortuny? ..:.. Mniej więcej. Przed Tomem byl Vad\'m; Paryt. cyganeria artystyczna, latwe tycie... Była pant kim innym. Jak doszlo do takiej zmiany? Dwadzie cia lat temu nie wiedziałam kim jestem. Byłam całkiem apolityczna. Kiedy wybuchła wojna w Wietnamie, n!e wiedziałam nawet gdzie leży Wietnam. A kiedy zrozumiałam, co naprawdę się dzieje w Wietnamie nie umiałam się wyłączyć j przestać walczyć o to, co Ic-uważalam za swój 000- wiązek. To calkowicle zmieniło']
stop_words = get_stop_words('pl') + ['a', 'u', 'i', 'z', 'w', 'o']
print(stop_words)
['ach', 'aj', 'albo', 'bardzo', 'bez', 'bo', 'być', 'ci', 'cię', 'ciebie', 'co', 'czy', 'daleko', 'dla', 'dlaczego', 'dlatego', 'do', 'dobrze', 'dokąd', 'dość', 'dużo', 'dwa', 'dwaj', 'dwie', 'dwoje', 'dziś', 'dzisiaj', 'gdyby', 'gdzie', 'go', 'ich', 'ile', 'im', 'inny', 'ja', 'ją', 'jak', 'jakby', 'jaki', 'je', 'jeden', 'jedna', 'jedno', 'jego', 'jej', 'jemu', 'jeśli', 'jest', 'jestem', 'jeżeli', 'już', 'każdy', 'kiedy', 'kierunku', 'kto', 'ku', 'lub', 'ma', 'mają', 'mam', 'mi', 'mną', 'mnie', 'moi', 'mój', 'moja', 'moje', 'może', 'mu', 'my', 'na', 'nam', 'nami', 'nas', 'nasi', 'nasz', 'nasza', 'nasze', 'natychmiast', 'nią', 'nic', 'nich', 'nie', 'niego', 'niej', 'niemu', 'nigdy', 'nim', 'nimi', 'niż', 'obok', 'od', 'około', 'on', 'ona', 'one', 'oni', 'ono', 'owszem', 'po', 'pod', 'ponieważ', 'przed', 'przedtem', 'są', 'sam', 'sama', 'się', 'skąd', 'tak', 'taki', 'tam', 'ten', 'to', 'tobą', 'tobie', 'tu', 'tutaj', 'twoi', 'twój', 'twoja', 'twoje', 'ty', 'wam', 'wami', 'was', 'wasi', 'wasz', 'wasza', 'wasze', 'we', 'więc', 'wszystko', 'wtedy', 'wy', 'żaden', 'zawsze', 'że', 'a', 'u', 'i', 'z', 'w', 'o']
train_data_tokenized = [list(set(gensim.utils.tokenize(x[4], lowercase = True))) for x in train_data]
train_data_tokenized[0]
['hepburn', 'przestać', 'skazano', 'l', 'chce', 'ic', 'miasto', 'ta', 'aerobiku', 'czy', 'wszyscy', 'jestem', 'już', 'dymiące', 'zarobionych', 'katharine', 'dwadzie', 'zdecydowała', 'normalnym', 'potem', 'jednej', 'widzę', 'tygodniowy', 'toma', 'byl', 'huk', 'liwości', 'te', 'kt', 'mury', 'fort', 'więzienia', 'okolo', 'walczę', 'o', 'ani', 'znaleźli', 'dzieje', 'okazała', 'człowieka', 'maja', 'nawet', 'wydawalo', 'musiały', 'minutach', 'głazy', 'qtkiem', 'zbawienna', 'wprost', 'jednak', 'wśród', 'samowolne', 'życiem', 'kobieta', 'g', 'aprzedawanłe', 'odrzucając', 'dostojnicy', 'uważalam', 'paryt', 'włelko', 'luksusowo', 'podobnego', 'własnych', 'katharłne', 'karaibskiego', 'samych', 'wybuchła', 'nic', 'dla', 'de', 'księżniczki', 'łna', 'klątwa', 'sfinanaowała', 'powłedziala', 'pani', 'część', 'wiązek', 'wyłącznie', 'rzucona', 'akcja', 'opuściłby', 'karnej', 'myl', 'p', 'leo', 'zwłokami', 'pokolenie', 'miejscach', 'spalenia', 'kłedyi', 'mieliśmy', 'koie', 'takiej', 'walali', 'rano', 'naprawdę', 'większymi', 'na', 'zna', 'si', 'normalnymi', 'były', 'apolityczna', 'zaufanie', 'całkiem', 'zyliśmy', 'ptzeraźliwe', 'udało', 'tym', 're', 'osiągnąć', 'mgnieniu', 'pochłonął', 'naszym', 'rołożonej', 'grube', 'oka', 'tworzyły', 'istoty', 'debie', 'każda', 'zy', 'mniej', 'chciałam', 'popiół', 'leży', 'najtrudnłej', 'znad', 'jego', 'pochodzący', 'zmieniło', 'snobów', 'dumna', 'byłam', 'yciu', 'pieniądze', 'pokryte', 'bardziej', 'm', 'do', 'bukietu', 'żyć', 'poparzonego', 'w', 'ę', 'calkowicle', 'vad', 'tak', 'gdzie', 'kampanię', 'celi', 'pozostawać', 'sylbarisa', 'nieprawdopodobną', 'nie', 'około', 'wojna', 'calkouńcie', 'odnaleziono', 'uc', 'które', 'poprzedniego', 'dzieci', 'wietnam', 'płenłędz', 'publicznej', 'odprężona', 'spełniła', 'ja', 'nę', 'stosy', 'jęki', 'wyłączyć', 'chyba', 'skrom', 'jemy', 'jak', 'więcej', 'była', 'jłeniędzy', 'przed', 'nadzwyczajne', 'musi', 'młodego', 'używam', 'szalona', 'przeciwnego', 'naprclwdę', 'to', 'tom', 'fć', 'myślę', 'wiedziałam', 'za', 'niesubordynacja', 'nies', 'by', 'chcę', 'ucichły', 'lowe', 'precheur', 'zresztą', 'dopiero', 'winy', 'j', 'zności', 'zamieniony', 'mł', 'ulice', 'czyjeś', 'taki', 'ogień', 'ze', 'óża', 'fortuny', 'nas', 'kwiatów', 'usłyszano', 'kim', 'został', 'ry', 'as', 'france', 'moje', 'ludzi', 'n', 'niż', 'nłer', 'jaki', 'chodzą', 'go', 'makabryczne', 'tomem', 'siebie', 'ogromny', 'opuszczenie', 'dotychc', 'nikt', 'panł', 'tego', 'pieniędzy', 'wydaję', 'jest', 'pa', 'skromniej', 'bardzo', 'powodu', 'wiele', 'aamo', 'btllo', 'przy', 'latwe', 'żywej', 'sz', 'gwiazdami', 'ktore', 'pobyt', 'e', 'elektoralną', 'nagle', 'tłumie', 'pierwsze', 'krzyki', 'niedzielę', 'wiekiem', 'zwęglonymi', 'pomocy', 'ą', 'tragedię', 'teren', 'ludźmi', 'sposobu', 'trwała', 'łe', 'artystyczna', 'wielu', 'i', 'przybyli', 'zrozumiałam', 'mieszkańców', 'okazało', 'ma', 'wyrastały', 'lat', 'wsz', 'niechybnie', 'mnie', 'jeszcze', 'wietnamie', 'wodza', 'cia', 'temu', 'myllt', 'łstkie', 'mo', 'nowią', 'kiedy', 'pod', 'vorbrodt', 'od', 'zmiany', 'generacji', 'tycie', 'gra', 'jebt', 'pogorzelisko', 't', 'przez', 'pant', 'ż', 'umieram', 'okres', 'hollywood', 'ruin', 'przywrócić', 'opisał', 'kultury', 'czuję', 'że', 'mieszkańc', 'pac', 'cyganeria', 'obejmujący', 'pracowałam', 'innym', 'rolnica', 'prawda', 'swój', 'nasze', 'swojej', 'większość', 'uchroniły', 'kobietom', 'a', 'oglądać', 'znale', 'wyczerpanego', 'd', 'ofiar', 'co', 'był', 'aktorka', 'z', 'wszystkie', 'szkoły', 'uratowany', 'między', 'dwa', 'km', 'umiałam', 'miasta', 'kr', 'gdybym', 'awłeźych', 'ich', 'awołch', 'doszlo', 'więzień', 'kontakcie', 'jako', 'zrmażdźenla', 'usłyszałem', 'ćwierć', 'wierzę', 'się', 'mocno', 'kilku', 'coś', 'ego', 'być', 'andrzej', 'jej', 'gwiazdy', 'całkowicie', 'tllm', 'dni', 'dnia', 'walczyć', 'ratunkowa', 'lscy', 'cele', 'u', 'banalniejsze', 'ludzie', 'gorący', 'najlepiej', 'ciemnicy']
train_data_stemmatized = [list(set([w[:6] for w in set(i) - set(stop_words)])) for i in train_data_tokenized]
train_data_stemmatized[0]
['zreszt', 'l', 'kontak', 'chce', 'ic', 'miasto', 'sposob', 'ta', 'uchron', 'kultur', 'wszysc', 'pozost', 'potem', 'jednej', 'widzę', 'toma', 'spełni', 'byl', 'vorbro', 'huk', 'okazał', 'te', 'kt', 'mury', 'fort', 'okolo', 'odpręż', 'nadzwy', 'walczę', 'ani', 'mieliś', 'dzieje', 'odrzuc', 'podobn', 'maja', 'nawet', 'głazy', 'qtkiem', 'wprost', 'jednak', 'wśród', 'karaib', 'genera', 'osiągn', 'życiem', 'g', 'rzucon', 'paryt', 'włelko', 'dymiąc', 'ogląda', 'awłeźy', 'niechy', 'samych', 'gwiazd', 'de', 'łna', 'hollyw', 'pochod', 'klątwa', 'samowo', 'sylbar', 'pani', 'część', 'wiązek', 'akcja', 'niedzi', 'karnej', 'myl', 'szalon', 'p', 'leo', 'rołożo', 'całkie', 'kłedyi', 'koie', 'takiej', 'elekto', 'walali', 'rano', 'zna', 'ucichł', 'si', 'zamien', 'były', 'wyczer', 'całkow', 'udało', 'tym', 'naprcl', 'znaleź', 'mieszk', 'calkow', 're', 'naszym', 'grube', 'oka', 'liwośc', 'umiała', 'istoty', 'debie', 'każda', 'zy', 'mniej', 'popiół', 'miejsc', 'leży', 'znad', 'andrze', 'wyłącz', 'snobów', 'dumna', 'byłam', 'przeci', 'dopier', 'odnale', 'yciu', 'calkou', 'najtru', 'm', 'zarobi', 'chciał', 'żyć', 'ę', 'vad', 'hepbur', 'celi', 'przywr', 'wojna', 'opuszc', 'dwadzi', 'ptzera', 'uc', 'które', 'dzieci', 'zrozum', 'musiał', 'zbawie', 'bardzi', 'nę', 'stosy', 'jęki', 'zwęglo', 'młodeg', 'poparz', 'chyba', 'aprzed', 'skrom', 'jemy', 'skromn', 'więcej', 'była', 'większ', 'kwiató', 'musi', 'używam', 'zwłoka', 'wybuch', 'tygodn', 'niepra', 'wietna', 'cygane', 'tom', 'fć', 'człowi', 'myślę', 'za', 'nies', 'by', 'pokryt', 'chcę', 'lowe', 'winy', 'j', 'zdecyd', 'zności', 'mł', 'ulice', 'czyjeś', 'ogień', 'ze', 'makabr', 'óża', 'kim', 'został', 'ry', 'as', 'france', 'ludzi', 'n', 'umiera', 'nłer', 'chodzą', 'pienię', 'tomem', 'kobiet', 'siebie', 'wiekie', 'sfinan', 'nikt', 'panł', 'tego', 'wydaję', 'ogromn', 'rolnic', 'pa', 'ratunk', 'powodu', 'artyst', 'wiele', 'zaufan', 'public', 'aamo', 'btllo', 'przy', 'latwe', 'żywej', 'skazan', 'sz', 'ktore', 'minuta', 'pobyt', 'e', 'powłed', 'pogorz', 'jłenię', 'apolit', 'ciemni', 'nagle', 'najlep', 'tłumie', 'krzyki', 'usłysz', 'jeszcz', 'pomocy', 'przyby', 'ą', 'teren', 'ludźmi', 'trwała', 'zrmażd', 'łe', 'walczy', 'wielu', 'dotych', 'tworzy', 'lat', 'wsz', 'banaln', 'wyrast', 'wszyst', 'wodza', 'cia', 'temu', 'myllt', 'własny', 'normal', 'łstkie', 'dostoj', 'uważal', 'mo', 'nowią', 'wiedzi', 'aerobi', 'pracow', 'płenłę', 'zmiany', 'tycie', 'gra', 'opuści', 'jebt', 't', 'przez', 'pant', 'ż', 'okres', 'spalen', 'ruin', 'opisał', 'więzie', 'czuję', 'luksus', 'pac', 'mgnien', 'innym', 'kampan', 'prawda', 'aktork', 'swój', 'obejmu', 'swojej', 'znale', 'zyliśm', 'kathar', 'd', 'ofiar', 'pierws', 'napraw', 'traged', 'był', 'zmieni', 'szkoły', 'między', 'km', 'miasta', 'kr', 'gdybym', 'przest', 'awołch', 'doszlo', 'pochło', 'uratow', 'jako', 'wierzę', 'ćwierć', 'preche', 'mocno', 'kilku', 'coś', 'poprze', 'ego', 'pokole', 'księżn', 'bukiet', 'tllm', 'fortun', 'dni', 'dnia', 'niesub', 'wydawa', 'lscy', 'cele', 'pienią', 'ludzie', 'gorący']
vectorizer = TfidfVectorizer()
vectors = vectorizer.fit_transform([' '.join(i) for i in train_data_stemmatized])
feature_names = vectorizer.get_feature_names()
dense = vectors.todense()
denselist = dense.tolist()
df = pd.DataFrame(denselist, columns=feature_names)
len(train_data)
430
df[:10]
__ | ___ | ____ | _____ | ______ | ____x | __ch | __n_ | __naie | __o | ... | франкф | фялофс | что | шшяшшш | щвашш | ьввдвн | ьлало | эавкде | юрвдич | ях | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
5 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
6 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
7 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
9 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
10 rows × 42788 columns
vectorizer.transform(['__ ma kota']).toarray()[0]
array([0.47377066, 0. , 0. , ..., 0. , 0. , 0. ])
train_Y = [(float(x[0]) + float(x[1])) / 2 for x in train_data]
model = LinearRegression() # definicja modelu
model.fit(df, train_Y) # dopasowanie modelu
LinearRegression()
model.predict(df[:10])
array([1985.49452053, 1925.6178082 , 1967.30958903, 1937.49999998, 1919.55479387, 1932.77459015, 1842.49999998, 1932.08333332, 1930.67808218, 2000.49999998])
with open('dev-0/in.tsv', "r", encoding="utf-8") as f:
dev_0_data = [line.rstrip() for line in f]
dev_0_data_tokenized = [list(set(gensim.utils.tokenize(x, lowercase = True))) for x in dev_0_data]
dev_0_data_stemmatized = [list(set([w[:6] for w in set(i) - set(stop_words)])) for i in dev_0_data_tokenized]
dev_0_data = [' '.join(i) for i in dev_0_data_stemmatized]
y_predicted = model.predict(vectorizer.transform(dev_0_data).toarray())
y_predicted[:10]
array([1889.28635713, 1950.9440436 , 1957.26235075, 1959.53052259, 1914.96228803, 1948.17090442, 1951.19472106, 1917.66714928, 1912.14525243, 1936.7929999 ])
f = open("dev-0/out.tsv", "a")
for i in y_predicted:
f.write(str(round(i, 11)) + '\n')
f.close()
with open('dev-0/expected.tsv', "r", encoding="utf-8") as f:
e = [line.rstrip() for line in f]
import math
t = []
for i in range(len(y_predicted)):
tmp = (float(y_predicted[i]) - float(e[i])) ** 2
t.append(tmp)
print(math.sqrt(sum(t)/len(y_predicted)))
38.80250628936373
with open('test-A/in.tsv', "r", encoding="utf-8") as f:
test_A_data = [line.rstrip() for line in f]
test_A_data_tokenized = [list(set(gensim.utils.tokenize(x, lowercase = True))) for x in test_A_data]
test_A_data_stemmatized = [list(set([w[:6] for w in set(i) - set(stop_words)])) for i in test_A_data_tokenized]
test_A_data = [' '.join(i) for i in test_A_data_stemmatized]
y_test_predicted = model.predict(vectorizer.transform(test_A_data).toarray())
y_test_predicted[:10]
array([1970.80482572, 1891.52353205, 1914.05051655, 1921.30242974, 1908.01225049, 1912.69373127, 1911.11153893, 1948.74997295, 1925.77888352, 1923.62798817])
f = open("test-A/out.tsv", "a")
for i in y_test_predicted:
f.write(str(round(i, 11)) + '\n')
f.close()