Задать вопрос
@immelnikoff
Изучаю БД

Поиск оптимальной регулярки для бинарной классификации строк. Как?

Имеется, скажем, 10 строк и частота их встречаемости в логах. Я хочу отобрать из них только те, в которых подразумевается отдых/путешествие по городам России. А точнее, я хочу получить регулярку, которая с высокой точностью сможет повторить за мной (я предварительно сам размечаю строки классами) бинарную классификацию строк. На самом деле строк очень много – сотни и тысячи. Но я хочу отобрать топ-10/топ-100 строк, руками их разметить и на этих размеченных данный получить нужную мне регулярку, а затем натравить её на все остальные строки.
Рассмотрим пример из 10 строк. Я подобрал руками регулярку, которая хорошо приближает результат к желаемому:
regexp = '(?i)(?=.*(путешеств|отдых))(?=.*(росси|алтае|сочи))'

67ded7271fdb6282433791.png
TP = 200 + 15000 + 800 + 700 = 16700
FP = 500
FN = 0
precision = TP / (TP + FP) = 0.97
recall = TP / (TP + FN) = 1
Вопросы знающей аудитории:
1) Существуют алгоритмы поиска оптимальных регулярок на размеченных данных? В какую сторону рыть?
2) Если регулярку не ограничивать в размерах, то она просто переобучится (на размеченных данных будет работать идеально, а на тестовой выборке – нет). Как это контролировать?
3) Хочется, чтобы регулярка обучалась на словах, а не на пунктуации или спец. символах.
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы