java将汉语拼音转为汉字的算法,类似输入法

battier 发布于 2011/07/25 10:28
阅读 5K+
收藏 2
使用pinyin4j可以很好的将汉字转为拼音,但是将拼音转为汉字目前还算是空白,其实目前的输入法查词的实现,包括搜索引擎的搜索,都包含该技术的实现,那么,到底该怎样实现这样一个复杂的匹配查询呢?等待大侠们的讨论!
加载中
0
火眼金睛容嬷嬷
火眼金睛容嬷嬷
在铁道部的客票系统和pwmis的字段标准中,车站、线路表中都设计有全拼和字头拼音字段。对于用户快速检索,这个是必须考虑的。当然,可以常用词汇提前生成,单独建表,也不错
0
MUTEX
MUTEX
这还不简单?找个汉语拼音码表然后查表就行了。找不到用Pinyin4j自己生成一个也容易啊。
battier
battier
??关键是怎么去查码表?
0
opal
opal
同音字是相当的多啊
battier
battier
根据需求,显示出可能匹配的数据
0
火眼金睛容嬷嬷
火眼金睛容嬷嬷
这个要看应用了啊,自动完成可以做到有限词汇的快速输入。但是你说要做到自然语言的……阿弥陀佛,不必了吧。当年废汉字为拼音文字的提议之所以没有成功,很大程度上,是人都不能准确转换,何况机器……
battier
battier
大哥你的那个加拼音字段这个想法不错,我之前也有所考虑,关键是我们的数据结构不允许随便增减,全国统一的,所以说只能是另谋出路!
battier
battier
是的,自然语言的实现不太现实,仅仅是尽量去匹配,尽量而已......
0
笨蛋EGG
笨蛋EGG

我正在想做这个·····不要求区分什么同音字,就是想做一个同手机的通讯录那样的查询就可以了,打一个字母,把名称首字中拼音首字母匹配的找出来就好了··这个不知道要怎么做·····

我现在用 #RMSDAO 做存储管理,准备是直接用 #RMSDAO 来查找……但是拼音搜索不知道怎么做……

battier
battier
我目前的想法是:先把应用想关的关键字写入到一个文件当中(相当于写入内存,这样可以减少数据库压力),然后根据用户输入的拼音,去匹配这个数据字典当中的关键字,进而显示出来
笨蛋EGG
笨蛋EGG
@袁国涛 : 不知道s40本身的通讯录是怎么实现的····速度非常快的····回头试一试,谢谢大哥!
火眼金睛容嬷嬷
火眼金睛容嬷嬷
加一个拼音字头的字段呗
0
lovedreamland
lovedreamland

引用来自“袁国涛”的答案

在铁道部的客票系统和pwmis的字段标准中,车站、线路表中都设计有全拼和字头拼音字段。对于用户快速检索,这个是必须考虑的。当然,可以常用词汇提前生成,单独建表,也不错

铁道部的车站也就那么多,算上多音字,

但是要把所有汉字建一个库就有些庞大了~

火眼金睛容嬷嬷
火眼金睛容嬷嬷
确实,全国车站裁撤之前也就七千多个,加上几百条线路也才把钱左右。根据现代汉语常用字表,常用字两千五,次常用字一千。但是中文要命的在于通过汉字的匹配组成词汇而不是单个的汉字。所以,确实不够用。两种应用,要么用类似输入法的词库,要么用搜索引擎的语料库。反正都是挺大的数据库。用于实时搜索匹配,效率确实不高。
返回顶部
顶部