Как читать значения из чисел, написанных словами? - PullRequest
49 голосов
/ 16 сентября 2008

Как мы все знаем, числа могут быть записаны либо в цифрах, либо названы их именами. Хотя есть много примеров, которые преобразуют 123 в сто двадцать три, я не смог найти хороших примеров того, как преобразовать это наоборот.

Некоторые из предостережений:

  1. Кардинал / номинал или порядковый номер: «один» и «первый»
  2. распространенные орфографические ошибки: "сорок" / "сорок"
  3. сотни / тысячи: 2100 -> «двадцать одна сотня», а также «две тысячи сто»
  4. разделители: "одиннадцатьсот пятьдесят два", но также "одиннадцатьсот пятьдесят два" или "одиннадцатьсот пятьдесят два" и еще много чего
  5. разговорные выражения: "тридцать с чем-то"
  6. дроби: «одна треть», «две пятые»
  7. общие названия: «дюжина», «половина»

И, возможно, возможно больше предостережений, которые еще не перечислены. Предположим, что алгоритм должен быть очень надежным и даже понимать орфографические ошибки.

Какие поля / статьи / исследования / алгоритмы я должен прочитать, чтобы научиться писать все это? Где информация?

PS: Мой последний парсер должен понимать 3 разных языка: английский, русский и иврит. И, возможно, на более позднем этапе будет добавлено больше языков. У иврита также есть мужские / женские номера, например, «один мужчина» и «одна женщина» имеют разные «один» - «эхад» и «ахат». У русских тоже есть свои сложности.

Google отлично справляется с этой задачей. Например:

http://www.google.com/search?q=two+thousand+and+one+hundred+plus+five+dozen+and+four+fifths+in+decimal

(возможно и обратное http://www.google.com/search?q=999999999999+in+english)

Ответы [ 12 ]

0 голосов
/ 19 марта 2009

Попробуйте

  1. Откройте HTTP-запрос к «http://www.google.com/search?q=" + number +» + in + decimal ».

  2. Разобрать результат по вашему номеру.

  3. Кэшируйте пары число / результат для извлечения запросов во времени.

0 голосов
/ 17 марта 2009

Одним из мест, где можно начать поиск, является gnu get_date lib , которая может анализировать практически любой английской текстовой даты в метке времени. Хотя это не совсем то, что вы ищете, их решение аналогичной проблемы может дать много полезных подсказок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...