ESPNWhite Sox's Montgomery sets single-season strikeout record with 224RTP DesportoFinalíssima em Pontevedra. Vasco Vilaça procura título mundial de triatloThe Jerusalem PostAuthenticity and Modernity Party wins Morocco vote, Islamists return to oppositionPunchPeter Obi not godfather to Soludo’s children — First Lady’s aideCNN TürkTürkiye’nin en sıcak ve en kurak yılları belli olduInquirerAfrican swine fever on pigs confirmed in Agutaya, PalawanESPN DeportesRussell le gana a Max en emocionante final en GP de AzerbaiyánObservador DesportoQuatro corpos recuperados após explosão em AtenasThe GuardianSlovenia v Scotland: Nations League – liveBBC SportRepublic of Ireland confirm Israel game will go aheadFox NewsKate Upton retires, high school football game rocked by what some say is a cheap shot & iOSU's new kicker?BBC عربيالبيت الأبيض يمنع "سي إن إن" من مرافقة ترامب على متن الطائرة الرئاسية "إير فورس وان"
The Daily Newsstand · Free, Always
Saturday, September 26, 2026

[Перевод] Как я собирал карту мелодий Большого Токио: 2496 станций и записи лишь для 200

Translate
Dark map of the Greater Tokyo rail network, colored lines radiating out, with a dense cluster of yellow dots at the center marking stations that have playable melodies.

Все 2496 станций Большого Токио. Жёлтым отмечены те, у которых есть мелодия, доступная для прослушивания. Серым — станции, мелодии которых никто не записал. Источник: Akash Wadhwani, sheets.works.

Однажды мы с женой поехали в Токио. Это было наше первое совместное путешествие.

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

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

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

У железнодорожной сети Токио всё неплохо с открытыми данными. Public Transportation Open Data Center публикует сведения о станциях, линиях, координатах, расписаниях и даже текущем положении поездов. Но информации о том, какая мелодия звучит на какой станции, там нет — для работы железной дороги она никому не нужна. Примерно семь небольших музыкальных студий пишут эти мелодии с 1989 года, постепенно охватывая одну железнодорожную линию за другой. Официального списка всех мелодий так и не появилось.

Те списки, которые существуют, составили железнодорожные энтузиасты. Они ведут собственные вики с таблицами, где указано, какая мелодия на какой станции звучит. На одном любительском сайте хранятся аудиофайлы. Другие выкладывают на YouTube длинные ролики: 20 минут мелодий подряд, а под видео — список таймкодов с названиями соответствующих станций. Но никто не нанёс всё это на карту. Одна из причин в том, что разные сайты даже не сходятся в том, как писать названия станций.

Я провёл за этим около месяца, находясь на севере Индии. В итоге получилась карта: все 2496 станций Большого Токио (агломерации вокруг Токио) и 200 мелодий, которые там до сих пор можно услышать. Ни одна из записей на карте не является моей.

Простая половина

Список станций занял у меня всего день, потому что основную работу уже сделал кто-то другой.

Mini Tokyo 3D — интерактивная 3D-карта железнодорожной сети Токио в реальном времени. Данные, на которых она работает, тоже опубликованы — в виде обычных файлов, которые может скачать любой желающий. Там есть станции, железнодорожные линии, обслуживающие их компании и координаты каждой станции на карте. Лицензия разрешает использовать все эти данные при условии указания источника. Каждое название приведено на японском, английском и в ромадзи (romaji).

Основную работу за меня сделали два файла. В списке станций было 2522 строки. После исключения стоек регистрации авиакомпаний, которые вообще не являются железнодорожными станциями, осталось 2496.

Во втором файле указано, какие из этих строк относятся к одному и тому же станционному комплексу. Сам я здесь наверняка ошибся бы. Для пассажира Синдзюку — одна станция. Но в данных это 11 строк, потому что JR East, Odakyu, Keio, Toei и Tokyo Metro ведут для неё собственные записи. Без этого файла пришлось бы самостоятельно придумывать правило: насколько близко друг к другу должны находиться две станции, чтобы считать их одной. Какое бы правило вы ни придумали, где-нибудь оно обязательно даст сбой.

Я закладывал на эту часть две недели. Если вы собираетесь делать что-нибудь на данных японских железных дорог, начинайте отсюда.

Четыре списка, которые не сходятся

Настоящая работа началась с мелодий. Ни на двух сайтах они не были организованы одинаково.

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

Вторая вики организована наоборот: одна строка — одна станция, рядом указаны её мелодии. Таких строк 203. Кроме того, это единственный источник, где указаны авторы музыки.

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

