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.6.tar.gz (33.1 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.6-py3-none-any.whl (39.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hors_python_partial-0.1.6.tar.gz
  • Upload date:
  • Size: 33.1 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.6.tar.gz
Algorithm Hash digest
SHA256 fae9f8cc27ade9bff7958bfbce61c50b91e35451c6d235af6339dcc8e968f596
MD5 8a235183af7469a381d5d24c1a2cff41
BLAKE2b-256 6948f87905badc05322831e843c38e1ea2bcf52b93fe6bbe14d302a919288a81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hors_python_partial-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d681865cf55179ab90381941c7090924abfdeb08eb69f071e313b36fab41e647
MD5 f8714ed5965184b538b447d6e3eae36c
BLAKE2b-256 4667fb040a9b100e0c924171414c54292a470880904924be223fb27db01195f1

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