我有一个想法,可以编写一些网络应用程序来帮助我和其他人更好地学习日语,因为我正在学习这门语言。
我的问题是该网站将主要使用英文,因此它需要混合流利的日文字符,通常是平假名和片假名,但后来是汉字。我离实现这个目标越来越近了;我发现页面和源文件需要是 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 文档的帮助或其他任何问题,也可以随时询问。一开始汉字可能会让人望而生畏。