Описание проекта
Этот проект сосредоточен на задаче ассоциирования произвольных географических названий с стандартизированными GeoNames для внутреннего использования Центром Карьеры. Основная цель - создать решение, способное эффективно выбирать наиболее подходящие названия из базы данных GeoNames. Например, он стремится сопоставить вводимые названия, такие как "Ереван", их стандартизированным аналогам, таким как "Yerevan".
Проект охватывает страны, особенно популярные для переезда, с особым вниманием к России и странам, таким как Беларусь, Армения, Казахстан, Киргизия, Турция и Сербия. Решение разработано с учетом городов с населением не менее 15 000 человек, обеспечивая возможности масштабирования для удовлетворения требований сервера клиента. Выход из решения будет включать ключевые поля, такие как geonameid, name, region, country и cosine similarity, представленные в виде списка словарей, представляющих отдельные записи. Этот формат обеспечивает структурированный и доступный вывод для дальнейшего анализа и использования Центром Карьеры.
Цель: Сопоставление произвольных географических названий стандартизированным GeoNames для внутреннего использования Центром Карьеры.
Задачи:
- Разработать решение для сопоставления произвольных названий с GeoNames, например, Ереван -> Yerevan.
- Сосредоточиться на популярных странах для переезда: Беларусь, Армения, Казахстан, Киргизия, Турция, Сербия. Учесть города с населением более 15 000 человек (масштабируемые на сервере клиента).
- Поля вывода: geonameid, name, region, country, cosine similarity.
- Формат вывода данных: список словарей, например, [{dict_1}, {dict_2}, …, {dict_n}], где каждый словарь представляет собой запись с указанными полями.
Дополнительные задачи:
- Позволить настраивать количество предлагаемых имен (например, в параметрах метода).
- Коррекция ошибок для опечаток, например, Моченгорск -> Monchegorsk.
- Хранение данных GeoNames в PostgreSQL.
- Хранение векторизованных промежуточных данных в PostgreSQL.
- Предоставление методов для настройки подключения к базе данных.
- Включение метода для инициализации класса (начальная векторизация GeoNames).
- Предоставление методов для добавления векторов для новых географических названий.
Стек технологий: Библиотеки машинного обучения: SQL, Pandas, NLP, Transformers.
Результаты:
- Тетрадь с решением проекта (описание проекта, исследование, методы решения).
- Сценарий Python, содержащий функцию (класс) для интеграции в систему Заказчика.
Описание данных: Используемые таблицы GeoNames:
- admin1CodesASCII
- alternateNamesV2
- cities15000
- countryInfo
Дополнительные открытые данные при необходимости.
Тестовый набор данных: Файл cities15000.txt
Чтобы посмотреть код Jupyter Notebook исследования, перейдите по этой ссылке.
Чтобы посмотреть Карточку используемой модели, перейдите по этой ссылке.
Чтобы посмотреть код Python-модуля исследования, перейдите по этой ссылке.
Пример использования модуля geonames_labse.py
:
import geonames_labse
with geonames_labse.MyGeoClass() as my_geo_instance:
result = my_geo_instance.my_get_similar('Каштана', top_k=5)
Название проекта | Описание | Используемые библиотеки |
---|---|---|
GeoNames | Цель проекта заключается в разработке решения для сопоставления географических названий стандартизированным именам из географической базы данных GeoNames для внутреннего использования Центром Карьеры Yandex Practicum. | IPython, matplotlib, numpy, pandas, random, safetensors, seaborn, sentence_transformers, sqlalchemy, warnings |