Jovian
⭐️
Sign In
In [1]:
import numpy as np
import guidedlda
import pandas as pd
import csv
import os
from sklearn.feature_extraction.text import CountVectorizer
import jovian
In [3]:
raw_stopwords = "ა.შ. აგერ აგრეთვე ალბათ ამაზე ამას ამასთან ამასთანავე ამგვარად ამდენად ამით ამის ამისთვის ამიტომ ამიტომაც ამჟამად ამჯერად ან ანუ არ არა არადა არათუ არამარტო არამედ არამხოლოდ არანაკლებ არასოდეს არაუადრეს არაუგვიანეს არაუმეტეს არსად არსაიდან არც არცერთ ასევე ასეც აქამდე აღარ აღარც ბოლოს ბოლოსკენ გამო გამუდმებით განსაკუთრებით გარდა გარეშე და დასასრულს დასაწყისში დროულად ე.ი. ე.წ. ეგებ ერთადერთი ერთადერთმა ერთ-ერთი ერთხელ ესოდე ვერ ვითომ ვინაიდან ვინძლო ვისაც ზემოაღნიშნულმა ზოგჯერ თავად თავადაც თავადვე თავდაპირველად თავიდანვე თავის მხრივ თან თანაც თანახმადაც თანდათან თვით თვითონ თვითონაც თვითონვე თითოეულმა თითქოს თუ თუკი თუმცა თუმცაღა თუნდაც იმავდროულად იმავე იმან იმას იმდენად იმთავითვე იმით იმის იმისთვის იმიტომ ისევე ისეთი ისეც იშვიათად კერძოდ კვლავ კი კიდევ მაგალითად მაგან მაგას მაგით მაგის მაგრამ მათი მაინც მანამ მანამდე მართალია მარტო მაშასადამე მაშინ მაშინვე მერე მეტად მთელი მიერ მით მიმართ მისივე მსგავსი მხოლოდ ნაწილობრივ ნეტავ ნეტავი ნუ ნურასოდეს ნურც ნუღარ ნუღარც ოდენ ოდესღაც ოღონდ პირველი პირიქით პრინციპში რადგან რადგანაც რათა რაკი რამდენად რამდენადაც რამეთუ რამენაირად რამეფრად რანაირადაც რასაკვირველია რასაც რაღაც რაც რითაც რისთვისაც როგორადაც როგორიც როგორიცაა როგორღაც როგორც როდესაც როდესღაც რომ რომელიმე რომელიც რომელსაც რომლებიც რომლითაც რომლის როცა საბოლოოდ სადაც სადღაც საერთოდ სათანადოდ საიდანაც სამომავლოდ სანამ სანამდე სრულად სულ სწორედ სხვადასხვა სხვები უკვე უნდა უსათუოდ უფრო უცებ უცნაურად ფაქტობრივად ყველა ყოველგვარი ყოველთვის ყოველი ყოველივე შედარებით შედეგად შემდგომ შემდგომში შემდეგ შესახებ შორის ჩვეულებრივ წინააღმდეგ წინაშე ხან ხოლმე ხოლო ხშირად ჯერაც ჯერჯერობით ამის გარდა ამის გარეშე ამის მიუხედავად ამასთან ერთად ამის მიხედვით ამის ნაცვლად ამის პასუხად ამასთან შედარებით ამბობს რომ ამ დროს ამ თემაზე ამ მიზნით ამის საპირისპიროდ ამის გამო ამ მხრივ ამის უარსაყოფად ამის შედეგად ამ შემთხვევაში ამავე დროს ამას გარდა ამასთან დაკავშირებით ამის შემდეგ ამის შესაბამისად ამის შესახებ ამისგან განსხვავებით არა მარტო არა მხოლოდ არა უადრეს არა უგვიანეს არც ერთი არც კი არც მეორე ასე ვთქვათ ასე მაგალითად ასე რომ ასე შემდეგ ასევე განიხილავს აქედან გამომდინარე აქედან დასკვნა აღნიშნა რომ აღნიშნულთან დაკავშირებით აცხადებს რომ ბოლო ერთი ბოლო პერიოდში ბოლო წლებში გამოთქვა იმედი განაცხადა რომ განმარტა რომ გარდა ამისა გარშემო არსებული და სხვ. და სხვა დაადასტურა რომ ეგრეთ წოდებული ეგრეთ წოდებულმა ერთი თვალსაზრისით ერთი მხრივ ერთის მხრივ ეს კი ესე იგი ვიდრე არ თავიდან ბოლომდე თუ რამდენად თუ როგორ იგივეა რაც იმ შემთხვევაში იმაზე მეტი იმაზე რომ იმას რომ იმასთან დაკავშირებით იმდენად რამდენადაც იმედი გამოთქვა იმის გამო იმის თაობაზე იმის საწინააღმდეგოდ იმისათვის რომ იმისთვის რათა იმისთვის რომ იმიტომ რომ ის რომელიც ისე როგორც ისე რომ ისევე როგორც ისეთი როგორიც იქიდან გამომდინარე კიდევ ერთხელ მაგრამ თუ მათ შორის მათი ვარაუდით მანამ სანამ მას შემდეგ მაშინ როცა მაშინაც კი მეორე მხრივ მეორეც ერთი მერე მეორე მით უფრო მიიჩნევს რომ მისი განმარტებით მისი თქმით მისივე თქმით მიუხედავად ამისა ნურც კი პირველ რიგში რა დროსაც რა მიზეზითაც რაც შეეხება რაც შეიძლება რის გამოც რის საფუძველზედაც რის საფუძველზეც რის შედეგადაც რის შემდეგაც როგორც კი რომ არა რომ თუ რომელთა გამოც რომლის თანახმად რომლის თანახმადაც რომლის მიხედვითაც რომლის შესახებ საკითხთან დაკავშირებით სულ მცირე სულ ცოტა სხვა კუთხით სხვა მხრივ სხვა რამ სხვათა შორის უფრო მეტიც ყოველივე ეს შემდეგ უკვე ჩვენი განცხადებით ჯერ ერთი ჯერ კიდევ ამ ბოლო დროს ამა თუ იმ ასე თუ ისე აქედან ჩანს რომ ბოლოს და ბოლოს გამომდინარე იქიდან რომ და ასე შემდეგ ვინაიდან და რადგანაც თუ რის საფუძველზე იმის გათვალისწინებით რომ იმის გამო რომ იმის ნაცვლად რომ ისევ და ისევ იქვე აღნიშნა რომ იქიდან გამომდინარე რომ კიდევ და კიდევ მაინც და მაინც მას შემდეგ რაც მიუხედავად იმისა თუ მიუხედავად იმისა რომ როგორც უკვე ითქვა როდის და რატომ უფრო და უფრო მე მე ჩემი თვითონ ჩვენ ჩვენი ჩვენია საკუთარ თავს შენ შენი შენია საკუთარ თავს თვითონ ის მას მისი თავად მან მისი ჰერსი თავად ეს მისი თავად ისინი მათ მათი მათი თვითონ რა რომელიც ვინ ვისი ეს რომ ეს იმ ვარ არის არიან იყო იყო იყოს იყო ყოფნა აქვს აქვს ჰქონდა რომელსაც აქვს კეთება აკეთებს გააკეთა კეთება ა a ის და მაგრამ თუ ან რადგან როგორც სანამ ხოლო საქართველოს ზე მიერ ამისთვის ერთად დაახლოებით წინააღმდეგ შორის შევიდა მეშვეობით დროს ადრე შემდეგ ზემოთ ქვევით to დან up ქვემოთ შემოსული გარეთ დასრულდა ქვეშ კიდევ ერთხელ უფრო მაშინ ერთხელ აქ იქ როდესაც სადაც რატომ როგორ ყველა ნებისმიერი ორივე თითოეული რამდენიმე მეტი საუკეთესო სხვა ზოგიერთი ასეთი არა არც არა მხოლოდ საკუთარი იგივე ისე ვიდრე ძალიან ძალიან s ტ შეიძლება ნება უბრალოდ დონ უნდა ახლა"
russian_stopwords = " c  а  алло  без  белый  близко  более  больше  большой  будем  будет  будете  будешь  будто  буду  будут  будь  бы  бывает  бывь  был  была  были  было  быть  в  важная  важное  важные  важный  вам  вами  вас  ваш  ваша  ваше  ваши  вверх  вдали  вдруг  ведь  везде  вернуться  весь  вечер  взгляд  взять  вид  видел  видеть  вместе  вне  вниз  внизу  во  вода  война  вокруг  вон  вообще  вопрос  восемнадцатый  восемнадцать  восемь  восьмой  вот  впрочем  времени  время  все  все еще  всегда  всего  всем  всеми  всему  всех  всею  всю  всюду  вся  всё  второй  вы  выйти  г  где  главный  глаз  говорил  говорит  говорить  год  года  году  голова  голос  город  да  давать  давно  даже  далекий  далеко  дальше  даром  дать  два  двадцатый  двадцать  две  двенадцатый  двенадцать  дверь  двух  девятнадцатый  девятнадцать  девятый  девять  действительно  дел  делал  делать  делаю  дело  день  деньги  десятый  десять  для  до  довольно  долго  должен  должно  должный  дом  дорога  друг  другая  другие  других  друго  другое  другой  думать  душа  е  его  ее  ей  ему  если  есть  еще  ещё  ею  её  ж  ждать  же  жена  женщина  жизнь  жить  за  занят  занята  занято  заняты  затем  зато  зачем  здесь  земля  знать  значит  значить  и  иди  идти  из  или  им  имеет  имел  именно  иметь  ими  имя  иногда  их  к  каждая  каждое  каждые  каждый  кажется  казаться  как  какая  какой  кем  книга  когда  кого  ком  комната  кому  конец  конечно  которая  которого  которой  которые  который  которых  кроме  кругом  кто  куда  лежать  лет  ли  лицо  лишь  лучше  любить  люди  м  маленький  мало  мать  машина  между  меля  менее  меньше  меня  место  миллионов  мимо  минута  мир  мира  мне  много  многочисленная  многочисленное  многочисленные  многочисленный  мной  мною  мог  могу  могут  мож  может  может быть  можно  можхо  мои  мой  мор  москва  мочь  моя  моё  мы  на  наверху  над  надо  назад  наиболее  найти  наконец  нам  нами  народ  нас  начала  начать  наш  наша  наше  наши  не  него  недавно  недалеко  нее  ней  некоторый  нельзя  нем  немного  нему  непрерывно  нередко  несколько  нет  нею  неё  ни  нибудь  ниже  низко  никакой  никогда  никто  никуда  ним  ними  них  ничего  ничто  но  новый  нога  ночь  ну  нужно  нужный  нх  о  об  оба  обычно  один  одиннадцатый  одиннадцать  однажды  однако  одного  одной  оказаться  окно  около  он  она  они  оно  опять  особенно  остаться  от  ответить  отец  откуда  отовсюду  отсюда  очень  первый  перед  писать  плечо  по  под  подойди  подумать  пожалуйста  позже  пойти  пока  пол  получить  помнить  понимать  понять  пор  пора  после  последний  посмотреть  посреди  потом  потому  почему  почти  правда  прекрасно  при  про  просто  против  процентов  путь  пятнадцатый  пятнадцать  пятый  пять  работа  работать  раз  разве  рано  раньше  ребенок  решить  россия  рука  русский  ряд  рядом  с  с кем  сам  сама  сами  самим  самими  самих  само  самого  самой  самом  самому  саму  самый  свет  свое  своего  своей  свои  своих  свой  свою  сделать  сеаой  себе  себя  сегодня  седьмой  сейчас  семнадцатый  семнадцать  семь  сидеть  сила  сих  сказал  сказала  сказать  сколько  слишком  слово  случай  смотреть  сначала  снова  со  собой  собою  советский  совсем  спасибо  спросить  сразу  стал  старый  стать  стол  сторона  стоять  страна  суть  считать  т  та  так  такая  также  таки  такие  такое  такой  там  твои  твой  твоя  твоё  те  тебе  тебя  тем  теми  теперь  тех  то  тобой  тобою  товарищ  тогда  того  тоже  только  том  тому  тот  тою  третий  три  тринадцатый  тринадцать  ту  туда  тут  ты  тысяч  у  увидеть  уж  уже  улица  уметь  утро  хороший  хорошо  хотел бы  хотеть  хоть  хотя  хочешь  час  часто  часть  чаще  чего  человек  чем  чему  через  четвертый  четыре  четырнадцатый  четырнадцать  что  чтоб  чтобы  чуть  шестнадцатый  шестнадцать  шестой  шесть  эта  эти  этим  этими  этих  это  этого  этой  этом  этому  этот  эту  я  являюсь    "
stopwords = set(["i", "me", "my", "myself", "we", "our", "ours", "ourselves", "you", "your", "yours", "yourself", "yourselves", "he", "him", "his", "himself", "she", "her", "hers", "herself", "it", "its", "itself", "they", "them", "their", "theirs", "themselves", "what", "which", "who", "whom", "this", "that", "these", "those", "am", "is", "are", "was", "were", "be", "been", "being", "have", "has", "had", "having", "do", "does", "did", "doing", "a", "an", "the", "and", "but", "if", "or", "because", "as", "until", "while", "of", "at", "by", "for", "with", "about", "against", "between", "into", "through", "during", "before", "after", "above", "below", "to", "from", "up", "down", "in", "out", "on", "off", "over", "under", "again", "further", "then", "once", "here", "there", "when", "where", "why", "how", "all", "any", "both", "each", "few", "more", "most", "other", "some", "such", "no", "nor", "not", "only", "own", "same", "so", "than", "too", "very", "s", "t", "can", "will", "just", "don", "should", "now"])
raw_stopwords += russian_stopwords
for stopword in raw_stopwords.split(' '):
    stopwords.add(stopword.strip().replace(',', ''))
