python

Как научить нейросеть придумывать названия российских населенных пунктов

  • вторник, 28 ноября 2017 г. в 03:12:49
https://habrahabr.ru/post/343336/
  • Машинное обучение
  • Python
  • Lua


Для начала немного несуществующих деревень и сёл


Сальтолово
Ничичи
Каверная Голяна
Придориусловка
Старотипенки
Кюканово
Кутюшевка
Верхний Стед
Сабаревка
Зеленокировка
Хадонские Выселки
Старый Куля
Октяга
Ржиново
Черемошно
Голодионово
Александрово-Полейково
Подлопаново
Малое Сусовое
Горы-Чусалы
Чубравяково




Зачем и почему


Всем привет, меня зовут Илья, я занимаюсь компьютационной биологией и биохимией, в свободное время я заставляю нейросети страдать ерундой.


Основываясь на аналогичных проектах (названия британских деревень, названия мест в Орегоне, названия различных цветов и их RGB), я решил научить нейросеть создавать названия несуществующих населенных пунктов


В качестве нейросети я решил воспользоваться torch-rnn, которую достаточно легко установить и настроить. Список городов и сел я нашел тут (можно скачать все в формате csv). С csv пришлось немного повозиться, чтобы привести ее к utf-8, после чего я запихнул ее в нейросеть и оставил на пару часов. Когда тренировка модели закончилась я взял небольшой сампл и получил следующий результат:


root@themachine:~/Projects/torch-rnn/torch-rnn> th sample.lua -checkpoint cv/checkpoint_9000.t7 -length 1000 -gpu -1
Рязовка
Ропотино
Сигомино
Рохва
Родионый Ваньково
Сухон
Сидоровское
Торя
Хруда
Черно-Тальское
Арха
Барданово
Вергежль
Ввешеватьи
Тетловка
Трожликово
Туровый Покска
Феддал
Ямное
Малое Чешовка
Белогорка
Веткино
Пестовское
Свягуты Борсусы
Рясная Стенино
Саморово
Траниково
Титы
Ужера
Федяково
Уралово
Хвороск
Ровки
Отрада
Сафонгальское
Сосновка
Сопцы
Суховодное
Севица
Селяново
Сисарово
Султа
Сидорино
Тарбин
Ульяновка
Шараки
Чернышево
Чубанный Поселок
Хворево
Филатово
Дубровка
Донграяс
Илехово
Канькинка
Кемно
Карлыково
Ключкино
Котовка
Котлигово
Кривцовицкое
Малый Майдан
Якуши
Любисно
Малый Дубуж
Малая Средка
Михайловка
Новая Месловка
Новекудаково
Ньино
Новорежнеево
Озерки
Олпов
Парсенево
Подвицы
Новотильичево
Половье
Покровка
Пролетарский
Прюпки
Прижа
Старгарево
Сятка
Тарасово
Емейлово
Удяжье
Филекали
Дубровка
Задарье
Зеленые Комара
Касмаково
Кикулиха
Комары
Кондреевка
Кожарба
Кукран
Куржак админ территория г Ильмица
Мановкий
Маржинская
Нурайка
Погор
Новая Бауль
Нурская Нива
Ойватино


Подробные инструкции


  1. Скачать и установить torch-rnn, проще всего это сделать следуя подробным инструкциям в их репо
  2. Скачать названия всех российских городов в формате csv отсюда
  3. Привести csv в надлежащий вид — удалить все ненужные столбцы, перекодировать в utf-8, можно убрать все скобки и точки.
  4. Дальше можно следовать инструкциям на гитхабе, однако я настоятельно рекомендую не запариваться с поддержкой gpu, я потратил на это 2 часа, ничего не добился и забросил это дело. Просто pre-process data, train the model and sample the model.
  5. Пока нейросеть тренирует модель можно набросать черновик поста на Хабре (можно и пропустить)
  6. Поиграться с разными чекпоинтами и температурой самплинга, попутно пытаясь найти самыe смешные варианты



