2009年6月29日星期一

Google Trends和Google Insights

  Google Trends(谷歌趋势)发布过中文版,是Google推出的一款基于搜索日志分析的应用产品,通过这个工具可以知道某一搜索关键词在Google被搜索的频率和相关统计数据。Google Insights是Google推出的一个新服务,目前只有英文版,功能比Google Trends多一些,相当于Google Trends的升级版,主要用于市场分析等商业用途。

  Google Insights和Google Trends的区别:

  Google官方解释,Google Insights和Google Trends使用相同的数据来源,Google Insights主要面向那些研究人员或广告商的那类需要更多更高级功能的用户。

  因此我们知道,Google Trends和Google Insights由于使用同一数据来源,因此统计的结果理论上应该是相同的。

  继续昨天讨论的问题,对于“儿子”这个关键字的统计,Google Trends搜索“儿子”和Google Insights搜索“儿子”的统计的结果的确完全一致,统计曲线吻合,两者均将6月6日和6月19日做为两个峰值。

搜索“儿子”

Google Trends搜索“儿子”

搜索“儿子”

Google Insights搜索“儿子”

  对于其他关键字的搜索,两者的统计曲线也是完全吻合的,大家可以搜索一下自己所想得到的热门关键字来看看,例如“百度”、“QQ”等。

  但是,对于“儿子与情人”、“儿子母亲”等等类似的关键字,两者的统计却不尽相同。

  在Google Trends上看,之前搜索量很低,6月18号开始出现大量搜索,之后呈现不规则的曲线下降,后来还有反弹。

搜索“儿子与情人”

Google Trends搜索“儿子与情人”

  而Google Insights显示从11号开始出现“线性”增长趋势,到了17号达到顶峰,之后出现“线性”下降趋势,也就是说该关键词的搜索量按照固定比例增加,第一天10个,第二天20个,第三天30个,这种搜索现象非常奇特。

 

搜索“儿子与情人”

Google Insights搜索“儿子与情人”(全球范围)

搜索“儿子与情人”

Google Insights搜索“儿子与情人”(北京地区)

  我觉得,Google Insights对于“儿子与情人”等关键字的统计数据有很多不合理的地方。

  首先是搜索顶点,6月18号央视新闻之后,该关键词的搜索量不升反降,和Google Trends相矛盾,也不符合常识,因为6月18号之后肯定会有大量网民对其进行搜索验证的,从而带动这个关键词搜索量上升。

  其次是搜索曲线,对于“儿子与情人”等等关键字,Google Trends显示的是一条曲线,先暴增,然后下降,然后再增,较为符合常识,而Google Insights显示的是一条线性增长和下降的直线,也就是说,每天增加的搜索量按比例呈有规则的增长,并且按比例下降,特别是18号之后也没有任何波动,依旧呈现“线性”下降趋势,这显然不符合常识。

  最后,最为重要的一个证据是,单独以北京地区范围搜索“儿子与情人”,会发现其数据和全球范围Google Insights搜索“儿子与情人”的数据有极大出入,北京地区的Google Insights数据呈现完整的曲线,顶峰是6月18日,与Google Trends的曲线基本相同,北京拥有大量网络用户,并曾被匿名用户指责刷数据,但Google Insights这两个曲线明显呈现自相矛盾的地方,很明显,Google Insights对于该关键字搜索的全球数据真实性存在极大的疑问。

  因此可以看出,Google Insights对于上述几个关键词的统计结果有很多不合常识的地方,和实际情况以及Google Trends的数据有很多矛盾之处,相对来说Google Trends的统计数据更具准确性,更值得参考,做分析和判断应该以Google Trends的数据为准。

2009年6月28日星期日

