Tag Archives: анализ тональности

JSON API анализа тональности на русском языке

На основе технологического стека SemanticAnalyzer мы запустили API анализа тональности на русском языке. Это json API, принимающий следующую структуру:

{
 "text":"some_text_in_utf-8",
 "object_keywords":"object_keywords_in_csv_in_utf-8",
 "output_format":"json or xml"
}

API синхронно выдаёт json либо xml со структурой:

json:

{
 "sentiment": "${sentimentTag}",
 "synonyms": "${synonyms}"
}

xml:

<!--?xml version="1.0" encoding="utf-8"?-->
 
  ${sentimentTag}
  ${synonyms}
 

Пример с реальным текстом:

{
 "text":"Самарские пиармены помогут уральскому самородку:
    Засекин.Ру – самарские новости и мнения экспертов #ИгорьХолманских",
 "object_keywords":"ИгорьХолманских,Игорь Холманских",
 "output_format":"json"
}

Ответ системы:

{
 "sentiment": "POSITIVE",
 "synonyms": "[ИгорьХолманских]"
}

Ответ содержит метку тональности и объект, по отношению к которому она была вычислена.

Также системой поддерживаются POST запросы со стандартным набором параметров. В этом случае в тело POST запроса передаётся urlencoded key=value строка в http формате:

text=my_text&amp;object_keywords=keyword1,keyword2,keyword3&amp;output_format={json}.

К API прилагается документация, а также примеры интеграции на Java, Node, PHP, Python, Objective-C, Ruby и .NET.

Получить доступ к API:

RussianSentimentAnalyzer API

SentiScan – технология распознавания сентимента (тональной окрашенности сообщений)

На днях наш партнёр Youscan опубликовал интервью с моим участием о нашей совместной технологии распознавания сентимента или, говоря иначе, эмоциональной окрашенности в текстах. Эта задача известна теоретической и практической компьютерной лингвистике довольно давно и создано множество подходов. Традиционно выделяют две группы методов: 1) основанные на машинном обучении и статистике и 2) подходы, основанные на правилах. Есть ещё и методы соединения обоих подходов, а также новомодный алгоритм на нейронных сетях.

В технологии SentiScan мы также сочетаем оба подхода и добавляем нашу собственную изюминку: объектную ориентированность. Это не ООП (объектно-ориентированное программирование), а поиск именнованных сущностей и определение сентимента по отношению к ним. Список сущностей мы получаем из поисковых запросов пользователей, описывающих некий бренд, название продукта, имя человека или других явлений. Задача системы найти данные объекты в тексте, выделить сентиментный контекст и распознать сам сентимент.

Мы использовали методы машинного обучения для поиска полярных единиц, т.е. таких, которые имеют однозначное тональное значение — позитивное либо негативное. Примеры таких однозначно окрашенных единиц:

позитив
благородный
доход
изысканный
лояльный
необыкновенный
оперативный
передовой

 

негатив
абсурд
винить
вымогательство
грабеж
идиотский
нытье
отвратительный

 

Как можно заметить, в словарях присутствуют представители любых частей речи: не только имён прилагательных, но имён существительных, глаголов. Есть и наречия (отвратительно).

После того, как входной текст был разделён на отдельные предложения, алгоритм производит синтаксический анализ с целью определения объектов в тексте, а также их взаимного влияния. Правила синтаксического анализа подобраны специально для задачи распознавания сентимента и не подойдут, например, для некоторой общей задачи синтаксического анализа либо его применения (машинный перевод или spell-cheker).

В процессе синтаксического анализа производится наращивание информации и статистики о сентиментном потоке (его силе и полярном окрасе — позитив либо негатив) и его направленности на целевой объект. Накопив информацию об отдельных предложениях, алгоритм переходит на уровень текста, на котором вычисляется финальная информация. В итоге алгоритм выносит вердикт по всему тексту (который может также состоять и из одного предложения или даже слова): позитив либо негатив. Текст может быть также помечен и нейтральным флагом, в двух случаях:

1. В тексте не было ни одной тонально окрашенной единицы либо синтаксического противопоставления (объект А, но объект Б)

2. В тексте был смешанный сентимент и неясно, что хотел сказать своим высказыванием автор. В этом случае алгоритм может опционально поставить метку “смешанный сентимент”, то есть позитив+негатив.

У описанного здесь вкратце алгоритма есть также и отдельная функциональность определения объективности (“беспристрастноси”) и субъективности текста либо сообщения. Если автор текста не использует эмоционально окрашенных выражений, то его текст можно в целом считать объективным или беспристрастным. И субъективным, если использует. Распознавание субъективности автора может быть полезна тем брендам, которые ищут “подлинные” обзоры их продукции, т.е. опирающиеся на факты.

Попробовать эту систему в действии можно прямо сейчас и бесплатно, зарегистриовавшись на сайте (проще всего сделать логин, используя ваш аккаунт на GitHub).