【编者按】本文记录了人生中写第一个窗体程序过程中的点点滴滴,虽然程序非常稚嫩,但总归是第一次啊,还是要留下点纪念,以供将来老了无所事事时能有个回忆的东西。
上个学期选了何苯老师的社会计算(很nice的一个老师,而且我们一致认为其比较帅,从他的容貌中还依稀可以看到当年正太的影子),该课程要交大作业,看了一遍所有的题目,我也就对其中计算文本相似的题目有点想法,而且刚学完C#,正好可以拿来练练手,就决定选这个题目了。
题目:互动百科与百度百科的比较
要求:用户通过界面输入词条,程序需要
- 从两个网站分别获取词条信息
- 比较两个词条的相似度
老何说他之所以出这么一个题目,是因为互动百科状告百度百科的那场官司。至于互动为什么要打这场官司,相信大家都懂的:度娘,因为山寨而存在。
根据作业内容,我决定把要写的程序命名为“百科词条相似度计算系统”(恩,程序性能不重要,名字一定要长要霸气)。
我认为该系统主要需要实现以下几个功能:
- 根据词条名称查找该词条网页的URL
- 从网页中提取和词条有关的正文
- 对提取到的文本进行分词
- 计算文本之间的相似度
1. 确定URL
获取词条页面的URL时,我用的工具是httpwatch。安装后,它会集成到IE的工具栏上,界面很简洁,功能很犀利。
来,给功臣露个脸。
互动百科词条URL构造比较简单:
http://www.hudong.com/wiki/词条名称(其中词条名称用UTF8 编码)
如果互动百科中没有该词条,访问这个URL会跳转到另外一个页面,页面中有“您要访问的页面不存在”,“尚未收录词条”,“词条名字为空”之类的错误信息,可以据此判断互动百科中是否收录了该词条。
百度百科词条URL的格式如下:
http://baike.baidu.com/view/数字编号.htm
其中的数字编号可以从访问
http://baike.baidu.com/searchword/?word=词条名称(其中词条名称用GB2312 编码)
返回的内容中用正则表达式提取到,返回的内容大致如下:
<meta http-equiv='Pragma' content='no-cache'> <meta http-equiv='Refresh' content='0;URL=/view/1604.htm'>
同样的,如果返回的数据中没有数字编号,则代表百度百科没有收录该词条。
-------------------------------------------
作者:兔纸张 来源:博客园 (
http://www.cnblogs.com/geiliCode
)