Buckets:
| import re | |
| from bg_text_normalizer import normalize_text as bg_norm | |
| # Допълнителни специфични замени, които bg_text_normalizer изпуска | |
| EXTRA_ABBREVIATIONS = { | |
| r"\bм²\b": "квадратен метър", | |
| r"\bкв\.м\.\b": "квадратен метър", | |
| r"\bт\.е\.\b": "тоест", | |
| } | |
| def normalize_text(text: str) -> str: | |
| """ | |
| Нормализира текста, използвайки bg-text-normalizer + наши специфични правила. | |
| """ | |
| # 0.5 Предварителна обработка на десетични дроби: заменяме точката със запетая | |
| # bg-text-normalizer бърка '1.4' с '1 април'. За да го чете като дроб, му трябва запетая '1,4'. | |
| text = re.sub(r'(\d)\.(\d)', r'\1,\2', text) | |
| # 1. Първо прилагаме библиотеката bg_text_normalizer | |
| text = bg_norm(text) | |
| # 2. Оправяме точките след съкращения като "лв." и "гр.", които библиотеката е превърнала в "лева." | |
| text = text.replace("лева.", "лева") | |
| text = text.replace("стотинки.", "стотинки") | |
| # 3. Прилагаме нашите допълнителни правила | |
| for pattern, replacement in EXTRA_ABBREVIATIONS.items(): | |
| text = re.sub(pattern, replacement, text, flags=re.IGNORECASE) | |
| # Допълнително хващаме м² (без \b, защото ² не е дума) | |
| text = text.replace("м²", "квадратен метър") | |
| # Махане на двойни интервали | |
| text = re.sub(r"\s+", " ", text).strip() | |
| return text | |
| if __name__ == "__main__": | |
| test_text = "Цената е 1500 лв. за м² в кв. Лозенец." | |
| print("Original:", test_text) | |
| print("Normalized:", normalize_text(test_text)) | |
Xet Storage Details
- Size:
- 1.98 kB
- Xet hash:
- 13a3fb36c658e2a511c9d001720102f09811126d022374f14247e0a6aae939ae
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.