Обработка текста на Java - PullRequest
5 голосов
/ 23 января 2012

Теперь это сложная проблема, для которой я не могу найти хорошее решение. Предположим, у нас есть строка в Java: «Он съел 3 яблока сегодня». Теперь цифра 3 может быть легко идентифицирована в Java с помощью функции isNumeric или с помощью регулярных выражений. Но что, если у меня есть Строка типа: «Он съел три яблока сегодня»? Как я могу определить, что три на самом деле число? Я использовал OpenNlp и использовал его POS-тегер, но время, которое требуется, действительно слишком много! Кто-нибудь может предложить лучшее решение для этого? Также среди «.bin» OpenNlp есть один файл - «num.bin», но я не знаю, как использовать этот файл. Документация OpenNlp также ничего не говорит об этом. Может кто-нибудь сказать мне, если это именно то, что я искал, и если да, то как его использовать.

/ ************* ***************** ***************** ***************** ***************** ************************************************ / У меня на самом деле мало времени, поэтому я остановился на временном решении здесь. Создайте файл / словарь и возьмите все записи в хеш-таблице. Затем я размечу свое предложение и проверим слово за словом числа, аналогично тому, что вы, ребята, предложили. Я буду обновлять файл по мере необходимости. Спасибо за ваши ценные предложения, ребята, и если у вас есть что-то лучшее, чем это, я был бы очень рад. OpenNlp реализует это очень хорошо, единственная проблема - сложность времени, и я хочу сделать это в минимально возможное время.

Ответы [ 2 ]

1 голос
/ 23 января 2012

Создать словарь чисел. Поиск элементов из этого словаря в тексте.

Проверьте асимптотическую сложность, может быть дешевле сначала отсортировать текст.

0 голосов
/ 23 января 2012

Вы должны хранить все эти слова в массивах, а затем использовать их. Здесь - пример того, как преобразовать число в строку. Это может помочь вам ... Я думаю, вам нужно разбить текст на слова и проверить, является ли слово числом (три). Если да, проверьте следующее слово, потому что это может быть слово «миллион», затем проверьте следующее слово и так далее. Это не легко и кажется маленькой библиотекой. Я думаю, вы потратите много времени на написание этого. Или попробуйте поискать в Google библиотеку, подобную этой. Может быть, кто-то уже получил эту проблему, написал библиотеку и делится ею бесплатно)) Удачи.

...