В dataset'е по минувшим выборам, тщательно подготовленном
shipilev, выделение городских и сельских УИК все еще представляет собой нетривиальную задачу. Предложенный еще в декабре
kobak метод экспресс-разделения города и села путем отбора УИК, в названии которых имеется корень «город» или запятая, не работает, поскольку совершенно точно оставляет за бортом мелкие города, во всяком случае, в Ленинградской области, которую я знаю в этом отношении довольно неплохо. Другой экспресс-метод, разделение по количеству избирателей, зарегистрированных на УИК, также не работает, поскольку даже в патентованных городах полно УИК менее, чем на тысячу (и даже менее, чем на пятьсот -- тут в патентованных городах даже небольшой пичок виден) человек.
Чем это плохо? Быстро проверить при этом гипотезу об отличном от городов голосовании села не представляется возможным. Нет ли вокруг кого, кто смог это победить?
Скрипт, которым выковыривал УИКи по методу
kobak (предмет моей особой дилетантской гордости -- победа над словом «город»)
#!/usr/bin/env perl
use warnings;
use utf8;
use strict;
open (SRC, '<output-uiks.r.csv') or die $!;
open (CITY, '>>city-uiks.r.csv') or die $!;
open (NONCITY, '>>noncity-uiks.r.csv') or die $!;
while (<SRC>){
if ($_ =~ m/\xd0\xb3\xd0\xbe\xd1\x80\xd0\xbe\xd0\xb4|\, /){
print CITY ($_);
}
else {
print NONCITY ($_);
}
}
close SRC;
close CITY;
close NONCITY;
no subject
Date: 2012-03-11 09:25 pm (UTC)А просто по размеру отфильтровать нельзя? Я бы полагал, что городские УИКи потолще деревенских.
no subject
Date: 2012-03-11 09:42 pm (UTC)no subject
Date: 2012-03-11 09:45 pm (UTC)Я поглядел на данные чуваков с gis-lab.info:
$ cat voting_station.csv | wc -l
91186
$ grep "поселок" voting_station.csv | wc -l
24430
$ grep "село " voting_station.csv | wc -l
23369
$ grep "слобода " voting_station.csv | wc -l
56
$ grep "хутор " voting_station.csv | wc -l
739
$ grep "станица " voting_station.csv | wc -l
179
То есть, примерно 48 тысяч УИКов фильтруются по банальным ключевым словам.
Теперь про формат:
$ head -n 5 voting_station.csv
"id","location_id","name","address","is_standalone","size"
7434,38011,"242","республика Калмыкия, поселок Яшкуль",f,"medium"
7216,37803,"23","республика Калмыкия, Элиста, МОУ ДОД Дворец детского творчества, Парк культуры и отдыха Дружба",f,"large"
7195,37781,"2","республика Калмыкия, Элиста, МОУ Начальная общеобразовательная школа №24СМП-334",f,"small"
7222,37810,"29","республика Калмыкия, Элиста, микрорайон, 10, МОУ СОШ № 172",f,"larg
Судя по всему, третье поле -- название УИКа, а четвёртое -- более-менее формализованный адрес.
$ grep "Калмыкия" cikrf-csv-20120311-094225/output-uiks.csv | grep Элист | grep "№2"
"Республика Калмыкия","Элистинская","УИК №2",13,8,1,4,142,168,168,226,46,2,168,2,0,0,250,2,4,0,3,80,7,0,0
"Республика Калмыкия","Элистинская","УИК №23",52,217,40,67,542,832,918,1787,22,89,832,89,0,0,1800,3,7,2,38,879,45,0,0
"Республика Калмыкия","Элистинская","УИК №29",32,333,66,160,784,1343,1375,2409,55,52,1343,52,0,0,2400,20,0,0,66,1005,66,0,0
Единственный неприятный трабл в том, что в моих данных названия ТИКов ("Элистинская"), а в ГИСовых название населённого пункта. Ну это можно банальным similarity search победить, я думаю.
Мне лениво это делать, может, на выходных...
no subject
Date: 2012-03-11 09:47 pm (UTC)no subject
Date: 2012-03-11 09:59 pm (UTC)Там не безошибочно, но более-менее определены населенные пункты
Можно в лоб отбирать населенные пункты более чем с Х участками (или более чем с Х участками и Y избирателями). Можно подробнее смотреть адреса - и выбирать города
Мне кажется вполне адекватным первый путь (смотреть не на официальный статус поселения, а на его размер) - анализы kireev и ru_danko соответственно по Смоленской и Кировской областям показали, насколько я помню, отсутствие существенных различий в результатах выборов между малыми городами, поселками и сельскими райцентрами. То есть похоже, что размер поселения важнее его статуса
no subject
Date: 2012-03-11 10:02 pm (UTC)Более продвинутый метод - смотреть не только на размер конкретного участка, но и на размеры соседних участков. Процент ошибок уменьшается, но их все равно остается приличное количество
По адресам избирательных участков (взятых с webvybory2012.ru) классифицировать участки ИМХО правильнее
no subject
Date: 2012-03-11 10:09 pm (UTC)no subject
Date: 2012-03-11 10:44 pm (UTC)"location": {
[...]
"raw_address": "Вологодская область, Устюженский муниципальный район, муниципальное образование город Устюжна, г. Устюжна, Карла Маркса, 53",
[...]
},
"address": "Вологодская область, Устюженский район, Устюжна, Карла Маркса, 53",
или даже:
"location": {
"raw_address": "Республика Бурятия, Селенгинский район, Убун-Дзокойский сомон, улус Енхор, начальная школа",
},
"address": "Республика Бурятия, Селенгинский район, село Енхор, начальная школа",
Думается мне, что не-нормализованные адреса лежат в $raw_address. А то, что у ребят в voting-stations.csv, это уже $address. В общем, не проблема выдрать (только всё равно придётся нормализовать штуки типа "улус" -> "село")
no subject
Date: 2012-03-11 11:04 pm (UTC)Архангельская область::Коряжемская
Архангельская область::Мирнинская
Архангельская область::Новодвинская
Архангельская область::Новоземельная
Архангельская область::Северодвинская
Белгородская область::Старооскольская
Владимирская область::Муром округ
Иркутская область::Ангарская
Кемеровская область::Новокузнецк Заводская
Краснодарский край::Анапская
Краснодарский край::Армавирская
Краснодарский край::Геленджикская
Краснодарский край::Горячеключевская
Курганская область::Курганская Восточная
Курганская область::Курганская Западная
Московская область::Красногорская
Московская область::Люберецкая
Московская область::Мытищинская
Московская область::Ногинская
Московская область::Пушкинская
Московская область::Щелковская
Мурманская область::Мурманская
Ненецкий автономный округ::Нарьян-Марская
Нижегородская область::Борская
Новгородская область::Великий Новгород
Приморский край::Арсеньевская
Приморский край::Артемовская
Приморский край::Большекаменская
Приморский край::Дальнегорская
Приморский край::Лесозаводская
Приморский край::Находкинская
Приморский край::Уссурийская
Приморский край::Фокинская
Республика Калмыкия::Элистинская
Республика Мордовия::Ленинская
Республика Мордовия::Октябрьская
Республика Мордовия::Пролетарская
Саратовская область::Балаковская
Саратовская область::Энгельсская
Тульская область::Новомосковская
Иркутская область::Саянская
Иркутская область::Свирская
Мурманская область::Апатитская
Мурманская область::Видяевская
Мурманская область::Заозерская
Мурманская область::Кировская
Мурманская область::Ковдорская
Мурманская область::Мончегорская
Мурманская область::Оленегорская
Мурманская область::Островнинская
Мурманская область::Полярнозоринская
Мурманская область::Североморская
Мурманская область::Александровская
no subject
Date: 2012-03-11 11:12 pm (UTC)no subject
Date: 2012-03-11 11:15 pm (UTC)no subject
Date: 2012-03-11 11:53 pm (UTC)Бокситогорск 16 тыс., Лодейное поле 20 тыс., Сланцы 33 тыс. -- это не знаю, уже, может, и не "города".
Вообще, задача решается так: надо просмотреть список всех тик и отобрать города. Всего тик около 2700, городских в моем списке порядка 800, остается 1900. Их можно упорядочить по кол-ву людей в списке и прошерстить начало списка еще раз. Поможете?
А вот список тик Ленинградской области, копирую на всякий случай.
'Leningradskaja oblast'::Boksitogorskaja'
'Leningradskaja oblast'::Volosovskaja'
'Leningradskaja oblast'::Volhovskaja'
'Leningradskaja oblast'::Vsevolozhskaja'
'Leningradskaja oblast'::Vyborgskaja'
'Leningradskaja oblast'::Gatchinskaja'
'Leningradskaja oblast'::Kingiseppskaja'
'Leningradskaja oblast'::Kirishskaja'
'Leningradskaja oblast'::Kirovskaja'
'Leningradskaja oblast'::Lodejnopol'skaja'
'Leningradskaja oblast'::Lomonosovskaja'
'Leningradskaja oblast'::Luzhskaja'
'Leningradskaja oblast'::Podporozhskaja'
'Leningradskaja oblast'::Priozerskaja'
'Leningradskaja oblast'::Slancevskaja'
'Leningradskaja oblast'::Sosnovoborskaja gorodskaja'
'Leningradskaja oblast'::Tihvinskaja'
'Leningradskaja oblast'::Tosnenskaja'
no subject
Date: 2012-03-11 11:56 pm (UTC)no subject
Date: 2012-03-12 12:00 am (UTC)no subject
Date: 2012-03-12 12:08 am (UTC)no subject
Date: 2012-03-12 05:56 am (UTC)Учитывая, что у нас есть точно городские участки (относящиеся к городским ТИКам), задача вполне алгоритмизируется и там несложно обеспечить проверку качества результатов
no subject
Date: 2012-03-12 06:32 am (UTC)А все остальные поля, включая координаты, выводятся именно из address, отсюда и ошибки вроде той, которую показывал oude-rus, когда подмосковная Жуковка оказалась в Татарстане. Правда, они эту базу чистят, на уровне привязки к регионам сейчас уже почти все исправлено, что для наших целей достаточно, т.к. пара регион-номер участка уникальна. Но на уровне районов чудес еще много.
no subject
Date: 2012-03-12 06:51 am (UTC)