javascript - 如何将 CJK 文本拆分为单词?

标签 javascript regex nlp cjk

我使用 JavaScript 创建音译。我想知道是否有可能将 CJK 文本拆分成一系列单词,根据某些分词标准定义。还有其他选择吗?

期望的行为:

设置:动的密习近平

结果:[动,的,密,习,近平]

最佳答案

为了正确地做到这一点,人们使用机器学习,因为如您所知,挑战在于这些语言(至少是中文和日文)在书写时没有空格。有一些很棒的工具可以使用几种不同的编程语言来执行此操作:

  • > Rakuten MA适用于中文和日文以及 JavaScript,可能是您的最佳选择。
  • > MeCab是日本 C++ 解析器的鼻祖。
  • (KyTea 也有 C++ 和日文版本,但我没用过。)
  • > Kuromoji是另一个用 Java 写的日语。
  • 可能还有其他我不知道的(抱歉,我对韩语解析器一无所知😭,但韩语不使用空格吗?所以也许会更容易)。

显然,要在浏览器中使用非 JavaScript 工具,您需要在后端运行它们(就像 Kuromoji 为它们的 demo page 提供动力一样)。但即使您可以在浏览器中运行 Rakuten MA,请注意,浏览器需要预先下载一个相当大的数据文件,该算法将使用该数据文件来解析文本:请参阅他们的 demo page。 .

另一种选择可能是通过 Emscripten 将 C++ 工具编译为 JavaScript。我用 MeCab(repodemo page 也预先下载了一个大数据文件)做到了这一点。

请注意,所有这些工具所做的不仅仅是将文本解析为单词。事实证明,他们需要实际进行词法分析和词性标注才能进行准确的分割。因此,如果你想“只是”将一个句子拆分成单词,请准备好处理很多你可能不关心的事情。但我刚刚看到你的目标是音译,所以也许你对此感兴趣? MeCab/Kuromoji 可以告诉您他们对单词发音的猜测。 Rakuten MA只会切分告诉你词性,不会音译(你得查字典等)。

还有比这些更轻量级的方法,例如,日本学习者熟悉 Rikaichan Firefox 扩展(以及其他浏览器的 Rikaikun 和 Rikaisama),我相信它只使用字典和一些规则进行低复杂度的解析。 Rikaichan's source可能对学习有帮助?但是,如果您需要可观的、准确的结果,这不会击败上述解析器之一。

关于javascript - 如何将 CJK 文本拆分为单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49921192/

相关文章:

python - spaCy NLP 管道操作顺序

javascript - void 函数返回值使用 JavaScript

php - 用唯一 ID 标记按钮并在单击按钮时识别此 ID 值

javascript - 通过使用字符串变量作为作用域名称来引用 $scope,例如$范围。[stringVar]

javascript - Ember.js 值与 HTML5 文件上传绑定(bind)

swift - 避免以逗号分隔的双字母单词列表中的重复项

java - 正则表达式匹配用户和用户@域

javascript - 使用 javascript 或 jquery 突出显示阿拉伯文本

elasticsearch - 在Elasticsearch中使用NLP标签

ruby - 如何将单词转换为它们的等效数字?