【发布时间】:2012-11-10 13:37:44
【问题描述】:
我正在寻找一种将未知文本修剪到特定长度的解决方案。只保留完整的句子。
这样的文字
"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);
但是对于上面提到的句子和其他类似的句子显然失败了。其他人建议使用斯坦福文本解析器或 OpenNLP。它们真的很酷,但不适用于典型应用。您不会在 Ruby/PHP 服务器上安装 Java,只是为了修剪文本,对吧。所以我正在寻找一些 80/20 解决方案,它与语言无关,并且能够处理出现的典型案例。
我想不出比这更成问题的句子了(在下一个句子的开头包含日期、非点句结尾和非 ascii 字符,以及“限制”句中间的非结尾点)。
我还创建了一个 GIST (https://gist.github.com/4051035) 供您分叉和使用 - 分叉确保用户可以点击此问题的不同解决方案,所以请使用它;)我想提出这个问题comunity-wiki,但它似乎不适用于问题 - 仅用于答案。因此,请向 cmets 添加任何建议/相关 SO 问题。谢谢。
【问题讨论】:
标签: nlp truncate linguistics text-manipulation sentence