@whiteslove/parsing-lexicon 0.6.8 → 0.6.9

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whiteslove/parsing-lexicon",
3
- "version": "0.6.8",
3
+ "version": "0.6.9",
4
4
  "description": "Shared deterministic multilingual parsing lexicon for WhitesLove housing and hiring services",
5
5
  "repository": {
6
6
  "type": "git",
@@ -37,9 +37,18 @@
37
37
  },
38
38
  "./central-asia": "./src/central-asia.js",
39
39
  "./ukraine": "./src/ukraine.js",
40
- "./ua-geo-coordinates": { "types": "./src/ua-geo-coordinates.d.ts", "import": "./src/ua-geo-coordinates.js" },
41
- "./ua-geo-resolver": { "types": "./src/ua-geo-resolver.d.ts", "import": "./src/ua-geo-resolver.js" },
42
- "./uz-geo-coordinates": { "types": "./src/uz-geo-coordinates.d.ts", "import": "./src/uz-geo-coordinates.js" },
40
+ "./ua-geo-coordinates": {
41
+ "types": "./src/ua-geo-coordinates.d.ts",
42
+ "import": "./src/ua-geo-coordinates.js"
43
+ },
44
+ "./ua-geo-resolver": {
45
+ "types": "./src/ua-geo-resolver.d.ts",
46
+ "import": "./src/ua-geo-resolver.js"
47
+ },
48
+ "./uz-geo-coordinates": {
49
+ "types": "./src/uz-geo-coordinates.d.ts",
50
+ "import": "./src/uz-geo-coordinates.js"
51
+ },
43
52
  "./location-merge": "./src/location-merge.js",
44
53
  "./locations": "./src/locations-runtime.js",
45
54
  "./kg-location-extensions": "./src/kg-location-extensions.js",
