Преобразовать числа, написанные как слова, в целые числа?

Существует ли библиотека Java с открытым исходным кодом для преобразования строковых чисел в их эквивалентные целые числа (например, преобразование «десять» в 10)? Я знаю, как это сделать, но я бы предпочел не тратить время моего клиента на написание с нуля, если уже есть доступная библиотека.


person Thomas Schellenberg    schedule 25.09.2012    source источник
comment
Я не знаю подходящей библиотеки, но есть много таких академических проектов, посвященных одноразовым занятиям. Я думаю, что некоторое время назад я видел один Эрик Липперт (для C#).   -  person    schedule 26.09.2012
comment
Может быть, где-нибудь в ОИТ?   -  person Brendan Long    schedule 26.09.2012
comment
stackoverflow.com/q/3911966/106261   -  person NimChimpsky    schedule 26.09.2012
comment
@NimChimpsky Не дубликат. Это противоположное направление. (Я не смог найти ни одного, идущего в этом направлении, но я его видел, я уверен..)   -  person    schedule 26.09.2012


Ответы (2)


Сомневаюсь, что такая библиотека существует.

Если вы хотите преобразовать только ограниченное количество чисел (например, от zero до ten), вам, вероятно, потребуется больше времени, чтобы задать этот вопрос здесь, чем просто реализовать его самостоятельно.

Если вы хотите преобразовать более сложные числа, такие как "one hundred twenty four and fifty-one hundredth's", чем вам нужно, это распознаватель естественного языка, который чрезвычайно сложен и вряд ли имеет хорошую библиотеку на каком-либо языке.

В конце концов, обычно лучше, чтобы серверные значения и потребляемый пользователем контент не были связаны.

person Sam I am says Reinstate Monica    schedule 25.09.2012
comment
Нет. Для этой задачи не требуется никакого сложного NL — это гораздо более простая задача с гораздо более тонкой областью действия. Данный случай все еще относительно тривиален для обработки. (Это еще проще, если не нужно иметь дело с дробными значениями, и это ограничивает целые числа.) - person ; 26.09.2012
comment
@pst Twenty-one Hundred twenty one Hundred two thousand one hundred one hundred and one one hundred one twenty thirteen forty two point five 3 thousand forty five twenty k - person Sam I am says Reinstate Monica; 26.09.2012
comment
Опять же, эти примеры не представляют собой сложную грамматику и легко содержатся в простом CFL. (Несмотря на то, что существуют противоположные аргументы в отношении того, являются ли NL КЛЛ или нет, они находятся на крайнем уровне сложности. Это не так. Кроме того, в этом случае некоторые из этих форм могут быть исключены из допустимых входных данных.) - person ; 26.09.2012
comment
Вот пример, который требует чрезвычайно сложного распознавания естественного языка: Charlotte's Web — это детский роман американского писателя Э. Б. Уайта о свинье по имени Уилбур, которого спасает от убоя умный паук по имени Шарлотта. - person ; 26.09.2012
comment
@pst как свинья спаслась от паука? - person Sam I am says Reinstate Monica; 26.09.2012

На "двадцать семь" или "двадцать и семь"? За «двадцать семь» или за «десять и семь»? Бейкеровская дюжина кому-нибудь? Пара костей или две кости? Один меньше шести пакетов? Trifecta процедур обработки чисел? 21 век (год 20хх)?

Ваши требования немного шире, чем я полагаю, вы их рассматривали. Я бы порекомендовал вам работать с платформой, которая действительно позволяет гибко добавлять новые представления вместо того, чтобы предполагать одно представление, Среда обработки Apache Open Natural Language может быть хорошим выбором.

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

person Edwin Buck    schedule 25.09.2012