Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (11)

Лучшие ответы пользователя

Все ответы (3)
  • Можно ли решить с помощью нейронной сети?

    Irokez
    @Irokez
    Любую задачу в принципе можно свести к нейронной сети, но в вашем случае, запаритесь ее обучать, к тому же нужны данные для обучения, т.е. неск. сотен (тысяч) объявлений, в которых цена, площать и т.п помечены.

    Сводим задачу к классификации группы чисел, т.е. подразумеваем, что все группы чисел в тексте будут иметь один из следующих классов: цена, площадь, этаж.

    Для начала нужен хороший токенизатор: пишете скрипт, который разбивает текст объявления на слова, при этом стараемся чтобы числа были в одной группе. Например: «продаю 3-х комнатную квартиру за 5000 руб.» => («продаю», «3», "-", «х», «комнатную», «квартиру», «за», «5000», «руб», ".").

    Затем создаете простой интерфейс для аннотации текста. Т.е. берем, скажем 1% от всех объявлений и от руки отмечаем, где цена, где площадь. Результат будет примерно таков: {«продаю» => '', «3» => ROOM, "-" => '', «х» => '', «комнатную» => '', «квартиру» => '', «за» => '', «5000» => PRICE, «руб» => '', "." => ''}. Это будут данные для обучения.

    Теперь создаем нейронную сеть. Возьмем многослойный персептрон с 3-мя слоями: входной уровень — наши данные, скрытый уровень и выходной уровень — сигналы классов. В выходном уровне будет кол-во узлов по кол-ву классов, т.е. 3 (цена, площадь, кол-во комнат). Можно добавить 4-й узел для отсутствия класса. Входной слой содержит узлы характеристик данных. В качестве характеристик можно взять N-слов до числа и N-слов после. Число N можно варьировать (скажем, от 1 до 10 т.е. 10 разных сетей). В итоге будет громадный входной слой с кол-вом узлов NxM, где M — это наш словарь, т.е. все встречающиеся в объявлениях слова. Входные данные будут такие: (0, 0, 0,… 1, 0, 0, ....) — для каждой из N групп, т.е. 1 будет обозначать что слово присутствует в окне. Выходные данные будут (1, 0, 0) для цены, (0, 1, 0) для площади, (0, 0, 1) для кол-ва комнат. В скрытом слое ставим кол-во узлов наугад… ну, скажем, пусть, будет N.

    Проводим обучение на 1% размеченных данных пока не сойдется обучение. Можно варьировать число N и смотреть какой вариант дает лучший результат. Потом пытаемся разметить оставшиеся данные с полученной сетью.

    Не уверен, что это оптимальный вариант :)
    Ответ написан
  • Как улучшить анализ тональности текста на русском языке?

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

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

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

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

Лучшие вопросы пользователя

Все вопросы (3)