锁定老帖子 主题:关于PinYin4J的原理解析
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-21
char c1 = '我'; String s = Integer.toHexString(c1).toUpperCase(); //6211 接下来程序便从初始化过的Properties中获取相应的拼音,即6211 (wo3) jar包中的三个文件之一 /pinyindb/unicode_to_hanyu_pinyin.txt 附件中包含这三个文件,相信大家一看便知晓了, 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-09-21
那么对多音字的处理呢?特别是特定词语?
|
|
返回顶楼 | |
发表时间:2011-09-22
i2534 写道 那么对多音字的处理呢?特别是特定词语?
多音字肯定处理不了的 |
|
返回顶楼 | |
发表时间:2011-09-22
多音字呀,这的确是个问题
|
|
返回顶楼 | |
发表时间:2011-09-22
我也在一直思考这个问题,原来是吧unicode码和pinyin对应了起来啊,呵呵
这个小东西其实挺有意思,用的地方应该有很多 |
|
返回顶楼 | |
发表时间:2011-09-22
完美的休止符 写道 i2534 写道 那么对多音字的处理呢?特别是特定词语?
多音字肯定处理不了的 PinYin4J 支持多音字处理的 PinYin4J 你可以这样子来理解,每个字符(中文字)在java中都可以转化成一个int值或者说每一个中文字都是一个char字符,每个字符最终存储在计算机中的都是数字,其实到这里问题就解决了。 PinYin4J 是把已知的中文字 int值(用的是16进制)和对应的拼音(包含多音字、读音声调)都存在在txt文件中的,然后在程序初次加载的时候,读出文件加载到hashtable中(hashtable中key是16进制的数,value是拼音),查字的时候先把字转换成16进制的数,然后从hashtable中取对应的拼音... 这个基本就是PinYin4J 实现的思路了。至于源代码中写了那么多 自己debug 一路下去,什么原型都能看到吧... |
|
返回顶楼 | |
发表时间:2011-09-22
6211 (wo3)
弱弱的问一下,这里的“3”表示什么意思? |
|
返回顶楼 | |
发表时间:2011-09-22
fainfy 写道 6211 (wo3)
弱弱的问一下,这里的“3”表示什么意思? 声调,第三声 原来是有提供toPinyinString(String input)这个接口的,后来就去掉了,估计就是因为多音字的问题 不考虑多音字的话,可以直接简化成一一映射,更简单一些 |
|
返回顶楼 | |
发表时间:2011-09-22
完美的休止符 写道 i2534 写道 那么对多音字的处理呢?特别是特定词语?
多音字肯定处理不了的 很遗憾,pinyin4j真的可以处理多音字 |
|
返回顶楼 | |
发表时间:2011-09-22
包含多少汉字??
|
|
返回顶楼 | |