Skip to content

Category prediction and Sentiment analysis for newspaper articles.

Notifications You must be signed in to change notification settings

kovacevic-marko/newspaper-article-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Анализа новинских чланака

1. Опис пројекта

Пројекат служи за предвиђање категорије и сентимент анализу новинских чланака.

Функционише на начин тако што корисник копира текст чланка у апликацију и кликом на дугме „Анализа“ исписује му се резултат анализе текста. Анализа садржи следеће резултате:

  1. Предвиђање категорије чланка
  2. Сентимент анализу, где се у процентима исписује колико је текст чланка позитиван, негативан и неутралан

За предвиђање и сентимент анализу користи се Вештачка интелигенција, тачније области Машинско учење и Обрада природног језика.

2. Сет података за тренирање

Сет података који ће се користити за предвиђање категорије чланка је “BBC Datasets”, састављен је из новинских чланака сајта https://www.bbc.com/ .

Сет података који се користи за тренирање модела за предвиђање чланка је преузет са сајта https://www.kaggle.com/yufengdev/bbc-fulltext-and-category#bbc-text.csv који представља податке груписане у .csv формату и они су пре груписања преузети претходно са сајта http://mlg.ucd.ie/datasets/bbc.html .

Сет података садржи чланке из следећих спортских категорија:
• business (посао)
• entertainment (забава)
• politics (политика)
• sport (спорт)
• tech (технологија)

Од велике важности је да текст чланка буде на енглеском језику јер фрејмворк за Сентимент анализу и класификацију текста ради са енглеским речима.

3. Технологије

Кључне технологије које су се користиле за израду апликације су:

  1. Angular (на клијентској страни)
  2. Python (на серверској страни)

На клијентској страни се уноси текст новинског чланка. На серверској страни се анализира новински чланак.

4. Опис алгоритама

Предвиђање категорије новинског чланка се одвија помоћу следећих области Вештачке интелигнеције: • Обрада природног језика • Машинско учење

Сентимент анализа новинског чланка се одвија помоћу области Вештачке интелигенције: • Обрада природног језика

4.1. Предвиђање категорије новинског чланка

Процес предвиђања категорије новинског чланка се састоји од 9 главних корака:

  1. Токенизација
  2. Уклањање зауставних речи
  3. Лематизација
  4. Векторизација
  5. Бинарна трансформација ознака
  6. Тренирање модела за предвиђање
  7. Валидирање модела за предвиђање
  8. Предвиђање
  9. Обрнута бинарна трансформација


Слика 1 - Процес предвиђања новинског чланка

4.1.1. Токенизација (енгл. Тokenization)

Токенизација је процес раздвајања низа речи на појединачне делове као што су речи, симболи или било који други елементи који имају значење. Добијени појединачни део назива се Токен. Токени могу бити појединачне речи, фразе или чак целе реченице. У процесу токенизације, неки знакови попут интерпункцијских знакова се одбацују. Токени постају улаз за други процес у Обради природног језика.

Токени се одвајају на следећи начин: • Токени су одвојени размаком, знаковима интерпункције или новим редом • У зависности од потребе размак или знак интерпункције могу или не морају бити укључени • Сви знакови у непрекидним низовима су део токена • Токени могу бити састављени од алфа карактера, алфанумеричких карактера или само од нумеричких карактера

Пример Токенизације Улаз: Стефан, Лазар и Никола су отишли на пецање. Вратили су се касно увече. Излаз: Стефан Лазар и Никола су отишли на пецање Вратили су се касно увече

4.1.2. Уклањање зауставних речи (енгл. Removing Stop Words)

Зауставне речи су оне речи које су најчешће у неком језику. Не постоји јединствени универзални списак Зауставних речи који користе сви алати за обраду природног језика.

Зауставне речи, које су у склопу Python-ове „NLTK“ библиотеке, у Енглеском језику су:

