读张爱玲笔下的女子:根据用户输入的拼音生成相应的汉字

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 08:03:40

 

 

刚在网上查了,有PinYin4j可以将汉字转为拼音。但怎么将拼音转换为(匹配出)汉字呢?

 

http://www.cnblogs.com/ATGO/archive/2008/05/15/1198624.html这个大牛把汉字都搞了个id。。可以下载看看
http://files.cnblogs.com/ATGO/ProjectPinYinHanZi.rar
里面有PinYinHanZi.xml ,,,如下(一部分):
 
  1
 
  a
 

 
  2
 
  a
 

 
  3
 
  a
 

 
  4
 
  a
 

 

可以猜想一下,google等拼音输入法肯定有某个模块负责对字符的解析、匹配。
所以肯定留了一些接口。
是否可以试试通过JNI调用这些本地方法? //这个算是比较靠谱(但是不清楚接口)

 

 

拼音输入法来说,使用的都是词库。这个并不难实现,实际上都是有拼音到词的转换,如果需要你可以下载一些回来。只是同一个拼音会有一堆词而已,


如果你需要,你可以下载一些公开词库格式的输入法让它生成一份给你
例如:你下载极点五笔输入法,它有导出拼音词库的功能。导出的词条都有150000条了。

 

 

大家说的越来越接近问题的关键了:
1、23L说的XML文件,对于小型的系统可行,但是大的呢?您要考虑使用什么解析方式,还有需要专人来写,需求有改动的话改也不好改。
2、24L说的Google 的这些接口肯定是有的,但是具体在哪儿呢?我搜了,还是找不到。就像上次,我找他们Url的编码格式,网上说法一大堆,终没有一个统一的
3、26L说的导出拼音词库,我正在找。。。。
谢谢大家,继续等贴!

 

 

http://code.google.com/p/javachinesepinyin/
这是一个中文拼音输入法的Java实现,基于HMM模型,无词典,能完成拼音转汉字,和汉字转拼音的任务,并结合Edit Distance使其具有中文输入纠错功能。
下载一个试试

 

 

 

1, 调用输入法的本地接口

2,  调用输入法的远程接口(WEBAPI )

例如:搜狗云输入法

 

http://www.keakon.net/2009/11/03/%E6%90%9C%E7%8B%97%E4%BA%91%E8%BE%93%E5%85%A5%E6%B3%95API

昨天搜狗推出了云输入法,不过没去研究,今天闲得蛋疼,就又来玩了。

首先是看源代码,一眼就看到:http://web.pinyin.sogou.com/web_ime/init2_utf8.php
于是打开来,发现是加密过的JavaScript代码,懒得去研究,还是直接抓包吧。

于是启动Firefox,用Live HTTP Headers查看了一下,便发现了这种地址:http://web.pinyin.sogou.com/web_ime/get_ajax/duziele.key
用浏览器打开一看,结果是:

ime_query_res="%E8%82%9A%E5%AD%90%E9%A5%BF%E4%BA%86%EF%BC%9A7%09+%E8%82%9A%E5%AD%90%E9%A5%BF%EF%BC%9A5%09+%E8%82%9A%E5%AD%90%EF%BC%9A4%09+%E7%8B%AC%E8%87%AA%EF%BC%9A4%09+%E7%8B%AC%E8%B5%84%EF%BC%9A4%09+%E7%8B%AC%E5%AD%90%EF%BC%9A4%09+%E7%8A%8A%E5%AD%90%EF%BC%9A4%09+%E8%B5%8C%E8%B5%84%EF%BC%9A4%09+%E6%AF%92%E8%B5%84%EF%BC%9A4%09+%E6%9D%9C%E6%A2%93%EF%BC%9A4%09+%E6%9D%9C%E5%AD%97%EF%BC%9A4%09+%E8%82%9A%E4%BB%94%EF%BC%9A4%09+%E5%BA%A6%EF%BC%9A2%09+%E8%AF%BB%EF%BC%9A2%09+%E9%83%BD%EF%BC%9A2%09+%E7%8B%AC%EF%BC%9A2%09+%E6%AF%92%EF%BC%9A2%09+%E6%9D%9C%EF%BC%9A2%09+%E6%B8%A1%EF%BC%9A2%09+%E8%B5%8C%EF%BC%9A2";ime_query_key="duziele";