@@ -186,7 +186,7 @@ function markedResidentialMatch(value, item) {
186
186
 
187
187
  const LOCATION_CLAUSE_BOUNDARY_RE = /[\n\r.!?;|]/u;
188
188
  const PRIMARY_LOCATION_PREFIX_RE = /(?:(?:^|[^\p{L}\p{N}_])(?:адрес|локаци(?:я|и)|расположени(?:е|я)|находится)\s*[:\-–—]?\s*|(?:^|[^\p{L}\p{N}_])(?:в|на)\s+(?:(?:ж\.?\s*к\.?|жил(?:ом|ой)\s+комплекс\p{L}*|микрорайон\p{L}*|мкр\.?|массив\p{L}*|махалл\p{L}*|mahalla|massiv|district|район\p{L}*|metro|метро)\s*)?)$/iu;
189
- const NEARBY_LOCATION_PREFIX_RE = /(?:^|[^\p{L}\p{N}_])(?:до|около|возле|рядом(?:\s+(?:с|со))?|недалеко\s+от|неподал[её]ку\s+от|вблизи|напротив|ориентир(?:ом)?|near|nearby|close\s+to|next\s+to|opposite|landmark|yaqin(?:ida)?|yonida|mo['’ʻ]?ljal|яқин(?:ида)?|ёнида|мўлжал|жақын|жанында|маңында)(?=$|[^\p{L}\p{N}_])[\s\S]{0,96}$/iu;
189
+ const NEARBY_LOCATION_PREFIX_RE = /(?:^|[^\p{L}\p{N}_])(?:до|около|возле|рядом(?:\s+(?:с|со))?|недалеко\s+от|неподал[её]ку\s+от|вблизи|напротив|ориентир(?:ом)?|ор[-–—]?р\.?|near|nearby|close\s+to|next\s+to|opposite|landmark|yaqin(?:ida)?|yonida|mo['’ʻ]?ljal|яқин(?:ида)?|ёнида|м[уў]лжал|жақын|жанында|маңында)(?=$|[^\p{L}\p{N}_])[\s\S]{0,96}$/iu;
190
190
  const DISTANCE_LOCATION_PREFIX_RE = /(?:\d+(?:[.,]\d+)?\s*(?:мин(?:ут\p{L}*)?|min(?:ute)?s?|daqiqa|м|m|метр\p{L}*|км|km)\s*(?:от|до|from|to)\s+)[\s\S]{0,80}$/iu;
191
191
  const NEARBY_LOCATION_SUFFIX_RE = /^\s*(?:[-—–:]\s*)?(?:(?:\d+(?:[.,]\d+)?\s*(?:мин(?:ут\p{L}*)?|min(?:ute)?s?|daqiqa|м|m|метр\p{L}*|км|km))|(?:рядом|поблизости|nearby|yaqin(?:ida)?|яқин(?:ида)?|жақын))(?=$|[^\p{L}\p{N}_])/iu;
192
192
 
@@ -38,10 +38,10 @@ const PLACE_KINDS = Object.freeze([
38
38
  ['Университет', /(?:университет|институт)\s+([A-ZА-ЯЁ][\p{L}\p{N}_'’-]{2,24})/u],
39
39
  ]);
40
40
 
41
- const NEARBY_BLOCK_RE = /(?:^|\n)[^\n]{0,30}?(?:что\s+(?:есть|находится)\s+р[яa]дом|р[яa]дом(?:\s+(?:есть|находятся|расположены|с\s+домом))?|непода[лл][её]ку|поблизости|в\s+шаговой\s+доступности|окружени[ие]|ориентир(?:ы|ами)?|yaqinida|atrofida|yonida|nearby|landmarks?)\s*[:—-]?\s*([^\n]{4,500})/iu;
41
+ const NEARBY_BLOCK_RE = /(?:^|\n)[^\n]{0,30}?(?:что\s+(?:есть|находится)\s+р[яa]дом|р[яa]дом(?:\s+(?:есть|находятся|расположены|с\s+домом))?|непода[лл][её]ку|поблизости|в\s+шаговой\s+доступности|окружени[ие]|ориентир(?:ы|ами)?|ор[-–—]?р\.?|yaqinida|atrofida|yonida|nearby|landmarks?)\s*[:—-]?\s*([^\n]{4,500})/iu;
42
42
  const NEARBY_NOISE_RE = /^(?:и|а|в|на|у|до|от|все|вс[её]|есть|рядом|близко|недалеко|минут\p{L}*|пешком|транспорт|остановк\p{L}*|магазин|магазины|аптека|аптеки|садик|садики|всё\s+необходимое|развит\p{L}*)$/iu;
43
43
  const NEARBY_FILLER_RE = /(?:инфраструктур\p{L}*|все\s+необходимо|вс[её]\s+рядом|шаговой\s+доступност|развитый\s+район)/iu;
44
- const QUARTER_NEARBY_PREFIX_RE = /(?:^|[\s,;:—–-])(?:до|рядом\s+(?:с|со)|недалеко\s+от|возле|около|ориентир\s*[:—–-]?|near(?:by)?|close\s+to|lângă|aproape\s+de)\s*$/iu;
44
+ const QUARTER_NEARBY_PREFIX_RE = /(?:^|[\s,;:—–-])(?:до|рядом\s+(?:с|со)|недалеко\s+от|возле|около|ориентир\s*[:—–-]?|ор[-–—]?р\.?\s*[:—–-]?|near(?:by)?|close\s+to|lângă|aproape\s+de)\s*$/iu;
45
45
 
46
46
  function enumeratedNearby(text) {
47
47
  const blocks = [...text.matchAll(new RegExp(NEARBY_BLOCK_RE.source, `${NEARBY_BLOCK_RE.flags}g`))]
@@ -12,7 +12,7 @@ export const PROPERTY_CONDITION_TERMS = Object.freeze([
12
12
  group('designerRenovation', { ru: ['дизайнерский ремонт'], en: ['designer renovation', 'designer interior'], uk: ['дизайнерський ремонт'], ro: ['renovare de designer'], uzLatn: ['dizaynerlik remont'], uzCyrl: ['дизайнерлик ремонт'], kk: ['дизайнерлік жөндеу'] }),
13
13
  group('good', { ru: ['хорошее состояние', 'отличное состояние'], en: ['good condition', 'excellent condition'], uk: ['хороший стан', 'відмінний стан'], ro: ['stare bună', 'stare excelentă'], uzLatn: ['yaxshi holat', 'yaxshi xolat', 'juda yaxshi xolatda'], uzCyrl: ['яхши ҳолат'], kk: ['жақсы жағдай'] }),
14
14
  group('livable', { ru: ['жилое состояние'], en: ['livable condition', 'habitable'], uk: ['житловий стан'], ro: ['locuibil'], uzLatn: ['yashashga tayyor'], uzCyrl: ['яшашга тайёр'], kk: ['тұруға жарамды'] }),
15
- group('needsRenovation', { ru: ['требует ремонта', 'под ремонт', 'нужен ремонт'], en: ['needs renovation', 'requires renovation'], uk: ['потребує ремонту', 'під ремонт'], ro: ['necesită renovare'], uzLatn: ['remont kerak'], uzCyrl: ['ремонт керак'], kk: ['жөндеу қажет'] }),
15
+ group('needsRenovation', { ru: ['требует ремонта', 'под ремонт', 'нужен ремонт'], en: ['needs renovation', 'requires renovation'], uk: ['потребує ремонту', 'під ремонт'], ro: ['necesită renovare'], uzLatn: ['remont kerak', "ta'mirsiz", 'tamirsiz', "ta'mirga muhtoj"], uzCyrl: ['ремонт керак', 'таъмирсиз', 'тамирсиз'], kk: ['жөндеу қажет'] }),
16
16
  group('shell', { ru: ['черновая отделка', 'черновая', 'без отделки'], en: ['shell condition', 'shell and core', 'unfinished shell'], uk: ['чорнова обробка', 'без оздоблення'], ro: ['la roșu', 'fără finisaje'], uzLatn: ['qora suvoq', 'qora suvoq holati'], uzCyrl: ['қора сувоқ'], kk: ['қара әрлеу'] }),
17
17
  group('whiteBox', { ru: ['предчистовая', 'предчистовая отделка'], en: ['white box', 'white-box'], uk: ['передчистове оздоблення'], ro: ['semifinisat'], uzLatn: ['white box'], uzCyrl: ['white box'], kk: ['white box'] }),
18
18
  ]);
@@ -24,6 +24,7 @@ export const LAYOUT_TERMS = Object.freeze([
24
24
  group('euroTwoRoom', { ru: ['евродвушка', 'евро двушка'], en: ['euro two-room', 'euro one bedroom'], uk: ['євродвушка'], ro: ['apartament euro două camere'], uzLatn: ['evro ikki xonali'], uzCyrl: ['евро икки хонали'], kk: ['еуро екі бөлмелі'] }),
25
25
  group('euroThreeRoom', { ru: ['евротрёшка', 'евротрешка', 'евро трешка'], en: ['euro three-room', 'euro two bedroom'], uk: ['євротрійка'], ro: ['apartament euro trei camere'], uzLatn: ['evro uch xonali'], uzCyrl: ['евро уч хонали'], kk: ['еуро үш бөлмелі'] }),
26
26
  group('openPlan', { ru: ['свободная планировка'], en: ['open plan', 'free layout'], uk: ['вільне планування'], ro: ['plan deschis'], uzLatn: ['erkin reja'], uzCyrl: ['эркин режа'], kk: ['еркін жоспарлау'] }),
27
+ group('improvedLayout', { ru: ['улучшенная планировка', 'улучшенка'], en: ['improved layout'], uk: ['покращене планування', 'поліпшене планування'], ro: ['plan îmbunătățit'], uzLatn: ['yaxshilangan reja'], uzCyrl: ['яхшиланган режа'], kk: ['жақсартылған жоспарлау'] }),
27
28
  group('masterBedroom', { ru: ['мастер-спальня', 'мастер спальня'], en: ['master bedroom'], uk: ['майстер-спальня'], ro: ['dormitor matrimonial'], uzLatn: ['master yotoqxona'], uzCyrl: ['мастер ётоқхона'], kk: ['master bedroom'] }),
28
29
  group('walkInCloset', { ru: ['гардеробная'], en: ['walk-in closet', 'dressing room'], uk: ['гардеробна'], ro: ['dressing'], uzLatn: ['garderob xona'], uzCyrl: ['гардероб хона'], kk: ['киім бөлмесі'] }),
29
30
  ]);
@@ -39,7 +39,7 @@ const AIR_CONDITIONER_RE = /(?:кондицион|air\s*con|konditsioner|kandit(
39
39
  const PER_PERSON_PRICE_RE = /(?:kishi\s+boshiga|киши\s+бошига)\s*(\d{1,3}(?:[\s.,]\d{3})*|\d+(?:[.,]\d+)?)\s*(ming|минг|million|mln|млн)?(?:dan|дан)?/iu;
40
40
  const WALK_MINUTES_RE = /(?:yayov|piyoda|пешком)\s*(\d{1,2})\s*(?:daqiqa|min(?:ute)?s?|минут)/iu;
41
41
  const TRANSIT_ROUTES_RE = /(?:aftobuslar|avtobuslar|автобуслар|автобусы)[^\r\n\d]{0,24}((?:\d{1,4}[\s,;/]*){1,10})/iu;
42
- const NEARBY_RELATION_TAIL_RE = /(?<!\p{L})(?:рядом\s+(?:с|со)|недалеко\s+от|возле|около|ориентир\s*[:—–-]?|near(?:by)?|close\s+to|lângă|aproape\s+de)(?!\p{L})[^.!?\r\n;]*/giu;
42
+ const NEARBY_RELATION_TAIL_RE = /(?<!\p{L})(?:рядом\s+(?:с|со)|недалеко\s+от|возле|около|ориентир\s*[:—–-]?|ор[-–—]?р\.?\s*[:—–-]?|near(?:by)?|close\s+to|lângă|aproape\s+de)(?!\p{L})[^.!?\r\n;]*/giu;
43
43
  const NEARBY_TRAVEL_TAIL_RE = /(?<!\p{L})(?:до|până\s+la)(?!\p{L})[^.!?\r\n;]{0,96}(?<!\p{L})\d{1,3}\s*(?:мин(?:ут(?:ы|а|ах)?|\.?)?|min(?:ute)?s?|дақиқ\p{L}*|daqiqa|км|km|метр(?:а|ов)?|m)(?!\p{L})[^.!?\r\n;]*/giu;
44
44
  const RESIDENTIAL_CONTEXT_RE = /(?:ж\.?\s*к\.?|жил(?:ой|ого)\s+комплекс|новострой(?:ка|ки)?|residential\s+complex|residence|turar\s+joy|uy[-\s]?joy|majmua|массив)/iu;
45
45
 
package/src/housing.js CHANGED
@@ -42,8 +42,8 @@ export const ADDRESS_TERMS = Object.freeze({
42
42
  uzLatn: ['kirish', 'podyezd'], uzCyrl: ['кириш', 'подъезд'], kk: ['кіреберіс', 'подъезд'],
43
43
  }),
44
44
  landmark: group('landmark', {
45
- ru: ['ориентир', 'рядом с', 'возле', 'напротив'], en: ['landmark', 'near', 'next to', 'opposite'], uk: ['орієнтир', 'поруч', 'біля', 'навпроти'], ro: ['reper', 'lângă', 'langa', 'în apropiere', 'in apropiere', 'vizavi'],
46
- uzLatn: ['mo‘ljal', "mo'ljal", 'yaqinida', 'yonida', 'ro‘parasida'], uzCyrl: ['мўлжал', 'яқинида', 'ёнида', 'рўпарасида'], kk: ['бағдар', 'жанында', 'маңында', 'қарсысында'],
45
+ ru: ['ориентир', 'ор-р', 'орр', 'рядом с', 'возле', 'напротив'], en: ['landmark', 'near', 'next to', 'opposite'], uk: ['орієнтир', 'поруч', 'біля', 'навпроти'], ro: ['reper', 'lângă', 'langa', 'în apropiere', 'in apropiere', 'vizavi'],
46
+ uzLatn: ['mo‘ljal', "mo'ljal", 'yaqinida', 'yonida', 'ro‘parasida'], uzCyrl: ['мўлжал', 'мулжал', 'яқинида', 'ёнида', 'рўпарасида'], kk: ['бағдар', 'жанында', 'маңында', 'қарсысында'],
47
47
  }),
48
48
  });
49
49