谷歌被阴谋陷害之谜

  这两天看到Google Docs上有匿名人士写的一篇文章,称根据谷歌趋势和Google Insights来分析,谷歌上搜索“儿子”后出现的低俗内容都是之前人为刷关键字形成的,为了验证真伪,我也通过使用Google TrendsGoogle insights对“儿子”这个关键词进行了分析。

  根据Google Trends的显示,“儿子”的搜索量在6月17日的时候还非常低,在18日的时候就开始上扬,6月19日达到了顶峰,而央视新闻联播和焦点访谈抨击谷歌的节目正好是在6月18日晚上播出,因此“儿子”的搜索量剧增完全有可能是因为大量观众看完新闻后进行的搜索而产生的,我记得我自己当时看完新闻后就搜索过两次,相信对此关注的网民都会进行一番搜索,从而导致其搜索量的剧增。而下面的新闻引用量的增长恰好和上面的搜索量同步,说明新闻媒体也是在6月19日才大量报道这一新闻的。

谷歌真的被陷害了吗?

Google Trends上关于“儿子”的三十天搜索数据

搜索儿子

Google Trends上关于“儿子”的“搜索建议关键词”的三十天搜索数据

  支持Google的网友的主要根据是下面这张图,这也是比较令我困惑的地方,从这张图上看,的确是这几个关键字从11号开始搜索量上升,并且持续到17号,并且只有北京地区有同时搜索这几个关键词的行为。

搜索儿子

  按道理来说,Google Insights应该和Google Trends的数据是相同的,但是同样的关键字,我在Google Trends上进行查询,却是另一个结果,Google Trends显示这几个关键词在17号的搜索还是0,18号开始猛增,同时搜索城市包括北京、广州、上海三个城市,这两个系统按道理来说都是调用Google的数据中心,为什么同一个数据却出现不同的结果,这也是令我困惑的地方。

搜索儿子

  我在稍后的一篇文章中指出,Google Insights的数据真实性存在极大的疑问,使用Google Insights在全球范围内和单独在北京地区搜索该关键字,呈现出截然不同的两个结果,如下图所示。 

搜索“儿子与情人”

Google Insights搜索“儿子与情人”(全球范围)

搜索“儿子与情人”

Google Insights搜索“儿子与情人”(北京地区)

  从上图可见,单独以北京地区范围搜索“儿子与情人”,会发现其数据和全球范围Google Insights搜索“儿子与情人”的数据有极大出入,北京地区的Google Insights数据呈现完整的曲线,顶峰是6月18日,与Google Trends的曲线基本相同,北京拥有大量网络用户,并曾被匿名用户指责刷数据,但Google Insights这两个曲线明显呈现自相矛盾的地方,很明显,Google Insights对于该关键字搜索的全球数据真实性存在极大的疑问。

  因此,说谷歌搜索“儿子”的信息是“刷”出来的,并没有足够的证据,恰恰相反,反面的证据倒是不少,我在2007年2月,谷歌“搜索建议”刚刚上线的时候,我就曾经截过一幅图,下图就是那时候搜索“儿子”所产生的“搜索建议”,说明搜索这个关键词的确有些问题。

搜索儿子

2007年2月搜索“儿子”截屏

  对于新闻联播和焦点访谈的报道模式以及采访形式,很多人都很反感,因为其对于Google的不良信息有很多夸大其辞和片面的说法,并且后来还出现Google被域名劫持的事件,令大家都很气愤,但是己所不欲、勿施于人,如果我们采用CCTV的形式来反驳CCTV,甚至用一些片面或者带有倾向性的言论进行误导,这反而可能会使事情变得更糟,他们说的谎话已经够多了,如果我们也用谎话来回击他们,那和他们有什么不同呢?

2009年6月27日星期六

