javascript - 日语/字符编程技巧

标签 javascript language-agnostic unicode nlp cjk

<分区>

我有一个想法,可以编写一些网络应用程序来帮助我和其他人更好地学习日语,因为我正在学习这门语言。

我的问题是该网站将主要使用英文,因此它需要混合流利的日文字符,通常是平假名和片假名,但后来是汉字。我离实现这个目标越来越近了;我发现页面和源文件需要是 unicode 和 utf-8 内容类型。

但是,我的问题出现在实际编码中。我需要的是操纵假名文本字符串。一个例子是:

けす 我需要把那个动词转换成 te 形式けしテ。我更愿意在 javascript 中执行此操作,因为它有助于进行更多操作,但如果必须的话,我将只执行数据库调用并将所有内容保存在数据库中。

我的问题不仅是如何在 javascript 中执行此操作,而且在其他语言中也有哪些技巧和策略可以执行此类操作。我希望更多地投入到开发语言学习应用程序中,但在这方面却迷失了方向。

最佳答案

  • 坚持使用 Unicode 和 utf-8。
  • 远离原生日语编码:euc-jp、shiftjis、iso-2022-jp,但请注意,如果继续,您可能会在某个时候遇到它们。
  • 熟悉用于执行词性分析、分词等复杂工作的分段器。大多数从事日语 NLP(自然语言处理)工作的人使用的标准工具是按流行度/功能排序的。<

MeCab (最初在 SourceForge 上)很棒:它允许您获取文本,例如,

「日本語は、とても難しいです。」

and get all sorts of great info back

kettle:~$ echo 日本語は、難しいです | mecab 
日本語 名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
は   助詞,係助詞,*,*,*,*,は,ハ,ワ
、   記号,読点,*,*,*,*,、,、,、
難しい 形容詞,自立,*,*,形容詞・イ段,基本形,難しい,ムズカシイ,ムズカシイ
です  助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS

这基本上是对词性、阅读、发音等的详细介绍。它也会帮助您分析动词时态,

kettle:~$ echo メキシコ料理が食べたい | mecab 
メキシコ    名詞,固有名詞,地域,国,*,*,メキシコ,メキシコ,メキシコ
料理  名詞,サ変接続,*,*,*,*,料理,リョウリ,リョーリ
が   助詞,格助詞,一般,*,*,*,が,ガ,ガ
食べ  動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい  助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
EOS

但是,文档都是日文的,设置和弄清楚如何按照您想要的方式格式化输出有点复杂。有适用于 ubuntu/debian 的软件包,以及多种语言的绑定(bind),包括 perl、python、ruby...

适用于 ubuntu 的 apt-repos:

deb http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
deb-src http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all

要安装的包: $ apt-get install mecab-ipadic-utf8 mecab python-mecab

应该可以实现我认为的效果。

mecab 的其他替代品是,ChaSen ,这是多年前由 MeCab 的作者(现在顺便在谷歌工作)和 Kakasi 写的,这就没那么强大了。

我肯定会尽量避免推出您自己的结合例程。这样做的问题在于,它需要大量的工作,而其他人已经完成了,并且归根结底,用规则覆盖所有边缘情况是不可能的。

MeCab 以统计为导向,并根据大量数据进行训练。它采用了一种称为条件随机场 (CRF) 的复杂机器学习技术,结果非常好。

和日本人玩得开心。我不确定您的日语水平如何,但如果您需要有关 mecab 文档的帮助或其他任何问题,也可以随时询问。一开始汉字可能会让人望而生畏。

关于javascript - 日语/字符编程技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/815292/

相关文章:

javascript - 外部 .js 中 html 表单的正则表达式验证

javascript - 如何使用chrome扩展名编辑YouTube字幕

language-agnostic - 'port' 这个词对于软件开发来说意味着什么?

c++ - 为什么 towlower() 函数不将 Я 转换为小写 я?

javascript - 自动提交表单并上传文件

javascript - 从 Node js 到 django 的 csrf 问题

java - 检查每个 if 是否都有匹配的 endif

algorithm - 自底向上合并排序在哪里有用?

javascript - 为什么/[\w-+]/是有效的正则表达式,但/[\w-+]/u 无效?

javascript - ExpressJS unicode cookie