是否有任何简单的方法可以在纯Java中创建句子解析器
而不添加任何库和罐子。
解析器不应该只关心单词之间的空格,
但要更聪明和解析:。 ! ?,
识别句子何时结束等
解析后,只有实词可以全部存储在db或文件中,而不能存储任何特殊字符。
非常感谢大家:)
最佳答案
您可能希望先查看BreakIterator类。
从JavaDoc。
BreakIterator类实现
查找位置的方法
文字边界。的实例
BreakIterator保持当前状态
定位并扫描返回的文本
字符索引
边界发生。在内部,
BreakIterator使用
CharacterIterator,因此能够
扫描任何对象保存的文本
实施该协议。一个
StringCharacterIterator用于
扫描传递给setText的String对象。
您使用提供的工厂方法
由此类创建实例
各种类型的中断迭代器。在
特别是使用getWordIterator,
getLineIterator,getSentenceIterator,
和getCharacterIterator创建
执行单词的BreakIterators
行,句和字符边界
分别进行分析。一个
BreakIterator只能在一个
单位(单词,行,句子等
上)。您必须使用其他迭代器
对于每个单元边界分析
希望表演。
线边界分析确定
文本字符串可以在何时断开
换行。正确的机制
处理标点符号和连字符
话。
句子边界分析允许
正确解释的选择
数内的期间和
缩写和尾随
标点符号,如引号
标记和括号。
词边界分析用于
搜索和替换功能
如在文本编辑应用程序中
允许用户选择单词
双击。选词
提供正确的解释
前后的标点符号
话。不属于的字符
单词,例如符号或标点符号
标记,两边都有分词符。
字符边界分析允许
用户与角色互动
他们希望例如
在文本中移动光标
串。字符边界分析
提供通过的正确导航
字符串,无论如何
字符被存储。例如,
可能会存储重音字符
作为基本角色和变音符号
标记。用户认为是
字符之间可以有所不同
语言。
BreakIterator旨在与
仅自然语言。不使用
此类标记编程
语言。
请参见演示:BreakIteratorDemo.java