谷歌提供迈克尔·杰克逊正版音乐下载

  一清早,在Twitter和饭否上,就听到一个令人震惊的消息,流行音乐之王(the King of Pop)——迈克尔·杰克逊去世了。

  迈克尔·杰克逊是令我怀念的一个歌手,记得我第一次听他的歌曲,还是在八十年代,记得那时候,我在一台小小的十四寸黑白电视机上,第一次看到了Michael Jackson的MTV,听到了他的歌声,在那个娱乐极度贫乏的年代,是多么的震撼。之后,有了流行音乐、霹雳舞、摇滚等,人们的娱乐生活才开始多起来,九十年代,MJ的好歌不断推出,对于那个曾经没有多少娱乐的年代,迈克尔.杰克逊给了我们很大的惊喜,他是当之无愧的世界流行音乐之王。

  至今,我的电脑里还保留着我最喜欢Michael Jackson的几首歌Beat It、Black Or White、Dangerous、JAM、Heal The World等歌曲,我最喜欢他的专辑是《危险之旅(Dangerous)》。

  值得一提的是,谷歌中国在谷歌音乐搜索页面专门制作了“迈克尔·杰克逊”专题,这个专题囊括了迈克尔.杰克逊几十年音乐生涯中的全部24张正版音乐专辑,其中包括销售6000万张、音乐史上销售量无出其右的专辑《颤栗》(Thriller),实在是不错的好东西,喜欢怀旧的网友可以下载听一下。

Michael Jackson

  附:新闻资料——迈克尔.杰克逊(Michael Jackson)生平简介

  迈克尔·杰克逊(1958.8.29-2009.6.25)(Michael Jackson)被誉为流行音乐之王(the King of Pop),是继猫王之后西方流行乐坛最具影响力的音乐家,他开创了现代MTV,他把流行音乐推向了巅峰,他拥有世界销量第一的专辑《THRILLER》,销量达1.04亿(2006年吉尼斯世界纪录认证数据)。据2006年底统计,其正版专辑全球销量已超过7.5亿,被载入“吉尼斯世界记录大全”。他是音乐史上第一位在美国以外卖出上亿张唱片的艺术家。2006年,吉尼斯世界纪录颁发了一个最新认证:世界历史上最成功的艺术家! 他一个人支持了世界上39个慈善救助基金会,保持着2006年的吉尼斯世界个人慈善纪录,是全世界以个人名义捐助慈善事业最多的人。

2009年6月26日星期五

