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