前几个星期在北大未名BBS上发了一篇帖子:现在的年轻人都不说吴语了引起了广泛的讨论,并冲到十大榜首。但我们不能空谈,还是要做一些切实的事情。首先是自己得说好吧。
目前的吴语学堂只提供在线版词典,没有离线版。其实离线版词典只要有人想做是没有什么难度的,不清楚为什么还没有。
能够直接联系网站的站长要到资料自然是最省力的方法,我也的确联系了。但我突然想自己爬取下来,锻炼下编程技能。下面讲一下实现的思路:
吴语学堂的词典有发音字典、词典,可以根据拼音、汉字进行检索。所以我打算词典的词条就按这个来:字、词及发音。
因为字词太多了,还有很多生僻字,我没有办法穷尽,而拼音是有限的,却能表达一系列汉字。正好学堂的检索支持拼音,可以实现这一需要。
我首先是检索所有韵母,获取词语表。因为只检索韵母不显示具体的字,需要将声母和韵母拼起来获取发音字表。但发现吴语中有介音的存在,比如chieu (恘),会少生成一些拼音。这时我正好发现了网站的静态文件可以直接访问,里面就有按拼音命名的语音文件,于是将文件都下载下来,补充缺少的拼音。
以上获取的内容形式如下:繁体词条 简体词条 发音 具体的词条页面链接。
这相当于一个索引。基于这些内容,以发音为一个Python中的字典的键值,简繁词条为值,就可以生成一个可以检索发音查看有同一发音的词的词典。
再把每个词条的页面里的解释下载下来,和索引合并就是一个词典文件了。
以下再说一下技术方面的内容:
1、网站使用了ThinkPHP开发框架,页面代码比较清楚明了。检索词的时候会分页显示,切换分页用的是ajax。用调试工具可以发现一个用来post信息的地址,设置参数可以进行针对性的检索。我用这个来获取词和字的索引。我是用了b4j来下的,用了最新出来的wait for,比较方便。
2、使用python解析html,用上beautifulsoup加上点正则,比较容易。注意正则要使用非贪婪模式,用.*?另外还要设置支持换行匹配。
3、发音文件,直接在网站静态文件浏览页面里复制页面内容,用idm下载剪切板的所有链接即可。
4、使用mdict自带的mdxbuilder做mdx。看了下帮助文档,选择了mdict html作为词典保存的格式。说明里讲了如何调用发音,说只支持wav,还得把下的mp3转换一下。mdd文件和mdx文件名字一样就会自动调用,所以不用重新生成mdx时再生成mdd。
最后是词典文件的下载地址:https://pan.baidu.com/s/1boIMq6b
最新更新
-
发现网站在检索in、poq等拼音时会没有结果,导致词典缺失了不少字。用吴语学堂群的苏州话字表补上了缺失的字。
-
发现拼音索引里多音字只保存了一种情况。通过解析检索内容页,将多音字的每个发音单列开来,保留了多音字的多个发音。
目前词典收录了6076个单字、9363个词语。