国内外DNS服务器地址列表

  DNS(Domain Name System)是域名解析服务器的意思,它在互联网的作用是把域名转换成为网络可以识别的IP地址。目前国内电信运营商通过使用DNS劫持的方法,干扰用户正常上网,使得用户无法访问Google、Gmail、Google AdSense、Google Maps等常用服务,昨天我介绍了使用OpenDNS的方法解决这个问题,由于OpenDNS的服务器在美国,如果使用的人多了有可能会速度变慢,因此今天我介绍一些其他国外的DNS服务器地址,供大家选择。

  通常来说,香港、韩国、日本等国的DNS服务器速度会比较快,大家可以多用几个试试,尽量选择一个自己访问最快的DNS服务器,中国的电信运营商都是流氓,DNS服务器,早换早轻松。

  港澳台DNS服务器地址

  香港:
  205.252.144.228
  208.151.69.65
  202.181.202.140
  202.181.224.2

  澳门:
  202.175.3.8
  202.175.3.3

  台湾:
  168.95.192.1
  168.95.1.1

  国外DNS服务器地址

  美国:
  208.67.222.222
  208.67.220.220
  165.87.13.129
  165.87.201.244
  205.171.3.65
  205.171.2.65
  198.41.0.4
  198.41.0.4
  198.32.64.12
  192.33.4.12
  192.203.230.10
  192.5.5.241
  192.112.36.4
  192.36.148.17
  192.58.128.30
  192.9.9.3
  193.0.14.129
  128.9.0.107
  128.8.10.90
  66.33.206.206.
  208.96.10.221
  66.33.216.216
  205.171.3.65
  205.171.2.65
  165.87.13.129
  165.87.201.244

  加拿大:
  209.166.160.36
  209.166.160.132

  英国:
  193.0.14.129

  日本
  202.12.27.33
  202.216.228.18

  韩国:
  164.124.101.31
  203.248.240.31
  168.126.63.60
  168.126.63.61

  新西兰:
  202.27.184.3

  泰国:
  209.166.160.132
  202.44.8.34
  202.44.8.2

  印度:
  202.138.103.100
  202.138.96.2

  国内各省市DNS服务器地址

  北京:
  202.96.199.133
  202.96.0.133
  202.106.0.20
  202.106.148.1
  202.97.16.195
  202.138.96.2

  深圳:
  202.96.134.133
  202.96.154.15

  广州:
  61.144.56.100
  61.144.56.101

  广东:
  202.96.128.86
  202.96.128.143

  上海:
  202.96.199.132
  202.96.199.133
  202.96.209.5
  202.96.209.133

  天津:
  202.99.96.68
  202.99.104.68

  广西:
  202.96.128.68
  202.103.224.68
  202.103.225.68

  河南:
  202.102.227.68
  202.102.245.12
  202.102.224.68

  河北:
  202.99.160.68

  福建:
  202.101.98.54
  202.101.98.55

  厦门:
  202.101.103.55
  202.101.103.54

  湖南:
  202.103.0.68
  202.103.96.68
  202.103.96.112

  湖北:
  202.103.0.68
  202.103.0.117
  202.103.24.68

  江苏:
  202.102.15.162
  202.102.29.3
  202.102.13.141
  202.102.24.35

  浙江:
  202.96.102.3
  202.96.96.68
  202.96.104.18

  陕西:
  202.100.13.11
  202.100.4.16
  202.100.4.15
  202.100.0.68

  山东:
  202.102.154.3
  202.102.152.3
  202.102.128.68
  202.102.134.68

  山西:
  202.99.192.68
  202.99.198.6

  四川:
  202.98.96.68
  61.139.2.69

  重庆:
  61.128.128.68

  成都:
  202.98.96.68
  202.98.96.69

  辽宁:
  202.98.0.68
  202.96.75.68
  202.96.75.64
  202.96.69.38
  202.96.86.18
  202.96.86.24

  安徽:
  202.102.192.68
  202.102.199.68
  10.89.64.5

  吉林:
  202.98.5.68
  202.98.14.18
  202.98.14.19

  江西:
  202.101.224.68
  202.109.129.2
  202.101.240.36

  新疆:
  61.128.97.74
  61.128.97.73

  贵州:
  202.98.192.68
  10.157.2.15

  云南:
  202.98.96.68
  202.98.160.68

  黑龙江:
  202.97.229.133
  202.97.224.68
  219.150.32.132

  海南:
  202.100.192.68
  202.100.199.8

  宁夏:
  202.100.0.68
  202.100.96.68

  甘肃:
  202.100.72.13

  内蒙古:
  202.99.224.68

  青海:
  202.100.128.68

  全球路由DNS服务器

  全球只有13台路由DNS根服务器,在13台路由服务器中,名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。下表是这些机器的管理单位、设置地点及最新的IP地址。

  名称  管理单位及设置地点    IP地址
  A INTERNIC.NET(美国,弗吉尼亚州) 198.41.0.4
  B 美国信息科学研究所(美国,加利弗尼亚州) 128.9.0.107
  C PSINet公司(美国,弗吉尼亚州) 192.33.4.12
  D 马里兰大学(美国马里兰州) 128.8.10.90
  E 美国航空航天管理局[NASA](美国加利弗尼亚州) 192.203.230.10
  F 因特网软件联盟(美国加利弗尼亚州) 192.5.5.241
  G 美国国防部网络信息中心(美国弗吉尼亚州) 192.112.36.4
  H 美国陆军研究所(美国马里兰州) 128.63.2.53
  I Autonomica公司(瑞典,斯德哥尔摩) 192.36.148.17
  J VeriSign公司(美国,弗吉尼亚州) 192.58.128.30
  K RIPE NCC(英国,伦敦) 193.0.14.129
  L IANA (美国,弗吉尼亚州) 198.32.64.12

2009年6月25日星期四