Факты одни и те же, но организованы совершенно по-разному. Поэтому первым делом мне пришлось развернуть список мелодий в список станций, а затем объединить все четыре источника в одну таблицу — по одной строке на станцию. В каждой строке я сохранял отметку о том, с какого сайта она пришла. Звучит как обычная уборка данных. Но именно благодаря этому спустя несколько месяцев я смог вернуться к таблице и понять, какой из источников ввёл меня в заблуждение.

Сопоставление названий

А вот дальше началась настоящая проблема. Чтобы объединить четыре списка, нужно сопоставить строку из одного списка со строкой из другого. Единственное общее поле у всех четырёх — название станции. Поэтому весь проект в итоге свёлся к одному вопросу: когда два названия следует считать одним и тем же названием?

Вот и весь код, который это делает.

def norm(s):
    s = unicodedata.normalize(“NFKC”, s)
    s = re.sub(r”駅$”, “”, s)  # 新宿駅 и 新宿 — одна и та же станция
    s = re.sub(r”[〈〔((][^〉〕))]\*[〉〕))]”, “”, s)   # 〈原宿〉 — редакторская пометка
    return s.strip()
Четыре варианта написания одной и той же станции и то, что убирает нормализация. Последняя строка — правило, которое так ни разу и не сработало. Источник: Akash Wadhwani, sheets.works.

Четыре варианта написания одной и той же станции и то, что убирает нормализация. Последняя строка — правило, которое так ни разу и не сработало. Источник: Akash Wadhwani, sheets.works.

Вот и всё — всего три строки.

Первая строка здесь самая важная, хотя именно её обычно никто не замечает. В японской письменности многие символы существуют в двух вариантах: полноширинном и полуширинном. Для человека это один и тот же символ. Для компьютера они отличаются так же, как A и B. Эта строка приводит их к одному виду, чтобы машина видела то же самое, что и вы.

Уберите её — и множество станций перестанут сопоставляться. Никакого предупреждения не будет. Вы просто получите меньше результатов, а меньше результатов легко принять за менее полный архив. Вот этого и стоит бояться.

Вторая строка удаляет 駅 — «станция». На одних сайтах пишут 新宿駅, на других 新宿, но и то и другое означает Синдзюку. В моих четырёх источниках это правило в итоге не сработало ни разу. Но и оставлять его ничего не стоит.

Третья строка удаляет всё, что заключено в скобки, и вот она пригодилась 28 раз. Официальное название одной из станций — 明治神宮前〈原宿〉, Meiji-jingumae (Harajuku), тогда как на других сайтах её называют просто 明治神宮前. В другом месте у строки стоит пометка (接近): она означает, что эта мелодия звучит при приближении поезда, а не при его отправлении. Если оставить скобки, станция перестаёт совпадать сама с собой.

Чего я не стал делать — так это позволять компьютеру угадывать. Можно разрешить ему считать совпадающими названия, которые просто достаточно похожи, и я это пробовал. Но каждый раз он связывал станции, не имевшие друг к другу никакого отношения, а чтобы заметить такие ошибки, нужно знать японский лучше меня. Поэтому после нормализации названия либо совпадают точно, либо не совпадают вовсе. Во многом именно поэтому в итоге звук нашёлся лишь для небольшой части станций. И я бы снова сделал так же.

Обходной путь через YouTube

Изначально я собирался брать звук из этих видео.

Размещать аудиофайлы у себя на сайте я не могу. Кто-то написал эту музыку за деньги; японская организация JASRAC собирает за неё авторские выплаты, а железнодорожные компании уже отказывали в запросах куда скромнее моего. С YouTube всё иначе: лицензии находятся на стороне YouTube, и жалобы тоже принимает он.

А ещё у хороших видео есть метки глав. Каждая такая метка должна была дать мне название станции и точную секунду, с которой начинается её мелодия.

Я собрал 44 таких видео и смог извлечь пригодный текст из 38. Метки глав вообще были только в 13 роликах. Всего набралось 272 метки, и я прогнал их через тот же нормализатор названий, что и остальные данные.

143 из них удалось сопоставить со станциями. 48 — нет, и дело было уже не в написании.

0:00  冒頭〜銀座線          «начало, затем линия Гиндза»

2:38  丸ノ内線              «линия Маруноути»

9:46  日比谷線              «линия Хибия»

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

Но 89 станций — слишком мало для карты из 2496. Поэтому видео пришлось использовать иначе. Теперь 11 роликов, вручную размеченных по времени, встроены не в карту, а в текстовые разделы страницы. Один из них — новостной сюжет 1989 года. Ещё один содержит 81 мелодию, которые больше нигде не звучат.

