@whiteslove/parsing-lexicon 0.6.11 → 0.6.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/hiring-skills.js +3 -1
- package/src/hiring-source-semantics.js +5 -0
- package/src/housing-poi-extensions.js +47 -0
- package/src/kg-bishkek-residential-extensions.js +18 -0
- package/src/kg-bishkek-street-extensions.js +72 -0
- package/src/kg-karakol-location-extensions.js +9 -0
- package/src/kg-location-extensions.js +33 -2
- package/src/kg-osh-location-extensions.js +25 -0
- package/src/kz-address-extensions.js +178 -0
- package/src/kz-almaty-cleaned-residential-extensions.js +74 -0
- package/src/kz-almaty-street-extensions.js +50 -0
- package/src/kz-astana-cleaned-residential-extensions.js +86 -0
- package/src/kz-city-residential-extensions.js +14 -0
- package/src/kz-kostanay-location-extensions.js +16 -0
- package/src/kz-microdistrict-extensions.js +28 -0
- package/src/kz-pavlodar-location-extensions.js +11 -0
- package/src/kz-primary-address-extensions.js +178 -0
- package/src/kz-regional-address-extensions.js +35 -0
- package/src/kz-regional-residential-extensions.js +80 -0
- package/src/kz-residential-extensions.js +137 -0
- package/src/kz-shymkent-cleaned-address-extensions.js +70 -0
- package/src/locations-runtime.js +63 -2
- package/src/ua-chernihiv-residential-extensions.js +28 -0
- package/src/ua-city-location-expansions.js +21 -5
- package/src/ua-kharkiv-location-translations.js +19 -0
- package/src/ua-kharkiv-microdistrict-extensions.js +10 -0
- package/src/ua-residential-extensions.js +53 -0
- package/src/uz-bukhara-location-extensions.js +9 -0
- package/src/uz-samarkand-context-extensions.js +105 -0
- package/src/uz-tashkent-context-extensions.js +76 -0
package/package.json
CHANGED
package/src/hiring-skills.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { cleanHiringSourceText } from './hiring-source-semantics.js'
|
|
2
|
+
|
|
1
3
|
// These canonical labels are ordinary words or one-letter tokens. Matching the
|
|
2
4
|
// label itself would create noisy results; only their explicit aliases are safe.
|
|
3
5
|
const AMBIGUOUS_CANONICALS = new Set(['C', 'Go', 'Make', 'REST', 'Spring'])
|
|
@@ -283,7 +285,7 @@ export function canonicalSkillName(value) {
|
|
|
283
285
|
}
|
|
284
286
|
|
|
285
287
|
export function extractSkillDetails(text) {
|
|
286
|
-
const normalized = normalizeSkillText(text)
|
|
288
|
+
const normalized = normalizeSkillText(cleanHiringSourceText(text))
|
|
287
289
|
const found = []
|
|
288
290
|
const names = new Set()
|
|
289
291
|
for (const { definition, patterns } of COMPILED_SKILLS) {
|
|
@@ -24,6 +24,10 @@ const FIELD_EXTRA_ALIASES = Object.freeze({
|
|
|
24
24
|
const APPLICATION_MODAL_RE = /(?:отправить\s*резюме\s*)+(?:\[telegram\]\s*)?пол\s*мужской\s*женский\s*образование[\s\S]{0,500}?выберите\s*вакансию[\s\S]*/iu;
|
|
25
25
|
const LEAKED_STYLESHEET_START_RE = /:root\s*\{\s*--[\w-]+\s*:/iu;
|
|
26
26
|
const LEAKED_CSS_RULE_RE = /\s*(?:[.#][\w\\-]+|:root)(?:[^{}\n]{0,300})\{\s*(?:(?:--)?[\w-]+\s*:\s*[^;{}]+;?\s*)+\}\s*/giu;
|
|
27
|
+
// A leaked upload-input fragment (e.g. `_Resume.html'" value="Добавить резюме" />`)
|
|
28
|
+
// scraped from a job-board form. Its stray ".html" would otherwise be
|
|
29
|
+
// misread as the HTML skill/language.
|
|
30
|
+
const LEAKED_HTML_INPUT_RE = /[^\n<>]{0,120}?\bvalue\s*=\s*"[^"\n]*"\s*\/>\s*/giu;
|
|
27
31
|
// Button/chrome labels copied along with a resume from Ukrainian job boards
|
|
28
32
|
// (novarobota.ua, robota.ua, work.ua and similar). Matched as whole lines so
|
|
29
33
|
// genuine resume prose is never touched.
|
|
@@ -35,6 +39,7 @@ export function cleanHiringSourceText(value) {
|
|
|
35
39
|
const stylesheetStart = text.search(LEAKED_STYLESHEET_START_RE);
|
|
36
40
|
return (stylesheetStart >= 0 ? text.slice(0, stylesheetStart) : text)
|
|
37
41
|
.replace(APPLICATION_MODAL_RE, '')
|
|
42
|
+
.replace(LEAKED_HTML_INPUT_RE, '')
|
|
38
43
|
.replace(LEAKED_CSS_RULE_RE, ' ')
|
|
39
44
|
.split('\n')
|
|
40
45
|
.filter((line) => !JOB_BOARD_UI_NOISE_RE.test(line.trim()))
|
|
@@ -144,12 +144,59 @@ export const HOUSING_POI_EXTENSIONS = Object.freeze([
|
|
|
144
144
|
uk: ['Євробазар', 'ТЦ Євробазар'],
|
|
145
145
|
en: ['Eurobazar'],
|
|
146
146
|
}, { category: 'shopping_mall', country: 'UA', city: 'Sumy', display: { uk: 'ТЦ «Євробазар»', en: 'Eurobazar' } }),
|
|
147
|
+
group('Sumy Bus Station', {
|
|
148
|
+
uk: ['Автовокзал Суми', 'Сумський автовокзал', 'автовокзал на Степана Бандери'],
|
|
149
|
+
ru: ['автовокзал Сумы'],
|
|
150
|
+
en: ['Sumy Bus Station'],
|
|
151
|
+
}, { category: 'bus_station', country: 'UA', city: 'Sumy', display: { uk: 'Автовокзал Суми', en: 'Sumy Bus Station' } }),
|
|
147
152
|
group('Sumy Railway Station', {
|
|
148
153
|
uk: ['Суми (станція)', 'залізничний вокзал Суми', 'вокзал станції Суми'],
|
|
149
154
|
en: ['Sumy railway station'],
|
|
150
155
|
}, { category: 'transport', country: 'UA', city: 'Sumy', display: { uk: 'Залізничний вокзал Суми', en: 'Sumy Railway Station' } }),
|
|
156
|
+
group("Сумський м'ясокомбінат", {
|
|
157
|
+
uk: ["Сумський м'ясокомбінат", 'ВАТ «Сумський м\'ясокомбінат»'],
|
|
158
|
+
}, { category: 'landmark', country: 'UA', city: 'Sumy', display: { uk: "Сумський м'ясокомбінат" } }),
|
|
159
|
+
group('Sumy Airport', {
|
|
160
|
+
uk: ['Аеропорт Суми', 'аеропорт «Суми»', 'Сумський аеропорт'],
|
|
161
|
+
en: ['Sumy Airport'],
|
|
162
|
+
}, { category: 'airport', country: 'UA', city: 'Sumy', display: { uk: 'Аеропорт «Суми»', en: 'Sumy Airport' } }),
|
|
151
163
|
group('Sumy State University', {
|
|
152
164
|
uk: ['Сумський державний університет', 'СумДУ'],
|
|
153
165
|
en: ['SumDU'],
|
|
154
166
|
}, { category: 'university', country: 'UA', city: 'Sumy', display: { uk: 'Сумський державний університет', en: 'Sumy State University' } }),
|
|
167
|
+
group('Cherkasy Railway Station', {
|
|
168
|
+
uk: ['залізничний вокзал Черкаси', 'вокзал Черкаси', 'станція Черкаси'],
|
|
169
|
+
ru: ['железнодорожный вокзал Черкассы'],
|
|
170
|
+
en: ['Cherkasy railway station'],
|
|
171
|
+
}, { category: 'transport', country: 'UA', city: 'Cherkasy', display: { uk: 'Залізничний вокзал Черкаси', en: 'Cherkasy Railway Station' } }),
|
|
172
|
+
group('Cherkasy Bus Station No. 1', {
|
|
173
|
+
uk: ['Автовокзал «Черкаси»', 'Автовокзал №1', 'Новий автовокзал', 'Автовокзал «Новий»', 'автостанція №1'],
|
|
174
|
+
ru: ['автовокзал Черкассы'],
|
|
175
|
+
en: ['Cherkasy Bus Station No. 1'],
|
|
176
|
+
}, { category: 'bus_station', country: 'UA', city: 'Cherkasy', display: { uk: 'Автовокзал «Черкаси»', en: 'Cherkasy Bus Station No. 1' } }),
|
|
177
|
+
group('Cherkasy Bus Station No. 2', {
|
|
178
|
+
uk: ['Автостанція «Черкаси-2»', 'Черкаси АС-2', 'Автовокзал-2', 'Автовокзал №2', 'автостанція №2'],
|
|
179
|
+
en: ['Cherkasy Bus Station No. 2'],
|
|
180
|
+
}, { category: 'bus_station', country: 'UA', city: 'Cherkasy', display: { uk: 'Автостанція «Черкаси-2»', en: 'Cherkasy Bus Station No. 2' } }),
|
|
181
|
+
group('Cherkasy Bus Station No. 3', {
|
|
182
|
+
uk: ['Автостанція «Черкаси-3»', 'Черкаси АС-3', 'Черкаси АС3'],
|
|
183
|
+
en: ['Cherkasy Bus Station No. 3'],
|
|
184
|
+
}, { category: 'bus_station', country: 'UA', city: 'Cherkasy', display: { uk: 'Автостанція «Черкаси-3»', en: 'Cherkasy Bus Station No. 3' } }),
|
|
185
|
+
group('Cherkasy Autoexpress Bus Station', {
|
|
186
|
+
uk: ['Автовокзал «Автоекспрес»', 'АС «АВТОЕКСПРЕС-ЧЕРКАСИ»', 'Автовокзал «Автоекспрес» Черкаси'],
|
|
187
|
+
en: ['Cherkasy Autoexpress Bus Station'],
|
|
188
|
+
}, { category: 'bus_station', country: 'UA', city: 'Cherkasy', display: { uk: 'Автовокзал «Автоекспрес»', en: 'Cherkasy Autoexpress Bus Station' } }),
|
|
189
|
+
group('Dnipro Plaza', {
|
|
190
|
+
uk: ['ТРЦ «Дніпро-Плаза»', 'ТРЦ Дніпро Плаза', 'Дніпро Плаза'],
|
|
191
|
+
en: ['Dnipro Plaza'],
|
|
192
|
+
}, { category: 'shopping_mall', country: 'UA', city: 'Cherkasy', display: { uk: 'ТРЦ «Дніпро-Плаза»', en: 'Dnipro Plaza' } }),
|
|
193
|
+
group('LUBAVA', {
|
|
194
|
+
uk: ['ТРЦ «LUBAVA»', 'ТРЦ LUBAVA', 'ТРЦ «Любава»', 'ТРЦ Любава'],
|
|
195
|
+
ru: ['ТРЦ «LUBAVA»', 'ТРЦ Любава'],
|
|
196
|
+
en: ['LUBAVA', 'Lubava'],
|
|
197
|
+
}, { category: 'shopping_mall', country: 'UA', city: 'Cherkasy', display: { uk: 'ТРЦ «LUBAVA»', en: 'LUBAVA' } }),
|
|
198
|
+
group('Cherkasy Central Market', {
|
|
199
|
+
uk: ['Центральний ринок', 'Центральний ринок Черкаси', 'Черкаський центральний ринок'],
|
|
200
|
+
en: ['Cherkasy Central Market'],
|
|
201
|
+
}, { category: 'market', country: 'UA', city: 'Cherkasy', display: { uk: 'Центральний ринок', en: 'Cherkasy Central Market' } }),
|
|
155
202
|
]);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { locationEntries } from './location-merge.js';
|
|
2
|
+
|
|
3
|
+
export const KG_BISHKEK_RESIDENTIAL_EXTENSIONS = Object.freeze({
|
|
4
|
+
Bishkek: Object.freeze({
|
|
5
|
+
residentialComplexes: locationEntries([
|
|
6
|
+
['Senator', 'SENATOR', 'Сенатор', 'ЖК Senator', 'ЖК Сенатор', 'жилой дом Сенатор', 'Senator турак жай комплекси'],
|
|
7
|
+
['Muras Nuru', 'MURAS NURU', 'Мурас Нуру', 'Мурас-Нуру', 'ЖК Мурас Нуру', 'Бульвар Мурас Нуру', 'ЖК Бульвар Мурас Нуру', 'Muras Nuru турак жай комплекси'],
|
|
8
|
+
['Mansara', 'MANSARA', 'Мансара', 'ЖК Mansara', 'ЖК Мансара', 'МФК Mansara', 'многофункциональный жилой комплекс Mansara', 'Mansara турак жай комплекси'],
|
|
9
|
+
['Regency', 'REGENCY', 'Редженси', 'ЖК Regency', 'ЖД Regency', 'жилой дом Regency', 'ЖК Редженси', 'Regency турак жай комплекси'],
|
|
10
|
+
['Илим Плюс', 'Илим плюс', 'Илим +', 'Ilim Plus', 'Ilim+', 'ЖК Илим Плюс', 'ЖД Илим Плюс', 'Илим Плюс турак жай комплекси'],
|
|
11
|
+
['Академия', 'Akademiya', 'Academia', 'ЖК Академия', 'жилой комплекс Академия', 'Академия турак жай комплекси'],
|
|
12
|
+
['Елисейские поля', 'Елисейские Поля', 'Eliseiskie Polya', 'Elysian Fields', 'ЖК Елисейские поля', 'Елисейские поля Авангард', 'Елисейские поля Avangard', 'Елисейские поля турак жай комплекси'],
|
|
13
|
+
['TIANSHAN-1', 'Tianshan-1', 'TIAN SHAN-1', 'Tian Shan 1', 'Тяньшань-1', 'Тянь-Шань-1', 'ЖК TIANSHAN-1', 'ЖК Тянь-Шань-1', 'TIANSHAN-1 турак жай комплекси'],
|
|
14
|
+
['Anka Tower', 'ANKA Tower', 'ANKA TOWER', 'Анка Тауэр', 'Анка Тауэр турак жай комплекси', 'ЖК Anka Tower', 'ЖК Анка Тауэр', 'Anka Tower турак жай комплекси'],
|
|
15
|
+
['УРПАК', 'Урпак', 'URPAK', 'Urpak', 'ЖК УРПАК', 'ЖК Урпак', 'жилой комплекс УРПАК', 'УРПАК турак жай комплекси', 'Urpak турак жай комплекси', 'Кут Урпак'],
|
|
16
|
+
]),
|
|
17
|
+
}),
|
|
18
|
+
});
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { locationEntries } from './location-merge.js';
|
|
2
|
+
|
|
3
|
+
export const KG_BISHKEK_STREET_EXTENSIONS = Object.freeze({
|
|
4
|
+
Bishkek: Object.freeze({
|
|
5
|
+
streets: locationEntries([
|
|
6
|
+
['Chyngyz Aytmatov Avenue', 'Chingiz Aitmatov Avenue', 'Chingiz Aytmatov Avenue', 'проспект Чингиза Айтматова', 'проспект Чынгыза Айтматова', 'Чыңгыз Айтматов проспекти', 'Чингиз Айтматов проспекти', 'проспект Мира', 'Mira Avenue'],
|
|
7
|
+
['Aaly Tokombayev Avenue', 'Aaly Tokombaev Avenue', 'Aaly Tokombayev Street', 'Aaly Tokombaev Street', 'проспект Аалы Токомбаева', 'улица Аалы Токомбаева', 'ул. Аалы Токомбаева', 'Аалы Токомбаев проспекти', 'Аалы Токомбаев көчөсү'],
|
|
8
|
+
['Manas Avenue', 'Manas avenue', 'проспект Манаса', 'пр-т Манаса', 'Манас проспекти'],
|
|
9
|
+
['Chui Avenue', 'Chuy Avenue', 'Chui avenue', 'Чуйский проспект', 'проспект Чуй', 'проспект Чүй', 'Чүй проспекти'],
|
|
10
|
+
['Baitik Baatyr Street', 'Baitik baatyr Street', 'Baytik Baatyr Street', 'улица Байтик-Баатыра', 'улица Байтик Баатыра', 'ул. Байтик-Баатыра', 'Байтик Баатыр көчөсү'],
|
|
11
|
+
['Nasirdin Isanov Street', 'Isanov Street', 'улица Исанова', 'улица Насирдина Исанова', 'ул. Исанова', 'Насирдин Исанов көчөсү'],
|
|
12
|
+
['Ibraimov Street', 'Ibragimov Street', 'улица Ибраимова', 'ул. Ибраимова', 'Ибраимов көчөсү'],
|
|
13
|
+
['Toktogul Street', 'Toktogul Satylganov Street', 'улица Токтогула', 'улица Токтогула Сатылганова', 'ул. Токтогула', 'Токтогул көчөсү', 'Токтогул Сатылганов көчөсү'],
|
|
14
|
+
['Joomart Bokonbayev Street', 'Joomart Bokonbaev Street', 'Bokonbayev Street', 'Bokonbaev Street', 'улица Боконбаева', 'улица Жоомарта Боконбаева', 'ул. Боконбаева', 'Жоомарт Бөкөнбаев көчөсү'],
|
|
15
|
+
['Jusup Abdrakhmanov Street', 'Yusup Abdrakhmanov Street', 'Abdrakhmanov Street', 'улица Юсупа Абдрахманова', 'улица Жусупа Абдрахманова', 'ул. Абдрахманова', 'Жусуп Абдрахманов көчөсү'],
|
|
16
|
+
['Shopokov Street', 'улица Шопокова', 'ул. Шопокова', 'Шопоков көчөсү'],
|
|
17
|
+
['Jibek Jolu Avenue', 'Zhibek Zholu Avenue', 'Jibek-Jolu Avenue', 'проспект Жибек-Жолу', 'проспект Жибек Жолу', 'Жибек Жолу проспекти'],
|
|
18
|
+
['Usenbaev Street', 'Usenbayev Street', 'улица Усенбаева', 'ул. Усенбаева', 'Усенбаев көчөсү'],
|
|
19
|
+
['Yunusaliev Street', 'Yunusaliyev Street', 'улица Юнусалиева', 'ул. Юнусалиева', 'Юнусалиев көчөсү'],
|
|
20
|
+
['Erkindik Boulevard', 'Erkindik Blvd', 'бульвар Эркиндик', 'бул. Эркиндик', 'Эркиндик бульвары'],
|
|
21
|
+
['Moskovskaya Street', 'Moscow Street', 'Московская улица', 'улица Московская', 'ул. Московская'],
|
|
22
|
+
['Bakaev Street', 'Bakayev Street', 'улица Бакаева', 'ул. Бакаева', 'Бакаев көчөсү'],
|
|
23
|
+
['Jantoshev Street', 'Dzhantoshev Street', 'улица Джантошева', 'ул. Джантошева', 'Жантөшев көчөсү'],
|
|
24
|
+
['Sukhe Bator Street', 'Sukhbaatar Street', 'улица Сухэ-Батора', 'ул. Сухэ-Батора'],
|
|
25
|
+
['Pavlov Street', 'улица Павлова', 'ул. Павлова', 'Павлов көчөсү'],
|
|
26
|
+
['Zhukeev-Pudovkin Street', 'Zhukeyev-Pudovkin Street', 'улица Жукеева-Пудовкина', 'ул. Жукеева-Пудовкина'],
|
|
27
|
+
['Gorky Street', 'Maxim Gorky Street', 'улица Горького', 'ул. Горького', 'Горький көчөсү'],
|
|
28
|
+
['Orozbekov Street', 'улица Орозбекова', 'ул. Орозбекова', 'Орозбеков көчөсү'],
|
|
29
|
+
['Kievskaya Street', 'Kyiv Street', 'Киевская улица', 'улица Киевская', 'ул. Киевская'],
|
|
30
|
+
['Panfilov Street', 'улица Панфилова', 'ул. Панфилова', 'Панфилов көчөсү'],
|
|
31
|
+
['Togolok Moldo Street', 'улица Тоголока Молдо', 'ул. Тоголока Молдо', 'Тоголок Молдо көчөсү'],
|
|
32
|
+
['Umetaliev Street', 'Umetaliyev Street', 'улица Уметалиева', 'ул. Уметалиева'],
|
|
33
|
+
['Molodaya Gvardiya Boulevard', 'Young Guard Boulevard', 'бульвар Молодой Гвардии', 'бул. Молодой Гвардии'],
|
|
34
|
+
['Asankul Kutubbaev Street', 'Asankul Kuttubaev Street', 'улица Асанкула Куттубаева', 'ул. Асанкула Куттубаева', 'Асанкул Куттубаев көчөсү'],
|
|
35
|
+
['Imanaliev Street', 'Imanalieva Street', 'улица Иманалиева', 'ул. Иманалиева', 'Иманалиев көчөсү'],
|
|
36
|
+
['Matrosov Street', 'Matrosova Street', 'улица Матросова', 'ул. Матросова', 'Матросов көчөсү'],
|
|
37
|
+
['Mederov Street', 'Mederova Street', 'улица Медерова', 'ул. Медерова', 'Медеров көчөсү'],
|
|
38
|
+
['Chokan Valikhanov Street', 'Chokan Walikhanov Street', 'улица Чокана Валиханова', 'ул. Чокана Валиханова', 'Чокан Валиханов көчөсү'],
|
|
39
|
+
['Pobedy Avenue', 'Victory Avenue', 'проспект Победы', 'пр-т Победы', 'Жеңиш проспекти'],
|
|
40
|
+
['Seitek Street', 'Seytek Street', 'улица Сейтек', 'ул. Сейтек', 'Сейтек көчөсү'],
|
|
41
|
+
['Aitiev Street', 'Aitiyev Street', 'улица Айтиева', 'ул. Айтиева', 'Айтиев көчөсү'],
|
|
42
|
+
['Jamanbaev Street', 'Dzhamanbaev Street', 'улица Джаманбаева', 'ул. Джаманбаева', 'Жаманбаев көчөсү'],
|
|
43
|
+
['Ayni Street', 'Айни улица', 'улица Айни', 'ул. Айни', 'Айни көчөсү'],
|
|
44
|
+
['Toktonaliev Street', 'Toktonaliev Street', 'улица Токтоналиева', 'ул. Токтоналиева', 'Токтоналиев көчөсү'],
|
|
45
|
+
['Moldobasanov Street', 'Moldobasanova Street', 'улица Молдобасанова', 'ул. Молдобасанова', 'Молдобасанов көчөсү'],
|
|
46
|
+
['Sayakbay Karalaev Street', 'Sayakbai Karalaev Street', 'улица Саякбая Каралаева', 'ул. Саякбая Каралаева', 'Саякбай Каралаев көчөсү'],
|
|
47
|
+
['Lev Tolstoy Street', 'Leo Tolstoy Street', 'улица Льва Толстого', 'ул. Льва Толстого', 'Лев Толстой көчөсү'],
|
|
48
|
+
['Sadygaliev Street', 'Sadygalieva Street', 'улица Садыгалиева', 'ул. Садыгалиева', 'Садыгалиев көчөсү'],
|
|
49
|
+
['Kainazarova Street', 'Kaynazarova Street', 'улица Кайназаровой', 'улица Кайназарова', 'Кайназарова көчөсү'],
|
|
50
|
+
['Samanchin Street', 'Samanchina Street', 'улица Саманчина', 'ул. Саманчина', 'Саманчин көчөсү'],
|
|
51
|
+
['Kalyk Akiev Street', 'Kalyk Akiyev Street', 'улица Калыка Акиева', 'ул. Калыка Акиева', 'Калык Акиев көчөсү'],
|
|
52
|
+
['Mikhail Frunze Street', 'Frunze Street', 'улица Михаила Фрунзе', 'улица Фрунзе', 'Михаил Фрунзе көчөсү'],
|
|
53
|
+
['Kurchatov Street', 'Kurchatova Street', 'улица Курчатова', 'ул. Курчатова', 'Курчатов көчөсү'],
|
|
54
|
+
['Kopernik Street', 'Copernicus Street', 'улица Коперника', 'ул. Коперника', 'Коперник көчөсү'],
|
|
55
|
+
['Orto Street', 'улица Орто', 'ул. Орто', 'Орто көчөсү'],
|
|
56
|
+
['Matisakov Street', 'Matisakova Street', 'улица Матисакова', 'ул. Матисакова', 'Матисаков көчөсү'],
|
|
57
|
+
['Karasaev Street', 'Karasaeva Street', 'улица Карасаева', 'ул. Карасаева', 'Карасаев көчөсү'],
|
|
58
|
+
['Sadyrbaev Street', 'Sadyrbaeva Street', 'улица Садырбаева', 'ул. Садырбаева', 'Садырбаев көчөсү'],
|
|
59
|
+
['Yrys Street', 'Ырыс улица', 'улица Ырыс', 'Ырыс көчөсү'],
|
|
60
|
+
['Dordoi Street', 'Dordoy Street', 'улица Дордой', 'Дордой көчөсү'],
|
|
61
|
+
['Altyn-Ordo Street', 'Altyn Ordo Street', 'улица Алтын-Ордо', 'улица Алтын Ордо', 'Алтын-Ордо көчөсү'],
|
|
62
|
+
['Army Street', 'Armeyskaya Street', 'Армейская улица', 'улица Армейская'],
|
|
63
|
+
['Sheraliev Street', 'Sheralieva Street', 'улица Шералиева', 'ул. Шералиева', 'Шералиев көчөсү'],
|
|
64
|
+
['Sherbet Street', 'улица Шербет', 'ул. Шербет', 'Шербет көчөсү'],
|
|
65
|
+
['Repin Street', 'Repina Street', 'улица Репина', 'ул. Репина', 'Репин көчөсү'],
|
|
66
|
+
['Min-Kush Street', 'Min Kush Street', 'улица Мин-Куш', 'улица Мин Куш', 'Миң-Куш көчөсү'],
|
|
67
|
+
['Murmanskaya Street', 'Murmansk Street', 'Мурманская улица', 'улица Мурманская'],
|
|
68
|
+
['Valdayskaya Street', 'Valdai Street', 'Валдайская улица', 'улица Валдайская'],
|
|
69
|
+
['Ala-Archinskaya Street', 'Ala Archa Street', 'Ала-Арчинская улица', 'улица Ала-Арчинская'],
|
|
70
|
+
]),
|
|
71
|
+
}),
|
|
72
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { locationEntries } from './location-merge.js';
|
|
2
|
+
|
|
3
|
+
export const KG_KARAKOL_LOCATION_EXTENSIONS = Object.freeze({
|
|
4
|
+
Karakol: Object.freeze({
|
|
5
|
+
microdistricts: locationEntries([
|
|
6
|
+
['Voshod', 'Восход', 'микрорайон Восход', 'мкр Восход', 'Восход микрорайон', 'Voshod microdistrict'],
|
|
7
|
+
]),
|
|
8
|
+
}),
|
|
9
|
+
});
|
|
@@ -41,19 +41,50 @@ export const KG_LOCATION_EXTENSIONS = Object.freeze({
|
|
|
41
41
|
microdistricts: [
|
|
42
42
|
['Asanbay', 'Асанбай', 'Асанбай микрорайон', 'Асанбай кичирайону'],
|
|
43
43
|
['Jal', 'Джал', 'Жал', 'Джал микрорайон', 'Жал кичирайону'],
|
|
44
|
-
['Tunguch', 'Тунгуч', 'Тунгуч микрорайон'
|
|
44
|
+
['Tunguch', 'Тунгуч', 'Тунгуч микрорайон'],
|
|
45
45
|
['Ulan', 'Улан', 'Улан микрорайон'],
|
|
46
46
|
['Kok-Jar', 'Кок-Жар', 'Көк-Жар', 'Кок Жар', 'Көк Жар'],
|
|
47
|
-
['Ak-Orgo', 'Ак-Орго', 'Ак Орго', 'Ак-Өргө', 'Ак Өргө'],
|
|
47
|
+
['Ak-Orgo', 'Ак-Орго', 'Ак Орго', 'Ак-Өргө', 'Ак Өргө', 'Ak-Ordo', 'Ак-Ордо', 'Ак Ордо'],
|
|
48
48
|
['Kyzyl-Asker', 'Кызыл-Аскер', 'Кызыл Аскер', 'Кызыл-Аскер району'],
|
|
49
49
|
['Alamedin-1', 'Аламедин-1', 'Аламедин 1', 'Аламүдүн-1', 'Аламүдүн 1'],
|
|
50
50
|
['Vostok-5', 'Восток-5', 'Восток 5', '5-й микрорайон Восток'],
|
|
51
51
|
['Vostok-6', 'Восток-6', 'Восток 6', '6-й микрорайон Восток'],
|
|
52
52
|
['Dordoi', 'Дордой', 'Дордой массив', 'Дордой конушу'],
|
|
53
|
+
['3-й микрорайон', '3 микрорайон', '3 мкр', '3 мкр.', '3-й мкр', '3rd microdistrict'],
|
|
54
|
+
['7-й микрорайон', '7 микрорайон', '7 мкр', '7 мкр.', '7-й мкр', '7th microdistrict'],
|
|
55
|
+
['8-й микрорайон', '8 микрорайон', '8 мкр', '8 мкр.', '8-й мкр', '8th microdistrict'],
|
|
56
|
+
['10-й микрорайон', '10 микрорайон', '10 мкр', '10 мкр.', '10-й мкр', '10th microdistrict'],
|
|
57
|
+
['11-й микрорайон', '11 микрорайон', '11 мкр', '11 мкр.', '11-й мкр', '11th microdistrict'],
|
|
58
|
+
['12-й микрорайон', '12 микрорайон', '12 мкр', '12 мкр.', '12-й мкр', '12th microdistrict'],
|
|
53
59
|
],
|
|
54
60
|
localAreas: [
|
|
55
61
|
['Center', 'Центр', 'центр Бишкека', 'Бишкек центр', 'шаар борбору'],
|
|
56
62
|
['Rabochiy Gorodok', 'Рабочий городок', 'Рабочий Городок'],
|
|
63
|
+
['Ала-Тоо 3', 'Ала-Тоо-3', 'Ала Тоо 3', 'Ala-Too 3', 'Ala Too 3'],
|
|
64
|
+
['Киргизия-1', 'Киргизия 1', 'Kirgiziya-1', 'Kyrgyzia-1'],
|
|
65
|
+
],
|
|
66
|
+
residentialComplexes: [
|
|
67
|
+
['Dastan City', 'Дастан Сити', 'ЖК Дастан Сити'],
|
|
68
|
+
['Diamond Park', 'Diamond park', 'Даймонд Парк', 'ЖК Diamond Park'],
|
|
69
|
+
['Neo City', 'NEO CITY', 'Нео Сити', 'ЖК Neo City', 'ЖК NEO CITY'],
|
|
70
|
+
['One', 'ONE', 'ЖК One', 'ЖК ONE'],
|
|
71
|
+
['Prime Park', 'PRIME PARK', 'Прайм Парк', 'ЖК Prime Park'],
|
|
72
|
+
['Крейсер', 'Kreiser', 'ЖК Крейсер'],
|
|
73
|
+
['Сирень', 'Siren', 'ЖК Сирень'],
|
|
74
|
+
['Тянь-Шань', 'Тянь Шань', 'Tyan-Shan', 'Tian Shan', 'ЖК Тянь-Шань'],
|
|
75
|
+
['Эркиндик', 'Erkindik', 'ЖК Эркиндик'],
|
|
76
|
+
['Юг-7', 'Юг 7', 'Yug-7', 'Yug 7', 'ЖК Юг-7'],
|
|
77
|
+
['Level Lux', 'LEVEL LUX', 'Level LUX', 'ЖК Level Lux', 'ЖД Level Lux', 'Левел Люкс', 'Level Lux турак жай комплекси'],
|
|
78
|
+
['Nuran Park', 'NURAN PARK', 'Нуран Парк', 'ЖК Нуран Парк', 'ЖК Nuran Park', 'Nuran Park турак жай комплекси'],
|
|
79
|
+
['Art Square', 'ART SQUARE', 'Арт Сквер', 'ЖК Art Square', 'ЖД Art Square', 'Art Square турак жай комплекси'],
|
|
80
|
+
['Kok-Jar Hills', 'Kok Jar Hills', 'Кок-Жар Хиллс', 'Көк-Жар Хиллс', 'ЖК Kok-Jar Hills', 'Kok-Jar Hills турак жай комплекси'],
|
|
81
|
+
['Tokyo City', 'TOKYO CITY', 'Токио Сити', 'ЖК Токио Сити', 'ЖК Tokyo City', 'Tokyo City турак жай комплекси'],
|
|
82
|
+
['Nova Prestige', 'NOVA PRESTIGE', 'Нова Престиж', 'ЖК Нова Престиж', 'ЖК Nova Prestige', 'Nova Prestige турак жай комплекси'],
|
|
83
|
+
['Mega City', 'MEGA CITY', 'Мега-Сити', 'Мега Сити', 'ЖК Мега Сити', 'ЖК Mega City', 'Mega City турак жай комплекси'],
|
|
84
|
+
['Sun House Plus', 'SunHouse Plus', 'SUN HOUSE PLUS', 'SunHouse PLUS', 'Сан Хаус Плюс', 'ЖК Sun House Plus', 'ЖД SunHouse Plus', 'Sun House Plus турак жай комплекси'],
|
|
85
|
+
['Испанский дом', 'Ispanskiy Dom', 'Spanish House', 'ЖК Испанский дом', 'Испан үйү', 'Испанский дом турак жай комплекси'],
|
|
86
|
+
['Brooklyn', 'BROOKLYN', 'Бруклин', 'ЖК Brooklyn', 'ЖК Бруклин', 'Brooklyn турак жай комплекси'],
|
|
87
|
+
['Barcelona', 'BARCELONA', 'Барселона', 'ЖК Барселона', 'МФК Барселона', 'ЖК Barcelona', 'Barcelona турак жай комплекси'],
|
|
57
88
|
],
|
|
58
89
|
landmarks: [
|
|
59
90
|
['Ala-Too Square', 'площадь Ала-Тоо', 'Ала-Тоо аянты', 'Ала Тоо площадь'],
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { locationEntries } from './location-merge.js';
|
|
2
|
+
|
|
3
|
+
export const KG_OSH_LOCATION_EXTENSIONS = Object.freeze({
|
|
4
|
+
Osh: Object.freeze({
|
|
5
|
+
microdistricts: locationEntries([
|
|
6
|
+
['Anar', 'Анар', 'микрорайон Анар', 'мкр Анар', 'Анар микрорайон', 'Anar microdistrict'],
|
|
7
|
+
['Tuleyken', 'Тулейкен', 'Толойкон', 'Төлөйкөн', 'микрорайон Тулейкен', 'микрорайон Толойкон', 'мкр Тулейкен', 'Tuleyken microdistrict', 'Toloikon microdistrict'],
|
|
8
|
+
]),
|
|
9
|
+
settlements: locationEntries([
|
|
10
|
+
['Кеңеш', 'Кенеш', 'Kenesh', 'Кеңеш айылы', 'село Кеңеш', 'село Кенеш'],
|
|
11
|
+
['Керме-Тоо', 'Керме Тоо', 'Kerme-Too', 'Kerme Too', 'Керме-Тоо айылы', 'село Керме-Тоо'],
|
|
12
|
+
['Озгур', 'Ozgur', 'Озгур айылы', 'село Озгур'],
|
|
13
|
+
['Орке', 'Orke', 'Орке айылы', 'село Орке'],
|
|
14
|
+
['Пятилетка', 'Pyatiletka', 'Пятилетка айылы', 'село Пятилетка'],
|
|
15
|
+
['Тээке', 'Teeke', 'Тээке айылы', 'село Тээке'],
|
|
16
|
+
['Учар', 'Uchar', 'Учар айылы', 'село Учар'],
|
|
17
|
+
['Ак-Буура-2', 'Ак Буура 2', 'Ак-Бура-2', 'Ак Бура 2', 'Ak-Buura-2', 'Ak Buura 2', 'Ак-Буура-2 айылы', 'село Ак-Буура-2'],
|
|
18
|
+
['Ак-Буура-3', 'Ак Буура 3', 'Ак-Бура-3', 'Ак Бура 3', 'Ak-Buura-3', 'Ak Buura 3', 'Ак-Буура-3 айылы', 'село Ак-Буура-3'],
|
|
19
|
+
]),
|
|
20
|
+
residentialComplexes: locationEntries([
|
|
21
|
+
['Asman Residence 1', 'Asman Residence-1', 'ASMAN RESIDENCE 1', 'Асман Резиденс 1', 'Асман Резиденс-1', 'ЖК Asman Residence 1', 'ЖК Асман Резиденс 1', 'Asman Residence 1 турак жай комплекси'],
|
|
22
|
+
['Mon Paris', 'MON PARIS', 'Mon Paris Ош', 'Mon Paris Osh', 'ЖК Mon Paris', 'ЖК Мон Париж', 'Мон Париж', 'Мон Пари', 'жилой комплекс Мон Париж', 'Mon Paris турак жай комплекси'],
|
|
23
|
+
]),
|
|
24
|
+
}),
|
|
25
|
+
});
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { aliasesToRegex } from './normalization.js';
|
|
2
|
+
|
|
3
|
+
function entry(name, aliases, entityType) {
|
|
4
|
+
const all = Object.freeze([...new Set([name, ...aliases].filter(Boolean))]);
|
|
5
|
+
return Object.freeze({
|
|
6
|
+
canonical: name,
|
|
7
|
+
name,
|
|
8
|
+
type: entityType,
|
|
9
|
+
entityType,
|
|
10
|
+
country: 'KZ',
|
|
11
|
+
aliases: all,
|
|
12
|
+
re: aliasesToRegex(all),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const microdistrict = (name, aliases = []) => entry(name, aliases, 'microdistrict');
|
|
17
|
+
const street = (name, aliases = []) => entry(name, aliases, 'street');
|
|
18
|
+
const numberedMicrodistrict = (number) => microdistrict(`${number} microdistrict`, [
|
|
19
|
+
`${number}-й микрорайон`, `${number} микрорайон`, `${number} мкр`, `${number} мкр.`, `${number}-й мкр`,
|
|
20
|
+
`${number}-ші шағын аудан`, `${number} шағын аудан`, `${number} ықшамаудан`, `${number}th microdistrict`,
|
|
21
|
+
]);
|
|
22
|
+
|
|
23
|
+
export const KZ_SCRAPED_ADDRESS_EXTENSIONS = Object.freeze({
|
|
24
|
+
Aktobe: Object.freeze({
|
|
25
|
+
microdistricts: Object.freeze([
|
|
26
|
+
numberedMicrodistrict(4),
|
|
27
|
+
numberedMicrodistrict(5),
|
|
28
|
+
numberedMicrodistrict(11),
|
|
29
|
+
numberedMicrodistrict(12),
|
|
30
|
+
]),
|
|
31
|
+
streets: Object.freeze([
|
|
32
|
+
street('Проспект Алаш', [
|
|
33
|
+
'проспект Алаш', 'пр-т Алаш', 'Алаш даңғылы', 'Alash Avenue', 'Alash Prospekt',
|
|
34
|
+
]),
|
|
35
|
+
street('Улица Байганина', [
|
|
36
|
+
'улица Байганина', 'ул. Байганина', 'Байганина', 'Нұрпейіс Байғанин көшесі',
|
|
37
|
+
'Байғанин көшесі', 'N. Baiganin Street', 'Nurpeis Baiganin Street',
|
|
38
|
+
]),
|
|
39
|
+
street('Улица Бокенбай Батыра', [
|
|
40
|
+
'улица Бокенбай Батыра', 'ул. Бокенбай Батыра', 'Бокенбай Батыра',
|
|
41
|
+
'Бөкенбай Батыр көшесі', 'Бөкенбай батыр көшесі', 'Bokenbay Batyr Street',
|
|
42
|
+
]),
|
|
43
|
+
street('Улица Джамбула', [
|
|
44
|
+
'улица Джамбула', 'ул. Джамбула', 'Джамбула', 'улица Жамбыла',
|
|
45
|
+
'Жамбыл көшесі', 'Jambyl Street', 'Dzhambul Street',
|
|
46
|
+
]),
|
|
47
|
+
street('Улица Жанкожа Батыра', [
|
|
48
|
+
'улица Жанкожа Батыра', 'ул. Жанкожа Батыра', 'Жанкожа Батыра',
|
|
49
|
+
'Жанқожа Батыр көшесі', 'Жанқожа батыр көшесі', 'Zhankozha Batyr Street',
|
|
50
|
+
]),
|
|
51
|
+
street('Улица Ибатова', [
|
|
52
|
+
'улица Ибатова', 'ул. Ибатова', 'Ибатова', 'Ибатов көшесі', 'Ibatov Street',
|
|
53
|
+
]),
|
|
54
|
+
street('Улица Мангилик Ел', [
|
|
55
|
+
'улица Мангилик Ел', 'ул. Мангилик Ел', 'Мангилик Ел', 'Мәңгілік Ел көшесі',
|
|
56
|
+
'Mangilik El Street', 'Mangilik Yel Street',
|
|
57
|
+
]),
|
|
58
|
+
street('улица Ораза Татеулы', [
|
|
59
|
+
'Улица Ораза Татеулы', 'ул. Ораза Татеулы', 'Ораза Татеулы',
|
|
60
|
+
'Ораз Тәтеұлы көшесі', 'Ораза Тәтеұлы көшесі', 'Oraz Tateuly Street',
|
|
61
|
+
]),
|
|
62
|
+
street('Улица Пожарского', [
|
|
63
|
+
'улица Пожарского', 'ул. Пожарского', 'Пожарского', 'Pozharskogo Street',
|
|
64
|
+
]),
|
|
65
|
+
street('Улица Сатпаева', [
|
|
66
|
+
'улица Сатпаева', 'ул. Сатпаева', 'Сатпаева', 'Қаныш Сәтбаев көшесі',
|
|
67
|
+
'Сәтбаев көшесі', 'Kanysh Satpayev Street', 'Satpayev Street',
|
|
68
|
+
]),
|
|
69
|
+
street('Улица Узакбая Кулымбетова', [
|
|
70
|
+
'улица Узакбая Кулымбетова', 'ул. Узакбая Кулымбетова', 'Узакбая Кулымбетова',
|
|
71
|
+
'Ұзақбай Құлымбетов көшесі', 'Uzakbay Kulymbetov Street', 'Uzaqbay Qulymbetov Street',
|
|
72
|
+
]),
|
|
73
|
+
]),
|
|
74
|
+
}),
|
|
75
|
+
|
|
76
|
+
Shymkent: Object.freeze({
|
|
77
|
+
microdistricts: Object.freeze([
|
|
78
|
+
numberedMicrodistrict(18),
|
|
79
|
+
microdistrict('Akzhaiyk', ['Акжайык', 'Ақжайық', 'Акжайық', 'Aqzhaiyq', 'Akzhayik']),
|
|
80
|
+
microdistrict('Sairam', ['Сайрам', 'Сайрам микрорайон', 'Сайрам шағын ауданы', 'Sairam microdistrict']),
|
|
81
|
+
microdistrict('North', ['Север', 'Северный', 'Север микрорайон', 'Солтүстік шағын ауданы', 'North microdistrict']),
|
|
82
|
+
microdistrict('Sportivnyi', ['Спортивный', 'Спортивный микрорайон', 'Спорт шағын ауданы', 'Sportivny', 'Sportivnyi microdistrict']),
|
|
83
|
+
microdistrict('Shymcity', ['Шымсити', 'Шым Сити', 'Shym City', 'Shymkent City', 'Шымсити микрорайон']),
|
|
84
|
+
]),
|
|
85
|
+
streets: Object.freeze([
|
|
86
|
+
street('Дулати көшесі', [
|
|
87
|
+
'улица Дулати', 'ул. Дулати', 'Дулати', 'М. Х. Дулати көшесі', 'M. H. Dulati Street', 'Dulati Street',
|
|
88
|
+
]),
|
|
89
|
+
street('Проспект Байдибек би', [
|
|
90
|
+
'проспект Байдибек би', 'пр-т Байдибек би', 'Байдибек би', 'Бәйдібек би даңғылы',
|
|
91
|
+
'Бәйдібек би', 'Baidibek Bi Avenue', 'Baidibek Bi Prospekt',
|
|
92
|
+
]),
|
|
93
|
+
street('Улица Акбота', [
|
|
94
|
+
'улица Акбота', 'ул. Акбота', 'Акбота', 'Ақбота көшесі', 'Aqbota Street', 'Akbota Street',
|
|
95
|
+
]),
|
|
96
|
+
street('Улица Алатау батыра', [
|
|
97
|
+
'улица Алатау батыра', 'ул. Алатау батыра', 'Алатау батыра', 'Алатау батыр көшесі', 'Alatau Batyr Street',
|
|
98
|
+
]),
|
|
99
|
+
street('Улица Алии Молдагуловой', [
|
|
100
|
+
'улица Алии Молдагуловой', 'ул. Алии Молдагуловой', 'Алии Молдагуловой',
|
|
101
|
+
'Әлия Молдағұлова көшесі', 'Aliya Moldagulova Street',
|
|
102
|
+
]),
|
|
103
|
+
street('Улица Аргынбекова', [
|
|
104
|
+
'улица Аргынбекова', 'ул. Аргынбекова', 'Аргынбекова', 'Арғынбеков көшесі', 'Argynbekov Street',
|
|
105
|
+
]),
|
|
106
|
+
street('Улица Ахмета Байтурсынова', [
|
|
107
|
+
'улица Ахмета Байтурсынова', 'ул. Ахмета Байтурсынова', 'Ахмета Байтурсынова',
|
|
108
|
+
'Ахмет Байтұрсынұлы көшесі', 'Байтұрсынов көшесі', 'Akhmet Baitursynuly Street', 'Baitursynov Street',
|
|
109
|
+
]),
|
|
110
|
+
street('Улица Бокейханова', [
|
|
111
|
+
'улица Бокейханова', 'ул. Бокейханова', 'Бокейханова', 'Бөкейхан көшесі', 'Bokeikhan Street',
|
|
112
|
+
]),
|
|
113
|
+
street('Улица Жолан батыра', [
|
|
114
|
+
'улица Жолан батыра', 'ул. Жолан батыра', 'Жолан батыра', 'Жолан батыр көшесі', 'Zholan Batyr Street',
|
|
115
|
+
]),
|
|
116
|
+
street('Улица Калдаякова', [
|
|
117
|
+
'улица Калдаякова', 'ул. Калдаякова', 'Калдаякова', 'Қалдаяқов көшесі', 'Kaldaiakov Street', 'Qaldayaqov Street',
|
|
118
|
+
]),
|
|
119
|
+
street('Улица Капал Батыра', [
|
|
120
|
+
'улица Капал Батыра', 'ул. Капал Батыра', 'Капал Батыра', 'Қапал батыр көшесі', 'Kapal Batyr Street', 'Qapal Batyr Street',
|
|
121
|
+
]),
|
|
122
|
+
street('Улица Кокшетау', [
|
|
123
|
+
'улица Кокшетау', 'ул. Кокшетау', 'Кокшетау', 'Көкшетау көшесі', 'Kokshetau Street',
|
|
124
|
+
]),
|
|
125
|
+
street('Улица Куаныша Тулеметова', [
|
|
126
|
+
'улица Куаныша Тулеметова', 'ул. Куаныша Тулеметова', 'Куаныша Тулеметова',
|
|
127
|
+
'Қуаныш Төлеметов көшесі', 'Kuanysh Tulemetov Street', 'Quanysh Tolemetov Street',
|
|
128
|
+
]),
|
|
129
|
+
street('Улица Курылтай', [
|
|
130
|
+
'улица Курылтай', 'ул. Курылтай', 'Курылтай', 'Құрылтай көшесі', 'Kuryltai Street', 'Quryltai Street',
|
|
131
|
+
]),
|
|
132
|
+
street('Улица Мадели кожа', [
|
|
133
|
+
'улица Мадели кожа', 'ул. Мадели кожа', 'Мадели кожа', 'Мәделі қожа көшесі', 'Madeli Kozha Street',
|
|
134
|
+
]),
|
|
135
|
+
]),
|
|
136
|
+
}),
|
|
137
|
+
|
|
138
|
+
Karaganda: Object.freeze({
|
|
139
|
+
microdistricts: Object.freeze([
|
|
140
|
+
numberedMicrodistrict(12),
|
|
141
|
+
numberedMicrodistrict(14),
|
|
142
|
+
numberedMicrodistrict(28),
|
|
143
|
+
numberedMicrodistrict(30),
|
|
144
|
+
microdistrict('Gulder-2', ['Гульдер-2', 'Гүлдер-2', 'Гулдер-2', 'Gulder 2']),
|
|
145
|
+
microdistrict('имени Мамраева', ['микрорайон имени Мамраева', 'мкр имени Мамраева', 'мкр. имени Мамраева', 'Мамраев микрорайон', 'Mamraev microdistrict']),
|
|
146
|
+
microdistrict('Kungei', ['Кунгей', 'Күнгей', 'Күнгей микрорайон', 'Kungei microdistrict']),
|
|
147
|
+
microdistrict('Orbita-1', ['Орбита-1', 'Орбита 1', 'Orbita 1']),
|
|
148
|
+
microdistrict('Orbita-2', ['Орбита-2', 'Орбита 2', 'Orbita 2']),
|
|
149
|
+
microdistrict('Stepnoy-1', ['Степной-1', 'Степной 1', 'Stepnoi-1', 'Stepnoy 1']),
|
|
150
|
+
microdistrict('Stepnoy-2', ['Степной-2', 'Степной 2', 'Stepnoi-2', 'Stepnoy 2']),
|
|
151
|
+
microdistrict('Stepnoy-3', ['Степной-3', 'Степной 3', 'Stepnoi-3', 'Stepnoy 3']),
|
|
152
|
+
]),
|
|
153
|
+
streets: Object.freeze([
|
|
154
|
+
street('Охотская улица', [
|
|
155
|
+
'улица Охотская', 'ул. Охотская', 'Охотская', 'Охотская көшесі', 'Okhotskaya Street',
|
|
156
|
+
]),
|
|
157
|
+
street('Проспект Нуркена Абдирова', [
|
|
158
|
+
'проспект Нуркена Абдирова', 'пр-т Нуркена Абдирова', 'Нуркена Абдирова',
|
|
159
|
+
'Нұркен Әбдіров даңғылы', 'Нұркен Әбдіров', 'Nurken Abdirov Avenue', 'Nurken Abdirov Prospekt',
|
|
160
|
+
]),
|
|
161
|
+
street('Улица Муканова', [
|
|
162
|
+
'улица Муканова', 'ул. Муканова', 'Муканова', 'Мұқанов көшесі', 'Mukanov Street', 'Muqanov Street',
|
|
163
|
+
]),
|
|
164
|
+
street('Улица Назиры Турекуловой', [
|
|
165
|
+
'улица Назиры Турекуловой', 'ул. Назиры Турекуловой', 'Назиры Турекуловой', 'Nazira Turekulova Street',
|
|
166
|
+
]),
|
|
167
|
+
street('Улица Рыскулова', [
|
|
168
|
+
'улица Рыскулова', 'ул. Рыскулова', 'Рыскулова', 'Рысқұлов көшесі', 'Ryskulov Street', 'Rysqulov Street',
|
|
169
|
+
]),
|
|
170
|
+
street('Улица Таттимбета', [
|
|
171
|
+
'улица Таттимбета', 'ул. Таттимбета', 'Таттимбета', 'Тәттімбет көшесі', 'Tattimbet Street',
|
|
172
|
+
]),
|
|
173
|
+
street('Улица Чкалова', [
|
|
174
|
+
'улица Чкалова', 'ул. Чкалова', 'Чкалова', 'Чкалов көшесі', 'Chkalov Street',
|
|
175
|
+
]),
|
|
176
|
+
]),
|
|
177
|
+
}),
|
|
178
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { aliasesToRegex } from './normalization.js';
|
|
2
|
+
|
|
3
|
+
function residential(name, aliases = []) {
|
|
4
|
+
const all = Object.freeze([...new Set([name, ...aliases].filter(Boolean))]);
|
|
5
|
+
return Object.freeze({
|
|
6
|
+
canonical: name,
|
|
7
|
+
name,
|
|
8
|
+
type: 'residential_complex',
|
|
9
|
+
entityType: 'residential_complex',
|
|
10
|
+
country: 'KZ',
|
|
11
|
+
aliases: all,
|
|
12
|
+
re: aliasesToRegex(all),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const row = (name, ...aliases) => residential(name, [
|
|
17
|
+
`ЖК ${name}`,
|
|
18
|
+
`жилой комплекс ${name}`,
|
|
19
|
+
...aliases,
|
|
20
|
+
]);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Remaining Almaty residential labels promoted from the cleaned geo-catalog
|
|
24
|
+
* scrape. Existing owners such as Alma City, Braun, Dostyk Residence,
|
|
25
|
+
* Element, Esentai City, Hyde Park, Rams City, Mega Towers and Symphony are
|
|
26
|
+
* intentionally not duplicated here.
|
|
27
|
+
*/
|
|
28
|
+
export const KZ_ALMATY_CLEANED_RESIDENTIAL_EXTENSIONS = Object.freeze({
|
|
29
|
+
Almaty: Object.freeze({
|
|
30
|
+
residentialComplexes: Object.freeze([
|
|
31
|
+
row('Alma City 4', 'Alma City IV', 'Алма Сити 4', 'ЖК Алма Сити 4'),
|
|
32
|
+
row('Centrium', 'Центриум', 'ЖК Центриум'),
|
|
33
|
+
row('Dragon City', 'Дрэгон Сити', 'ЖК Dragon City'),
|
|
34
|
+
row('Galileo Terrace', 'Галилео Террас', 'ЖК Galileo Terrace'),
|
|
35
|
+
row('Geneva elite apartments', 'Geneva Elite Apartments', 'Женева Элит Апартментс'),
|
|
36
|
+
row('Hayat Park', 'Хаят Парк', 'ЖК Хаят Парк'),
|
|
37
|
+
row('Jazz-квартал', 'Jazz квартал', 'Джаз-квартал', 'Джаз квартал'),
|
|
38
|
+
row('Latifa Residence', 'Латифа Резиденс', 'ЖК Латифа Резиденс'),
|
|
39
|
+
row('Miracle', 'Миракл', 'ЖК Miracle'),
|
|
40
|
+
row('Miras park', 'Miras Park', 'Мирас Парк', 'ЖК Мирас Парк'),
|
|
41
|
+
row('Nurlitau Hills', 'Nurlytau Hills', 'Нурлытау Хиллс', 'Нұрлытау Хиллс'),
|
|
42
|
+
row('Sakura', 'Сакура', 'ЖК Сакура'),
|
|
43
|
+
row('Sulu Tan', 'Сұлу Таң', 'Сулу Тан', 'ЖК Сұлу Таң'),
|
|
44
|
+
row('А-Элита', 'A-Elita', 'A Elita'),
|
|
45
|
+
row('Айгерим', 'Айгерім', 'Aigerim', 'ЖК Айгерім'),
|
|
46
|
+
row('Акниет', 'Ақниет', 'Akniet', 'ЖК Ақниет'),
|
|
47
|
+
row('Аль-Фараби', 'Әл-Фараби', 'Al-Farabi', 'ЖК Әл-Фараби'),
|
|
48
|
+
row('Арлан', 'Arlan'),
|
|
49
|
+
row('Аспан сити', 'Аспан Сити', 'Aspan City', 'ЖК Aspan City'),
|
|
50
|
+
row('Байсал', 'Baisal', 'Baysal'),
|
|
51
|
+
row('Басенова', 'Basenova'),
|
|
52
|
+
row('Береке', 'Bereke'),
|
|
53
|
+
row('Жайлы', 'Zhaily', 'Jaily'),
|
|
54
|
+
row('Жайсан', 'Zhaisan', 'Zhaysan'),
|
|
55
|
+
row('Керемет', 'Keremet'),
|
|
56
|
+
row('Кокжиек', 'Көкжиек', 'Kokzhiek', 'ЖК Көкжиек'),
|
|
57
|
+
row('Комфорт', 'Komfort', 'Comfort'),
|
|
58
|
+
row('Ланкашир', 'Lancashire', 'Lankashir'),
|
|
59
|
+
row('Манхэттен', 'Manhattan', 'ЖК Manhattan'),
|
|
60
|
+
row('Медеу Парк', 'Medeu Park', 'ЖК Medeu Park'),
|
|
61
|
+
row('Молодежный', 'Молодёжный', 'Molodezhnyi', 'Molodezhny'),
|
|
62
|
+
row('Парк Горького', 'Gorky Park', 'Park Gorkogo'),
|
|
63
|
+
row('столичный центр', 'Столичный центр', 'Stolichnyi Tsentr', 'Stolichny Center'),
|
|
64
|
+
row('Сункар', 'Сұңқар', 'Sunkar', 'Sunqar', 'ЖК Сұңқар'),
|
|
65
|
+
row('Талисман', 'Talisman'),
|
|
66
|
+
row('Тау Шатыр', 'Tau Shatyr'),
|
|
67
|
+
row('Хан-Тенгри', 'Хан Тенгри', 'Хан Тәңірі', 'Khan Tengri', 'ЖК Хан Тәңірі'),
|
|
68
|
+
row('Хуторок', 'Khutorok'),
|
|
69
|
+
row('Шахристан', 'Shakhristan', 'Shahristan'),
|
|
70
|
+
row('Шугыла', 'Шұғыла', 'Shugyla', 'Shughyla', 'ЖК Шұғыла'),
|
|
71
|
+
row('Юбилейный', 'Yubileinyi', 'Yubileynyi'),
|
|
72
|
+
]),
|
|
73
|
+
}),
|
|
74
|
+
});
|