In [4]:
files = os.listdir("Q2_2019")
path = "Q2_2019/"
docs = []
for file in files:
    with open(path+file) as source_file:
        source_data = pd.read_csv(source_file)
        X = source_data["Text"].dropna()
        docs.extend(X.values)
In [6]:
vec = CountVectorizer(ngram_range=(1,3),stop_words = stopwords)
X = vec.fit_transform(docs)
X = np.asarray(X.toarray())
vocab = vec.get_feature_names()
word2id = dict((v, idx) for idx, v in enumerate(vocab))
print(len(X))
/usr/local/lib/python3.6/dist-packages/sklearn/feature_extraction/text.py:301: UserWarning: Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens ['ერთ', 'სხვ'] not in stop_words. 'stop_words.' % sorted(inconsistent))
--------------------------------------------------------------------------- MemoryError Traceback (most recent call last) <ipython-input-6-b1b5d86e4db3> in <module> 1 vec = CountVectorizer(ngram_range=(1,3),stop_words = stopwords) 2 X = vec.fit_transform(docs) ----> 3 X = np.asarray(X.toarray()) 4 vocab = vec.get_feature_names() 5 word2id = dict((v, idx) for idx, v in enumerate(vocab)) /usr/local/lib/python3.6/dist-packages/scipy/sparse/compressed.py in toarray(self, order, out) 1022 if out is None and order is None: 1023 order = self._swap('cf')[0] -> 1024 out = self._process_toarray_args(order, out) 1025 if not (out.flags.c_contiguous or out.flags.f_contiguous): 1026 raise ValueError('Output array must be C or F contiguous') /usr/local/lib/python3.6/dist-packages/scipy/sparse/base.py in _process_toarray_args(self, order, out) 1184 return out 1185 else: -> 1186 return np.zeros(self.shape, dtype=self.dtype, order=order) 1187 1188 MemoryError:
In [12]:
topics = os.listdir("Seed_topics")
seed_topic_list = []

