Найти тему
Властелин машин

Как формировать индикаторные признаки путем парсинга текстовых данных

Принципиальным этапом создания системы машинного обучения является гибкий подход к созданию признаковой базы. Так, зачастую важная информация скрывается в описании текстовых полей и для ее извлечения требуется прибегать к такому трюку, как парсинг.

Одним из возможных подходов поделюсь на примере модели оценки стоимости квартир, которая принципиально зависит от возможного наличия капитального ремонта в ней.

Например, я скачал набор объявлений о продаже недвижимости в одном из регионов нашей страны, имеющий следующий вид (название df, всего 22 столбца):

Информации о наличии ремонта в данной таблице не имеется. В то же время присутствует поле с описанием самого объявления (desc), в котором продавцы указывают соответствующие сведения. Учитывая это, можно сформировать индикаторный столбец, который будет для строк, содержащих определенные фразы, указывать на наличие ремонта (значение True), а для остальных - на его отсутствие (False).

Однако в силу богатства русского языка для обозначения факта наличия хорошего ремонта используются разнообразные сочетания слов. Чтобы изучить все возможные описания, можно воспользоваться следующей командой:

-2

Однако так читать не удобно, так как слово "ремонт" теряется в дебрях десятков тысяч записей и проще, используя мощь регулярных выражений, выводить только его окружение:

-3

Следует отметить, что описание приводимых выше трюков при работе с библиотекой Pandas я описывал ранее.

Теперь для формирования индикаторного столбца можно выполнить следующую последовательность действий:

  • создать набор слов, "окружающих" слово "ремонт"
  • создать финальный индикаторный столбец (ind_final)
  • для каждого слова проверять его наличие как слева, так и справа от слова "ремонт", в случае успеха хотя бы в одном случае корректировать индикаторный столбец для данного слова (ind_temp)
  • с учетом текущего значения ind_temp корректировать ind_final
-4

-5