首页 新闻 会员 周边

C# 如何获取一个汉字词组的拼音?

0
悬赏园豆:10 [已解决问题] 解决于 2015-07-09 07:24

是词组,不是汉字,主要想处理多音字的问题?我已有汉字字典拼音数据表,但组合出的拼音结果数据量太大。

想做一个拼音搜索的功能,本来是想着把所有拼音的排列组合都写到一个字段,然后只要Like,不管是不是多音字,一定有一个可以匹配上,但试了一句“银行行长不会骑自行车”,我要检索的标题比这个长的非常多,大概在30个汉字以内,这个的组合结果也已超过200个,长度超过7000,其它的都不敢想。

或者谁有没有更好的方案,首字母估计不行,数据量太大了,首字母搜出来的内容太多了,搜索就没有意义了。

yinhanghangchangbuhuiqizihangche,yinhanghangchangbuhuiqizihangju,yinhanghangchangbuhuiqizihengche,yinhanghangchangbuhuiqizihengju,yinhanghangchangbuhuiqizixingche,yinhanghangchangbuhuiqizixingju,yinhanghangchangbukuaiqizihangche,yinhanghangchangbukuaiqizihangju,yinhanghangchangbukuaiqizihengche,yinhanghangchangbukuaiqizihengju,yinhanghangchangbukuaiqizixingche,yinhanghangchangbukuaiqizixingju,yinhanghangzhangbuhuiqizihangche,yinhanghangzhangbuhuiqizihangju,yinhanghangzhangbuhuiqizihengche,yinhanghangzhangbuhuiqizihengju,yinhanghangzhangbuhuiqizixingche,yinhanghangzhangbuhuiqizixingju,yinhanghangzhangbukuaiqizihangche,yinhanghangzhangbukuaiqizihangju,yinhanghangzhangbukuaiqizihengche,yinhanghangzhangbukuaiqizihengju,yinhanghangzhangbukuaiqizixingche,yinhanghangzhangbukuaiqizixingju,yinhanghengchangbuhuiqizihangche,yinhanghengchangbuhuiqizihangju,yinhanghengchangbuhuiqizihengche,yinhanghengchangbuhuiqizihengju,yinhanghengchangbuhuiqizixingche,yinhanghengchangbuhuiqizixingju,yinhanghengchangbukuaiqizihangche,...

空明流光的主页 空明流光 | 初学一级 | 园豆:106
提问于:2015-07-08 16:30
< >
分享
最佳答案
0

有个汉字转拼音的库,微软提供的,直接贴一篇文章链接

http://www.cnblogs.com/yazdao/archive/2011/06/04/2072488.html

收获园豆:10
liqipeng | 小虾三级 |园豆:1160 | 2015-07-08 18:13

这个是不行的,它没办法处理多音字,而我这里有近乎三分之一是多音字

空明流光 | 园豆:106 (初学一级) | 2015-07-08 18:46

@沧海一杰: 不好意思,具体要求没看清楚。

我理解的需求是将输入的一长串拼音找到对应的汉字词语或者句子,觉得这个需求的比较难实现,基本上好像要实现一个输入法了,还要非常智能、像搜索引擎。

 

说下我想到的不完善的考虑,只针对拼音输入,汉字的、混合的不管:

1. 找一个常用词词库,比如从搜狗那里下载(http://pinyin.sogou.com/dict/detail/index/11640,版权问题?);

2. 将常用词词库导入数据库,然后用程序生成出对应的拼音,可能是一对多(当然搜狗的词库部分含多音字的词语已经注音了)。对于有注音的,根据注音导入拼音;没有注音的用程序生成(用之前提到的那个Visual Studio International Pack),多音字则组合生成多条记录,比如“行长”生成hangzhang、xingzhang、hangchang等多条记录。可以形成常用词--拼音对照库。

3. 然后将用户输入的拼音拿到2中的对照库进行匹配,找到匹配的结果,但是对于用户的输入是要按拼音分组的,才能匹配到词语。怎么分组没想到。是不是可以随着用户的一个字母一个字母输入逐步匹配然后形成分组,没考虑清楚。

 

好吧,觉得这个没那么容易实现。

liqipeng | 园豆:1160 (小虾三级) | 2015-07-09 00:53

@liqipeng: 其实已经通过对多音字所有排列组合都列出来,不管你输入的是多音字的哪个读音,都能查出来,只不过,这一列占的空间太大了,平均下来这一列长度在2000,如果实在不行,也只有这么干了,起码精确度对我来说高于一切

空明流光 | 园豆:106 (初学一级) | 2015-07-09 06:58

@沧海一杰: 没懂进行排列组合的意义,用户的输入不是不确定的吗,汉字也太多任意组合,除非实际需求是特殊的。

liqipeng | 园豆:1160 (小虾三级) | 2015-07-09 09:26

@liqipeng: 数据库中有一张表,要根据标题列进行搜索,拼音主要是根据标题进行搜索的,因为标题里的大多是古文,通假字很多,所以用汉字搜索,结果可能不一定全面,用拼音搜会好很多。比如说有一个病名叫“候子”,也有叫“瘊子”,古文中还有写成“猴子”的,拼音搜索就全覆盖了

空明流光 | 园豆:106 (初学一级) | 2015-07-09 14:14

@沧海一杰: 还有搜“自行车”,排列组合后,不论你搜 "zixingche" 还是 “zihangche” 都能搜出自行车、

空明流光 | 园豆:106 (初学一级) | 2015-07-09 14:15

@沧海一杰: 哦,明白了,是搜索标题,所以范围是比较明确的,我原来以为是全文检索呢。

liqipeng | 园豆:1160 (小虾三级) | 2015-07-09 15:37
其他回答(2)
0

有这样的软件。免费的也可以,但是效果不是很好。以前还玩过。当时医院有免费叫号的软件,尝试了一下。不过忘记了什么名字,但确实可以根据汉字发出读音。

lucika.zh | 园豆:62 (初学一级) | 2015-07-08 17:12

发音很好做,我已经做出来了,这个我写的有点不清,我要的是拼音。

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2015-07-08 17:29
1

我也就不说关于你的智商以及你的小学语文到底是哪科老师教的事了。

这样,你研究出来,我出价500万。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-07-08 23:20

@沧海一杰: 我从小学到大学语文数学都是全校前几名,还经常作文获奖,请问我的语文哪里差了?
其实已经实现了,只不过,这一列占的空间太大了,平均下来这一列长度在2000以上,我觉得这列太长占用空间太大才来这里问的
问题是你只出500万,太少了

你这小娃,以后不懂就不要说话。这里是解决问题的,不是说你想买啥就能买到的。有这扯咸蛋的机会你不如去喝杯茶!

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2015-07-09 07:01

@沧海一杰: 别人是专家6级 不虚心求学 还妄自菲薄

支持(0) 反对(0) biubiuli | 园豆:200 (初学一级) | 2015-07-13 18:17

@沧海一杰: 狂妄自大

支持(0) 反对(0) biubiuli | 园豆:200 (初学一级) | 2015-07-13 18:18

@biubiuli: 哈哈,本人确实狂妄,你说的一点没错。可你也不像个没头苍蝇吗?这里是解决问题的地方,这个人根本就不是来解决问题的,解决不了问题等级有个屁用,他是来找茬的,你也是吧。

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2015-07-30 12:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册