‘ourselves’, ‘hers’, ‘between’, ‘yourself’, ‘but’, ‘again’, ‘there’, ‘about’, ‘once’, ‘during’, ‘out’, ‘very’, ‘having’, ‘with’, ‘they’, ‘own’, ‘an’, ‘be’, ‘some’, ‘for’, ‘do’, ‘its’, ‘yours’, ‘such’, ‘into’, ‘of’, ‘most’, ‘itself’, ‘other’, ‘off’, ‘is’, ‘s’, ‘am’, ‘or’, ‘who’, ‘as’, ‘from’, ‘him’, ‘each’, ‘the’, ‘themselves’, ‘until’, ‘below’, ‘are’, ‘we’, ‘these’, ‘your’, ‘his’, ‘through’, ‘don’, ‘nor’, ‘me’, ‘were’, ‘her’, ‘more’, ‘himself’, ‘this’, ‘down’, ‘should’, ‘our’, ‘their’, ‘while’, ‘above’, ‘both’, ‘up’, ‘to’, ‘ours’, ‘had’, ‘she’, ‘all’, ‘no’, ‘when’, ‘at’, ‘any’, ‘before’, ‘them’, ‘same’, ‘and’, ‘been’, ‘have’, ‘in’, ‘will’, ‘on’, ‘does’, ‘yourselves’, ‘then’, ‘that’, ‘because’, ‘what’, ‘over’, ‘why’, ‘so’, ‘can’, ‘did’, ‘not’, ‘now’, ‘under’, ‘he’, ‘you’, ‘herself’, ‘has’, ‘just’, ‘where’, ‘too’, ‘only’, ‘myself’, ‘which’, ‘those’, ‘i’, ‘after’, ‘few’, ‘whom’, ‘t’, ‘being’, ‘if’, ‘theirs’, ‘my’, ‘against’, ‘a’, ‘by’, ‘doing’, ‘it’, ‘how’, ‘further’, ‘was’, ‘here’, ‘than’

Зауставне речи се уклањају из разлога зато што могу бити ометајуће, неинформативне и заузимају меморију.

Пример уклањања зауставних речи из токенизованих речи: Улаз: ['This', 'is', 'a', 'sample', 'sentence', ',', 'showing', 'off', 'the', 'stop', 'words', 'filtration', '.'] Излаз: ['This', 'sample', 'sentence', ',', 'showing', 'stop', 'words', 'filtration', '.']

4.1.3. Лематизација (енгл. Lemmatization)

Лематизација је процес претварања речи у њен основни облик који је дефинисан речником и тај облик речи се назива Лема.

Лематизација узима у обзир значење речи у реченици.

Пример Лематизовања речи: Улаз: “better”, “meeting” Излаз: ”good” и “meeting”.

Поред Лематизације постоји и техника Стемовање (енгл. Stemming) која се често користи у препроцесирању текста и која уклња почетак или крај речи користећи листу заједничких префикса и суфикса као што су (-ing, -ed, -es). Разлика је у томе што Лематизација морфолошки анализира речи и враћа Лему а Стемовање само уклања део речи да би се добио њен корен речи који се назива Стем.


Слика 2 – Разлика између Стемовања и Лематизације

4.1.4. Векторизација (енгл. Vectorization)

Векторизација је процес претварања текста у низове односно векторе бројева. Претварање се врши на тај начин што се све речи сакупе на једном месту односно у низу. Свако место у низу представља реч. Ако одређена реч из низа постоји у тексту који се Векторизује, онда се у низу уписује 1 а уколико не постоји уписује се 0.

Векторизација се користи за претварање Независних варијабли.

На слици испод је представљен пример Векторизације три боје „”Red”, “Yellow”, “Green”.


Слика 3 – Векторизација, пример 1

На слици испод је представљен пример Векторизације речи “Rome”, “Paris”, “Italy” и “France”,


Слика 4 - Векторизација, пример 2

На слици испод је представљен пример Векторизације текста „The quick brown fox jumped over the brown dog”.


Слика 5 - Векторизација, пример 3

4.1.4.1. Векторизација бројањем (енгл. Count Vectorization)

У нашем случају приликом предвиђања новинског чланка користи се специфична врста Векторизације која се зове Векторизација бројањем (енгл. Count Vectorization).

Векторизација бројањем функционише на сличан начин као класична Векторизација само што када реч из низа постоји у тексту онда се не уписује 1 у низу него се уписује укупан број појављивања те речи у тексту. Ако реч из низа не постоји у тексту онда се уписује 0.

На слици испод је приказан пример Векторизације бројањем.


Слика 6 – Пример Векторизације бројањем

4.1.5. Бинарна трансформација ознака (енгл. Label Binarization)

Бинарна трансформација ознака се користи за претварање Зависних варијабли у низове односно векторе.

Функционише на сличан начин као класична Векторизација Независних варијабли. Функционише тако што се на основу свих речи у тексту формира речник помоћу низа односно вектора и свако место у низу представља једну реч. Реч се трансформише на тај начин што се у низу на месту којем одговара реч упише 1 а на свим осталим местима у истом низу уписује се 0 и због рога се зове „Бинарна“ трансформација.

Свака реч је представљена једним низом.

На слици испод видимо пример Бинарне трансформације речи “cold”, “hot” и “warm”.