for file in topics:
    keys = []
    with open("Seed_topics/"+file) as seed_file:
        print(file)
        for line in seed_file:
            keys.append(line[:-1])
        seed_topic_list.append(keys)
print(len(seed_topic_list))
Turkey.txt US.txt Soviet Nostalgia.txt Ukraine.txt War of 2008.txt Neutral Status.txt Eurasion Union.txt EU.txt LGBT.txt Human Rights.txt Freedom.txt NATO.txt NGO.txt Russia.txt Immigration.txt 15
In [13]:
model = guidedlda.GuidedLDA(n_topics=15, n_iter=100, random_state=7, refresh=20)

seed_topics = {}
for t_id, st in enumerate(seed_topic_list):
    for word in st:
        if word in word2id:
            seed_topics[word2id[word]] = t_id

model.fit(X, seed_topics=seed_topics, seed_confidence=0.15)

n_top_words = 20
topic_word = model.topic_word_
for i, topic_dist in enumerate(topic_word):
    topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1]
    print('Topic {}: {}'.format(i, ' '.join(topic_words)))
INFO:guidedlda:n_documents: 10671 INFO:guidedlda:vocab_size: 68766 INFO:guidedlda:n_words: 247971 INFO:guidedlda:n_topics: 15 INFO:guidedlda:n_iter: 100 WARNING:guidedlda:all zero row in document-term matrix found INFO:guidedlda:<0> log likelihood: -3898548 INFO:guidedlda:<20> log likelihood: -2802561 INFO:guidedlda:<40> log likelihood: -2741641 INFO:guidedlda:<60> log likelihood: -2712263 INFO:guidedlda:<80> log likelihood: -2693815 INFO:guidedlda:<99> log likelihood: -2680435
Topic 0: წლის წელს საქართველოში წელი აშშ ქართველი ერთ რომელმაც გაიგეპირველმა ორი გააზიარეთ 25 ახალი inewsge ყველაზე 12 აინიუსი განმავლობაში ში სამხედრო Topic 1: u0001f929 горчакова россии фонда наших 2019 новости потсдамских стран отношений международных 19 лекция встреч partners фонд российско фонде форум дипломатии Topic 2: გიორგი გაიზიარეთ გააზიარეთ სააკაშვილი სააკაშვილის წლის წინ ხარ მიხეილ ბანკის შალვა დიდი ვიდეო რ2 გაიგეპირველმა სასამართლოს საქართველოში უკრაინაში სანდრა არჩევნების Topic 3: დედა თავისი დიდი მის დღეს მამა ხდება დეკანოზი ზაზა პეტრე გიორგი ყველაზე ადამიანი შეუძლია რომელმაც ხარ ერთ არსებობს ისტორია რას Topic 4: 2019 გაიგეპირველმა 10 ვასაძე ლევან 11 წლის 16 ყველაზე 21 georgia 15 სასამართლომ live საუბრობს აჭარის 13 დატოვა 18 გადაცემაში Topic 5: დავით საქართველო დღეს იქნება ეროვნული თბილისში ერთ სახელმწიფო აქცია აზერბაიჯანის ქართული გთხოვთ ქვეყნის წინ საათზე 00 ტერიტორიაზე ხელისუფლება 13 ქვეყანა Topic 6: xadლი სა xadბა xadრი xadრე გა xadბი xadლე xadა xadში xadბის xadმა xadდე xadდა xadრა xadნი xadვა xadნა xadნე xadზე Topic 7: წლის ადამიანი ახალი საქართველო ლევან ევროპის დიდი 10 ქართველმა საქმეთა აშშ მსოფლიო 2019 თავისუფლების საქართველოში ბავშვის 15 გახდა რომელმაც აქვთ Topic 8: ლგბტ გეი გააზიარეთ გაიზიარეთ 17 ოჯახის საქართველოში ქართველი პრაიდის სიწმინდის მაისს შსს დღეს აინიუსი inewsge ლევან გიორგი ხალხის აი 18 Topic 9: ქართველი საქართველოში ვინც ქართული თქვენ დღეს ქვეყანაში ლევან დიდი თავი გიორგი ირაკლი ჩვენს თქვენი დრო ხართ ერი ხარ საქართველო აი Topic 10: აი თქვენი თქვენ ტვ ხომ საქართველოში დღეს ქართული ვინც ესენი თამარ ხართ ქართველი რუსთავი აბა პირველის ენა კაცი თქმა რო Topic 11: წმინდა დღეს inewsge აინიუსი ეკლესიის წმიდა გილოცავთ დიდი ეკლესია წლის ქრისტეს მართლმადიდებელი სრულიად ქართული ილია reading continue მამა ღვთისმშობლის პატრიარქის Topic 12: ბავშვების სექსუალური ბავშვის განათლების ადამიანის inewsge აინიუსი ბავშვთა უფლებათა სკოლებში პარლამენტის კანონი დაცვის აბორტი ბავშვებს მყოფი facebook პარლამენტში ჩვენს ლგბტ Topic 13: საქართველო რუსეთის წლის ქართველი აინიუსი ზვიად უკრაინის inewsge დღეს დავით ეკლესიის პრემიერ მამუკა ქართული სალომე ეროვნული პრეზიდენტი მსოფლიო კახა გამსახურდიას Topic 14: თქვენი ვინც თქვენ დღეს ჩვენს ბიძინა ერთ დიდი ქვეყნის ეხლა ხალხს ბევრი u0001f92a კარგად ხალხი იქნება ხართ არაფერი რას ხდება
In [ ]:
trans = model.transform(X)
print(trans[:1])
print(sum(trans[0]))
In [ ]:
jovian.commit()
In [ ]: