Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проблема даты прописью #87

Open
tonal opened this issue Aug 12, 2023 · 2 comments
Open

Проблема даты прописью #87

tonal opened this issue Aug 12, 2023 · 2 comments

Comments

@tonal
Copy link

tonal commented Aug 12, 2023

В примерах есть правило для распознавание дат Getting started - Интерпретация и Нормализация
В них день месяца и год записаны числами
Как можно добавить распознавание и интерпретацию даты, где день и год может быть записан прописью?
Например:
Пятнадцатого июля две тысячи двадцать первого года.
или
Двадцать первого мая две тысяча девятсот восемьдесят первого года
Пример для дня:

NUMS = {
  'один': 1, 'первый': 1,
  'два': 2, 'второй': 2,
  'три': 3, 'третий': 3,
  'четыре': 4, 'четвёртый': 4,
  'пять': 5, 'пятый': 5,
  'шесть': 6, 'шестой': 6,
  'семь': 7, 'седьмой': 7,
  'восемь': 8, 'восмой': 8,
  'девять': 9, 'девятый': 9,
  'десять': 10, 'десятый': 10,
  'одиннадцать': 11, 'одиннадцатый': 11,
  'двенадцать': 12, 'двенадцатый': 12,
  'тринадцать': 13, 'тринадцатый': 13,
  'четырнадцать': 14, 'четырнадцатый': 14,
  'пятнадцать': 15, 'пятнадцатый': 15,
  'шестнадцать': 16, 'шестнадцатый': 16,
  'семнадцать': 17, 'семнадцатый': 17,
  'восемнадцать': 18, 'восемнадцатый': 18,
  'девятнадцать': 19, 'девятнадцатый': 19,
  'двадцать': 20, 'двадцатый': 20,
  'тридцать': 30, 'тридцатый': 30,
}

DAY = or_(
  and_(gte(1), lte(31)).interpretation(Date.day.custom(int)),
  and_(gram('ADJF'), gram('Anum')).interpretation(Date.day.normalized().custom(NUMS.get)),
  rule(gram('NUMR'),   and_(gram('ADJF'), gram('Anum'))) # < Какая здесь должна быть интерпретация чтобы получить число?
)

Как написать интерпретацию для двухзначных чисел в числовую форму?
Или это только постобработкой?

@kuk
Copy link
Member

kuk commented Aug 21, 2023

Я бы просто выписал все двузначные числа:

DAYS = {
    ...
    'двадцать первый': 21,
    'двадцать второй': 22,
    ...
}
DAY = morph_pipeline(
    DAYS.keys()
).interpretation(Date.day.normalized().custom(DAYS.get))

@tonal
Copy link
Author

tonal commented Aug 22, 2023

А с годом как быть - тоже все выписать?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants