Git Product home page Git Product logo

sentiment-analyzer's Introduction

Movie Review Sentiment Analyzer

Sentiment Analysis е процесът по алгоритмично идентифициране и категоризиране на мнения, изразени в свободен текст, особено за да се определи дали отношението на автора към конкретна тема, продукт и т.н. е позитивно, негативно или неутрално.

Machine Learning е особено нашумяло в наши дни направление в компютърните науки, което изучава класове от алгоритми, които "се учат" от данни. Такъв тип алгоритми работят, като изграждат модел от примерни входни данни и използват този модел, за да правят предсказания или взимат решения.

Sentiment analyzer-ът за филмови отзиви, автоматично определя степента на позитивност на даден отзив в свободен текст.

Например, алгоритъмът би определил отзива:

"Dire disappointment: dull and unamusing freakshow"

като твърдо негативен, докато отзивът:

"Immersive ecstasy: energizing artwork!"

ще се класифицира като еднозначно позитивен.

Данните, от които ще "учи" алгоритъмът, са множество от 8,529 филмови отзива (ревюта), за които отношението на автора е било оценено от човек по скала от 0 до 4 със следната семантика:

рейтинг семантика
0 negative
1 somewhat negative
2 neutral
3 somewhat positive
4 positive

Използваният data set е от сайта Rotten Tomatoes, използван наскоро за престижния Кaggle machine learning competition.

Данните са налични в текстовия файл reviews.txt, като всеки ред от файла започва с рейтинг, следван от интервал и текста на отзива, например:

4 The performances are an absolute joy .

Напълно е очаквано в подобен real-life data set да има typos, жаргонни или направо несъществуващи думи.

Има обаче едно множество от често срещани в свободен текст думи, които носят твърде малко семантика: определителни членове, местоимения, предлози, съюзи и т.н. Такива думи се наричат stopwords и много алгоритми, свързани с обработка на естествен език (NLP, natural language processing), ги игнорират - т.е. премахват ги от съответните входни текстове, защото внасят "шум", т.е. намаляват качеството на резултата. Няма еднозначна дефиниция (или речник) коя дума е stopword в даден език. Алгоритъмът ползва списъка от 174 stopwords в английския език, записани по една на ред в текстовия файл stopwords.txt, заимстван от сайта ranks.nl.

Алгоритъм

Обучение:

  1. Изчитат се отзивите в reviews.txt
  2. Изчислява се sentiment score на всяка дума като средно аритметично (без закръгляване) на всички рейтинги, в които участва дадената дума. Дума е последователност от малки и главни латински букви и цифри с дължина поне един символ. Думите са case-insensitive, т.е. "Movie", "movie" и "movIE" се третират като една и съща дума. Един отзив се състои от думи, разделени с разделители: интервали, табулации и препинателни знаци - въобще всеки символ, който не е буква или цифра. Stopwords се игнорират, т.е. не се взимат под внимание.

Разпознаване:

  1. По даден текст на отзив се изчислява неговият sentiment score като средно аритметично (без закръгляване) на sentiment scores на всяка дума в отзива. Дефиницията на дума е същата като по-горе, и stopwords отново се игнорират. Игнорират се също всички (непознати) думи, за които алгоритъмът не е обучен, т.е. не се срещат нито веднъж в reviews.txt. Sentiment score на отзив, в който не се съдържа нито една дума с известен sentiment score (състои се само от непознати думи и/или stopwords), се приема за -1.0 (unknown).

Data set-ът от ревюта може да се разширява. Това допринася за допълнителна точност при меренето на sentiment във времето. При добавяне на нови ревюта и оценки, се преизчислява sentiment-a на думите от ревюто.

sentiment-analyzer's People

Contributors

ivaylo-georgiev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.