Я ищу решение для обрезки неизвестного текста до определенной длины. Сохранение только полных предложений.
Итак, текст, подобный этому
"Were you born 1. 3. 1987 in Prague? Štěpán Jr. lives there for 3 years now! "
следует превратить в
"Were you born 1. 3. 1987 in Prague? "
для ограничения символов 50, 40 (и 20 с --find-next-sentence-ending).
Я прочитал много вопросов SO - большинство ответов были вариациями
substr($text, 0, strrpos('.', $text) + 1);
Но это явно не подходит для вышеупомянутого предложения и других подобных. Другие предлагают использовать Stanford Text Parser или OpenNLP. Они действительно крутые, но непригодны для обычного применения. Вы бы не стали устанавливать Java на свой сервер Ruby/PHP, просто чтобы обрезать текст, верно. Поэтому я ищу какое-нибудь решение 80/20, которое не зависит от языка и сможет обрабатывать типичные возникающие случаи.
Я не мог придумать более проблематичного предложения, чем это (содержит дату, окончание предложения без точки и символ без ascii в начале следующего предложения и неконечную точку в середине «предельного» предложения).
Я также создал GIST (https://gist.github.com/4051035), чтобы вы могли разветвить и поиграть с ним — разветвление гарантирует, что пользователи могут перейти к различным решениям этой проблемы, поэтому, пожалуйста, используйте его;) Я хотел сделайте этот вопрос комьюнити-вики, но похоже он не работает для вопросов - только для ответов. Поэтому, пожалуйста, добавляйте любые предложения/соответствующие вопросы SO в комментарии. Спасибо.