Google国际网站遭到域名劫持

  今天晚上,包括Google.com在内的绝大多数Google国际网站,例如Google.com、Gmail、Google Reader、Google Docs等,在中国部分省市均出现无法访问的情况。

  根据我的分析,这次封锁Google的方式并不新鲜,是采用域名劫持(DNS劫持)的方法,通过技术手段,将Google的各类境外域名解析到一个错误的地址,使得Google.com无法访问。前段时间,中央电视台曾经在多个栏目中指责Google,并要求其关闭境外网站搜索功能。

  经过我的测试,使用中国大陆境内的DNS服务器,例如202.96.134.133是无法正确解析出Google的IP地址,而使用境外的OpenDNS进行域名解析,就可以正确解析出Google的IP地址。如下图所示。

Google域名遭到域名劫持

  解决的方法是使用境外的域名解析服务器(DNS服务器),例如OpenDNS的服务,设置方法是,在“设置”-“网络连接”中找到宽带上网的连接,打开网络连接属性,选择Interner协议(TCP/IP)的属性页里,不要选择自动获取DNS,而要选择“使用下面的DNS服务器地址”,首选DNS服务器和备用DNS服务器分别设置为208.67.222.222和208.67.220.220,如下图所示,完成后重新连接上网,就可以摆脱服务商对我们的DNS劫持。

网络连接属性

网络连接属性

  对于Google的域名劫持,这已经不是第一次了,2002年的时候Google的域名就曾经被劫持到百度等网站,2006年的时候Google.cn被域名劫持到万网的买卖网,这次轮到Google.com了,无论是谁在幕后操纵了这次域名劫持,都会给中国互联网产生极为负面的影响,好在全球13台DNS根服务器全都放在一些法制健全的国家(例如美国、日本),因此这次针对Google的域名劫持对于国外用户没有影响。

  最后,我强烈谴责这种对于Google网站进行域名劫持的无耻行为。

  名词解释(来源于维基百科):

  DNS是域名系统 (Domain Name Server) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。在Internet上域名与IP地址之间是一对一(或者一对多)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

  域名解析的基本原理是把域名翻译成IP地址,以便计算机能够进一步通信,传递网址和内容等。

  域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。

解决中文Google的跳转问题

  从两年前开始,中国用户在使用Google搜索中,会自动从google.com跳转到google.cn,Google官方对此的解释是,google.com跳转到google.cn是为了对中国用户提供更具有针对性的搜索服务,很多新开发的中文google服务只有在google.cn上才会体现。

  不过,由于种种原因(特别是最近发生的一系列针对google.cn的事件),用户可能并不想使用google.cn,而希望使用google.com,因为Google的跳转是根据浏览器设置的语言来跳转的,因此修改浏览器默认语言就可以禁止google.com跳转到google.cn。

  对于IE用户来说,在工具—Internet选项—常规—语言中,添加英语(美国),并将其移动到最上面,使其成为默认语言,这样就可以把IE设置成使用英语做默认语言。

  设置好后,在IE中打开www.google.com,就不会自动跳转到www.google.cn,搜索时也是一样。

  IE设置的界面如下图所示。

IE设置

  对于Firefox用户来说,在工具—选项—内容—语言选择中设置,设置方法和IE相同。设置界面如下图所示。

Firefox设置

  对于Google Chrome用户来说,在选项—中级用户选项—更改字体和语言设置—语言中修改,设置方法和IE相同。设置界面如下图所示。

Chrome设置

2009年6月24日星期三

