• Как улучшить анализ тональности текста на русском языке?

    Irokez
    @Irokez
    Про классификатор:
    SVM часто используется для анализа тональности текста, так что выбор правильный. Точного ответа, какой алгоритм классификации будет работать лучше — нет, поэкспериментируйте с разными алгоритмами и выберите тот, который даст лучшие результаты. Навскидку, предложу Naive Bayes и MaxEnt.

    Про признаки:
    Как вам правильно предложили выше — попробуйте биграммы, а также попробуйте 2-3-4 буквенные граммы, это может помочь с проблемой орфографии. По поводу построения вектора, есть более эффективные функции простановки веса для признаков чем бинарная. Я использую обычно delta tf-idf. В качестве дополнительных признаков можете попробовать морфологические теги (part-of-speech tag), бывает, что помогают. Также иногда помогают комбинация слов с тегами (напр: я-местоимения, люблю-глагол, чай-сущ.)

    Про данные:
    1500 комментариев — это тестовая выборка или данные для обучения модели? Или же все вместе? Для обучения вам понадобится гораздо больше данных. В зависимости от тематики их можно собрать с определенных сайтов (если фильмы, то, например, кинопоиск).

    Также можете составить тональный словарь, список слов с их значением тональности (affective lexicons). Либо вручную, либо перевести с других языков (напр. с английского) — вручную либо автоматически, либо одним из методов автоматического составления словаря тональности. В целом, задача классификации на три класса достаточно сложная. Попробуйте сперва сделать для двух классов, а затем уже либо добавить доп. классификатор либо расширить модель для трех классов. Тут много вариантов. Удачи!
    Ответ написан
    3 комментария
  • Как улучшить анализ тональности текста на русском языке?

    @lightcaster
    Занимался этим по работе. Попробуйте:
    — svm с линейным ядром
    — (1,2,3)-граммы как фичи
    — нормализуйте текст, но попробуйте оставить некоторые знаки препинания — !?
    — работал с английским, там стеммер не улучшал качество. На русском нужно пробовать, но не удивлюсь, если не сработает.

    Кроме этого можете поиграться с различными преобразованиями на векторах. Мне не помогло, хотя теоретически должно было бы. Может, что-то неверно сделал. Попробуйте LSA (pLSA если словарь большой).

    Замечания:
    — хороший корпус очень важен
    — выбор фич важен
    — орфография не имеет сильного эффекта
    — исключение стоп-слов также не улучшало качества
    — действительно, иронию, двусмысленность выловить таким методом очень тяжело; при попытки поймать длинные связи снижается качество

    Если захотите экстрима — можно попробовать какой-нибудь классификатор со строковым ядром. Я пробовал, не пошло. Но теоретически может получится.
    Ответ написан
    Комментировать