将文本拆分为句子,将句子拆分为单词:BreakIterator与正则表达式

时间:2010-12-19 10:12:55

标签: java regex string comparison tokenize

我不小心回答了question,其中原始问题涉及将句子分成单独的单词。

作者suggested to use BreakIterator标记输入字符串,有些人喜欢这个想法。

我只是没有那么疯狂:25行复杂代码如何比带有regexp的简单单行程更好?

请解释一下使用BreakIterator的优点以及应该使用它的真实案例。

如果它非常酷,那么我想知道:你真的在项目中使用BreakIterator的方法吗?

2 个答案:

答案 0 :(得分:3)

通过查看该答案中发布的代码,BreakIterator看起来考虑了文本的语言和区域设置。通过正则表达式获得这种级别的支持肯定会是一个相当大的痛苦。也许这是它比简单的正则表达式更受欢迎的主要原因?

答案 1 :(得分:2)

BreakIterator提供了一些很好的显式控制,并以嵌套的方式在每个句子和单词上干净地迭代。我并不熟悉指定语言环境的确切内容,但我确信它有时也非常有用。

它并没有让我感到复杂。只需为句子级别设置一个迭代器,为单词级别设置另一个迭代器,将第一个字体嵌入第二个中。

如果问题变成了不同的问题,那么你在另一个问题上遇到的解决方案可能就在窗外了。但是,通过句子和单词迭代的模式可以做很多事情。

  1. 找出任何单词出现次数最多的句子。将其与该词一起输出
  2. 在整个字符串中查找大多数时间使用的单词。
  3. 查找每个句子中出现的所有单词
  4. 查找在2个或更多句子中出现素数的所有单词
  5. 列表继续......

相关问题