Вот вам еще городов и сел на 10000 знаков, если интересно:


города и села

root@themachine:~/Projects/torch-rnn/torch-rnn> th sample.lua -checkpoint cv/checkpoint_9000.t7 -length 10000 -gpu -1
биконое
Яхвтовово
Максимово
Надеждино
Нинка Орзык
Новая Байка
Мытный
Нозади
Осельное
Осиновский
Ольгино
Павловка
Пенчиково
Рожник
Песожтево
Рожково
Рускачевка
Родашевка
Севержое
Семоново
Рогиши
Семенково
Скуратель
Сумба
Рожки
Сергово
Даптово
Екатериновка
Заволдновоссй
Задовская
Долдинная
Черепошки
Юбино
Андрофновоа
Алехный
Барановка
Весеевский
Грачаевское
Грузный
Горьково
Дебровый
Доринская Булак
Украсовское
Тельховка
Теренный
Тереволок
Тишицкая
Цирядан Ачтым
Нниколаборгуновка
Урутский Калмак
Лизвановка
Лобогозная
Чеченогорное
Шунаган
Шиманской
Шумная
Балкастохта
Верхний Алба
Весновица
Синтямь
Усть-Нижна
Шедведа
Александровка
Бары
Бобрионский
Булдым
Бурин
Мочкор
Надеждос
Обсажда
Турский Лаберя Гора
Чильянск
Ушая Пониш
Федолевка
Черный Поповик
Акулов
Нельсконопай
Верхняя Жары
Гашулав
Хавачатный
Язунга
Яблонтаях
Алкари
Ясная Озанчума
Белый Майка
Бибизына
Буз
Торышева админ территория г Карыленка
Холва
Кучейка
Малиновка
Межжуг
Новобордний админ территория Горякин
Новоникаильино
Ново-Аргей
Мухково
Подгорское
Поселанки
Прондусное
Руйский
Рогата
Скарачево
Самарай
Скориково
Судирепичи
Слободка
Радиоминское
Петросновка
Решлка
Переповка
Роговой Нага
Самаркан
Терех-Большая Присляны
Зорено админ территория г Ивкичева Гора
Калиники
Колчатов
Красная Петровка
Красноуразрихановка
Крывцы
Ленинский
Лобовтцы
Лоховой
Махсков
Буйменка
Млавловка
Васильевка
Васькуль
Вадское
Вимково
Высокое
Гаденус
Терлино
Дрождегоркитино-Косышевка
Красово
Крюкова Борска
Крутяки
Крутиенка
Кривая Поляны
Клиногор
Мочелейка
Недроново
Осочино
Озерки
Окольная
Окулино
Романовка
Тимочное
Утдурбамск
Текиши
Екатериновская
Долгоилитонино
Золотой Окат Мейдаз
Эстом
Черемшинка
Эконзеро
Ярышки
Шумково
Юженичи
Батарт
Большая Курмуча
Борыки
Бутмугород
Вахурево
Великий Загуда
Высока
Васильевский каш
Верхневовихи
Верхняя Ченькара
Воробовка
Воелково-Парковка
Стремецкий
Глучаево
Судаково
Самарино
Селдов
Передоровка
Русники
Роговое
Сапыл
Сосновский
Стишина
Тарасово
Тахно-Алек
Чевчино
Капичеевка
Зеленая Кузняй
Канасимовка
Леткурское
Малогорка
Наговская 2-я
Нижняя Слободка
Новая Мельцов
Мольты
Новая Слободка
Новая Михайловка
Преохоча
Озерки админск
Жижня-Катышево
Зеленцев
Займожное
Ивановка
Желевское
Заря
Заветная
Ишкашев
Карадогун
Кичкуйло
Куруегали
Мая
Морозово
Мурей
Нижний Сурт
Норач
Пинцевский
Попавки
Прудки
Романовка
Светлое
Северков
Рынькино
Севичаный
Гудск
Фоминская
Чернилянка
Арнай
Больев
Граженьевский
Данцева админ территория г Внуткалазка
Шара
Анистой
Альское
Анчелек
Мокреевка
Можарское
Новоперественка
Новокужгомовой
Новорокиловский
Отрадное
Первомайский
Поховичи
Полковская
Призанка
Пришки
Присудиха
Саниловка
Черновка
Шасловское Сакля
Юголок
Черешня
Шалеево-Шана-Хриновская
Арчуровский
Арденгельское
Ашатниково
Глухово
Сафчище
Рудобильное
Самоново
Тинбельга
Хрещеевка
Ярыбиха
Анцено
Таши-Анаклы
Тустахи
Тетери Инскары
Тимошкино
Усть-Карасьга
Чубала
Чизаняс
Эракино
Анхарь
Ултниха
Зальнеун
Жили
Дехта
Екологлаково
Загольново
Замощино
Заречное
Желозеровка
Долье
Чехвядниково
Захаровка
Домонино
Дречки
Дубовое
Ельнево
Журавицы
Дракево
Елица
Ильино
Каракино
Казино
Каланка
Каремково
Колопа
Коность
Костема
Красный Послок
Лазаревка
Лухино
Манька
Минаевское
Надеждино
Неронцево
Никольский
Новая Слобода
Поповка
Покровское
Подлечное
Поляковское
Плетино
Приобель
Черноусово
Акарьевка
Бабет
Берковец
Бодоновская
Александровский
Юксатовский
Аннишный
Барьяковка
Верхное Горогово-Гор
Усочная
Чебусово
Чернеево
Шелухино
Шельгино
Городище
Дворикл
Фадово
Гиенки
Дврино
Ермаково
Житкино
Иваньково
Еростино
Ероссино
Дремково
Хлесное
Дрягино
Залуки
Зиново
Залевино
Жарино
Друня
Завочмицы
Дубовая
Замошье
Заводской
Елизавод
Замошье
Засерехи
Заходтино
Знаменка
Зуевское
Караево
Каменичи
Кашеевка
Казанское
Кирдихово
Коломно
Кочеренково
Кобровное
Комарово
Колунина
Копанк
Кондратково
Коровкино
Комсотоли
Короволухово
Иваново
Кязьмино
Клепино
Знаменец
Ключищи
Козинки
Кольстиново
Косики
Котоково
Котыловка
Красная Горка
Крива
Кругловяя Гилановка
Красный Октюл
Максуты
Аксак
Алдяк
Азары
Мендленьки
Нижний Вихвит
Николка
Островка
Пинцево
Подлесховское
Погорелец
Подозерка
Подъелой
Танюфли
Теметовское
Семельина
Садовый
Серезцово
Серебкино
Татинское Гойровка
Глининский
Глячки
Верх-Сосновка
Сиверцовка
Спобчаево
Тепловка
Телявка
Тимильяж
Узерный
Осальный админ территория г Ильошка Слобода
Сулдозеро
Русский Удя
Рогаженки
Реченский
Тересово 1-е
Утоложка
Шатпушкино
Аласовский
Андроповщина
Агарная Поляна
Аксиновка
Арусовка
Большевик
Бородовка
Васильевское
Гурячево
Детковичи
Черепской
Бустыри
Цвой-Нично-Чибичи
Урамшанка
Юрызиловка
Алоборьевка
Бездлановка
Большая Сверногловка
Большой Шак
Брованец
Бычки
Большой Путь
Бородино
Бурачев
Бурминский
Веселый
Протас
Вон
Войново
Васильцы
Верхняя-Казашная
Богдайск-Калма
Щиплина
Андреево
Артозеро
Агаканок
Ябдат
Верхняя Нижняя-Пороза
Вирьяная 2
Воросисовка
Большой Куншина
Бобровка
Большая Тронев
Бордовичи
Большие-Ворошка
Богобле
Блавники
Васильевка
Варково
Наримовка
Волокос
Алексеевский
Анитский
Касуенова Гора
Костеры
Курково
Лопатино
Манкаровка
Луньковская
Малиновка
Малоразмалово
Мопитова
Незазаров
Михайровка
Нижнее Первое Метвец
Новый Бартягоры
Петровка
Скрабово
Сухолотово
Владимировка
Вычи
Верхняя Поляна
Волковичи
Головардихново 1-е
Горкино
Горховка
Данышево
Дмитровка
Долгово
Домчаново
Еки
Залнинское админ территория г Картач
Имелевая
Кармышев
Кинделиха
Конкинский
Косьма
Ласхогольск
Незвозное
Нижний Камен
Неломка-Дворье
Нагольный адмка
Уры
Ямняково
Андрево
Буда
Буда
Юктер
Батней
Ветеринская
Березовка
Гудя
Шишинка
Усть-Арюйаль
Уротьевка
Шапки
Апросимово
Березовка
Большое Камённое
Варяновка
Бизерки
Болотна
Борисово
Введенка
Шшилово
Будыкова
Василевка
Грепилово
Троицкое
Трынинская
Требутаново
Ушутовка
Туровое
Шибково
Большевая Ключей
Бундин
Верхнеголдан
Вождусстье
Вишневка
Ворсовец
Глебовое
Давалино
Зиплечье
Заражменщина
Защуевка админ территория г Вериты
Золотай
Холленский
Ужуха
Зелентьей Кара
Ислак
Кедровка
Лепное
Ярцево
Лпивамкино
Ленинка
Кульшенская Полимандвинок
Лесной
Лубинга
Ломкино
Лощовая
Марьевка
Миркал
Новая Богозево
Новодюхновка
Морозовка
Новосерлеканово-Родинскийс
Минеевка
Можангурская
Новоселова
Островное
Пичинский
Прозовый Кузьми
Старый Яр
Самраркалук
Сактово
Юлаушка
Александрово
Аниной
Бай Артем
Верхняя Кородербинка
Тарасаково
Яричево
Аниселье
Магдрь
Барановка
Богородской
Верхняя Ареда
Верхняя Кура админ территория г Сичинкусан
Больший Матага
Большой Сарсукай
Валуй
Гоболонзе
Ирдымей
Красный Шап
Крутцы
Ладу
Куруньин
Листвозерск
Курубаза
Луанды
Малый Будаха
Малеевка
Веселый Лог
Новое Даничкинская Новоскины
Тухмалы
Хонецкое
Хочевая
Тутилово
Торчунская Сосновка
Селин
Сосновское
Синяконники
Старая Селтамска
Следай
Старые Ларячи
Струки
Субино
Растылка
Рязановка
Ржавец
Сельцо
Семшино
Субохманцево
Самониха
Головино
Даркиный админ территория г Сламычи
Духля
Заречниково
Ильинский
Леонкали
Юрьевский
Артакадьев
Великий Берег
Весерка
Вышвановка
Гусевка
Екатерино
Исанцево
Караулик
Каширково
Лавловка
Кущера
Мальцево
Лушкино
Лебеда
Лецкое
Кулековка
Лонинец
Лога
Лебетиха
Макарово
Макаренка
Малогалевский
Малаховец
Майловская
Малая Сурван
Наволок
Накулово
Никитюзовский
Пасец
Сакхаты
Сыянец
Сильнинская-Заложний
Сокол
Сополого
Старый Уханду
Плота
Турнал
Утник
Уротныч
Ильинский
Курьив
Лебедевка
Малое Юркино
Мельманово
Оборье
Овукода
Палида
Павчуха
Перелиха
Песды
Нижняя Щагинка
Новая Маевска
Мысканово
Петропавовка
Пухорное
Подгорный
Почимураки
Сухонополье
Сковлезьео
Срезгий
Смолинка
Страсково
Спасская
Горняусино
Голубиновка
Глиндаевка
Гусево
Горстинское
Грибков Поселок
Гуолец
Ижра
Кабаново
Кашенки
Каменка
Колосово
Косюрьево
Кокогорская
Коловкино
Кочерягино
Кожино
Костроповка
Красная
Кривосеретьевская
Зубенка
Хмеревка
Хотлявиха
Рудаковка
Тумызлы
Толопьево
Черкасское
Ясной Олешка
Богородищево
Власье
Болюши
Висеевка
Волочнее
Выгоровский
Востокское
Вороматки
Ворчино
Вышомобка
Вострой
Гадние Строги
Гусино
Годковичи
Гусино
Щекалово
Филино
Федоровка
Жердево
Знаменка
Захаухово админ территория г Ивдель
Ермолавково
Жедемка админ территория г Берега
Зольево
Красной админ территория г Верхняя Сейга
Черта
Шестеполь
Черная Таш
Алашево
Ариданово
Гадриха
Семеницы
Семяхино
Слудкое
Тальтубы алминцы
Та польной
Тарачиковка
Чаткарка
Шешлая
Кочербечевская
Шубулово
Шутов
Аннино
Ажбанино
Андрониха
Айтайка
Киривковой
Кеурское
Кщива
Красная Роги
Крюковка
Шишкино
Красный За-Ю-ты
Кулябьевка
Ленинское
Мирный
Логиновка
Матыркино
Малый
Малояйний
Маньги
Междрино
Муденка
Михайловка
Монской
Молоддничково
Московская
Наколжа
Павловка
Новойска
Новищевская
Окулино
Тромсы
Ухово
Орехово
Октябрьский
Таптелиха
Тихинино
Еньсельдкое
Усть-Чекеева
Шалганы
Ширко
Александровка
Антополье
Черкино
Анисово
Адыгино
Терешки
Шилов
Аксеновский
Чосновка
Холозы
Малая Груденга админ территория г Пеленоц
Ожепка
Ташарово
Фрустов
Телловенка
Тюда
Эрлева
Яблутки
Буйчуз-Хыг
Букальние
Грибарев
Джеменное
Шарасова Гора
Зебеняк
Четка
Александровка
Андреевка
Бабловка
Васюты
Власьево
Вожинка
Борисовка
Боровики
Вулаи
Рындахи
Новая Слфача
Восточная
Гаветов
Горжов
Дмитриевка
Дуюлябриха
Добречка
Доеды
Ипамково
Ильибка
Калагаево
Калешевка
Камено
Керзра
Кошкаево
Кувашск
Логаново
Малые Лукуки
Малиновский
Малые Бережга
Малая Новцы
Малый Хетерино
Мариша Орсуши
Негозёры
Прикениково
Пурдуб
Перши
Сафарово
Сигадахтиманск
Учела
Анажусная
Васильевка
Большой Вершем
Голбозеро
Дадова
Ддоровский
Знигорье
Зеленый Моя
Забатовка
Дистьгин
Таловка
Уса
Унаевское
Чюслаков
Щекила
Шиевский
Чернопольна
Андросово админ территория г Карагудан
Шипорская 2-я
Вина
Воскаровка
Сеньколовка
Старое Гароново
Старая Рудня
Старое Родиорево
Столинское
Старки
Таврина-Талюя Марковка
Талиново
Ханино
Чернодурильный
Чернозделево
Арафоиново
Гомаровка
Горелка
Гоячи
Ежино
Каменка
Кожаровка
Кубас
Кагантые
Корсуколь
Лескатово
Мановка
Малый Кызаны
Нахарьево
Никитино
Покровка
Новый Пая
Раджаны
Речег
Средняя
СЛапая Полье
Реджинская
Сивалово
Поляны
Старый Хутор
Сенеты
Темлябово
Усть-Петами
Хатпухово
Ускутор
Чирки
Федорово
Запрейновка
Зиновещино
Зубаново
Дешницы
Доропашкино
Долгия Боровяжи
Дростское
Долгие
Додеситное
Ильигино
Коваленки
Кортово
Котвомово
Крутицы
Липятково
Ленть
Крамово
Красилково
Красная Рог
Кулучево


Если будет свободное время, попробую сделать что-то подобное со всеми названиями СНГ и/или сравнить вымышленные названия разных республик.