From f750a2cf7effd88d862a66d498a9b6cbc02af8ce Mon Sep 17 00:00:00 2001 From: Artem Darius Weber Date: Sat, 7 Dec 2024 15:10:54 -0800 Subject: [PATCH] release --- .gitattributes | 3 + dataset/__init__.py | 0 dataset/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 161 bytes dataset/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 155 bytes dataset/__pycache__/examples.cpython-312.pyc | Bin 0 -> 108727 bytes dataset/__pycache__/examples.cpython-39.pyc | Bin 0 -> 105336 bytes dataset/examples.py | 1177 ++++++++++++++++++ main.py | 9 + train.py | 77 ++ 9 files changed, 1266 insertions(+) create mode 100644 .gitattributes create mode 100644 dataset/__init__.py create mode 100644 dataset/__pycache__/__init__.cpython-312.pyc create mode 100644 dataset/__pycache__/__init__.cpython-39.pyc create mode 100644 dataset/__pycache__/examples.cpython-312.pyc create mode 100644 dataset/__pycache__/examples.cpython-39.pyc create mode 100644 dataset/examples.py create mode 100644 main.py create mode 100644 train.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7c7d687 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +*.bin filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text diff --git a/dataset/__init__.py b/dataset/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dataset/__pycache__/__init__.cpython-312.pyc b/dataset/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1acfdbd9ec7a3fdd173a126ed375c229c0abcab GIT binary patch literal 161 zcmX@j%ge<81k1OFq=V?kAOanHW&w&!XQ*V*Wb|9fP{ah}eFmxd<=|o!Q&5zjm6}{q z9FviloUL0_tZQUoWTKmxlUh`wo1BwaT%4JfnVeXXUlfy)Sdv(rS`rfg`kg5}#o(n0iN5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!H6i&acPQGQlx za!GMaMq+ZdZc(wWk%5tkZemVqQHgGHPGWI!W?E))Vo82cOiE%&VsUCoOniK1US>&r Yyk0@&Ee@O9{FKt1R6CH#pMjVG0Qc1;cK`qY literal 0 HcmV?d00001 diff --git a/dataset/__pycache__/examples.cpython-312.pyc b/dataset/__pycache__/examples.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..517f1d5abe2134e87f90282e453ffbe4fd1a65b9 GIT binary patch literal 108727 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 literal 0 HcmV?d00001 diff --git a/dataset/__pycache__/examples.cpython-39.pyc b/dataset/__pycache__/examples.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8265e7dde191fe97956aa773ebdb16dbcb25d69 GIT binary patch literal 105336 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 literal 0 HcmV?d00001 diff --git a/dataset/examples.py b/dataset/examples.py new file mode 100644 index 0000000..3761294 --- /dev/null +++ b/dataset/examples.py @@ -0,0 +1,1177 @@ +# Список классов +classes = [ + "road_conditions", + "traffic_accidents", + "weather_conditions", + "parking_and_stopping", + "public_transport", + "fares_and_payments", + "traffic_violations_and_fines", + "routes_and_navigation", + "emergency_assistance", + "informational_requests", + "technical_issues", + "accessibility_for_disabled", + "environmental_issues", + "events_and_restrictions", + "complaints_and_suggestions", + "delays_and_holdups", + "tickets_and_reservations", + "road_safety", + "new_projects_information", + "special_services" +] + +# Примеры данных для всех классов +train_texts = [ + # road_conditions + "Дорога на улице Ленина покрыта ямами.", + "Когда завершатся ремонтные работы на трассе М4?", + "На кольце перед мостом сильный затор.", + "На мосту через реку Сочи затруднённое движение из-за аварии.", + "Грунтовая дорога возле деревни Лесной размылась после дождя.", + "Поворот на улице Гагарина скользкий из-за гололёда.", + "Образовалась большая пробка на трассе М5 из-за ремонтных работ.", + "В районе объездной дороги ремонтируют покрытие, затруднён проезд.", + "На трассе Москва-Петербург снежные заносы, рекомендуется ехать с осторожностью.", + "Светофоры на перекрёстке улицы Мира и Лермонтова не работают.", + "Тротуары на улице Победы покрыты льдом, осторожно при ходьбе.", + "Затруднения на подъезде к аэропорту из-за ДТП.", + "Обвал грунта перекрыл движение на трассе в сторону Абхазии.", + "На улице Молодёжной машины буксуют на подъёме из-за гололёда.", + "Дорога между посёлками Новая Заря и Солнечный перекрыта из-за паводка.", + "Дорожная яма на перекрёстке улицы Кирова и Советской сильно затрудняет движение.", + "Из-за ремонта моста на объездной дороге образовалась многокилометровая пробка.", + "На трассе А108 затруднено движение из-за тумана.", + "В районе вокзала ремонтируют рельсы, перекрыта часть дороги.", + "На шоссе Энтузиастов автомобиль перевернулся, движение временно перекрыто.", + "Снегопад затруднил движение по трассе М8 в районе Иваново.", + "На трассе Р255 не работают фонари, движение ночью крайне опасно.", + "На выезде из города пробка из-за проверки документов ГИБДД.", + "Дорога через лес в сторону Загорска завалена упавшими деревьями.", + "Трасса М10 закрыта для грузовиков из-за сильного гололёда.", + "На подъезде к деревне Каменка размыты обочины.", + "Светофоры на проспекте Независимости работают некорректно.", + "Грунтовая дорога в районе посёлка Лесной стала непроходимой из-за дождей.", + "На улице Центральной повредили водопровод, движение перекрыто.", + "На трассе Е22 из-за аварии фура перегородила обе полосы.", + "В районе платной дороги ввели реверсивное движение из-за ремонта.", + "Трасса в сторону Ростова затруднена из-за тумана и плохой видимости.", + "Водители жалуются на отсутствие разметки на участке трассы М7.", + "На объездной дороге в районе Новосибирска снежные заносы, необходима спецтехника.", + "Трасса на юг страны сильно загружена из-за начала отпускного сезона.", + "На улице Колхозной яма повредила подвеску нескольких автомобилей.", + "Дорожные знаки на трассе Р21 местами отсутствуют или повреждены.", + "На улице Лесной затопило проезжую часть из-за дождя.", + "Ремонтные работы на мосту через реку Волгу затягиваются.", + "На трассе Кола образовалась наледь, движение затруднено.", + "Объездной путь вокруг деревни Заречье перекрыт из-за аварии на газопроводе.", + "На участке дороги через перевал сильный гололёд, движение ограничено.", + "На мосту через реку Дон ремонтируют дорожное покрытие, пробка на 5 км.", + "В районе Твери закрыли один из мостов на ремонт, движение через объездную.", + "На трассе М2 в районе Серпухова движение затруднено из-за тумана.", + "На улице Дачной упавший столб перекрыл одну из полос.", + "На трассе М1 ночью произошла авария с участием грузовика и легкового автомобиля.", + "Образовался затор на выезде из города из-за снегопада.", + "Скользкая дорога на въезде в туннель вызывает сложности у водителей.", + "На перекрёстке улицы Северной и Южной светофор не работает уже несколько дней.", + "На трассе в районе Казани размыли дорожное покрытие, движение затруднено.", + "На въезде в Сочи из-за урагана движение ограничено, многие дороги завалены деревьями." + # traffic_accidents + "На перекрестке Ленина и Карла Маркса случилось ДТП.", + "Почему перекрыли дорогу после аварии?", + "Из-за аварии образовалась пробка на 5 км.", + "На трассе М-4 произошло серьезное ДТП с участием грузовика.", + "Легковая машина перевернулась на шоссе.", + "На мосту столкнулись три автомобиля, движение затруднено.", + "Пешеход попал под машину на улице Гагарина.", + "Из-за аварии на кольцевой дороге затруднено движение в сторону центра.", + "Водитель грузовика не справился с управлением, произошло ДТП.", + "На светофоре столкнулись два автомобиля, никто не пострадал.", + "В районе вокзала случилось ДТП с участием маршрутного такси.", + "Авария на мосту привела к остановке движения транспорта.", + "Сотрудники ДПС работают на месте аварии на проспекте Победы.", + "Водитель мотоцикла попал в ДТП на повороте.", + "На подъезде к городу образовалась пробка из-за столкновения машин.", + "Водитель не уступил дорогу и вызвал аварию на перекрестке.", + "Авария с участием автобуса и легкового автомобиля на улице Центральной.", + "На трассе произошло массовое столкновение автомобилей из-за гололеда.", + "ДТП с пострадавшими на улице Комсомольской, вызвана скорая помощь.", + "На трассе перевернулся грузовик, движение полностью перекрыто.", + "В центре города легковая машина врезалась в дерево.", + "На светофоре произошло небольшое столкновение, движение затруднено.", + "Из-за аварии с участием пешехода временно перекрыта улица.", + "Водитель такси не справился с управлением, ДТП на улице Советской.", + "Водитель сбил велосипедиста, движение перекрыто на участке дороги.", + "На парковке произошло столкновение двух автомобилей.", + "ДТП с участием кареты скорой помощи в центре города.", + "На загородной трассе произошло лобовое столкновение двух машин.", + "Из-за аварии на мосту образовалась пробка длиной 3 км.", + "Водитель грузовика врезался в отбойник, движение затруднено.", + "Авария с участием мотоциклиста и легковой машины на трассе.", + "На перекрестке улиц Мира и Ленина произошла авария.", + "Из-за ДТП с участием автобуса движение перекрыто в обе стороны.", + "Водитель внедорожника столкнулся с грузовиком на трассе.", + "На пешеходном переходе сбит человек, вызвана скорая.", + "Водитель легковушки врезался в столб на улице Молодежной.", + "Из-за ДТП на объездной дороге движение частично перекрыто.", + "На трассе перевернулась легковая машина, водитель в больнице.", + "Массовое столкновение на шоссе: повреждены 5 автомобилей.", + "На перекрестке произошло ДТП, сотрудники ДПС регулируют движение.", + "Из-за аварии с грузовиком пострадали пассажиры в легковом авто.", + "Водитель маршрутки столкнулся с легковушкой на светофоре.", + "На подъезде к мосту образовалась пробка из-за ДТП.", + "Авария на скоростной трассе с участием двух легковушек.", + "Водитель электромобиля попал в аварию на улице Горького.", + "На мосту столкнулись грузовик и автобус, движение временно перекрыто.", + "ДТП на пешеходной улице, легковая машина въехала в витрину магазина.", + "На объездной дороге перевернулся микроавтобус, пострадавшие доставлены в больницу.", + "Мотоциклист врезался в припаркованный автомобиль на улице Пушкина.", + "Из-за аварии с бензовозом движение по трассе остановлено.", + "На въезде в город столкнулись легковушка и автобус, образовалась пробка.", + "На парковке торгового центра произошла авария с участием трех машин.", + "Водитель не справился с управлением, врезался в забор на улице Лесной." + # weather_conditions + "Какой прогноз на трассе завтра?", + "После ночного снега невозможно проехать по трассе.", + "Гололедица на мосту, просьба обработать дорогу.", + "На дороге сильный туман, видимость минимальная.", + "Из-за дождя трасса частично затоплена.", + "Как долго продлится метель в районе трассы?", + "На трассе сильный ветер, опасность для грузовиков.", + "Дороги покрыты льдом, движение затруднено.", + "Прогнозируется сильный снегопад в ночь на завтра.", + "На улице мороз, машины плохо заводятся.", + "Сильный ливень затопил подземные переходы на трассе.", + "Когда прекратится дождь, чтобы безопасно выехать?", + "Из-за жары асфальт начал плавиться.", + "Мокрый снег осложняет движение на трассе.", + "На дороге сильный град, машины прячутся под мостом.", + "Какой уровень ультрафиолетового излучения сегодня?", + "Из-за высокой влажности водителям сложно дышать.", + "Скорость ветра превышает норму, просьба закрыть мост.", + "Какая температура ожидается ночью на трассе?", + "Дороги заметены снегом, движение парализовано.", + "Солнце сильно слепит глаза водителям.", + "Из-за дождя на дороге образовались большие лужи.", + "Как скоро начнется гроза в районе объездной дороги?", + "Температура на трассе упала до -15 градусов.", + "Местами на дороге лежат ветки из-за сильного ветра.", + "Песчаная буря ограничивает видимость до 10 метров.", + "Какой уровень осадков за последние сутки?", + "Гроза ожидается вечером, лучше не выезжать.", + "Туман усилился, рекомендуем двигаться с включенными фарами.", + "Выпал град размером с грецкий орех, машины повреждены.", + "Водителям сложно проехать из-за сильного бокового ветра.", + "На дороге снежные заносы, расчистка идет медленно.", + "Ожидается дождь со снегом, будьте осторожны.", + "Из-за низкой температуры трасса покрылась тонким слоем льда.", + "Утренний туман затрудняет движение в районе города.", + "Какие погодные условия в районе северного моста?", + "На трассе идет проливной дождь, движение замедлено.", + "Метель усиливается, машины не могут выехать на подъем.", + "Температура воздуха достигла +40 градусов, будьте осторожны.", + "Какой прогноз ветра на завтра для водителей грузовиков?", + "Из-за влажности увеличился тормозной путь машин.", + "Пыльная буря осложнила движение на шоссе.", + "Какой уровень видимости из-за текущего дождя?", + "На дороге сильные порывы ветра, будьте внимательны.", + "Легкий снег начал переходить в сильный снегопад.", + "Обледенение проводов, светофоры могут не работать.", + "Дождь прекратился, но на дороге много грязи.", + "На трассе ожидается заморозок, осторожно на мостах.", + "Какой прогноз осадков на следующей неделе?", + "Из-за обильного снега дорожная техника не справляется.", + # parking_and_stopping + "Где можно припарковаться возле аэропорта?", + "Почему убрали парковочные места на улице Ленина?", + "На парковке сломан терминал оплаты.", + "На стоянке возле торгового центра нет свободных мест.", + "Можно ли оставить машину у вокзала на ночь?", + "Парковка у музея оказалась платной, где узнать тарифы?", + "На улице установлены знаки запрета остановки, куда можно переехать?", + "Почему эвакуатор увез мою машину с улицы Центральной?", + "Где находятся ближайшие бесплатные парковки?", + "Какие ограничения на стоянку в центре города?", + "На парковке возле стадиона неправильно припаркован автобус.", + "У терминала оплаты на парковке закончилась бумага для чеков.", + "Как узнать, действителен ли мой парковочный абонемент?", + "Можно ли парковаться на газоне возле дома?", + "На парковке возле кафе закрыли въезд, почему?", + "Где найти места для парковки инвалидов?", + "Какой штраф за парковку в зоне запрета остановки?", + "На стоянке возле торгового центра украли зеркало, куда обратиться?", + "Как оплатить парковку через мобильное приложение?", + "На улице запрещена остановка по четным дням, это временно?", + "Где оставить машину, если парковка у пляжа занята?", + "На парковке возле больницы не работает шлагбаум.", + "Почему парковочные места возле офиса стали платными?", + "На парковке возле метро стоит авто с заблокированными колесами.", + "Можно ли оставлять машину на платной стоянке ночью?", + "Где находится ближайшая парковка для грузовиков?", + "Кто отвечает за уборку снега на парковке?", + "Какой срок действия у парковочного талона?", + "На улице Пушкина сделали новую платную парковку.", + "Можно ли припарковаться на улице без разметки?", + "На парковке возле торгового центра украли номерные знаки.", + "Как забрать машину со штрафной стоянки?", + "Какие документы нужны для парковки в зоне для резидентов?", + "Куда обратиться, если сосед занял мое место на стоянке?", + "На парковке возле супермаркета не работает освещение.", + "Где можно получить разрешение на долгосрочную парковку?", + "На улице запретили остановку из-за дорожных работ.", + "На стоянке возле отеля машину заблокировал другой автомобиль.", + "Можно ли остановиться возле школы для высадки пассажиров?", + "На парковке не размечены места, куда ставить машину?", + "Почему на улице Ленина убрали карманы для парковки?", + "Какие правила парковки возле жилых домов?", + "Как оплатить парковку, если терминал сломан?", + "На стоянке возле театра установили новые шлагбаумы.", + "Почему эвакуатор забирает машины с закрытой парковки?", + "Где можно припарковаться во время городских мероприятий?", + "На парковке у ТЦ появились новые камеры, зачем они?", + "Какие зоны парковки считаются незаконными?", + "Почему увеличили тарифы на парковку возле аэропорта?", + # public_transport + "Когда прибудет следующий автобус на остановку Ленина?", + "Почему отменили маршрут трамвая №7?", + "Где найти карту маршрутов трамваев?", + "Какой номер автобуса едет до вокзала?", + "Когда начинается движение метро по утрам?", + "Почему задерживается автобус на маршруте №25?", + "Где можно приобрести проездной билет на месяц?", + "Какой последний автобус уходит с вокзала вечером?", + "На какой остановке пересаживаться с троллейбуса на метро?", + "Почему не работают турникеты в автобусе №15?", + "Где ближайшая остановка маршрутного такси до аэропорта?", + "Можно ли оплатить проезд банковской картой в троллейбусе?", + "Почему отменили остановку у парка на маршруте №12?", + "Как узнать расписание автобусов по субботам?", + "Почему в трамвае не работают обогреватели зимой?", + "Где можно найти информацию о льготных тарифах для студентов?", + "Когда планируют запуск новых троллейбусов на маршрут №5?", + "Как пожаловаться на водителя автобуса, который не остановился?", + "Почему изменили маршрут троллейбуса №3 без уведомления?", + "Есть ли ночные маршруты автобусов в городе?", + "Где купить билет на электричку до пригородов?", + "Почему на маршруте №10 такие старые автобусы?", + "Когда планируется ремонт трамвайных путей на улице Ленина?", + "Как узнать, доступен ли Wi-Fi в городских автобусах?", + "Почему остановка возле школы не оборудована навесом?", + "Какие маршруты работают в праздничные дни?", + "Где можно проверить баланс транспортной карты?", + "Почему маршрутное такси не заехало на указанную остановку?", + "Когда будет запущен новый маршрут автобуса до ТЦ?", + "Можно ли провозить велосипед в трамвае?", + "Какой троллейбус едет до центрального рынка?", + "Почему отменили маршрут троллейбуса в вечернее время?", + "Где находятся парковки для самокатов рядом с остановками?", + "Какой автобус идет до ближайшей больницы?", + "Почему водитель автобуса не пустил пассажира с собакой?", + "Где можно узнать о временных изменениях маршрутов?", + "Когда появятся новые электрические автобусы на маршрутах?", + "Почему маршрут №20 перестал ходить по утрам?", + "Какие маршруты останавливаются у кинотеатра?", + "Можно ли провозить багаж в троллейбусе?", + "Какие маршруты доступны для поездки до аэропорта ночью?", + "Почему не работает кондиционер в автобусе №7?", + "Какой автобус идет до главной площади города?", + "Когда запустят экспресс-автобус до торгового центра?", + "Почему троллейбус остановился на середине маршрута?", + "Какие остановки есть у автобуса №14?", + "Можно ли оплатить проезд в трамвае через приложение?", + "Когда последний трамвай отправляется с конечной остановки?", + "Где оставить жалобу на переполненные маршрутные такси?", + "Какой номер автобуса едет в университет?", + # fares_and_payments + "Почему списали деньги за проезд дважды?", + "Как вернуть средства за ошибочную оплату проезда?", + "Где купить транспортную карту для оплаты проезда?", + "Как проверить баланс на транспортной карте?", + "Можно ли оплатить проезд банковской картой?", + "Почему терминал оплаты в автобусе не сработал?", + "Что делать, если автомат для оплаты не выдал сдачу?", + "Где пополнить транспортную карту в ночное время?", + "Почему при оплате банковской картой списали больше, чем нужно?", + "Как восстановить утерянную транспортную карту?", + "Почему повышен тариф на проезд в маршрутке?", + "Где получить квитанцию за проезд в автобусе?", + "Можно ли использовать QR-код для оплаты проезда?", + "Почему не приняли наличные в троллейбусе?", + "Какие льготы предусмотрены для пенсионеров при оплате проезда?", + "Как узнать, какие маршруты принимают транспортную карту?", + "Почему платеж по карте отклонен, хотя на счету достаточно средств?", + "Где заменить поврежденную транспортную карту?", + "Почему при оплате через приложение не пришло подтверждение?", + "Можно ли вернуть деньги за неиспользованный проездной билет?", + "Как проверить историю оплат на транспортной карте?", + "Можно ли оплатить проезд с помощью NFC на телефоне?", + "Почему списание за проезд произошло позже, чем ожидалось?", + "Какова комиссия за пополнение транспортной карты?", + "Почему в автобусе отказали в оплате купюрами крупного номинала?", + "Как оплатить проезд в автобусе без терминала?", + "Можно ли получить скидку на проезд при покупке абонемента?", + "Где найти терминалы для пополнения транспортной карты?", + "Как вернуть деньги за оплату проезда на неправильном маршруте?", + "Почему не работают терминалы для оплаты в метро?", + "Можно ли привязать банковскую карту к транспортной для автоплатежей?", + "Почему подняли стоимость проезда в городской транспортной сети?", + "Как узнать остаток поездок на проездном билете?", + "Что делать, если транспортная карта не читается в терминале?", + "Где получить чек за оплату через транспортную карту?", + "Можно ли оплатить проезд онлайн заранее?", + "Как восстановить деньги за ошибочную оплату чужого проезда?", + "Почему на некоторых маршрутах разные тарифы?", + "Где купить безлимитный проездной на месяц?", + "Что делать, если терминал оплаты завис во время транзакции?", + "Можно ли вернуть деньги за проезд, если автобус сломался?", + "Почему при пополнении карты деньги не зачислены сразу?", + "Какие способы оплаты доступны в новом общественном транспорте?", + "Можно ли оплатить проезд криптовалютой?", + "Каковы правила возврата средств за отмененный маршрут?", + "Почему сняли деньги за проезд, хотя я не прошел турникет?", + "Где оформить карту с бесплатным проездом для школьников?", + "Почему система оплаты показывает ошибку на определенных маршрутах?", + "Можно ли получить компенсацию за некорректное списание средств?", + # traffic_violations_and_fines + "Почему пришел штраф за превышение скорости?", + "Как проверить наличие штрафов онлайн?", + "Какие нарушения фиксируют новые камеры на трассе?", + "Где оплатить штраф за неправильную парковку?", + "Как оспорить штраф за проезд на красный свет?", + "Почему штраф выписан, хотя я не нарушал правил?", + "Какие документы нужны для обжалования штрафа?", + "Что делать, если не согласен с начисленным штрафом?", + "Как узнать, с какой камеры пришел штраф?", + "Как долго штраф отображается в базе ГИБДД?", + "Почему увеличился размер штрафа за нарушение?", + "Как избежать начисления пени за неоплаченный штраф?", + "Можно ли оплатить штраф частями?", + "Почему штраф за превышение скорости пришел с опозданием?", + "Где получить квитанцию об оплате штрафа?", + "Как проверить, за что выписан штраф по номеру постановления?", + "Почему начислили штраф за парковку в разрешенной зоне?", + "Можно ли отменить штраф за незначительное нарушение?", + "Какие виды нарушений фиксируют камеры с функцией распознавания лиц?", + "Где узнать, действует ли скидка на оплату штрафа?", + "Каков срок давности для штрафов ГИБДД?", + "Можно ли оплатить штраф через мобильное приложение?", + "Почему пришел штраф, если машина была припаркована дома?", + "Как проверить штрафы, если машину продал год назад?", + "Почему начислен штраф за не пристегнутый ремень безопасности?", + "Можно ли обжаловать штраф за парковку без фотофиксации?", + "Как избежать начисления штрафа за превышение средней скорости?", + "Какие правила обжалования штрафов для юридических лиц?", + "Почему штраф за нарушение ПДД не отображается в базе?", + "Как узнать точную дату и время нарушения?", + "Что делать, если штраф оплачивается дважды?", + "Какие камеры фиксируют выезд на выделенную полосу?", + "Почему пришел штраф за нарушение, которого не было в городе?", + "Где узнать, какие нарушения фиксируют новые радары?", + "Можно ли отменить штраф, если нарушение было устранено сразу?", + "Какие действия предпринять при ошибочной фиксации штрафа?", + "Почему пришел штраф за парковку, если я был в другом городе?", + "Можно ли обжаловать штраф через Госуслуги?", + "Какие документы нужно предоставить для отмены штрафа?", + "Как узнать, какие нарушения зафиксированы за последний месяц?", + "Почему начислили штраф за отсутствие страховки на машину?", + "Можно ли не платить штраф, если срок его действия истек?", + "Как избежать начисления штрафа при ошибочной фиксации номера?", + "Какие скидки предусмотрены на оплату штрафов?", + "Почему начислен штраф за остановку на месте для инвалидов?", + "Каковы сроки обработки оплаты штрафа в системе ГИБДД?", + "Что делать, если штраф за нарушение пришел по ошибке?", + "Какие виды нарушений фиксируют камеры на железнодорожных переездах?", + "Почему штраф за превышение скорости отличается по сумме?", + # routes_and_navigation + "Какой самый быстрый маршрут до центра города?", + "Есть ли объезд пробки на трассе?", + "Как настроить навигатор для избегания платных дорог?", + "Как доехать до аэропорта с минимальным количеством пересадок?", + "Почему навигатор предложил ехать через закрытую дорогу?", + "Какой маршрут лучше выбрать, чтобы избежать трафика в часы пик?", + "Есть ли кратчайший путь к вокзалу без светофоров?", + "Как добавить промежуточные точки в навигаторе?", + "Почему навигатор не показывает новые развязки?", + "Как избежать грунтовых дорог при маршрутизации?", + "Как найти самый экономичный маршрут по расходу топлива?", + "Где посмотреть карту ремонта дорог?", + "Как обновить карты в навигаторе для актуальных маршрутов?", + "Есть ли объездной маршрут, чтобы избежать платного моста?", + "Как включить голосовые подсказки в навигаторе?", + "Можно ли задать в навигаторе маршрут через конкретный город?", + "Какой самый быстрый маршрут до ближайшего торгового центра?", + "Почему навигатор отправляет меня через пробку?", + "Какие дороги сейчас перекрыты в связи с погодными условиями?", + "Можно ли найти маршрут для пешехода через приложение?", + "Как настроить навигатор на использование только федеральных трасс?", + "Где находятся зоны отдыха вдоль трассы?", + "Как включить уведомления о камерах и радарах на маршруте?", + "Почему навигатор не предложил маршрут через мост?", + "Какие альтернативные маршруты доступны из-за перекрытия дороги?", + "Как найти маршрут с минимальным количеством тоннелей?", + "Есть ли безопасный объезд через населенные пункты?", + "Как спланировать маршрут с учетом времени суток?", + "Можно ли задать время прибытия в навигаторе?", + "Как найти маршрут для велосипедистов в городе?", + "Какие дороги подходят для грузовиков с ограничением по высоте?", + "Почему навигатор выбрал более длинный маршрут?", + "Как отметить точки интереса на маршруте?", + "Какие дороги закрыты из-за строительных работ?", + "Можно ли сохранить маршрут для повторного использования?", + "Как узнать текущую загруженность дороги в реальном времени?", + "Есть ли возможность избежать мостов и паромных переправ?", + "Почему навигатор предлагает объезд через соседний регион?", + "Как спланировать маршрут с несколькими остановками?", + "Какие маршруты лучше всего подходят для туристов?", + "Как определить оптимальный маршрут для каршеринга?", + "Где найти информацию о состоянии дорог зимой?", + "Как узнать маршрут общественного транспорта к музею?", + "Какие дороги сейчас перекрыты из-за мероприятий?", + "Можно ли спланировать маршрут с учетом скоростных ограничений?", + "Где находятся ближайшие парковки вдоль маршрута?", + "Как узнать, какие маршруты подходят для автодома?", + "Можно ли загрузить маршрут оффлайн?", + "Почему маршрут не учитывает текущие погодные условия?", + "Как найти маршрут через горный перевал?", + # emergency_assistance + "Куда позвонить в случае поломки машины на трассе?", + "Как вызвать эвакуатор ночью?", + "Что делать, если застрял в снегу на дороге?", + "Где найти ближайший шиномонтаж в случае прокола шины?", + "Как связаться с дорожной службой для помощи на трассе?", + "Что делать, если двигатель перегрелся во время поездки?", + "Куда обратиться в случае поломки автомобиля на мосту?", + "Как вызвать помощь, если сел телефон и нет зарядки?", + "Что делать, если закончился бензин на трассе?", + "Где найти ближайшую заправку в случае нехватки топлива?", + "Можно ли вызвать эвакуатор через мобильное приложение?", + "Что делать, если машина заглохла на железнодорожном переезде?", + "Как позвонить в экстренную службу, если нет мобильной связи?", + "Что делать, если автомобиль застрял на обочине в грязи?", + "Как вызвать техпомощь в случае спущенного колеса?", + "Куда обратиться, если сломался аккумулятор на дороге?", + "Как узнать номер службы эвакуации в конкретном регионе?", + "Что делать, если машина начала скользить на льду?", + "Как оказать первую помощь пострадавшим в ДТП?", + "Где найти ближайший пункт помощи автомобилистам на трассе?", + "Куда сообщить о камне, который повредил лобовое стекло?", + "Можно ли попросить помощь у дорожной полиции на трассе?", + "Как вызвать службу спасения в случае ДТП?", + "Что делать, если потерялся в незнакомом районе на машине?", + "Где взять запасное колесо, если своего нет?", + "Как связаться с оператором дорожной помощи на платной трассе?", + "Куда звонить, если машина заглохла в туннеле?", + "Что делать, если машина не заводится в мороз?", + "Как отключить сигнализацию, если она заблокировала двигатель?", + "Что делать, если на трассе сломался ремень генератора?", + "Где найти ближайший автосервис для ремонта в дороге?", + "Можно ли получить помощь в случае пробоя масляного бака?", + "Как вызвать кран для поднятия перевернувшейся машины?", + "Что делать, если автомобиль начал гореть на трассе?", + "Куда сообщить о разбросанных обломках на дороге?", + "Как обратиться за помощью, если пробита радиаторная система?", + "Что делать, если ключи остались внутри закрытой машины?", + "Как сообщить о провале дороги на трассе?", + "Где найти пункт обогрева, если застрял зимой на дороге?", + "Можно ли вызвать помощь, если застрял в песке на пляже?", + "Что делать, если на трассе внезапно сломались тормоза?", + "Как связаться с дорожной службой для эвакуации груза?", + "Куда сообщить о провисающем электропроводе над дорогой?", + "Как вызвать спецтехнику для расчистки снега?", + "Что делать, если сбил животное на дороге?", + "Как сообщить о затоплении участка дороги?", + "Можно ли вызвать помощь для замены свечей зажигания в дороге?", + "Что делать, если автомобиль попал в яму на трассе?", + "Куда обратиться за помощью, если двигатель сильно дымит?", + "Как получить помощь, если шины полностью стерлись в пути?", + # informational_requests + "Где узнать расписание пригородных поездов?", + "Какая ситуация с пробками на южном въезде?", + "Какой номер телефона для вопросов по дорогам?", + "Где найти актуальные данные о дорожных ремонтах?", + "Какие правила движения на новом кольце?", + "Как получить информацию о закрытых участках дорог?", + "Где посмотреть расписание автобусов до аэропорта?", + "Какие дороги сейчас открыты для грузовиков?", + "Куда обратиться за разъяснением по дорожным знакам?", + "Где узнать о планах строительства новой развязки?", + "Какие правила действуют для электросамокатов в городе?", + "Где взять информацию о парковках в центре?", + "Какие автобусы курсируют по маршруту к вокзалу?", + "Как связаться с дорожной службой в экстренных случаях?", + "Где посмотреть карту маршрутов общественного транспорта?", + "Какие штрафы за парковку в запрещенной зоне?", + "Как узнать, есть ли платные участки на трассе?", + "Где найти информацию о велосипедных дорожках в городе?", + "Какова стоимость проезда в маршрутных такси?", + "Какие остановки входят в маршрут автобуса №25?", + "Где можно подать заявку на установку дорожного знака?", + "Какие участки дороги сейчас ремонтируются?", + "Как проверить статус своей транспортной карты?", + "Какие ограничения действуют для большегрузного транспорта?", + "Где посмотреть прогноз погоды на трассе?", + "Какие требования к перевозке животных в транспорте?", + "Где можно пожаловаться на плохое качество дороги?", + "Какой тариф действует на платной трассе М-4?", + "Где находятся ближайшие заправки вдоль маршрута?", + "Какие маршруты доступны для ночного транспорта?", + "Как узнать расписание электричек до пригородов?", + "Какие дороги перекрыты из-за проведения мероприятий?", + "Где получить карту маршрутов трамваев?", + "Какие правила перевозки велосипедов в транспорте?", + "Как узнать о пробках на центральных улицах города?", + "Какие дороги подходят для тяжелой техники?", + "Где подать жалобу на неправильное расписание транспорта?", + "Какие документы нужны для использования автобусных маршрутов?", + "Где найти информацию о новых автобусных маршрутах?", + "Какие улицы будут перекрыты на следующей неделе?", + "Как узнать о состоянии дорог в горной местности?", + "Где посмотреть карту ближайших парковочных зон?", + "Какие ограничения скорости действуют на новой трассе?", + "Где взять карту туристических маршрутов?", + "Какие преимущества дают льготные транспортные карты?", + "Как узнать, какие дороги требуют сезонной подготовки?", + "Какие требования к использованию цепей противоскольжения?", + "Где можно уточнить правила использования выделенных полос?", + "Как узнать, какие дороги подходят для электромобилей?", + "Какие мосты сейчас находятся на реконструкции?", + # technical_issues + "Почему навигатор не показывает мой маршрут?", + "Камера на парковке не работает, что делать?", + "Терминал оплаты не принимает карты, как решить проблему?", + "Почему не обновляется карта маршрутов в приложении?", + "Что делать, если приложение навигатора постоянно вылетает?", + "Почему в автобусе не работает Wi-Fi?", + "Куда сообщить о неисправности турникета в метро?", + "Почему терминал оплаты завис и не выдает чек?", + "Что делать, если система оплаты не считывает мою карту?", + "Почему приложение для оплаты проезда не запускается?", + "Как устранить ошибку при оплате банковской картой в транспорте?", + "Почему на экране информационного табло нет расписания?", + "Куда сообщить о сломанной кнопке вызова на остановке?", + "Почему не отображаются пробки в приложении?", + "Как исправить проблему с некорректным расчетом маршрута?", + "Что делать, если билетный автомат съел деньги, но не выдал билет?", + "Почему терминал для пополнения транспортной карты не работает?", + "Как сообщить о сбое работы камеры контроля скорости?", + "Почему зарядное устройство на остановке не функционирует?", + "Куда обратиться, если разметка на дороге стерлась?", + "Что делать, если навигатор постоянно теряет GPS-сигнал?", + "Почему в троллейбусе не работает система кондиционирования?", + "Как починить неисправный валидатор в автобусе?", + "Почему экран на табло маршрутов показывает неверное время?", + "Как решить проблему с неправильным списанием средств за проезд?", + "Что делать, если турникет заблокировал мой билет?", + "Почему парковочный автомат не принимает наличные?", + "Куда обратиться, если приложение для маршрутов зависает?", + "Почему в машине такси не работает терминал для оплаты картой?", + "Как сообщить о неисправной светофорной кнопке для пешеходов?", + "Почему информационный киоск на вокзале отключен?", + "Что делать, если разрыв сети Wi-Fi произошел в метро?", + "Почему приложение навигатора показывает ошибки маршрута?", + "Как устранить проблему с некорректной работой датчика парковки?", + "Почему терминал на заправке не принимает транспортную карту?", + "Что делать, если камера видеонаблюдения на трассе отключена?", + "Куда сообщить о разрыве контактной сети для троллейбусов?", + "Почему на остановке не работает табло с расписанием?", + "Как решить проблему с медленной загрузкой карты в навигаторе?", + "Что делать, если мобильное приложение не распознает QR-код билета?", + "Почему турникет в метро не открылся после оплаты?", + "Как устранить ошибку подключения в транспортном приложении?", + "Почему валидатор в автобусе перестал сканировать карту?", + "Куда обращаться, если на шлагбауме не работает датчик?", + "Почему на табло парковки неверно отображается количество мест?", + "Как устранить сбой в системе оплаты через NFC?", + "Почему автобусное приложение не показывает точное местоположение транспорта?", + "Что делать, если в навигаторе отсутствуют обновления маршрутов?", + "Куда пожаловаться на сломанный билетный автомат на вокзале?", + # accessibility_for_disabled + "Есть ли пандусы на станции метро Ленина?", + "Почему парковочные места для инвалидов заняты?", + "Какой транспорт доступен для инвалидов?", + "Где найти информацию о доступных автобусах для инвалидов?", + "Какие станции метро оборудованы лифтами для инвалидов?", + "Можно ли заказать такси с подъемником для колясок?", + "Почему в автобусе нет кнопки вызова помощи для инвалидов?", + "Как получить льготный проездной билет для инвалидов?", + "Какие трамваи имеют низкий пол для удобства инвалидов?", + "Где сообщить о сломанном лифте на станции метро?", + "Есть ли специальное место для инвалидов в электричках?", + "Почему на остановке нет наклонного съезда для колясок?", + "Как узнать, какие маршруты имеют оборудованные автобусы?", + "Где оформить разрешение на использование парковки для инвалидов?", + "Почему на парковке не соблюдаются места для инвалидов?", + "Какие правила перевозки инвалидных колясок в транспорте?", + "Можно ли провозить собаку-поводыря в общественном транспорте?", + "Какие права имеют инвалиды на доступ к общественному транспорту?", + "Как заказать специальный транспорт для передвижения инвалида?", + "Почему в метро отсутствует голосовое оповещение для слабовидящих?", + "Где сообщить о повреждении пандуса на автобусной остановке?", + "Какие льготы предоставляются инвалидам для проезда в транспорте?", + "Есть ли доступные туалеты для инвалидов на вокзале?", + "Почему в автобусах нет ремней безопасности для инвалидных колясок?", + "Как узнать, доступен ли маршрут трамвая для инвалидов?", + "Где можно оставить жалобу на недоступность общественного транспорта?", + "Какие маршруты подходят для инвалидов в электричках?", + "Почему турникеты в метро не оборудованы для инвалидов?", + "Как сообщить о нарушении парковки в зоне для инвалидов?", + "Какие автобусы имеют наклонный въезд для инвалидных колясок?", + "Где найти карту доступных транспортных маршрутов для инвалидов?", + "Почему в троллейбусе нет звуковых подсказок для слабослышащих?", + "Как получить информацию о специальных услугах на вокзале?", + "Почему на вокзале не работают подъемники для инвалидов?", + "Какие правила перевозки инвалидов действуют на самолетах?", + "Как узнать, какие поезда оборудованы для передвижения инвалидов?", + "Почему на остановке нет информации на языке Брайля?", + "Где можно заказать индивидуальную помощь для инвалида в транспорте?", + "Какие меры принимаются для обеспечения доступности транспорта?", + "Почему парковочные места для инвалидов используются незаконно?", + "Как сообщить о необходимости ремонта лифта на станции метро?", + "Где найти информацию о доступных паромах для инвалидов?", + "Какие документы нужны для получения инвалидного проездного?", + "Как узнать, доступен ли автовокзал для инвалидов?", + "Есть ли поддержка для инвалидов на междугородних автобусах?", + "Почему на остановке отсутствует звуковое оповещение о маршрутах?", + "Как оформить разрешение на бесплатный проезд для инвалида?", + "Какие изменения планируются для повышения доступности транспорта?", + "Почему в автобусах нет выделенных зон для инвалидных колясок?", + "Как узнать, какие троллейбусы оборудованы для инвалидов?", + "Какие меры предусмотрены для безопасного проезда инвалидов?", + # environmental_issues + "Дорогу затопило из-за сильного дождя.", + "На обочине валяются кучи мусора, уберите их.", + "Почему в городе так много выхлопов от машин?", + "Когда уберут мусор вдоль трассы?", + "Почему на обочине валяются разбитые бутылки?", + "Где сообщить о незаконной свалке вблизи дороги?", + "Почему не убирают лужи после дождя на тротуарах?", + "Как сообщить о выбросах загрязняющих веществ от автомобилей?", + "Почему в городе так много пыли на дорогах?", + "Когда посадят новые деревья вдоль улицы?", + "Почему не чистят снег на пешеходных дорожках?", + "Куда обратиться по поводу утечки канализации на улице?", + "Какие меры принимаются для уменьшения выхлопов в городе?", + "Почему на парковке не убирают разлитое масло?", + "Как сообщить о загрязнении реки рядом с дорогой?", + "Почему обочина засыпана строительным мусором?", + "Когда уберут ветки, упавшие на дорогу после шторма?", + "Какие меры принимаются для снижения шума от трассы?", + "Почему в парке рядом с дорогой так много пластикового мусора?", + "Как узнать, где находятся станции контроля загрязнения воздуха?", + "Почему не собирают разлитое топливо на трассе?", + "Когда начнется уборка осенней листвы на улицах?", + "Какие правила утилизации автомобильных шин в городе?", + "Почему не ремонтируют ливневую канализацию на улице?", + "Как сообщить о разрушении газона рядом с парковкой?", + "Почему рядом с дорогой не убирают снег и грязь?", + "Какие штрафы предусмотрены за выброс мусора на обочину?", + "Когда высадят кустарники вдоль трассы для защиты от пыли?", + "Как сообщить о несанкционированной свалке вблизи жилых домов?", + "Почему не установлены фильтры на заводе возле трассы?", + "Какие меры принимаются для очистки воздуха в центре города?", + "Почему в дождь на улице образуются огромные лужи?", + "Как сообщить о разливе химикатов на дороге?", + "Почему не проводят регулярную уборку автобусных остановок?", + "Где сообщить о мусорных баках, переполненных отходами?", + "Почему тротуары не убирают от песка после зимы?", + "Какие проекты существуют для улучшения экологической ситуации?", + "Почему в городе так мало урн для мусора?", + "Как сообщить о срубленных деревьях без разрешения?", + "Какие меры принимаются для борьбы с загрязнением воздуха?", + "Почему в районе не убирают строительные отходы?", + "Как уменьшить шумовое загрязнение от транспорта?", + "Почему в парке рядом с дорогой вырубили деревья?", + "Какие штрафы предусмотрены за слив отходов на трассе?", + "Почему на трассе не убирают разлетевшийся мусор?", + "Какие меры принимаются для предотвращения эрозии почвы вдоль дорог?", + "Как сообщить о неприятном запахе с завода у дороги?", + "Почему не устанавливают контейнеры для раздельного сбора мусора?", + "Когда проведут уборку зелёных зон вдоль дорог?", + "Почему в городе так мало станций для зарядки электромобилей?", + # events_and_restrictions +"Какие улицы перекрыты из-за марафона?", + "Почему сегодня закрыли мост?", + "Когда будет открыт проезд после фестиваля?", + "Какие дороги будут перекрыты во время парада?", + "Почему сегодня нельзя проехать через центральную площадь?", + "Когда закончится ремонт моста и откроется движение?", + "Какие ограничения действуют из-за ярмарки в центре города?", + "Почему перекрыли трассу в направлении аэропорта?", + "Когда завершатся ограничения из-за реконструкции дороги?", + "Какие улицы будут недоступны в день города?", + "Как долго будет закрыт въезд на площадь?", + "Почему нельзя припарковаться у театра во время спектакля?", + "Какие маршруты изменились из-за дорожных работ?", + "Когда снова откроется движение по улице Ленина?", + "Какие временные ограничения ввели из-за велогонки?", + "Почему на выходных перекрыли часть набережной?", + "Когда снимут запрет на парковку возле вокзала?", + "Какие улицы закроют из-за съемок фильма?", + "Где можно узнать о перекрытиях из-за спортивных мероприятий?", + "Какие альтернативные маршруты доступны из-за ремонта моста?", + "Почему ограничили движение грузовиков по ночам?", + "Когда уберут ограждения после выставки?", + "Какие улицы будут перекрыты в день выборов?", + "Почему закрыли доступ к парку в вечернее время?", + "Когда будет открыт мост после ночного перекрытия?", + "Какие улицы будут недоступны из-за забега?", + "Почему нельзя проехать через тоннель на выходных?", + "Какие дороги закрыты для фейерверка?", + "Когда снова откроют парковку возле музея?", + "Какие улицы недоступны из-за репетиции парада?", + "Почему ограничили движение транспорта возле школы?", + "Какие ограничения введены для въезда в центр города?", + "Когда завершатся работы на перекрестке?", + "Какие изменения маршрутов связаны с карнавалом?", + "Почему закрыт мост для пешеходов?", + "Какие дороги перекрыты из-за визита высокопоставленных лиц?", + "Когда откроют трассу после автогонок?", + "Какие улицы будут недоступны в новогоднюю ночь?", + "Почему ограничено движение на выезде из города?", + "Какие улицы перекроют для реконструкции канализации?", + "Когда завершатся ограничения на парковку у стадиона?", + "Почему изменен маршрут автобуса из-за ремонта дороги?", + "Какие районы города будут недоступны из-за фестиваля?", + "Какие улицы перекроют из-за митинга?", + "Почему временно закрыт въезд на парковку у торгового центра?", + "Когда завершатся ограничения из-за демонстрации?", + "Какие улицы будут закрыты для движения из-за пробега?", + "Почему временно закрыли автобусные остановки?", + "Какие дороги перекроют в выходные из-за ремонта?", + "Когда уберут знаки ограничения на проезд грузового транспорта?", + # complaints_and_suggestions + "Дорогу возле школы нужно отремонтировать.", + "Почему так мало парковочных мест в центре?", + "Можно ли увеличить количество маршрутов автобусов?", + "Когда починят светофор на перекрестке?", + "Почему остановка возле вокзала не оборудована навесом?", + "Можно ли установить больше урн для мусора вдоль дороги?", + "Почему не чистят снег на пешеходных дорожках зимой?", + "Просьба улучшить освещение на парковке у торгового центра.", + "Можно ли сделать выделенную полосу для велосипедистов?", + "Почему так редко ходят автобусы по маршруту №12?", + "Когда заменят старые лавочки на остановках?", + "Можно ли убрать ямы на улице Советской?", + "Просьба установить больше пешеходных переходов у школ.", + "Почему парковочные автоматы не работают?", + "Можно ли добавить больше ночных маршрутов транспорта?", + "Когда уберут строительный мусор с дороги?", + "Просьба улучшить качество дорожного покрытия в районе вокзала.", + "Можно ли добавить больше мест для инвалидов на парковках?", + "Почему так медленно убирают снег с трассы?", + "Просьба установить больше дорожных знаков на улице Молодежной.", + "Когда будут установлены камеры контроля скорости?", + "Можно ли увеличить количество автобусных остановок в районе парка?", + "Почему на трассе не убирают грязь и мусор?", + "Когда расширят узкую дорогу в районе новостроек?", + "Можно ли уменьшить время ожидания на светофоре?", + "Просьба установить зеркала на перекрестках с ограниченной видимостью.", + "Почему на обочинах так много травы и сорняков?", + "Можно ли сделать дополнительные полосы движения на мосту?", + "Когда заменят старые автобусы на новых маршрутах?", + "Почему так много луж после дождя на центральных улицах?", + "Можно ли установить больше зарядных станций для электромобилей?", + "Просьба улучшить систему оповещения на остановках.", + "Почему дорожные работы затягиваются на несколько месяцев?", + "Можно ли сделать бесплатные парковки в выходные?", + "Когда заменят разрушенную разметку на дороге?", + "Просьба улучшить условия ожидания на остановках транспорта.", + "Почему так долго ремонтируют светофор на перекрестке?", + "Можно ли сделать пешеходный переход возле торгового центра?", + "Когда решат проблему пробок на кольцевой дороге?", + "Можно ли установить дополнительные шумозащитные экраны вдоль трассы?", + "Почему на перекрестке не работает освещение?", + "Просьба увеличить количество маршрутов до аэропорта.", + "Можно ли добавить больше зон отдыха вдоль трасс?", + "Когда уберут упавшие деревья с обочин после шторма?", + "Почему так много машин паркуется на тротуарах?", + "Можно ли сделать более понятные указатели на дороге?", + "Когда восстановят разрушенный мост?", + "Просьба установить дополнительные лифты для инвалидов на вокзале.", + "Можно ли улучшить дорожную разметку на кольцевой развязке?", + # delays_and_holdups + "Почему задержали автобус на час?", + "Движение на трассе затруднено из-за ДТП.", + "Когда расчистят снег, чтобы устранить пробки?", + "Почему трамвай так долго стоит на остановке?", + "Когда восстановят движение после аварии на мосту?", + "Движение по улице Ленина затруднено из-за ремонта.", + "Почему автобус стоит в пробке на центральной улице?", + "Когда уберут затор из-за перевернутой машины?", + "Почему на маршруте №25 такие частые задержки?", + "Движение на шоссе полностью перекрыто, сколько это продлится?", + "Когда откроют улицу после дорожных работ?", + "Почему затянулся ремонт светофора на перекрестке?", + "Когда начнут эвакуировать машины с аварийного участка?", + "Почему задерживают отправление электричек?", + "Движение по кольцевой дороге затруднено из-за тумана.", + "Когда устранится затор из-за сбоя работы шлагбаума?", + "Почему автобус не пришел по расписанию?", + "Как долго будет перекрыта трасса из-за ливня?", + "Движение на мосту полностью перекрыто, в чем причина?", + "Когда завершатся работы на перекрестке и откроют проезд?", + "Почему троллейбус стоит на маршруте без движения?", + "Когда восстановится движение после схода лавины?", + "Движение на улице Комсомольской затруднено из-за затопления.", + "Почему не расчистили снег на трассе вовремя?", + "Как долго будет задержка рейсов автобусов из-за ремонта дороги?", + "Движение на подъезде к городу замедлено из-за аварии.", + "Когда расчистят дорогу после падения деревьев?", + "Почему водителям не сообщают о перекрытиях заранее?", + "Движение на трассе остановлено из-за грузовика с поломкой.", + "Когда уберут пробку на въезде в город?", + "Почему задержали отправление поезда на станцию?", + "Движение на объездной дороге полностью перекрыто.", + "Когда откроют дорогу после перекрытия из-за наводнения?", + "Почему автобусы не ходят по расписанию на маршруте №15?", + "Движение на шоссе затруднено из-за гололедицы.", + "Когда восстановят движение после утреннего снегопада?", + "Почему маршрутное такси задерживается в пути?", + "Как долго продлится ремонт дороги с полным перекрытием?", + "Движение по трассе М-4 остановлено, сколько это продлится?", + "Почему автобусы не могут заехать на остановку из-за пробок?", + "Когда восстановится трамвайное движение после аварии?", + "Движение по улице Молодежной затруднено из-за луж.", + "Почему троллейбусы стоят на маршруте из-за обрыва проводов?", + "Когда уберут затор на перекрестке из-за неправильно припаркованных машин?", + "Почему приостановлено движение транспорта на выезде из города?", + "Как скоро уберут последствия на трассе после оползня?", + "Движение на центральной площади замедлено из-за митинга.", + "Когда устранится пробка после ночного снегопада?", + "Почему автобусы отменили на маршруте №7 из-за ремонтных работ?", + "Движение на трассе затруднено из-за закрытого туннеля.", + "Когда откроют въезд на мост после его проверки?", + # tickets_and_reservations +"Как забронировать место в автобусе на завтра?", + "Почему не могу купить билет через приложение?", + "Можно ли сдать билет на поезд без комиссии?", + "Где можно узнать расписание и забронировать билеты?", + "Как изменить дату поездки в уже купленном билете?", + "Можно ли приобрести билет на маршрутку заранее?", + "Почему в кассе закончились билеты на сегодняшний рейс?", + "Как получить скидку на покупку билета для студентов?", + "Можно ли распечатать электронный билет на вокзале?", + "Где купить билет на автобус в ночное время?", + "Как узнать, свободны ли места на рейс завтра утром?", + "Можно ли забронировать несколько мест на один рейс?", + "Почему не работают терминалы для покупки билетов?", + "Как восстановить билет, если я его потерял?", + "Можно ли сдать билет за час до отправления?", + "Как узнать стоимость билета на поезд дальнего следования?", + "Можно ли пересадить билет с одного человека на другого?", + "Где найти расписание электричек и купить билет?", + "Как отменить бронь на автобусный рейс?", + "Почему билет через приложение стоит дороже, чем в кассе?", + "Можно ли поменять купленный билет на другое время?", + "Какие документы нужны для возврата билета на поезд?", + "Как получить компенсацию за отмененный рейс?", + "Почему электронный билет не отобразился в приложении?", + "Можно ли купить билет на автобус прямо перед отправлением?", + "Как проверить подлинность электронного билета?", + "Можно ли забронировать место у окна в автобусе?", + "Где уточнить условия возврата билета на междугородний автобус?", + "Как оплатить билет, если не работает банковская карта?", + "Можно ли забронировать билет на электричку онлайн?", + "Почему не приходят подтверждения после покупки билета?", + "Как узнать, сколько мест осталось на рейсе?", + "Можно ли купить билет с пересадкой через одно приложение?", + "Почему нельзя выбрать место при покупке билета на поезд?", + "Как узнать, действует ли мой билет на следующей неделе?", + "Можно ли вернуть билет, если поездка отменена по вине перевозчика?", + "Как приобрести билет для ребенка со скидкой?", + "Почему невозможно забронировать билет на автобус за неделю?", + "Можно ли перенести дату в уже купленном электронном билете?", + "Как получить чек за покупку билета в приложении?", + "Почему бронь аннулировалась до оплаты?", + "Можно ли получить билет на поезд по паспорту без распечатки?", + "Как добавить дополнительные места в существующую бронь?", + "Почему нельзя забронировать билет на рейс в праздничные дни?", + "Как подтвердить бронирование билета, если не работает сайт?", + "Можно ли получить деньги за неиспользованный билет?", + "Почему система не позволяет выбрать билет на нужный рейс?", + "Как узнать условия обмена билета на другой маршрут?", + "Можно ли купить билет с открытой датой поездки?", + "Как забронировать билет на группу пассажиров?", + # road_safety + "Почему на мосту скользкое покрытие?", + "Нужны знаки о возможности гололеда в этом месте.", + "Как улучшить безопасность на пешеходных переходах?", + "Когда установят дополнительные светофоры на оживленных перекрестках?", + "Почему на трассе отсутствуют предупреждающие знаки о крутых поворотах?", + "Как решить проблему с плохой видимостью на ночных дорогах?", + "Нужны ограждения вдоль дороги возле школы.", + "Почему на перекрестке нет пешеходного перехода?", + "Когда обновят дорожную разметку для безопасности?", + "Почему на подъезде к мосту отсутствует освещение?", + "Нужны светофоры с кнопкой для пешеходов на этой улице.", + "Как сообщить о повреждении дорожного покрытия на мосту?", + "Почему на дороге не установлены противоскользящие покрытия?", + "Когда появятся дополнительные знаки ограничения скорости?", + "Нужны лежачие полицейские возле детского сада.", + "Почему в туннеле отсутствуют аварийные выходы?", + "Как сообщить о выбитых крышках люков на трассе?", + "Почему на спуске нет предупреждающего знака о резком уклоне?", + "Когда установят защитные барьеры на опасных участках?", + "Почему на дороге не убирают снег для предотвращения гололеда?", + "Нужны зеркала на перекрестках с ограниченной видимостью.", + "Когда улучшат освещение на загородной трассе?", + "Почему пешеходный переход плохо освещен в темное время суток?", + "Как сообщить о дефекте в ограждении вдоль трассы?", + "Почему на дороге не установлены знаки о приближении к школе?", + "Когда уберут строительные материалы с обочины трассы?", + "Нужны дополнительные полосы разгона на трассе.", + "Почему светофор на перекрестке работает некорректно?", + "Как предотвратить образование наледи на пешеходных дорожках?", + "Нужны шумовые полосы перед опасным перекрестком.", + "Почему на мосту нет защитных сеток для предотвращения падения предметов?", + "Когда установят противотуманные огни на трассе?", + "Почему нет предупредительных знаков о дорожных работах впереди?", + "Как решить проблему с низкой видимостью из-за кустов на обочине?", + "Нужны камеры видеонаблюдения для контроля скорости.", + "Почему на повороте нет сигнальных столбиков?", + "Когда уберут мусор, мешающий обзору дороги?", + "Нужны зоны отдыха вдоль длинных маршрутов для водителей.", + "Почему пешеходные переходы не оборудованы звуковыми сигналами?", + "Когда уберут старые дорожные знаки, мешающие обзору?", + "Нужны дополнительные указатели на въезде в город.", + "Почему на дороге отсутствуют указатели к ближайшему госпиталю?", + "Как предотвратить аварии из-за плохой видимости в дождь?", + "Нужны аварийные площадки для грузовиков на спусках.", + "Почему на перекрестке отсутствует регулировка светофора?", + "Как предотвратить образование глубоких луж на дороге?", + "Нужны дополнительные дорожные знаки на мосту.", + "Когда добавят шумовые полосы перед пешеходными переходами?", + "Почему на узкой дороге нет предупреждения об ограничении движения?", + # new_projects_information + "Когда начнется строительство новой магистрали?", + "Какие проекты дорожного строительства запланированы?", + "Когда будет построен новый мост через реку?", + "Какие районы будут затронуты реконструкцией трассы?", + "Когда завершится проект расширения улицы Ленина?", + "Какие сроки строительства новой развязки на кольцевой дороге?", + "Когда начнется укладка асфальта на объездной трассе?", + "Какие планы по строительству новых пешеходных мостов?", + "Когда построят новую трассу в направлении аэропорта?", + "Какие планы по модернизации дорожной инфраструктуры в городе?", + "Когда будет открыта новая линия метро?", + "Какие сроки ввода в эксплуатацию нового туннеля?", + "Когда начнутся работы по расширению улицы Советской?", + "Какие проекты благоустройства запланированы вдоль шоссе?", + "Когда начнется строительство новой парковки у вокзала?", + "Какие планы по созданию велодорожек в центре города?", + "Когда будет построена развязка на пересечении трасс М-4 и М-5?", + "Какие сроки завершения реконструкции старого моста?", + "Когда планируется начало строительства нового автобана?", + "Какие улицы будут модернизированы в ближайшие годы?", + "Когда начнется установка шумозащитных экранов вдоль трассы?", + "Какие проекты запланированы для улучшения освещения дорог?", + "Когда начнется строительство пешеходной зоны в центре?", + "Какие планы по созданию новых парковочных зон?", + "Когда будет завершено проектирование нового железнодорожного моста?", + "Какие сроки начала работ по обустройству кольцевой развязки?", + "Когда начнется строительство нового грузового терминала?", + "Какие изменения ожидаются в городской транспортной системе?", + "Когда планируется открытие новой автобусной станции?", + "Какие сроки завершения строительства объездной дороги?", + "Когда начнется укладка тротуарной плитки на центральной улице?", + "Какие проекты по улучшению дорожного покрытия запланированы?", + "Когда завершится строительство нового туннеля под рекой?", + "Какие районы города будут подключены к новому маршруту метро?", + "Когда начнется модернизация дорожных знаков в области?", + "Какие сроки установки новых светофоров на перекрестках?", + "Когда будет построен новый путепровод через железную дорогу?", + "Какие планы по созданию новых автобусных маршрутов?", + "Когда начнется реконструкция пешеходных дорожек в парке?", + "Какие проекты строительства зон отдыха вдоль трассы запланированы?", + "Когда будет введен в эксплуатацию новый мост через залив?", + "Какие изменения планируются в маршрутах общественного транспорта?", + "Когда начнутся работы по благоустройству набережной?", + "Какие сроки реализации проекта по строительству скоростной трассы?", + "Когда будет расширена дорога на въезде в город?", + "Какие планы по установке новых зарядных станций для электромобилей?", + "Когда начнется создание новых велосипедных дорожек?", + "Какие сроки завершения проекта по модернизации кольцевой дороги?", + "Когда будет построен новый тоннель для автомобилей?", + "Какие проекты планируются для улучшения пешеходной инфраструктуры?", + # special_services + "Можно ли заказать транспорт для инвалидов?", + "Как работает услуга эвакуации для грузовиков?", + "Есть ли сервис для помощи при аварийных ситуациях?", + "Как заказать техническую помощь на трассе?", + "Есть ли услуга перевозки больных на специализированном транспорте?", + "Как получить помощь в случае замены колеса на дороге?", + "Можно ли вызвать эвакуатор через приложение?", + "Какие услуги предоставляются для грузового транспорта на трассе?", + "Как работает служба помощи в случае разлива топлива?", + "Есть ли услуга сопровождения детей в общественном транспорте?", + "Как получить помощь при застревании в снегу на трассе?", + "Можно ли заказать спецтранспорт для перевозки крупных грузов?", + "Какие услуги доступны для зарядки электромобилей на трассе?", + "Как воспользоваться услугой технического обслуживания на месте?", + "Есть ли сервис для предоставления бензина в экстренных случаях?", + "Как вызвать аварийную службу для ремонта дороги?", + "Какие услуги предоставляет мобильная шиномонтажная станция?", + "Есть ли услуга доставки воды для машин с перегревом?", + "Как заказать такси с подъемником для инвалидных колясок?", + "Можно ли воспользоваться услугой буксировки легкового автомобиля?", + "Какие сервисы доступны для грузовиков на дальних маршрутах?", + "Как работает служба эвакуации автомобилей после ДТП?", + "Можно ли вызвать техпомощь для замены аккумулятора на трассе?", + "Есть ли услуга предоставления временного транспорта?", + "Как заказать спецтехнику для расчистки снега на дороге?", + "Можно ли вызвать помощь для открывания заблокированного автомобиля?", + "Как работает сервис помощи при потере ключей от автомобиля?", + "Какие услуги доступны для ночного времени на трассах?", + "Есть ли сервис эвакуации автомобилей из труднодоступных мест?", + "Можно ли вызвать помощь при повреждении тормозной системы?", + "Как воспользоваться услугами буксировки автодомов?", + "Какие службы предоставляют помощь в случае утечки масла?", + "Как вызвать помощь при заклинивании колес на трассе?", + "Можно ли заказать транспорт для перевозки домашних животных?", + "Есть ли услуга замены стекол на месте аварии?", + "Как вызвать помощь при заблокированных дверях автомобиля?", + "Какие сервисы предоставляют помощь при авариях с электромобилями?", + "Есть ли служба доставки деталей для ремонта на месте?", + "Как получить помощь при сломанном навигаторе в машине?", + "Можно ли вызвать специалиста для ремонта подвески на дороге?", + "Как заказать услугу сопровождения кортежа?", + "Есть ли сервис помощи при повреждении фар автомобиля?", + "Как работает услуга предоставления временного водителя?", + "Какие сервисы доступны для помощи при застревании на обочине?", + "Можно ли заказать помощь для устранения прокола шины?", + "Как вызвать сервис для перезапуска двигателя?", + "Есть ли услуга сопровождения туристических автобусов?", + "Как работает служба помощи при сбоях в электронике автомобиля?", + "Какие сервисы доступны для перевоза крупногабаритных предметов?", + "Можно ли заказать эвакуатор для мотоциклов?" +] + +train_labels = [] +train_labels.extend([classes.index("road_conditions")] * 52) +train_labels.extend([classes.index("traffic_accidents")] * 50) +train_labels.extend([classes.index("weather_conditions")] * 50) +train_labels.extend([classes.index("parking_and_stopping")] * 50) +train_labels.extend([classes.index("public_transport")] * 50) +train_labels.extend([classes.index("fares_and_payments")] * 49) +train_labels.extend([classes.index("traffic_violations_and_fines")] * 49) +train_labels.extend([classes.index("routes_and_navigation")] * 50) +train_labels.extend([classes.index("emergency_assistance")] * 50) +train_labels.extend([classes.index("informational_requests")] * 50) +train_labels.extend([classes.index("technical_issues")] * 49) +train_labels.extend([classes.index("accessibility_for_disabled")] * 51) +train_labels.extend([classes.index("environmental_issues")] * 50) +train_labels.extend([classes.index("events_and_restrictions")] * 50) +train_labels.extend([classes.index("complaints_and_suggestions")] * 49) +train_labels.extend([classes.index("delays_and_holdups")] * 51) +train_labels.extend([classes.index("tickets_and_reservations")] * 50) +train_labels.extend([classes.index("road_safety")] * 49) +train_labels.extend([classes.index("new_projects_information")] * 50) +train_labels.extend([classes.index("special_services")] * 50) + +# Пример валидационных данных +val_texts = [ + # road_conditions + "Есть ли объезд дороги, закрытой из-за ремонта?", + "Почему на мосту скользкое покрытие?", + # traffic_accidents + "Какая информация есть о аварии на трассе М10?", + "Можно ли проехать по трассе после недавнего ДТП?", + # weather_conditions + "Когда расчистят снег на трассе?", + "Есть ли предупреждения о сильном ветре на пути?", + # parking_and_stopping + "Где можно припарковаться возле вокзала?", + "Когда обновят разметку на парковке возле вокзала?", + # public_transport + "Когда прибудет следующий автобус?", + "Почему отменили маршрут трамвая №7?", + # fares_and_payments + "Почему списали деньги за проезд дважды?", + "Где узнать тарифы на проезд в городском транспорте?", + # traffic_violations_and_fines + "Почему начислен штраф за использование телефона за рулем?", + "Какие нарушения фиксируют новые камеры на трассе?", + # routes_and_navigation + "Какой самый быстрый маршрут до центра города?", + "Есть ли объезд пробки на трассе?", + # emergency_assistance + "Куда позвонить в случае поломки машины на трассе?", + "Как вызвать эвакуатор ночью?", + # informational_requests + "Где узнать расписание пригородных поездов?", + "Какая ситуация с пробками на южном въезде?", + # technical_issues + "Почему навигатор не показывает мой маршрут?", + "Терминал оплаты не принимает карты, как решить проблему?", + # accessibility_for_disabled + "Есть ли пандусы на станции метро Ленина?", + "Какой транспорт доступен для инвалидов?", + # environmental_issues + "На обочине валяются кучи мусора, уберите их.", + "Почему в городе так много выхлопов от машин?", + # events_and_restrictions + "Какие улицы перекрыты из-за марафона?", + "Когда будет открыт проезд после фестиваля?", + # complaints_and_suggestions + "Можно ли увеличить количество маршрутов автобусов?", + "Почему так мало парковочных мест в центре?", + # delays_and_holdups + "Почему задержали автобус на час?", + "Когда расчистят снег, чтобы устранить пробки?", + # tickets_and_reservations + "Почему не могу купить билет через приложение?", + "Можно ли сдать билет на поезд без комиссии?", + # road_safety + "Нужны знаки о возможности гололеда в этом месте.", + "Как улучшить безопасность на пешеходных переходах?", + # new_projects_information + "Какие проекты дорожного строительства запланированы?", + "Когда будет построен новый мост через реку?", + # special_services + "Можно ли заказать транспорт для инвалидов?", + "Есть ли сервис для помощи при аварийных ситуациях?" +] + +val_labels = [ + classes.index("road_conditions"), + classes.index("road_conditions"), + classes.index("traffic_accidents"), + classes.index("traffic_accidents"), + classes.index("weather_conditions"), + classes.index("weather_conditions"), + classes.index("parking_and_stopping"), + classes.index("parking_and_stopping"), + classes.index("public_transport"), + classes.index("public_transport"), + classes.index("fares_and_payments"), + classes.index("fares_and_payments"), + classes.index("traffic_violations_and_fines"), + classes.index("traffic_violations_and_fines"), + classes.index("routes_and_navigation"), + classes.index("routes_and_navigation"), + classes.index("emergency_assistance"), + classes.index("emergency_assistance"), + classes.index("informational_requests"), + classes.index("informational_requests"), + classes.index("technical_issues"), + classes.index("technical_issues"), + classes.index("accessibility_for_disabled"), + classes.index("accessibility_for_disabled"), + classes.index("environmental_issues"), + classes.index("environmental_issues"), + classes.index("events_and_restrictions"), + classes.index("events_and_restrictions"), + classes.index("complaints_and_suggestions"), + classes.index("complaints_and_suggestions"), + classes.index("delays_and_holdups"), + classes.index("delays_and_holdups"), + classes.index("tickets_and_reservations"), + classes.index("tickets_and_reservations"), + classes.index("road_safety"), + classes.index("road_safety"), + classes.index("new_projects_information"), + classes.index("new_projects_information"), + classes.index("special_services"), + classes.index("special_services") +] \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..97a3460 --- /dev/null +++ b/main.py @@ -0,0 +1,9 @@ +from dataset import examples + +count_text = len(examples.train_texts) +count_lb = len(examples.train_labels) + +print(f"{count_text} / {count_lb}") + +print(examples.train_labels) + diff --git a/train.py b/train.py new file mode 100644 index 0000000..21e86ae --- /dev/null +++ b/train.py @@ -0,0 +1,77 @@ +from dataset import examples + +import torch +from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments +from datasets import Dataset +import numpy as np +from evaluate import load + + +classes = examples.classes +train_texts = examples.train_texts +train_labels = examples.train_labels +val_texts = examples.val_texts +val_labels = examples.val_labels + +# ============================================================================================================================================================================== + +train_dataset = Dataset.from_dict({"text": train_texts, "label": train_labels}) +val_dataset = Dataset.from_dict({"text": val_texts, "label": val_labels}) + +model_name = "DeepPavlov/rubert-base-cased" +tokenizer = AutoTokenizer.from_pretrained(model_name) + +def tokenize_function(examples): + return tokenizer(examples["text"], truncation=True, padding="max_length", max_length=128) + +train_dataset = train_dataset.map(tokenize_function, batched=True) +val_dataset = val_dataset.map(tokenize_function, batched=True) + +train_dataset = train_dataset.remove_columns(["text"]) +val_dataset = val_dataset.remove_columns(["text"]) + +train_dataset = train_dataset.with_format("torch") +val_dataset = val_dataset.with_format("torch") + +model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=len(classes)) + +training_args = TrainingArguments( + output_dir="./results", + eval_strategy="epoch", + save_strategy="epoch", + per_device_train_batch_size=8, + per_device_eval_batch_size=8, + num_train_epochs=3, + weight_decay=0.01, + logging_dir="./logs", + logging_steps=10, + load_best_model_at_end=True, + metric_for_best_model="accuracy" +) + +accuracy_metric = load("accuracy") + +def compute_metrics(eval_pred): + logits, labels = eval_pred + predictions = np.argmax(logits, axis=-1) + return accuracy_metric.compute(predictions=predictions, references=labels) + +trainer = Trainer( + model=model, + args=training_args, + train_dataset=train_dataset, + eval_dataset=val_dataset, + tokenizer=tokenizer, + compute_metrics=compute_metrics +) + +trainer.train() +trainer.save_model("./trained_model") + +# Пример предсказания +test_text = "Когда починят светофор на перекрестке?" +inputs = tokenizer(test_text, return_tensors="pt", truncation=True, padding="max_length", max_length=128) +outputs = model(**inputs) +predictions = torch.argmax(outputs.logits, dim=1).item() +predicted_class = classes[predictions] +print("Predicted class:", predicted_class)