Слика 7 – Пример Бинарне трансформације ознака

4.1.6. Тренирање модела за предвиђање

За тренирање и предвиђање категорије новинског чланка користе се Вештачке неуронске мреже. Python-ова библиотека која је коршћена за Вештачке неуронске мреже је „Keras“ која се извршава над библиотеком „Tensorflow“.

Тренирање модела за предвиђање је детаљно описано у делу Завршног рада 3.1.4. Тренирање Вештачких неуронских мрежа .

У даљем делу овог текста приказане су информације о тренираном моделу који служи за предвиђање категорије новинских чланака.

Векторизоване независне варијабле односно векторизовани текст чланка и Бинарно трансформисане зависне варијабле односно категорија чланка, користе се за тренирање Вештачке неуронске мреже.

Овај процес обраде текста користимо пре тренирања из разлога зато што Вештачке неуронске мреже функционишу само са бројевима.

Неуронска мрежа направљена за предвиђање категорије новинског чланка, састоји се од следећих слојева: • Улазног слоја • Три скривена слоја • Излазног слоја

Број неурона по слојевима: • Улазни слој: 30 687 неурона • Први скривени слој: 512 неурона • Други скривени слој: 32 неурона • Трећи скривени слој: 16 неурона • Излазни слој: 5 неурона

Укупан број синапси односно тежина између неурона је: 15 729 285


Слика 8 – Део Вештачке неуронске мреже за предвиђање категорије новинског чланка

4.1.6.1. Рачунање броја синапси

Број синапси је исти као и број тежина односно параметара који служе за тренирање. Од тог броја зависи колика ће трајати тренирање. Што је већи број онда је тренирање дуже.

Укупан број синапси у Вештачкој неуронској мрежи се рачуна на следећи начин:

(број неурона првог слоја * број неурона следећег слоја + број синапси Додатног неурона (енгл. Bias) ) и тако редом за сваки следећи слој

Пример рачунања броја синапси за Вештачку неуронску мрежу која се користи за предвиђање категорије новинског чланка: ( (30 687 * 512+512) + (51232+32) + (3216+16) + (16*5+5) ) = 15 729 285

4.1.7. Валидирање модела за тренирање

Валидирање модела да је добар, односно његове прецизности детаљно је описано у делу Завршног рада 3.1.5. Тестирање Вештачких неуронских мрежа .

Тренирани модел за предвиђање категорије новинског чланка је достигао прецизност од 99,7%. Што значи да је приликом тестирања тачно погодио 997 категорија новинских чланака од укупно 1000.

4.1.8. Предвиђање

Након завршеног тренирања Вештачке неуронске мреже, вршимо предвиђање категорије чланка.

Предвиђање које је добијено из Вештачке неуронске мреже је у формату Бинарно трансформисане ознаке.

Пример: Излаз: [0 0 1 0 0]

У том формату је из разлога што се као резултат, односно излаз неуронске мреже активира само један неурон у последњем слоју, односно у Излазном слоју и тај неурон представља категорију новинског чланка.

4.1.9. Обрнута бинарна трансформација ознака

Добијени резултат предвиђања је у формату Бинарно трансформисане ознаке и потребно је тај податак претворити у текст и то радимо Обрнутом бинарном трансформацијом ознака која функционише на исти начин као Бинарна трансформација ознака само у супротном смеру.

У нашем случају предвиђања новинског чланка, претварамо низ саставњен од једне јединице и четири нула. Јединица постављена на одређеном месту представља предвиђану категорију.

Пример Обрнуте бинарне трансформације ознака: Улаз: [0 0 1 0 0] Излаз: sport

4.2. Сентимент анализа новинског чланка

Процес сентимент анализе новинског чланка се састоји од 2 главна корака:

  1. Токенизација
  2. Сентимент анализа


Слика 9 – Процес сентимент анализе новинског чланка

4.2.1. Токенизација

Токенизација је процес раздвајања низа речи на појединачне делове као што су речи, симболи или било који други елементи који имају значење. Добијени појединачни део назива се Токен. Токени могу бити појединачне речи, фразе или чак целе реченице. У процесу токенизације, неки знакови попут интерпункцијских знакова се одбацују. Токени постају улаз за други процес у Обради природног језика.

Токени се одвајају на следећи начин: • Токени су одвојени размаком, знаковима интерпункције или новим редом • У зависности од потребе размак или знак интерпункције могу или не морају бити укључени • Сви знакови у непрекидним низовима су део токена • Токени могу бити састављени од алфа карактера, алфанумеричких карактера или само од нумеричких карактера

