问题标签 [breakiterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2423 浏览

java - BreakIterator 如何在 Android 中工作?

我正在 Android 中制作自己的文本处理器(蒙古语的自定义垂直脚本 TextView)。我以为我必须自己找到所有换行位置,以便我可以实现换行,但后来我发现BreakIterator. 这似乎找到了各种语言中字符、单词、行和句子之间所有可能的中断。

我正在尝试学习如何使用它。该文档比一般文档更有帮助,但仅通过阅读仍然难以理解。我还找到了一些教程(请参阅此处此处此处),但它们缺少我正在寻找的输出的完整解释。

我正在添加这个问答风格的答案来帮助自己学习如何使用BreakIterator.

除了 Java 之外,我还将它作为 Android 标签,因为它们之间显然存在一些差异。此外,Android 现在支持ICUBreakIterator,未来的答案可能会解决这个问题。

0 投票
1 回答
321 浏览

java - C# 等效于 Java 的 BreakIterator

我正在研究从 java 到 c# 的转换项目,是否有任何 c# 等价物BreakIterator?我正在尝试IEnumerator,但在下面找不到iterator.SetText()用法,任何人都可以建议以下行的等效 C# 代码:

0 投票
1 回答
914 浏览

java - BreakIterator 无法正确处理中文文本

我使用 BreakIterator.getWordInstance 将中文文本拆分为单词。这是我的例子

我的示例文本来自https://stackoverflow.com/a/42219474/954439

我得到的输出是

而预期的输出是

我什至尝试过纯中文文本,但是在空格和标点字符上单词被破坏了。

我正在为服务器编程,所以 jar 文件的大小不是一个大问题。我试图找出给定内容与使用最少公共子序列(但在单词上)的示例内容相比不同的单词数。

我究竟做错了什么?

0 投票
1 回答
292 浏览

java - Android 的 BreakIterator 将换行符视为句子分隔符

我有一个 unix 文本文件,我想在我的 Android 应用程序中读取它并将其拆分为句子。但是我注意到将BreakIterator一些换行符视为句子分隔符。我使用以下代码读取文件并将其拆分为句子(仅输出第一句用于演示目的):

但是,如果我将 Eclipse 中的代码作为桌面应用程序编译并运行,则文本会正确拆分。我不明白为什么它在 Android 应用程序上没有做同样的事情。

我尝试将文本文件转换为 dos 格式,我什至尝试读取文件并保留原始换行符:

但没有成功。有任何想法吗?您可以在此处下载文件(unix 格式)的摘录:http: //dropmefiles.com/TZgBp

我刚刚注意到它可以在不下载此文件的情况下复制。只需创建一个在句子中包含换行符的字符串(例如"Hello, \nworld!")并运行仪器测试。如果BreakIterator在通常的测试中使用,那么它会正确拆分。

我期待2句话:

第 1 句:

前言

如果一位同事对你说,今天晚上我的配偶在家里制作了不寻常的饭菜。

第 2 句:

你会加入吗?

是的,它们看起来不太好,但至少你知道为什么会这样(句子分隔符是 ?. 等)。但如果代码在 Android 上运行,它甚至会创建一个句子

前言

由于某些原因...

我不确定这是否是一个错误,或者是否有解决方法。但在我看来,这使得 Android 版本的BreakIterator句子拆分器毫无用处,因为书中的句子分布在多行上是正常的。

在所有的实验中,我都使用了相同的import java.text.BreakIterator;

0 投票
0 回答
35 浏览

java - 在 Java 中将字符串分解为句子:BreakIterator 在第二次出现“Dr.”时失败。

我想把一个字符串分成句子。由于这并不简单(由于许多“。”不是句子的结尾)我正在使用 BreakIterator 如下:

如果我现在对此进行测试:

结果是:

在第 6 句中,它正确地忽略了 Dr.,但在第 7 句中,它在 Dr. 之后中断(7+8 应该是一个句子)。为什么会这样,我该如何解决?

0 投票
1 回答
156 浏览

java - 使用 BreakIterator 在 Java 中将日文文本拆分为单词

我们正在尝试按照这个问题中的代码使用 BreakIterator 将日语句子分解成单词。此代码仅适用于问题中给出的文本,当我们尝试给出不同的文本时,例如“速い茶色のキツネは慵懒な犬を飞び越えます”时,它无法破坏单词。

可能是什么问题?

0 投票
1 回答
107 浏览

javascript - 用JavaScript(客户端)逐字分离句子

我正在尝试逐字分隔一个句子,但使用 JavaScript 似乎是一项非常艰巨的任务。我不能简单地通过查看空格来分隔句子。因为有些语言(泰语、中文、日语等)不使用空格来分隔单词。因此,基于字典的算法似乎是可行的方法。但是,字典很大,我试图在客户端上分离句子。

Java 有一个BreakIterator类,它允许您遍历句子中的单词。这正是我需要的,但 JS 没有相同的功能。Chrome 有Intl.v8BreakIterator但我正在寻找适用于所有主要浏览器的解决方案。

有一个提案Intl.Segmenter可以解决这个问题。它基本上是 Javascript 上的BreakIterator。但它还没有发布。

如果有办法,你能指出我正确的方向吗?

0 投票
1 回答
35 浏览

java - 使用 Java 的 BreakIterator 解决边缘案例

我正在开展一个将 NLP 应用于临床数据的辅助项目,并且我正在使用 Java 的 BreakIterator 将文本分成句子以进行进一步分析。使用 BreakIterator 时,我遇到了 BreakIterator 无法识别以数值开头的句子的问题。

例子:

预期输出:

实际输出:

代码:

任何帮助,将不胜感激。我试图在网上找到答案,但无济于事。

0 投票
2 回答
83 浏览

java - BreakIterator 在 Android API 29 和 API 30 中的行为不同

我制作了以下函数将字符串分解为印地语字符。但它的行为与 android API 29 和 API 30 不同。在 Android 29 中,印地语单词 चक्की 被分解为 च क् की 但在 Android 30 中,它被正确分解为 च क्की。

我怎么解决这个问题?

0 投票
0 回答
71 浏览

java - BreakIterator 找不到带括号的“ie”或“eg”的正确句子边界

在下面的示例中,BreakIterator似乎在一个相当简单的示例上失败了。

我使用BreakIterator不正确,还是这只是一个错误?

示例类:

输出:

似乎bi.preceding(30)应该返回BreakIterator.DONE

JDK 版本 1.8.0。