问题标签 [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.
java - BreakIterator 如何在 Android 中工作?
我正在 Android 中制作自己的文本处理器(蒙古语的自定义垂直脚本 TextView)。我以为我必须自己找到所有换行位置,以便我可以实现换行,但后来我发现BreakIterator
. 这似乎找到了各种语言中字符、单词、行和句子之间所有可能的中断。
我正在尝试学习如何使用它。该文档比一般文档更有帮助,但仅通过阅读仍然难以理解。我还找到了一些教程(请参阅此处、此处和此处),但它们缺少我正在寻找的输出的完整解释。
我正在添加这个问答风格的答案来帮助自己学习如何使用BreakIterator
.
除了 Java 之外,我还将它作为 Android 标签,因为它们之间显然存在一些差异。此外,Android 现在支持ICUBreakIterator
,未来的答案可能会解决这个问题。
java - C# 等效于 Java 的 BreakIterator
我正在研究从 java 到 c# 的转换项目,是否有任何 c# 等价物BreakIterator
?我正在尝试IEnumerator
,但在下面找不到iterator.SetText()
用法,任何人都可以建议以下行的等效 C# 代码:
java - BreakIterator 无法正确处理中文文本
我使用 BreakIterator.getWordInstance 将中文文本拆分为单词。这是我的例子
我的示例文本来自https://stackoverflow.com/a/42219474/954439
我得到的输出是
而预期的输出是
我什至尝试过纯中文文本,但是在空格和标点字符上单词被破坏了。
我正在为服务器编程,所以 jar 文件的大小不是一个大问题。我试图找出给定内容与使用最少公共子序列(但在单词上)的示例内容相比不同的单词数。
我究竟做错了什么?
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;
java - 在 Java 中将字符串分解为句子:BreakIterator 在第二次出现“Dr.”时失败。
我想把一个字符串分成句子。由于这并不简单(由于许多“。”不是句子的结尾)我正在使用 BreakIterator 如下:
如果我现在对此进行测试:
结果是:
在第 6 句中,它正确地忽略了 Dr.,但在第 7 句中,它在 Dr. 之后中断(7+8 应该是一个句子)。为什么会这样,我该如何解决?
java - 使用 BreakIterator 在 Java 中将日文文本拆分为单词
我们正在尝试按照这个问题中的代码使用 BreakIterator 将日语句子分解成单词。此代码仅适用于问题中给出的文本,当我们尝试给出不同的文本时,例如“速い茶色のキツネは慵懒な犬を飞び越えます”时,它无法破坏单词。
可能是什么问题?
javascript - 用JavaScript(客户端)逐字分离句子
我正在尝试逐字分隔一个句子,但使用 JavaScript 似乎是一项非常艰巨的任务。我不能简单地通过查看空格来分隔句子。因为有些语言(泰语、中文、日语等)不使用空格来分隔单词。因此,基于字典的算法似乎是可行的方法。但是,字典很大,我试图在客户端上分离句子。
Java 有一个BreakIterator类,它允许您遍历句子中的单词。这正是我需要的,但 JS 没有相同的功能。Chrome 有Intl.v8BreakIterator但我正在寻找适用于所有主要浏览器的解决方案。
有一个提案Intl.Segmenter可以解决这个问题。它基本上是 Javascript 上的BreakIterator。但它还没有发布。
如果有办法,你能指出我正确的方向吗?
java - 使用 Java 的 BreakIterator 解决边缘案例
我正在开展一个将 NLP 应用于临床数据的辅助项目,并且我正在使用 Java 的 BreakIterator 将文本分成句子以进行进一步分析。使用 BreakIterator 时,我遇到了 BreakIterator 无法识别以数值开头的句子的问题。
例子:
预期输出:
实际输出:
代码:
任何帮助,将不胜感激。我试图在网上找到答案,但无济于事。
java - BreakIterator 在 Android API 29 和 API 30 中的行为不同
我制作了以下函数将字符串分解为印地语字符。但它的行为与 android API 29 和 API 30 不同。在 Android 29 中,印地语单词 चक्की 被分解为 च क् की 但在 Android 30 中,它被正确分解为 च क्की。
我怎么解决这个问题?
java - BreakIterator 找不到带括号的“ie”或“eg”的正确句子边界
在下面的示例中,BreakIterator
似乎在一个相当简单的示例上失败了。
我使用BreakIterator
不正确,还是这只是一个错误?
示例类:
输出:
似乎bi.preceding(30)
应该返回BreakIterator.DONE
。
JDK 版本 1.8.0。