如何将CJK文本拆分成单词?

时间:2018-04-19 12:30:42

标签: javascript regex nlp cjk

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

所需行为:

set:动的密习近平

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

1 个答案:

答案 0 :(得分:1)

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

  • 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可能有助于学习?但是如果你需要可靠,准确的结果,这不会击败上述解析器之一。