Java简单句子解析器

mik*_*ika 3 java parsing nlp

有没有简单的方法在普通Java中创建句子解析器而不添加任何lib和jar.

解析器不应该只关注单词之间的空白,而应该更加智能和解析:.!?,识别句子何时结束等

解析后,只有真正的单词可以全部存储在db或文件中,而不是任何特殊的字符.

非常感谢你提前:)

小智 8

您可能希望从查看BreakIterator类开始.

来自JavaDoc.

BreakIterator类实现了在文本中查找边界位置的方法.BreakIterator的实例维护当前位置并扫描文本,返回出现边界的字符索引.在内部,BreakIterator使用CharacterIterator扫描文本,因此能够扫描实现该协议的任何对象所持有的文本.StringCharacterIterator用于扫描传递给setText的String对象.

您可以使用此类提供的工厂方法来创建各种类型的break迭代器的实例.特别是,使用getWordIterator,getLineIterator,getSentenceIterator和getCharacterIterator来创建分别执行单词,行,句子和字符边界分析的BreakIterator.单个BreakIterator只能在一个单元(单词,行,句子等)上工作.必须为要执行的每个单元边界分析使用不同的迭代器.

行边界分析确定换行时文本字符串可以断开的位置.该机制正确处理标点符号和带连字符的单词.

句子边界分析允许选择正确解释数字和缩写中的句点,以及跟踪标点符号,如引号和括号.

字边界分析由搜索和替换功能以及文本编辑应用程序使用,允许用户通过双击选择单词.单词选择可以正确解释单词内和单词后面的标点符号.不属于单词的字符(如符号或标点符号)两侧都有单词分隔符.

字符边界分析允许用户按照他们期望的方式与字符交互,例如,当通过文本字符串移动光标时.无论字符的存储方式如何,字符边界分析都能提供正确的字符串导航.例如,重音字符可以存储为基本字符和变音符号.用户认为角色的用语可能因语言而异.

BreakIterator仅适用于自然语言.不要使用此类来标记编程语言.

请参阅演示:BreakIteratorDemo.java