一看就知道是URL编码,于是拿出Python开始解码:

>>> from urllib2 import unquote

>>> ime_query_res="%E8%82%9A%E5%AD%90%E9%A5%BF%E4%BA%86%EF%BC%9A7%09+%E8%82%9A%E

5%AD%90%E9%A5%BF%EF%BC%9A5%09+%E8%82%9A%E5%AD%90%EF%BC%9A4%09+%E7%8B%AC%E8%87%AA

%EF%BC%9A4%09+%E7%8B%AC%E8%B5%84%EF%BC%9A4%09+%E7%8B%AC%E5%AD%90%EF%BC%9A4%09+%E

7%8A%8A%E5%AD%90%EF%BC%9A4%09+%E8%B5%8C%E8%B5%84%EF%BC%9A4%09+%E6%AF%92%E8%B5%84

%EF%BC%9A4%09+%E6%9D%9C%E6%A2%93%EF%BC%9A4%09+%E6%9D%9C%E5%AD%97%EF%BC%9A4%09+%E

8%82%9A%E4%BB%94%EF%BC%9A4%09+%E5%BA%A6%EF%BC%9A2%09+%E8%AF%BB%EF%BC%9A2%09+%E9%

83%BD%EF%BC%9A2%09+%E7%8B%AC%EF%BC%9A2%09+%E6%AF%92%EF%BC%9A2%09+%E6%9D%9C%EF%BC

%9A2%09+%E6%B8%A1%EF%BC%9A2%09+%E8%B5%8C%EF%BC%9A2"

>>> print unicode(unquote(ime_query_res), 'utf8')

肚子饿了:7     +肚子饿:5      +肚子:4        +独自:4        +独资:4

+独子:4        +犊子:4        +赌资:4        +毒资:4        +杜梓:4

+杜字:4        +肚仔:4        +度:2  +读:2  +都:2  +独:2  +毒:2  +杜:2

+渡:2  +赌:2

这就是输入“duziele”显示的结果。

因此你应该猜到了,想查任意拼音的话,就用这个地址:http://web.pinyin.sogou.com/web_ime/get_ajax/想查的拼音.key

当然你可能没有Python,那么浏览器总有吧,于是用JavaScript也能搞定。
在地址栏输入下面的代码并回车:

javascript:alert(decodeURIComponent("%E8%82%9A%E5%AD%90%E9%A5%BF%E4%BA%86%EF%BC%9A7%09+%E8%82%9A%E

5%AD%90%E9%A5%BF%EF%BC%9A5%09+%E8%82%9A%E5%AD%90%EF%BC%9A4%09+%E7%8B%AC%E8%87%AA

%EF%BC%9A4%09+%E7%8B%AC%E8%B5%84%EF%BC%9A4%09+%E7%8B%AC%E5%AD%90%EF%BC%9A4%09+%E

7%8A%8A%E5%AD%90%EF%BC%9A4%09+%E8%B5%8C%E8%B5%84%EF%BC%9A4%09+%E6%AF%92%E8%B5%84

%EF%BC%9A4%09+%E6%9D%9C%E6%A2%93%EF%BC%9A4%09+%E6%9D%9C%E5%AD%97%EF%BC%9A4%09+%E

8%82%9A%E4%BB%94%EF%BC%9A4%09+%E5%BA%A6%EF%BC%9A2%09+%E8%AF%BB%EF%BC%9A2%09+%E9%

83%BD%EF%BC%9A2%09+%E7%8B%AC%EF%BC%9A2%09+%E6%AF%92%EF%BC%9A2%09+%E6%9D%9C%EF%BC

%9A2%09+%E6%B8%A1%EF%BC%9A2%09+%E8%B5%8C%EF%BC%9A2"))


虽然该API似乎没有查referer、cookie等字段(可能是出于效率考虑),但由于不是JSNOP格式的,没法直接用AJAX调用,所以最方便的方法是使用YQL,将其转换成JSONP,只是这样速度会慢很多。

我就懒得去做个山寨输入法了,感兴趣的可以自己去试试~

 

//非官方的搜狗云输入法 API

ibus-sogoupycc 做得更加完整
http://code.google.com/p/ibus-sogoupycc/