Можно ли решить с помощью нейронной сети?

Задача следующая — есть база объявлений о недвижимости.
необходимо структурировать данные из объявлений.
т.е. цена, этаж, общая площадь.
Все объявления написаны в произвольном формате.
Можно ли как-то решить с помощью нейронной сети?
если да, то какой алгоритм смотреть?
Спасибо.
  • Вопрос задан
  • 3682 просмотра
Пригласить эксперта
Ответы на вопрос 6
mark_ablov
@mark_ablov
это называется Data Mining, думаю это поможет в поиске вариантов в гугле.
Ответ написан
Комментировать
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 и смотреть какой вариант дает лучший результат. Потом пытаемся разметить оставшиеся данные с полученной сетью.

Не уверен, что это оптимальный вариант :)
Ответ написан
@bekbulatov
Не совсем понятна ваша задача, но могу посоветовать книгу «Программируем коллективный разум» Тоби Сегарана. В книге рассматриваются подобные алгоритмы на питоне. Думаю найдете что-то полезное для себя.
Ответ написан
@pomme
Именно нейронная сеть тут вряд ли поможет, это задача Text Mining.
Конкретно в Вашем случае я бы предложил решить ее перечислением встречающихся в тексте паттернов, а потом применил бы бустинг, как здесь: habrahabr.ru/company/mailru/blog/112142/
Ответ написан
Комментировать
Levsha100
@Levsha100
Чисто теоретически на нейронках можно реить любую задачу, решаемою компьютером, тут скорее вопрос в целесообразности. В данном случае использовать НС не оптимально.
Ответ написан
Комментировать
Используйте Томита-парсер Яндекса. Он для этого хорошо может подойти. Только придется, конечно, написать правила.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы