Skip to main content

Разбор дат в строке. Порт на Python проекта https://github.com/DenisNP/Hors с изменениями под неопределённые даты

Project description

Hors

MIT License

hors — это модуль Python для распознавания дат и времени в естественной речи на русском языке. Он умеет понимать сложные конструкции с абсолютными и относительными датами, временем, а также временными периодами. Название библиотеки отсылает к славянскому богу солнца – Хорс.

Оригинальная версия библиотеки написана Денисом Пешехоновым на C# и доступна на GitHub под лицензией MIT. Логика работы в форке почти не изменена, за исключением ряда доработок.

Отличия от оригинальной библиотеки

Особенности PartialDateTime

  • Гибкость задания: Можно задавать дату с любым набором известных компонентов (год, месяц, день, время). Если время не задано, оно может оставаться неопределённым.
  • Арифметика по известным разрядам: При прибавлении или вычитании timedelta операции применяются только к тем компонентам, которые известны. Например, если указана только дата без времени, то операция применяется к дате (год, месяц, день), а время в результате остаётся неопределенным.

Установка

Для установки клонируйте репозиторий и установите зависимости вручную:

git clone https://github.com/yourusername/hors-python-partial.git
cd hors-python
pip install -r requirements.txt
python setup.py install

Использование

Пример использования библиотеки:

import hors

# Распознавание фиксированной даты и времени
r = hors.process_phrase('Утром 3 сентября 2059 года мы слушали Шуфутинского')
print(r.dates[0].type)  # <DateTimeTokenType.FIXED: 1>
print(r.dates[0].date_from)  # Например, PartialDateTime(year=2059, month=9, day=3, hour=9)

# Распознавание временного периода
r = hors.process_phrase('Полёт Гагарина длился с 9 утра 12 апреля 1961 года до 11 утра')
print(r.dates[0].type)  # <DateTimeTokenType.PERIOD: 2>
print(r.dates[0].date_from)  # PartialDateTime(year=1961, month=4, day=12, hour=9)
print(r.dates[0].date_to)  # PartialDateTime(year=1961, month=4, day=12, hour=11)

r = hors.process_phrase('3 числа мы слушали Шуфутинского')
print(r.dates[0].type)  # <DateTimeTokenType.FIXED: 1>
print(f"{r.dates[0].date_from} | {r.dates[0].date_to}")
# ????-??-03 00:00:00.000000 | ????-??-03 00:00:00.000000 + 23:59:59.999999

Тестирование

Запустите тесты командой:

python -m unittest discover tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hors_python_partial-0.1.5.tar.gz (32.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hors_python_partial-0.1.5-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

Details for the file hors_python_partial-0.1.5.tar.gz.

File metadata

  • Download URL: hors_python_partial-0.1.5.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.14

File hashes

Hashes for hors_python_partial-0.1.5.tar.gz
Algorithm Hash digest
SHA256 05f68396b1a05503ed64eb95b149f48d07553b9a4d363577f2eca0e83e5f3122
MD5 1b3ea38358988f63f8b4260fa827a63c
BLAKE2b-256 e8e2eb96c0c8caffda9e912b10cbfb8f51d862edf58d1aabbf8417cda90bcffd

See more details on using hashes here.

File details

Details for the file hors_python_partial-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for hors_python_partial-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 334f4f6681538bf02856c1a8bdcd77393157d611d6d99841041ded7f750e2241
MD5 f26e2f3f53b0bd0317dd666a90984bf7
BLAKE2b-256 962d824e6db9e0472290d63840834b3386c288852bbab893613dd19167dbc00d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page