2008年(15)
分类:
2008-04-30 13:19:24
Tiobe网站有一个编程语言排行榜,这个本不稀奇,但它所使用的统计方法却很值得学习-就是利用搜索引擎的命中记录数来分析某项事务的重要程度。Tiobe的统计方法归纳起来总共是3步:
1. 归纳关键词,建立搜索词库。对于编程语言,这个步骤具体就是将相同领域的语言及其相关的所有关键字放在一起作为一个整体进行最后的统计。比如,C#和C Sharp就属于相同的统计范畴。
2. 选取若干主流 (mainstream) 搜索引擎 (search engine) 比如Google,Yahoo,MSN等,用第一步选取的词条逐个作为查询关键字在各个搜索引擎中查询,然后获取各个搜索中关键字的命中记录数。
3. 根据各个关键词的命中记录数计算各组编程语言的rate,Tiobe网站的计算公式是: rate (group-n) = (Google-sum (group-n)/Google-sum
(group-1, group-2 ...) + Yahoo-sum (group-n)/Yahoo-sum (group-1, group-2 ...) +
...)/Search-Engine-Number。这是很简单的线性均值模型。我们实际上是可以根据搜索引擎的知名和准确程度来建立加权平均模型的。
如果将以上3个步骤经由程序自动实现 (实际上Tiobe也就是按月为周期运行类似的程序),那么对于任何感兴趣的话题都可以构造出类似的排名榜或者其他什么有意思的东西。笔者曾经用Perl实现了通过Internet自动从网上 (Netflix) 下载电影信息的功能,实际上稍加改进就可以用于上述目的。这里面涉及的一个重要的Perl包就是LWP。下面是笔者程序中的用于获取网页信息的部分:
#!/usr/bin/perl
use LWP::Simple;
use HTTP::Cookies;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
sub getWebContent($)
{
my $string = shift;
print "Get content of
".$string."\n";
$agent = LWP::UserAgent->new;
my $req =
HTTP::Request->new(GET => $string);
$agent->cookie_jar(new
HTTP::Cookies);
my $cookiefile =
".\\cookies";
$agent->cookie_jar(HTTP::Cookies->new(file=>$file,autosave=>1));
my $res =
$agent->request($req);
if($res->is_success)
{
print
"Successfully get web content!\n";
return
$res->content;
}
else
{
print
"Get web content failed!\n";
}