使用Lucene的StandardTokenizer时保留标点字符

时间:2015-02-05 14:08:32

标签: java solr lucene nlp tokenize

我正在考虑利用Lucene的StandardTokenizer在非IR背景下进行单词标记化。

我知道这个标记符会删除标点字符。是否有人知道(或碰巧有经验)将标点字符作为单独的标记输出?

当前行为示例:

Welcome, Dr. Chasuble! => Welcome Dr. Chasuble

所需行为的示例:

Welcome, Dr. Chasuble! => Welcome , Dr. Chasuble !

2 个答案:

答案 0 :(得分:2)

通常,对于IR和非IR内容的自定义标记化,最好使用ICU(ICU4J是Java版本)。 这将是一个很好的起点: http://userguide.icu-project.org/boundaryanalysis

棘手的部分是将时期保留为"博士"的一部分。你必须使用基于字典的迭代器;或者,可选地,在您的代码中或通过创建自己的迭代器来实现您自己的启发式,在ICU中可以将其创建为具有多个正则表达式样式定义的文件。

答案 1 :(得分:2)

您可以考虑使用NLP社区中的标记化工具。通常这些问题都得到了很好的照顾。

一些现成的工具是stanford corenlp(它们也有用于标记化的单独组件)。 UIUC的管道也应该处理它。 http://cogcomp.cs.illinois.edu/page/software/