Mik*_*ler 7 java string nlp text-segmentation
有没有人知道处理查找句子边界的Java库?我认为这将是一个智能的StringTokenizer实现,它知道语言可以使用的所有句子终止符.
这是我对BreakIterator的体验:
在这里使用示例:我有以下日语:
???????????????????????????????
Run Code Online (Sandbox Code Playgroud)
在ascii中,它看起来像这样:
\ufeff\u4eca\u65e5\u306f\u30d1\u30bd\u30b3\u30f3\u3092\u8cb7\u3063\u305f\u3002\u9ad8\u6027\u80fd\u306e\u30de\u30c3\u30af\u306f\u65e9\u3044\uff01\u3068\u3066\u3082\u5feb\u9069\u3067\u3059\u3002
Run Code Online (Sandbox Code Playgroud)
这是我更改的示例的一部分:static void sentenceExamples(){
Locale currentLocale = new Locale ("ja","JP");
BreakIterator sentenceIterator =
BreakIterator.getSentenceInstance(currentLocale);
String someText = "???????????????????????????????";
Run Code Online (Sandbox Code Playgroud)
当我看到边界指数时,我看到了这个:
0|13|24|32
Run Code Online (Sandbox Code Playgroud)
但这些指数与任何句子终结者都不对应.
你写了:
我认为这将是一个智能 StringTokenizer 实现,它知道语言可以使用的所有句子终止符。
这里的一个基本问题是句子终止符取决于上下文,请考虑:
琼斯博士是如何计算出 5 的!没有递归?
这应该被识别为单个句子,但如果您只是拆分可能的句子终止符,您将得到三个句子。
所以这是一个比人们一开始想象的更复杂的问题。可以使用机器学习技术来接近它。例如,您可以查看OpenNLP项目,特别是SentenceDetectorME类。
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |