Мне нравится телефон X, но телефон Y ужасен.
Логично ожидать, что если мы интересуемся телефонами X, то хотим получить позитивную метку тональности. И негативную для телефона Y. Именно такой результат вы получите, введя это предложение на сайте www.mashape.com/dmitrykey/russiansentimentanalyzer (понадобится регистрация) и указав в качестве объектов X либо Y.
Ниже вы найдёте пример кода на Java, который позволяет легко подключиться к API, послать запрос и получить результат. Этот и другие примеры взаимодействия с нашими системами можно найти на нашем гитхабе.
package com.semanticanalyzer;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
public class RussianSentimentAnalyzerMashapeClient {
private final static String mashapeKey = "ВАШ_MASHAPE_KEY_ЗДЕСЬ";
public static void main(String[] args) throws UnirestException {
String textToAnnotate = "'ВТБ кстати неплохой банк)'";
String targetObject = "'ВТБ'";
// These code snippets use an open-source library. http://unirest.io/java
HttpResponse response = Unirest.post("https://russiansentimentanalyzer.p.mashape.com/ru/sentiment/polarity/json/")
.header("X-Mashape-Key", mashapeKey)
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.body("{'text':" + textToAnnotate + ",'object_keywords':" + targetObject + ",'output_format':'json'}")
.asJson();
System.out.println("Input text = " + textToAnnotate + "\n" + "Target object: " + targetObject);
System.out.println("RussianSentimentAnalyzer response:" + response.getBody().toString());
}
}
Если запрос обработался успешно, то система выдаст следующий результат:
Input text = 'ВТБ кстати неплохой банк)'
Target object: 'ВТБ'
RussianSentimentAnalyzer response:{"sentiment":"POSITIVE","synonyms":"[ВТБ]"}
Помимо Java на сайте API можно найти примеры для других языков: Node, PHP, Python, Objective-C, Ruby и .NET.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (18)
elingur
10.07.2015 20:35+9По-моему, это похоже в лучшем случае на рекламу, а в худшем на фишинг: для работы даже с «бесплатным» демо требуется ввести данные банковской карты…
DKey Автор
10.07.2015 22:53Карту требует платформа API mashape: выберите бесплатный тариф (100 сообщений в день = 3000 в месяц) и платить ничего не придётся.
Мы используем mashape, чтобы не прикручивать собственный биллинг + ради инструментов мониторинга API.elingur
10.07.2015 23:05Если платить не надо, то зачем нужны данные банковской карты, в том числе cvv код? Это как-то странно.
И хотелось бы поподробнее узнать, что за метод, какова скорость, какова точность? А то пока это слишком голословно выглядит — известна только цена.DKey Автор
10.07.2015 23:12Карта требуется для Freemium типов API. Если у вас есть необходимость проверить на бОльшем, чем 100 в день, количестве сообщений мы делаем разовые личные тарифные планы (пишите в личку или по почте dk[@]semanticanalyzer.info).
Метод основан на собственном алгоритме shallow parsing с применением машинного обучения. Более подробно можно посмотреть в видео доклада: www.youtube.com/watch?v=0qfK713BVW4
Точность варьируется в зависимости от домена — от 60-70% до 90% и выше.
Скорость высокая, среднее время на запрос (размера нескольких предложений) — 30-50 миллисекунд.grossws
11.07.2015 00:08Можно ссылки на статьи, где вы на SRL получили 90%?
DKey Автор
11.07.2015 09:23У нас была одна собственная публикация на Диалоге 2012:
Kan D. Rule-based approach to sentiment analysis at ROMIP 2011. Komp’iuternaia Lingvistika i Intellektual’nye Tekhnologii: Trudy Mezhdunarodnoi Konferentsii “Dialog 2012? // Computational Linguistics and Intellectual Technologies: Proceedings of the International Conference “Dialog 2012?. Bekasovo, 2012.
где, в частности, показано качество 90% для позитивного класса. С тех пор мы подтянули и негативный класс.
На самом деле, будучи пользователем таких систем, я бы не смотрел на декларируемое качество, а проверял конкретно для своего домена и своих текстов.
lany
11.07.2015 05:58Вы прямо так и конкатенируете JSON в прокадшен-коде (побежал писать твиты с большим количеством апострофов)? Любопытно, что в вашем примере после конкатенации валидный JSON вообще не получится: строки будут без кавычек. Это точно сработает?
Не хватает хаба «Я пиарюсь».
Это работает на контенте уровня твитов? Что ваш движок скажет про, например, такой отзыв (случайно выбранный на Yandex.Market):
Довольно долго сопротивлялся смартфонам. Да и сейчас основной звонилкой остается nokia 8800. Но необходимость оставаться мобильным и развитие сетей 4G определили выбор. По началу таскал с собой iPad, но потом перешел на валявшийся без дела iphone4. Удобно черт возьми, но стала утомлять его неторопливость. iphone6 по части быстродействия на голову выше. а джейл дает достаточную свободу действий при работе с файлами и архивами (по старой памяти люблю поковыряться в консоли).
Многие могут возразить — вот мол Андроид. Но как то исторически не заладилось еще с версии 2.1. Да и хорошая тушка с андроидом немногим дешевле стоит.
Target = iPhone, target = iPad, target = Андроид, какие будут результаты во всех трёх случаях?DKey Автор
11.07.2015 09:29Вы прямо так и конкатенируете JSON в прокадшен-коде (побежал писать твиты с большим количеством апострофов)? Любопытно, что в вашем примере после конкатенации валидный JSON вообще не получится: строки будут без кавычек. Это точно сработает?
Изначально текст и объект в примере были в апострофах, но перед публикацией я их зачем-то убрал. Поправил пост, спасибо. Пишите твиты, потестим :)
Это работает на контенте уровня твитов? Что ваш движок скажет про, например, такой отзыв (случайно выбранный на Yandex.Market):
Лучше уровня твитов, коротких заметок вконтакте. Т.е. то, где есть явный «message», окрашенный эмоционально. На данный момент для Ваших таргет-объектов все метки выдаются позитивные. Мы работаем над улучшением качества для более длинных, чем твиты, текстов.
fainalex
13.07.2015 10:30+1участвовали ли вы в конкурсе сентимент-анализаторов на «Диалоге» в этом году?
не могу протестировать ваше API на примерах (платформа требует денег, регистрации, потом опять регистрации, потом опять денег). Как работают примеры с анафорой? А заковыристые примеры с анафорой?
а) Был недавно в ВТБ. Он расположен в ветхом здании на улице 1 мая. Но сам банк очень хороший.DKey Автор
13.07.2015 16:22-1не могу протестировать ваше API на примерах (платформа требует денег, регистрации, потом опять регистрации, потом опять денег).
денег совсем платить не нужно, чтобы потестировать. Нужно зарегистрироваться, выбрать BASIC план, указать кредитку (таковы требования mashape для Fremium API) и начать тестирование.
участвовали ли вы в конкурсе сентимент-анализаторов на «Диалоге» в этом году?
нет, в этом году, к сожалению не удалось, т.к. мы участвовали в другой дорожке и по другой теме.
а) Был недавно в ВТБ. Он расположен в ветхом здании на улице 1 мая. Но сам банк очень хороший.
Сейчас система выдаёт нейтральный класс, потому что этот случай можно в некотором смысле считать пограничным: вроде бы и позитив («банк хороший»), но вроде бы и негатив («в ветхом здании»). В этом случае анафора никак не поможет разрешить данный конфликт. Что можно сделать в таком случае — это усилить вес последнего предложения текста. Есть такой подход при вычислении тональности, когда первому (первым) и последнему (последним) предложениям текста придаётся бОльший вес, т.к. как делается предположение, что основная информация содержится именно в них.fainalex
13.07.2015 16:30у вас в системе возможны только два ответа: позитивный и негативный?
при анализе примера ниже оба объекта окажутся на одном уровне?
а) Пепси-кола очень вкусная, а кока-кола — самый лучший напиток на свете.
будет ли между ними какая-то разница?
если при анализе примера из моего прошлого комментария оценка у ВТБ оказывается нейтральная, это значит, что анализотор работает ошибочно. Есть ли у вас синтаксис? понимает ли парсер, что ветхое здание — это одна именная группа, не имеющая общего антецедента с ВТБ?
DKey Автор
13.07.2015 17:08у вас в системе возможны только два ответа: позитивный и негативный?
три: позитивный, негативный, нейтральный
при анализе примера ниже оба объекта окажутся на одном уровне?
а) Пепси-кола очень вкусная, а кока-кола — самый лучший напиток на свете.
будет ли между ними какая-то разница?
для обоих объектов выдаётся позитивная тональность. А какая ожидается разница?
Если пример переделать в: Пепси-кола очень вкусная, а кока-кола самый ужасный напиток на свете.
то для пепси-кола получаем позитивную, а для кока-кола негативную тональности.
если при анализе примера из моего прошлого комментария оценка у ВТБ оказывается нейтральная, это значит, что анализотор работает ошибочно. Есть ли у вас синтаксис? понимает ли парсер, что ветхое здание — это одна именная группа, не имеющая общего антецедента с ВТБ?
ошибочная для кого? Читайте комментарий выше: это пограничный случай, можно и так и эдак. Для одного клиента банка его ветхое здание не имеет роли, а для другого имеет. Поэтому здесь лучше даже выдавать MIXED (смешанную) метку тональности.
Синтаксис есть. Антецеденты у «ветхого здания» и «ВТБ» разные, но это ведь не меняет ситуативной связи между ними: банк находится в ветхом здании, что в свою очередь влияет на тональность.fainalex
14.07.2015 16:49+1с точки зрения пользователя я бы ожидала, что каждый сентимент имеет какой-то вес и что в процессе присвоения оценки эти веса суммируются.
что, скажем, в примере про банк «ветхое здание» добавит негатива, но не убьет позитив окончательно.
Мне было бы интересно, если бы система умела бы сравнивать вещи и понимать, что в примере про напитки кока-кола «позитивнее», чем пепси-кола.DKey Автор
15.07.2015 00:09+1Т.е. Вы, вероятно, имеете ввиду градацию меток тональности больше, чем на три класса: 5 или 7 и так далее. Силу тональности мы ещё не подключали, но принципиально в системе эта информация присутствует. Если Вам интересно потестировать такой алгоритм, будем рады обсудить в личном порядке.
zz_wolf
Появление подобных сервисов вызывает у меня строго позитивную тональность. Спасибо!
DKey Автор
Спасибо, приятно слышать! Буду рад тестам и фидбеку.