@tatarrr95

Есть ли в открытом доступе регулярные выражения для перевода текстовых чисел в цифры?

У меня есть задача перевести комбинации текста «двадцать пять», «двадцать пятого», «в двадцать пятом» в число 25. И таким образом я должен уметь переводить первые 40 чисел. Не могу найти в открытом доступе готовые на это регулярные выражения (сам писать не хочу). И так же очень нужны регулярки для перевода месяцев в различных падежах в их порядковый номер в году.
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@tatarrr95 Автор вопроса
Кому интересно, реализовал просто через dialogflow.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AlexZaharow
@AlexZaharow
Программист.
Это не совсем простой вопрос и регулярками не делается. Я делал как-то что-то близкое. Алгоритм посоветую такой:
1. Подключить поисковую систему к словарю из сорока ваших чисел. (я пользовался yandex.server - уже не выпускается, но это для примера, может быть сфинкс подойдёт, или поищите что-то ещё).
2. Брать по очереди и по одному слова из текста.
3. Проверять их нахождение в словаре в поисковой системе. (Вот тут и происходит магия, т.к. поисковая система умеет искать с учётом морфологии). Соответственно надо уметь отличать одно число из одного слова от двойного числа из двух слов (хотя можно разбить поиск на два этапа - сначала находим тексты из двух числовых слов и заменяем, потом из одного слова, но всегда есть тонкости, например, отличить от числа из трёх слов, когда будут сотни). Немного поколдуйте над числами, которые имеют двойное наименование, например, "один"-"первый"-"раз", "два"-"второй".
4. Заменять эти слова на числа, т.к. соответствие слов в словаре числам вы уже знаете.
5. Профит.

Например, ваш словарь:

один (1 в уме или в коде программы)
первый (1 в уме или в коде программы)
раз (1 в уме или в коде программы)
два (2 в уме)
три (3 в уме)

Текст:
"Квитанцию оплатить первого числа"
Квитанцию - пропустить, т.к. поисковик не найдёт в словаре
оплатить - пропустить, т.к. поисковик не найдёт в словаре
первого - поисковик найдёт "первый", меняете на "1"
числа - пропустить, т.к. поисковик не найдёт в словаре

После замены получите:
"Квитанцию оплатить 1 числа"

Но тут тоже надо быть внимательным, а то получите такой "перевод":
"Раз пошёл я на охоту..."
"1 пошёл я на охоту"
Ну, может "раз" переводить и не нужно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы