Sunteți pe pagina 1din 4

Top 3 topicuri

Task 2

Diaconescu Cosmin
Telecom Academy
Cerinta proiectului

Acest task o să fie compus dintr-o parte fixă și o parte în care fiecare va putea să își
etaleze creativitatea.

În ceea ce privește partea fixă, o să trebuiască să extrageți TOP 3 topicuri dintr-un anumit
post de Stackoverflow.

Sursa bazei de date a proiectului : https://www.kaggle.com/stackoverflow/stackoverflow

Observatii
1. Aceasta reprezinta o aplicatie in care va fi folosit algoritmul TF-IDF.
2. Cel mai important aspect in realizearea acestui task este prelucrarea cat mai buna a
textului.
3. Inainte de a afisa top 3 topicuri, textul a fost folosit pentru diverse aplicatii (grafic
frecvente, wordcloud etc)
4. Pentru a testa aceasta aplicatie, la sfarsit au fost introduse un titlu si un body care mai
apoi au fost prelucrate si din care am extras top 3 topicuri.
5. Pentru aceasta aplicatie, am folosit Anaconda - Jupyter Notebook.
Desfasurarea lucrarii

1. Dupa ce fisierul de tip csv a fost salvat in calculator, au fost alese doar coloanele de
interes, body si title.
2. Se poate observa faptul ca titlul ocupa doar 5961 randuri, in timp ce body-ul are 8993
randuri.
3. Prelucrarea textului este formata din 2 functii definite body_nlp si title_nlp prin care
dorim sa scapam de stop_words, sa aducem cuvintele la forma de baza din dictionar si sa
eliminam anumite grupuri precum: „<p>” , „</p>” etc.
4. Deoarece am intampinat anumite erori, coloanele body si title au fost transformate in
stringuri , iar mai apoi am adaugat in locul 1 si 3 coloanele noi (title_final2 si
body_final2) cu textul prelucrat.
5. In continuare, a fost realizat cate un wordcloud pentru cuvintele din titlu si mai apoi din
body.

Fig 1. WordCloud pentru cuvintele din coloana title_final2

Fig 2. WordCloud pentru cuvintele din coloana body_final2


6. Folosind libraria NLTK , am importat modulul FreqDist si am gasit top 12 cuvinte cu
frecventa cea mai mare pentru coloanele body_final2 si title_final2.
7. Cu ajutorul dataframe-ului din panda, am reusit sa punem aceste date sub forma de tabel.
8. Folosind seaborn, am realizat graficul frecventei cuvintelor.

9. Deoarece s-a cerut ca top 3 topicuri sa fie din body + text, am realizat o noua coloana in
care au fost concatenate datele din body_final2 si title_final2 cu denumirea title_body.
10. Din sklearn a fost importat modulul TfidfVectorizer pentru a afla direct scorul tf-idf. Am
antrenat modelul pe textul din title_body si am aflat topul celor mai importante cuvinte
care ar putea fi un topic pentru propozitiile cu indexul 0 si 1

tf_idf_scores tf_idf_scores

logparser 0.522309 analysis 0.416912

unix 0.241003 libfoo 0.351146

sql 0.231833 coverage 0.293971

11. Ultima etapa a constat in realizeaza unui titlu si a unui body nou pe care le-am presupus
introduse de la tastatura. ( Jupyter Notebook a avut ceva buguri in sensul in care folosind
input se bloca / nu mai rula deloc )
12. Acest titlu + body au fost prelucrate cu ajutorul functiilor precizate anterior si au fost
adaugate intr-o lista de tip array, care mai apoi a fost adaugata la lista principala . Noul
scor TF-IDF a fost astfel apelat pentru ultimul element al listei finale.

S-ar putea să vă placă și