中文分词和TF-IDF

  中文分词(Chinese Word Segmentation)指的是将一个汉字序列切分成一个一个单独的词。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。

  TF-IDF(term frequency–inverse document frequency)是一种用于信息搜索和信息挖掘的常用加权技术。在搜索、文献分类和其他相关领域有广泛的应用。

  TF-IDF的主要思想是,如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TF词频(Term Frequency)指的是某一个给定的词语在该文件中出现的次数。IDF反文档频率(Inverse Document Frequency)的主要思想是:如果包含词条的文档越少,IDF越大,则说明词条具有很好的类别区分能力。

  使用TF*IDF可以计算某个关键字在某篇文章里面的重要性,因而识别这篇文章的主要含义,实现计算机读懂文章的功能。

  常见中文分词开源项目:

  SCWS

  Hightman开发的一套基于词频词典的机械中文分词引擎,它能将一整段的汉字基本正确的切分成词。采用的是采集的词频词典,并辅以一定的专有名称,人名,地名,数字年代等规则识别来达到基本分词,经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些小型搜索引擎、关键字提取等场合运用。45Kb左右的文本切词时间是0.026秒,大概是1.5MB文本/秒,支持PHP4和PHP 5。

  ICTCLAS:  

  这可是最早的中文开源分词项目之一,ICTCLAS在国内973专家组组织的评测中活动获得了第一名,在第一届国际中文处理研究机构SigHan组织的评测中都获得了多项第一名。ICTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到3M.ICTCLAS全部采用C/C++编写,支持Linux、FreeBSD及Windows系列操作系统,支持C/C++、C#、Delphi、Java等主流的开发语言。

  HTTPCWS

  HTTPCWS 是一款基于HTTP协议的开源中文分词系统,目前仅支持Linux系统。HTTPCWS 使用“ICTCLAS 3.0 2009共享版中文分词算法”的API进行分词处理,得出分词结果。HTTPCWS 将取代之前的 PHPCWS 中文分词扩展

  庖丁解牛分词

  Java 提供lucence 接口,仅支持Java语言。

  CC-CEDICT

  一个中文词典开源项目,提供一份以汉语拼音为中文辅助的汉英辞典,截至2009年2月8日,已收录82712个单词。其词典可以用于中文分词使用,而且不存在版权问题。Chrome中文版就是使用的这个词典进行中文分词的。

  基于VB/ASP的中文分词

  上面的开源项目没有给予VB和ASP的,这里提供一个简单的VB/ASP类,加上词典之后就可以进行分词了,注意这个类只供演示,其分词速度极慢不适合实际应用。

  类名为:WordSplit

Private rootTable As String

Private Function GetCount(ByVal s As String) As Long
    GetCount = InStr(1, rootTable, s)
End Function

Public Function WordCount(ByVal strString As String, ByVal strGetWord As String) As Long
    Dim k
    k = Split(strString, strGetWord)
    WordCount = UBound(k)
End Function


' 分析输入的字符串,将其切割成一个个的词语。
' <param name="s">待切割的字符串</param>
' <returns>所切割得到的中文词语数组</returns>

Public Function ParseChinese(ByVal s As String, ByVal separator As String) As String
    Dim lngLength As Long
    Dim strTemp As String
    Dim ArrayList As String
    Dim i, j

    ArrayList = ""
    lngLength = Len(s)
    i = 1
    While i < lngLength
        strTemp = Mid(s, i, 1)
        If GetCount(strTemp) > 1 Then
            j = 2
            While i + j < lngLength + 1 And GetCount(Mid(s, i, j)) > 0
                j = j + 1
            Wend
            strTemp = Mid(s, i, j - 1)
            i = i + j - 2
        End If
        i = i + 1
        'WordAdd (temp)
        ArrayList = ArrayList + strTemp + separator
    Wend
    ParseChinese = ArrayList

End Function

Private Sub Class_Initialize()
    Dim fso, templetfile, txtfile
    templetfile = App.Path + "ChineseDictionary.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txtfile = fso.OpenTextFile(templetfile, 1)
    rootTable = txtfile.ReadAll
    txtfile.Close
End Sub

  调用示例:

    strInput = "中文分词指的是将一个汉字序列切分成一个一个单独的词。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。"
    Dim strWordSplit As New WordSplit
    strSubject = strWordSplit.ParseChinese(strInput, "|")
    arrSubject = Split(strSubject, "|")