Пример Токенизације Улаз: Стефан, Лазар и Никола су отишли на пецање. Вратили су се касно увече. Излаз: Стефан Лазар и Никола су отишли на пецање Вратили су се касно увече

4.2.2. Сентимент анализа

За сентимент анализу је коришћена Python-ова библиотека „vaderSentiment“ која је у апликацији „import“-ована путем библиотеке „NLTK“.

Сентимент анализа функционише тако што постоји речник у коме су дефинисане речи и коефицијент колико је свака реч позитивна, негативна или неутрална.

Анализирањем свих речи добијају се збирови колико је текст позитиван, негативан и неутралан и затим се претварају у проценте.

5. Слике апликације


Слика 10 – Анализа новинских чланака – 1. Уношење текста чланка


Слика 11 – Анализа новинских чланака – 2. Анализирање текста чланка


Слика 12 – Анализа новинских чланака – 3. Резултат анализе чланка

6. Покретање апликације

Апликација се састоји из два дела апликације:

  1. WebAPI
  2. GUI

Да бисмо користили апликацију морамо да покренемо оба дела апликације.

6.1. Покретање WebAPI дела апликације

  1. Инсталирати Python са сајта https://www.python.org/

Преузимамо Python инсталацију кликом на дугме „Downloads“


Слика 13 – Преузимање Python инсталације – Корак 1

Затим кликнемо на дугме „Download Python“ (верзија за Windows).


Слика 14 – Преузимање Python инсталације – Корак 2

Затим инсталирамо Python фајл који смо преузели. На слици испод је објашњено да прво морамо да обележимо поље „Add Python 3.7 to PATH“ па да кликнемо на „Install Now“.


Слика 15 – Инсталирање Python-а – Корак 1

Програм се инсталира. Након завршетка кликнућемо на „Close“.


Слика 16 – Инсталирање Python-а – Корак 2

  1. Након инсталације Python-а отворите „Command Prompt“

  2. У Command Prompt-у, путем команде „cd путања фолдера“, отворите фолдер WebAPI (у њему се налазе фајлови „requirements.txt“ и „manage.py“)

  3. У Command Prompt-у извршите команду „pip install -r requirements.txt“ која ће инсталирати неопходне библиотеке које су коришћене у Python апликацији

  4. Затим је потребно да подигнемо Python Django сервер, тако што ћемо у Command Prompt-у извршити команду „python manage.py runserver“


Слика 17 – Подизање Python сервер-а

Сервер је успешно подигнут када се на крају испише порука као што је на слици испод.


Слика 18 – Успешно подигнут Python сервер

6.2. Покретање GUI дела апликације

  1. Инсталирати NodeJS са сајта https://nodejs.org

Преизимамо NodeJS апликацију кликом на дугме „верзија NodeJS-а LTS“ на почетној страници.


Слика 19 – Преузимање Node-JS-a

Затим инсталирамо фајл који смо преузели. Отварамо фајл и кликнемо на дугме „Next“.


Слика 20 – Инсталирање NodeJS-а – Корак 1

Затим кликнемо на „I accept the terms in the License Agreement“ па кликенмо на дугме „Next“.


Слика 21 – Инсталирање NodeJS-а – Корак 2

Затим кликнемо на дугме „Next”.


Слика 22 – Инсталирање NodeJS-а – Корак 3

Затим кликнемо на дугме „Next”.


Слика 23 – Инсталирање NodeJS-а – Корак 4

Затим кликнемо на дугме „Install”.


Слика 24 – Инсталирање NodeJS-а – Корак 5

Након завршетка инсталације кликнемо на дугме „Finish”.


Слика 25 – Инсталирање NodeJS-а – Корак 6

  1. Отварамо нови „Command Prompt“ (битно је да не затварамо претходни Command Prompt преко којег је покренут Python део апликације)

  2. Извршимо команду „npm install -g @angular/cli“

  3. Отворимо фолдер „GUI“ помоћу Command Promt-а („cd“ команда)

  4. Извршимо команду „npm install“

  5. Извршимо команду „ng serve --open"


Слика 26 – Покретање GUI дела апликације

Након успешног покретања GUI дела апликације у Commant Prompt-у треба да се испише порука као на слици испод.


Слика 27 – Успешно покренут GUI део апликације

Након тога ће се отворити апликација у Web browser-у и моћи ћемо да је користимо. Web локација апликације након успешног покретања је http://localhost:4200/ .

Датум производње: Новембар 2019.

About

Category prediction and Sentiment analysis for newspaper articles.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published