Для исследовательских и некоммерческих целей SentiWordNet дает вам именно то, что вы хотите.Коммерческая лицензия также доступна.
SentiWordNet: http://sentiwordnet.isti.cnr.it/
Пример кода Jave: http://sentiwordnet.isti.cnr.it/code/SWN3.java
Документ по теме: http://nmis.isti.cnr.it/sebastiani/Publications/LREC10.pdf
Другой подход, который я бы попробовал:
Пример
Tweet 1: @xyz Вы должны увидеть темного рыцаря.Это awesme.
1) Сначала поиск по словарю для значений.
"u" и "awesme" ничего не вернут.
2) Затем идите противизвестные сокращения / сокращения и замещающие совпадения с расширениями (некоторые ресурсы: netlingo http://www.netlingo.com/acronyms.php или smsdictionary http://www.smsdictionary.co.uk/abbreviations)
Теперь оригинальный твит будет выглядеть так:
Tweet 1: @xyz вы должны увидеть темного рыцаря. Это потрясающе.
3) Затем введите оставшиеся слова в программу проверки орфографии и замените их лучшим соответствием (не всегда идеальным и допускающим ошибки для маленьких слов).)
Ссылка по теме: Поиск библиотеки проверки орфографии Java
Теперь оригинальный твит будет выглядеть так:
Tweet 1: @xyz, который вы должны увидетьтемный рыцарь.Его офигенно .
4) Разделить и передать твит в SWN3, собрать результат
Проблема с этим подходом заключается в том, что
а) Отрицанияследует обращаться за пределами SWN3.
b) Информация в смайликах и преувеличенных пунктуациях будет потеряна или обрабатываться отдельно.