Звук для самой карты в итоге пришлось брать с любительского сайта. Отсюда и итоговые цифры: 200 станций, из них 143 — Tokyo Metro, 55 — JR East и две — Toei.

Четыре дня работы ради 11 фрагментов. Когда потом описываешь такие проекты, всё выглядит так, будто было заранее продумано. Здесь всё было совсем не так.

Неудобная цифра

В сети 2496 станций. Мне удалось выяснить, что звучит на 242 из них, а реально послушать можно мелодии только на 200. Это 8%.

Для 8% станций Большого Токио есть опубликованная запись, которую может послушать любой желающий. Источник: Akash Wadhwani, sheets.works.

Для 8% станций Большого Токио есть опубликованная запись, которую может послушать любой желающий. Источник: Akash Wadhwani, sheets.works.

Это оказалось самой сложной проблемой во всём проекте, и к коду она не имела никакого отношения. Только 8% точек на карте что-то делают. Это либо честная картина того, что удалось сохранить энтузиастам, либо карта, которая выглядит сломанной. Точки в обоих случаях одни и те же.

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

Сначала я как раз допустил эту ошибку. В ранней версии страницы было написано, что 1782 мелодии «никогда не архивировались». Хорошая, убедительная цифра. Получил я её, просто вычтя количество найденных мной записей из общего числа станций. То есть на самом деле она описывала мою собственную работу, но выглядела так, будто что-то говорит о Японии. До публикации страницы я это исправил.

Проверка фактов

Перед публикацией я сверил каждое фактическое утверждение в тексте с источником и пометил его как «подтверждено», «слабо подтверждено» или «неверно». Всего набралось около 140 утверждений. 17 оказались неверными.

Например, я написал, что композитор Минору Мукайя начал работать со станциями после заказа 1985 года для линии Tokyu Toyoko. Сам 1985 год был настоящим — тогда он основал свою студию. Но самая ранняя подтверждённая работа Мукайи для этой линии относится к 2013 году. Я превратил дату основания компании в дату заказа, потому что так получалось красивее обозначить начало его карьеры, а потом повторил эту ошибку ещё в пяти местах.

Ещё я использовал японское слово «otomachi» в значении «звуковой ландшафт города». Такого слова вообще нет. Правильный термин — ото-фукэй (音風景), «звуковой ландшафт». Я до сих пор не знаю, откуда взял тот вариант.

Третья ошибка задела меня сильнее. «Spring», самая известная мелодия линии Yamanote, была указана у меня как работа Yamaha и инженера, который участвовал в создании оригинального набора мелодий 1989 года. На самом деле её написал Итагаки Макито из Nippon Denon. Вся моя идея строится на том, что авторов этих мелодий нужно называть, — а я сам указал не того человека.

17 ошибок из 140 утверждений — при том что источники написаны на языке, который я не могу свободно читать. Исправления я внёс уже на следующий день.

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

Чьи это записи

Я не копировал аудиофайлы на свой сайт. Кто-то другой потратил время, записал их и выложил в интернет, а если бы я просто перенёс их к себе, могло бы показаться, будто это моя работа. Поэтому карта ведёт на уже существующие архивы, а сами они указаны в источниках.

Ночной вид вдоль платформы токийской станции: за белыми платформенными дверями стоит поезд линии Yamanote с зелёной полосой.

Nighttime view along a Tokyo station platform, a green-striped Yamanote train behind white platform-edge doors.

Платформенные двери на станции Уэно. Там, где появляются такие двери, мелодии отправления обычно исчезают. Источник: Nesnad, CC BY-SA 4.0, Wikimedia Commons.

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

Поэтому в источниках я указываю названия сайтов. Имя человека появляется только в том случае, если он и сам публикуется под своим именем, а имя композитора — только если оно подтверждается публично доступными сведениями. Если сведения об авторстве встречались лишь на одном сайте, я предпочитал вообще не указывать композитора для этой мелодии. На карте имя автора есть у 83 из 517 записей о мелодиях. В 42 случаях это Мукайя — единственный из здешних композиторов, которым вообще заметно интересовалась пресса.

В первую неделю после публикации двое незнакомых людей с Reddit прислали мне исправления. Оба касались отдельных станций, и оба оказались верными. В данных они помечены тегом reddit-correction рядом с тегами соответствующих вики. То есть факт, полученный от человека, хранится точно так же, как факт, взятый со страницы.

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

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

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

  • 30 сентября в 20:00. «Применение ИИ для анализа данных». Записаться

  • 20 октября в 20:00. «Топ-5 SQL инструментов, которые используют аналитики каждый день». Записаться

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.