Я начал слышать об искусственном интеллекте около 4–5 лет назад. Раньше я представлял это как часть робототехники, которая в конечном итоге вырастет только для того, чтобы уничтожить нас. Я совсем не серьезно относился к его изучению, но мне было интересно узнать о новых рабочих местах, которые он собирался создать.

В любом случае, мы все знаем о важности ключевых слов в методах SEO (поисковой оптимизации) и платных кампаниях в Google, но действительно ли эти ключевые слова помогают пользователям, которые посещают веб-сайт? Итак, я начал думать - должна быть какая-то корреляция между ключевыми словами и вовлеченностью пользователей.

Год назад я взялся за простой проект по определению важности ключевых слов, используемых в любой веб-статье. Например: предположим, что журнал TIME публикует статью о Дональде Трампе, посвященную промежуточным выборам, инструмент определит, есть ли у статьи больше шансов заинтересовать, если в ней используется набор ключевых слов, таких как #DonaldTrump, #Elections, #USA , #MoodOfNation? и приносит ли пользу статье повторение этих ключевых слов и т. д.

Когда я начал работать над этим простым проектом, я был типичным программистом, который верил в циклы for и if-elses решит самые сложные мировые проблемы в области технологий. Я думал, что любую программную проблему можно легко преобразовать в циклы for и if. Но у жизни есть привычка доказывать, что вы ошибаетесь в вещах, которые всегда считали правильными.

В любом случае, я попытался собрать ключевые слова из Google Analytics и связать это с показателями вовлеченности статьи (например, временем, затраченным пользователями). Затем я попробовал ключевые слова из инструментов Google для веб-мастеров, а также попытался извлечь ключевые слова из самой статьи с помощью свободно доступных инструментов. Благодаря операторам if-else они помогли легко решить проблему. Я даже пытался понять влияние читабельности статьи, частоты ключевых слов и т. Д., Но ни один из них не дал удовлетворительных результатов. Выяснилось, что между ключевыми словами и вовлечением пользователей нет никакой связи.

Поэтому я пришел к выводу, что нет никакой связи между ключевыми словами и взаимодействием с пользователем. Но подождите, если ключевые слова не играли важной роли, зачем веб-разработчикам и маркетологам тратить так много времени на оптимизацию веб-сайта?

Когда у вас нет ответа на сложный вопрос, вы сначала кладете ладони на щеки, начинаете чесать голову, барабанить по столу, стучать по часам и, наконец, «погуглите». Я так и сделал. Потребовалось время, чтобы понять, что именно анализ тональности поможет установить взаимосвязь между содержанием и взаимодействием со страницей. Могут быть и другие факторы, но это бит старшего разряда. Как только я обнаружил этот факт, острота проблемы начала утихать.

Когда вы слышите об анализе сантиментов, это выглядит настолько круто, что вам действительно хочется взять гитару и начать перебирать струны; но на самом деле это не так уж и круто. В любом случае, самый простой способ - разбить любой текст / строку / речь на группы слов, например, монограммы, биграммы и т. Д. Вы получаете список положительных и отрицательных слов из Интернета. Популярные языки, такие как R / Python, имеют их в своих пакетах. Все, что мне нужно было сделать, это использовать if-else для сопоставления монограмм в словаре и получения тональности каждого слова. Затем я суммировал тональность всех слов, чтобы вычислить общую тональность статьи. Поначалу это выглядело неплохо, но вскоре я понял, что в статье много отрицательных слов, которые сводят на нет значение слов. Пример: «Это хороший фильм» будет отнесено к категории положительных, но «Это не хороший фильм». »Также будет считаться положительным, поскольку в предыдущем методе не учитывалось слово нет.

Итак, я начал читать о таких дополнительных условиях, которые можно использовать при анализе тональности с использованием словарей. Вскоре я понял, что анализ тональности на уровне статьи не имеет смысла, поэтому разбил статьи на абзацы и предложения. Так выглядел алгоритм,

1. Break the articles into sentences. 
2. Break sentences into monograms
3. FOR each sentence in article 
    FOR each word in sentences :
     FOR each word in dictionary:
         //Compare if the word matches
         // Store sentiment of matched words
4. Check if sentence has negative words
        // Handle negative words and change the polarity of sentence
5. Check if sentence has 'but' word
        // Polarity on both sides of 'but' would be opposite. Handle this condition.
6. Check if sentence is neutral
7. Check if sentence has semicolon
8. Check if ........
9. Check if...........

Несколько недель я изо всех сил пытался настроить этот мастер-алгоритм, который бы вычислял тональность статьи. Когда я начал больше читать о грамматике английского языка, я начал добавлять в алгоритм больше условий if-else. Постепенно список условий стал настолько исчерпывающим, что однажды я решил остановиться. Я быстро понял, что это просто пустая трата времени, потому что, как только я добавляю условие для обработки предложения, появляется новое предложение, отменяющее всю проделанную до сих пор работу. И если мне нужно разработать аналогичный алгоритм для других языков, таких как хинди или каннада, я должен разработать уникальные наборы условий для каждого языка. Я был разочарован. Впервые я столкнулся с проблемой программирования, для которой я даже не знал, как «гуглить» !!. Я думал, что придумал проблему без решения.

Я отошел от этой проблемы и начал сосредотачиваться на другом, но через несколько недель я снова начал думать об этом. «Как может быть проблема без решения?»

К тому времени я уже достаточно наслушался искусственного интеллекта, машинного обучения, нейронных сетей и глубокого обучения. Я даже осмелился поискать их в гугле, но ничего не понял. Определения из Википедии усугубили ситуацию. Я все еще хотел попробовать на этот раз. Пробовал разные комбинации поисков в гугле. Победивший поисковый запрос был - «Анализ настроений с помощью нейронных сетей».

Один из блоггеров объяснил анализ настроений простым примером. Он использовал по три положительных и отрицательных предложения каждое и использовал горячее кодирование для ввода строк. Он написал простую нейронную сеть, которая корректировала правильные веса через несколько тысяч эпох. Затем эта программа будет определять, является ли данное предложение положительным или нет. Я перечитывал программу снова и снова и был совершенно потрясен. Кто-то подсказал мне решить мою проблему без if-else, и я познакомился с прекрасным миром искусственного интеллекта.

В течение следующих нескольких недель я услышал / прочитал о Word2vec, Word Embeddings, Gradient Descent, Auto-encoders, Reinforecement Learning, GAN s, Yann Lecun, Andrej Karpathy, Ilya Sutskever, Geoffrey Хинтон и многие другие !!!