<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>伪科学之幻想</title>
	<atom:link href="http://nisekagaku.blog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nisekagaku.blog.com</link>
	<description>游弋于科学大门之外，悟其道而不得其法</description>
	<lastBuildDate>Sat, 16 Apr 2011 13:32:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2-bleeding</generator>
	<atom:link rel='hub' href='http://nisekagaku.blog.com/?pushpress=hub'/>
		<item>
		<title>Hadoop上架设ICTCLAS分词器</title>
		<link>http://nisekagaku.blog.com/2011/04/16/hadoop%e4%b8%8a%e6%9e%b6%e8%ae%beictclas%e5%88%86%e8%af%8d%e5%99%a8/</link>
		<comments>http://nisekagaku.blog.com/2011/04/16/hadoop%e4%b8%8a%e6%9e%b6%e8%ae%beictclas%e5%88%86%e8%af%8d%e5%99%a8/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 13:32:40 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://nisekagaku.blog.com/2011/04/16/hadoop%e4%b8%8a%e6%9e%b6%e8%ae%beictclas%e5%88%86%e8%af%8d%e5%99%a8/</guid>
		<description><![CDATA[将任何一个Java程序放到Hadoop上执行都没有什么实质的困难。在我们的工作中，将中科院ICTCLAS分词器架设上去主要是处理JNI的问题。在一开始我们参照了淘宝的成功案例，但是并没有解决我们的问题，在运行时提示找不到动态链接库文件。我们于是瞎子摸象般地尝试了一下别的办法，虽然最终没能理解其所以然，但是这一方法确实成功完成了任务，故记录于此。 众所周知的，Hadoop的版本差异比较大，因此首先明确一下我们的环境：运行环境是x86_64 linux CentOS-5.4，Hadoop 0.20.2；开发环境是windows下的Eclipse3.3及相应版本的Hadoop插件。ICTCLAS当然是64位linux版的。 首先我们要保证作为分词器核心的libICTCLAS50.so链接库所依赖的其它库都已经安装了，这件事ldd一下就可以知道了。在我们的系统中缺少libstdc++.so.5，按照一种流行的做法使用ln命令将libstdc++.so.6起个别名并没有解决这个问题，因此最终还是安装了一个带有这个版本的包。 接下来我们仿照前人的做法，将libICTCLAS50.so做了一个归档文件ictclas.tar，并将它传到HDFS上，路径比如说是/user/ictclas.tar。 在Eclipse下建立Map-Reduce工程（当然，这个是安了Hadoop插件之后才会有的），将ICTCLAS的相关内容拷贝进来：将代码包ICTCLAS放入src，其余保持原有目录结构直接放到工程里来（包括曾经被打包的libICTCLAS50.so）。所谓代码部分其实只有分词器的JNI Wrapper，为了适应我们的工程需要，我们编写了一个适配器将其二次包装为我们需要的接口IctclasI3sWrapper.java。可想而知的是，该类提供了一个分词接口对外提供服务，并在内部实例化ICTCLAS50对象，并依赖其完成分词任务。当然，怎么用它并不是重点。 我们对hadoop经典的词频统计代码稍加改动，在Mapper中加入分词。并试着将测试代码Run on hadoop，但是系统提示找不到ICTCLAS50库。于是我们按照之前引用文献中所说的采用了DistributedCache，将归档的动态链接库分发给具体执行任务的机器。代码如下所示： TokenizerMapper.java：Mapper实现类 public class TokenizerMapper extends Mapper&#60;Object, Text, Text, IntWritable&#62; { &#160;&#160;&#160; private final static IntWritable one = new IntWritable(1); &#160;&#160;&#160; private WordBreaker wbreaker = new IctclasI3sWrapper(); &#160;&#160;&#160; protected void setup(Context context) throws IOException, &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; InterruptedException { &#160;&#160;&#160;&#160;&#160;&#160;&#160; super.setup(context); &#160;&#160;&#160;&#160;&#160;&#160;&#160; wbreaker.initialize(); &#160;&#160;&#160; } &#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>将任何一个Java程序放到Hadoop上执行都没有什么实质的困难。在我们的工作中，将中科院ICTCLAS分词器架设上去主要是处理JNI的问题。在一开始我们参照了<a href="http://www.searchtb.com/2010/12/how-to-run-jni-in-hadoop.html" target="_blank">淘宝</a>的成功案例，但是并没有解决我们的问题，在运行时提示找不到动态链接库文件。我们于是瞎子摸象般地尝试了一下别的办法，虽然最终没能理解其所以然，但是这一方法确实成功完成了任务，故记录于此。</p>
<p>众所周知的，Hadoop的版本差异比较大，因此首先明确一下我们的环境：运行环境是x86_64 linux CentOS-5.4，Hadoop 0.20.2；开发环境是windows下的Eclipse3.3及相应版本的Hadoop插件。ICTCLAS当然是64位linux版的。</p>
<p>首先我们要保证作为分词器核心的libICTCLAS50.so链接库所依赖的其它库都已经安装了，这件事ldd一下就可以知道了。在我们的系统中缺少libstdc++.so.5，按照一种流行的做法使用ln命令将libstdc++.so.6起个别名并没有解决这个问题，因此最终还是安装了一个带有这个版本的包。</p>
<p>接下来我们仿照前人的做法，将libICTCLAS50.so做了一个归档文件ictclas.tar，并将它传到HDFS上，路径比如说是/user/ictclas.tar。</p>
<p>在Eclipse下建立Map-Reduce工程（当然，这个是安了Hadoop插件之后才会有的），将ICTCLAS的相关内容拷贝进来：将代码包ICTCLAS放入src，其余保持原有目录结构直接放到工程里来（包括曾经被打包的libICTCLAS50.so）。所谓代码部分其实只有分词器的JNI Wrapper，为了适应我们的工程需要，我们编写了一个适配器将其二次包装为我们需要的接口IctclasI3sWrapper.java。可想而知的是，该类提供了一个分词接口对外提供服务，并在内部实例化ICTCLAS50对象，并依赖其完成分词任务。当然，怎么用它并不是重点。</p>
<p>我们对hadoop经典的词频统计代码稍加改动，在Mapper中加入分词。并试着将测试代码Run on hadoop，但是系统提示找不到ICTCLAS50库。于是我们按照之前引用文献中所说的采用了DistributedCache，将归档的动态链接库分发给具体执行任务的机器。代码如下所示：</p>
<p><font color="#00ff00">TokenizerMapper.java</font><font color="#666666">：</font><font color="#666666">Mapper实现类</font></p>
<p>public class TokenizerMapper extends Mapper&lt;Object, Text, Text, IntWritable&gt; {</p>
<p>&#160;&#160;&#160; private final static IntWritable one = new IntWritable(1);</p>
<p>&#160;&#160;&#160; private WordBreaker wbreaker = new IctclasI3sWrapper();</p>
<p>&#160;&#160;&#160; protected void setup(Context context) throws IOException,   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; InterruptedException {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; super.setup(context);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; wbreaker.initialize();    <br />&#160;&#160;&#160; }</p>
<p>&#160;&#160;&#160; protected void cleanup(Context context) throws IOException,   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; InterruptedException {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; wbreaker.destory();    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; super.cleanup(context);    <br />&#160;&#160;&#160; }</p>
<p>&#160;&#160;&#160; public void map(Object key, Text value, Context context)   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throws IOException, InterruptedException {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; String temp = value.toString();   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; LinkedList&lt;Token&gt; tokens = new LinkedList&lt;Token&gt;();    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; wbreaker.process(temp, tokens);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (Token t : tokens) {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; context.write(new Text(t.getWord()), one);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160; }    <br />}</p>
<p><font color="#00ff00">ChineseWordCount.java</font><font color="#666666">：Map-Reduce驱动</font></p>
<p><font size="1">public class ChineseWordCount {</font></p>
<p><font size="1">&#160; public static void main(String[] args) throws Exception {     <br />&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160; Configuration conf = new Configuration();      <br />&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160; DistributedCache.createSymlink(conf);      <br />&#160;&#160;&#160;&#160;&#160; DistributedCache.addCacheArchive(new URI(&quot;/user/ictclas.tar&quot;), conf);      <br />&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160; Job job = new Job(conf, &quot;ChineseWordCount&quot;);      <br />&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160; job.setMapperClass(TokenizerMapper.class);      <br />&#160;&#160;&#160;&#160;&#160; job.setCombinerClass(IntSumReducer.class);      <br />&#160;&#160;&#160;&#160;&#160; job.setReducerClass(IntSumReducer.class);      <br />&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160; job.setOutputKeyClass(Text.class);      <br />&#160;&#160;&#160;&#160;&#160; job.setOutputValueClass(IntWritable.class);      <br />&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160; FileInputFormat.addInputPath(job, new Path(&quot;/user/input&quot;));      <br />&#160;&#160;&#160;&#160;&#160; FileOutputFormat.setOutputPath(job, new Path(&quot;/user/output&quot;));      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160; System.exit(job.waitForCompletion(true) ? 0 : 1);      <br />&#160; }      <br />}</font></p>
<p>当作业被调度到数据节点执行时，在hadoop.tmp.dir的深处会产生如图所示的目录结构。任务配置文件及代码会被分发到job_id文件夹下，而DistributedCache分发的归档文件则会在archive文件夹下。图中info是我们自己代码所在的包，请无视之。</p>
<p><a href="http://nisekagaku.blog.com/files/2011/04/hadoop.png"><img style="border-bottom: 0px;border-left: 0px;margin: 0px 0px 10px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="hadoop临时文件" src="http://nisekagaku.blog.com/files/2011/04/hadoop_thumb.png" width="553" height="461" /></a></p>
<p>当我们从以下两种简化方案中择其一：1）取消掉DistributedCache，或者2）将libICTCLAS50.so从工程文件夹中移除时并没有得到比上述代码更骨感的可运行代码。</p>
<p>最后，我们并没有理解这样做的具体原因，但这样做确实解决了找不到库的问题。因此写在这里供参考，并请指正。</p>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2011/04/16/hadoop%e4%b8%8a%e6%9e%b6%e8%ae%beictclas%e5%88%86%e8%af%8d%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新的开始</title>
		<link>http://nisekagaku.blog.com/2011/03/12/%e6%96%b0%e7%9a%84%e5%bc%80%e5%a7%8b/</link>
		<comments>http://nisekagaku.blog.com/2011/03/12/%e6%96%b0%e7%9a%84%e5%bc%80%e5%a7%8b/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 06:54:01 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://nisekagaku.blog.com/2011/03/12/%e6%96%b0%e7%9a%84%e5%bc%80%e5%a7%8b/</guid>
		<description><![CDATA[不爱动笔的冬天过去了，决定找个地方写博客。新的地址，如您所见。 先前为了搬家，考察了一下几个国内外知名的博客运营商，正如我在微博中写到的那样：Blogger比较适合装B，牛博可以装右粪，博客大巴可以装文青，CSDN可以装GEEK，新浪可以装孙子——于是我犹豫了，因为以上几个需求实在难以取舍。而最后没有选择它们的原因是：我毕竟发不和谐文章比较少，没必要到墙外找，另一方面又不喜欢国内供应商的御事房作风。科学网和CSDN的博客实在太沉闷了，压力好大。而博客大巴，对不起，纯文学的我搞不懂。 而最终选择blog.com的原因有：1.域名显得比较牛；2.虽然好像是位于葡萄牙的国外服务器，但目前还没有被墙的迹象；3.底层是WP，我比较熟悉，再者非常著名，以至于和各种应用的兼容性非常好。比如说可以用Writer，而微软产品之间的兼容性又挺好，比如公式从Word贴到Writer里就会自动转化成图片，这大大降低了发博文的体力成本。 兴趣缺少交集是我的一直以来的问题，这次开博准备做得稍微专业一点。如您所见的，我从以前的文章中选择了一些技术性的保留了下来。以后也希望继续在技术和研究方面展开，而碎碎念和个人兴趣就放在微博上好了。 页面采用简单到不能再简单的整体风格，便于聚焦在内容，白色背景便于贴公式，巨大的字体则使得文章中即使没有什么东西也能将空间填充满。最重要的是，使用免费的托管博客空间，就算N久不发言也不会觉得亏……]]></description>
			<content:encoded><![CDATA[<p>不爱动笔的冬天过去了，决定找个地方写博客。新的地址，如您所见。</p>
<p>先前为了搬家，考察了一下几个国内外知名的博客运营商，正如我在微博中写到的那样：Blogger比较适合装B，牛博可以装右粪，博客大巴可以装文青，CSDN可以装GEEK，新浪可以装孙子——于是我犹豫了，因为以上几个需求实在难以取舍。而最后没有选择它们的原因是：我毕竟发不和谐文章比较少，没必要到墙外找，另一方面又不喜欢国内供应商的御事房作风。科学网和CSDN的博客实在太沉闷了，压力好大。而博客大巴，对不起，纯文学的我搞不懂。</p>
<p>而最终选择blog.com的原因有：1.域名显得比较牛；2.虽然好像是位于葡萄牙的国外服务器，但目前还没有被墙的迹象；3.底层是WP，我比较熟悉，再者非常著名，以至于和各种应用的兼容性非常好。比如说可以用Writer，而微软产品之间的兼容性又挺好，比如公式从Word贴到Writer里就会自动转化成图片，这大大降低了发博文的体力成本。</p>
<p>兴趣缺少交集是我的一直以来的问题，这次开博准备做得稍微专业一点。如您所见的，我从以前的文章中选择了一些技术性的保留了下来。以后也希望继续在技术和研究方面展开，而碎碎念和个人兴趣就放在微博上好了。</p>
<p>页面采用简单到不能再简单的整体风格，便于聚焦在内容，白色背景便于贴公式，巨大的字体则使得文章中即使没有什么东西也能将空间填充满。最重要的是，使用免费的托管博客空间，就算N久不发言也不会觉得亏……</p>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2011/03/12/%e6%96%b0%e7%9a%84%e5%bc%80%e5%a7%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>写好研究工程两用的代码</title>
		<link>http://nisekagaku.blog.com/2010/11/15/%e5%86%99%e5%a5%bd%e7%a0%94%e7%a9%b6%e5%b7%a5%e7%a8%8b%e4%b8%a4%e7%94%a8%e7%9a%84%e4%bb%a3%e7%a0%81/</link>
		<comments>http://nisekagaku.blog.com/2010/11/15/%e5%86%99%e5%a5%bd%e7%a0%94%e7%a9%b6%e5%b7%a5%e7%a8%8b%e4%b8%a4%e7%94%a8%e7%9a%84%e4%bb%a3%e7%a0%81/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 10:47:49 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://delra.info/blog/?p=272</guid>
		<description><![CDATA[几个月时间呼呼编出来一个原型系统，现在想从里面切出一小块来做做研究，然而读了几段代码不禁晕眩，改起代码更是吐血。原型系统的代码通常比较随意，这个现象倒是可以理解。大家各自按照自己的风格和想法快速搞定，里面难免充满各式各样的问题。从软件工程角度看问题当然不少，不过我更关注于从改造代码作研究用途出发的问题。总结一下，大概有以下3点： 1.编写原型系统时最应该注意的是输入输出与核心逻辑的解耦，因为研究用的代码往往要比软件工程中的需求变化得更快，尤其是输入输出，我们可能随时会变换数据集，它们的格式可能差别很大，甚至没有格式，也有可能希望用很多种手段展示处理结果。因此一定要把跟数据直接相关的模块抽象出来，以保证输入输出的变更不会影响核心代码。另一方面，研究用途的代码通常并不重视运行时间，可接受的时间通常很长，因此有些会增加冗余和时间开销的泛化方法也可以适当使用。 2.核心逻辑的泛化切不可操之过急，研究的实验和成果落实在代码上就是修改核心业务逻辑，因此我们很难一上来就知道自己将来会尝试使用哪些方法。从一开始使用的简单方法直接考虑应用哪种设计模式——这种泛化根本就是无稽之谈。应该谨记Occam的剃刀，一切从当前需要出发，简单够用即可，直到第二种需求出现的时候才做最小限度的泛化。若是一上来就构建庞大的体系，自作主张地觉得“这儿需要留个接口”、“那儿需要提一个抽象”什么的，只会作茧自缚。过拟合反而造成泛化能力低下，以后改起代码的时候，重用也重用不了，推倒重练也不对，很是头疼。 3.如果整个处理过程分为多步，一定要保证每个功能模块都可以单独运行，而不依赖于另一个环境，这既是单元测试的需要也是研究的需要。每个功能模块需要的输入可能不同，但是换言之，只要能提供相应格式的输入就能把每个模块单独跑起来，这就要求我们尽量降低模块间传递数据的复杂度，以便于在没有前一个模块支持的情况下，也可以提供本模块需要的数据。在没有下一个模块处理数据的情况下，从本模块的输出也可以清楚地评价这个模块的质量。]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium">几个月时间呼呼编出来一个原型系统，现在想从里面切出一小块来做做研究，然而读了几段代码不禁晕眩，改起代码更是吐血。原型系统的代码通常比较随意，这个现象倒是可以理解。大家各自按照自己的风格和想法快速搞定，里面难免充满各式各样的问题。从软件工程角度看问题当然不少，不过我更关注于从改造代码作研究用途出发的问题。总结一下，大概有以下3点：<br />
</span></p>
<p><span style="font-size: medium">1.编写原型系统时最应该注意的是输入输出与核心逻辑的解耦，因为研究用的代码往往要比软件工程中的需求变化得更快，尤其是输入输出，我们可能随时会变换数据集，它们的格式可能差别很大，甚至没有格式，也有可能希望用很多种手段展示处理结果。因此一定要把跟数据直接相关的模块抽象出来，以保证输入输出的变更不会影响核心代码。另一方面，研究用途的代码通常并不重视运行时间，可接受的时间通常很长，因此有些会增加冗余和时间开销的泛化方法也可以适当使用。</span></p>
<p><span style="font-size: medium">2.核心逻辑的泛化切不可操之过急，研究的实验和成果落实在代码上就是修改核心业务逻辑，因此我们很难一上来就知道自己将来会尝试使用哪些方法。从一开始使用的简单方法直接考虑应用哪种设计模式——这种泛化根本就是无稽之谈。应该谨记Occam的剃刀，一切从当前需要出发，简单够用即可，直到第二种需求出现的时候才做最小限度的泛化。若是一上来就构建庞大的体系，自作主张地觉得“这儿需要留个接口”、“那儿需要提一个抽象”什么的，只会作茧自缚。过拟合反而造成泛化能力低下，以后改起代码的时候，重用也重用不了，推倒重练也不对，很是头疼。</span></p>
<p><span style="font-size: medium">3.如果整个处理过程分为多步，一定要保证每个功能模块都可以单独运行，而不依赖于另一个环境，这既是单元测试的需要也是研究的需要。每个功能模块需要的输入可能不同，但是换言之，只要能提供相应格式的输入就能把每个模块单独跑起来，这就要求我们尽量降低模块间传递数据的复杂度，以便于在没有前一个模块支持的情况下，也可以提供本模块需要的数据。在没有下一个模块处理数据的情况下，从本模块的输出也可以清楚地评价这个模块的质量。<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2010/11/15/%e5%86%99%e5%a5%bd%e7%a0%94%e7%a9%b6%e5%b7%a5%e7%a8%8b%e4%b8%a4%e7%94%a8%e7%9a%84%e4%bb%a3%e7%a0%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用Burst Structure的例子练练EM Algorithm</title>
		<link>http://nisekagaku.blog.com/2010/11/03/%e7%94%a8burst-structure%e7%9a%84%e4%be%8b%e5%ad%90%e7%bb%83%e7%bb%83em-algorithm/</link>
		<comments>http://nisekagaku.blog.com/2010/11/03/%e7%94%a8burst-structure%e7%9a%84%e4%be%8b%e5%ad%90%e7%bb%83%e7%bb%83em-algorithm/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 16:17:02 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://delra.info/blog/?p=261</guid>
		<description><![CDATA[书接上文，这次改用EM方法来求解。做这件事之前先改变一下模型。两状态自动机的计算结果与输入序列中元素的先后顺序关系紧密，而如果不考虑这重关系，将之打散，就可以使用一个混合分布模型来求解。 其实，这样的假设并不成立，忽略流中元素的顺序并不可取，这里只是胡乱提出来，用来练习一下EM算法。 设序列： 独立同分布于两个指数分布的混合模型，用 作为隐变量，指示每次的观察量是由哪一个指数分布生成的，即： 设Z=0出现的先验概率为p0=p，Z=1的概率则为p1=1-p，那么待求的参数就是： 为了使用EM方法，首先先写出似然函数： 然后进入EM迭代环节。 E Step： 其中 M Step: 接下来就反复迭代去算好了。细节就不多说了，至于效果嘛……假设都站不住脚，就别指望结果好了吧。]]></description>
			<content:encoded><![CDATA[<p>书接上文，这次改用EM方法来求解。做这件事之前先改变一下模型。两状态自动机的计算结果与输入序列中元素的先后顺序关系紧密，而如果不考虑这重关系，将之打散，就可以使用一个混合分布模型来求解。</p>
<p>其实，<span style="color: #ff0000"><span style="text-decoration: underline">这样的假设并不成立</span></span>，忽略流中元素的顺序并不可取，这里只是胡乱提出来，用来练习一下EM算法。</p>
<p>设序列：</p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image001.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image001_thumb.png" border="0" alt="clip_image001" width="198" height="24" /></a></p>
<p>独立同分布于两个指数分布的混合模型，用</p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image002.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image002_thumb.png" border="0" alt="clip_image002" width="197" height="24" /></a></p>
<p>作为隐变量，指示每次的观察量是由哪一个指数分布生成的，即：</p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image003.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image003_thumb.png" border="0" alt="clip_image003" width="339" height="22" /></a></p>
<p>设Z=0出现的先验概率为p0=p，Z=1的概率则为p1=1-p，那么待求的参数就是：</p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image004.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image004_thumb.png" border="0" alt="clip_image004" width="194" height="26" /></a></p>
<p>为了使用EM方法，首先先写出似然函数：</p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image005.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image005_thumb.png" border="0" alt="clip_image005" width="378" height="99" /></a></p>
<p>然后进入EM迭代环节。</p>
<p><span style="color: #0000ff">E Step：</span></p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image006.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image006_thumb.png" border="0" alt="clip_image006" width="421" height="49" /></a></p>
<p>其中</p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image007.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image007_thumb.png" border="0" alt="clip_image007" width="372" height="32" /></a></p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image008.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image008_thumb.png" border="0" alt="clip_image008" width="353" height="103" /></a></p>
<p><span style="color: #0000ff">M Step:</span></p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image009.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image009_thumb.png" border="0" alt="clip_image009" width="447" height="96" /></a></p>
<p><a href="http://nisekagaku.blog.com/files/2010/11/clip_image010.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://nisekagaku.blog.com/files/2010/11/clip_image010_thumb.png" border="0" alt="clip_image010" width="453" height="62" /></a></p>
<p>接下来就反复迭代去算好了。细节就不多说了，至于效果嘛……假设都站不住脚，就别指望结果好了吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2010/11/03/%e7%94%a8burst-structure%e7%9a%84%e4%be%8b%e5%ad%90%e7%bb%83%e7%bb%83em-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two-state automaton与Bursty Stream</title>
		<link>http://nisekagaku.blog.com/2010/10/31/two-state-automaton%e4%b8%8ebursty-stream/</link>
		<comments>http://nisekagaku.blog.com/2010/10/31/two-state-automaton%e4%b8%8ebursty-stream/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 15:13:18 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://delra.info/blog/?p=238</guid>
		<description><![CDATA[文档在流上以一定时间间隔地顺次到达，定义文档密集出现的时间段为&#8221;Bursty特征&#8221;。 假设文档流的时间戳序列为：T=(t0,t1,…,tn)，如何从这之中提取Bursty特征呢？ 首先将相邻两篇文档的到达时间相减就会有时间间隔序列：X=(x1,x2,…,xn) 一个直观的想法是，设定一个阈值e&#62;0，时间间隔序列中若干个连续的，且数值小于e的最长子串就是Bursty特征。 而文献提出了另一种做法：将Bursty Stream用无限状态自动机建模，文章中证明了无限状态自动机求解这一问题与用有限状态自动机的等价性（虽然我觉得这个证明并没有什么意义……）。特殊地，当目标仅仅是发现Bursty时可以将模型简化成两状态自动机。 顾名思义，自动机只有两个状态，一个称为low，一个称为high，每个时刻自动机都必定处于其中一个状态下，所处的这个状态会在一个&#8221;时间间隔&#8221;后放出一篇文档，随后会有一定概率切换到另一个状态，或是保持原状态。时间间隔的长度服从于当时所处状态所限定参数的指数分布f(x)=aExp(-ax)，并且low状态的参数al要小于high状态的参数ah，以保证high状态以更高的频率放出文档。通过观测量反推时，我们希望观测量能尽可能符合当时状态的指数分布特征，所以设定一个当状态s产生间隔x时的开销函数为-Lnf(x) 另一方面，当自动机切换状态时可能会产生一定损耗。我们希望自动机有保持在低频状态的&#8221;惰性&#8221;，所以指定当自动机从low状态向high状态切换时产生开销c&#62;0。 接下来的工作就是猜测时间间隔序列X中每一个元素是由哪个状态生成的了，这种从观测量反推随机变量的事情自古以来就是MLE的工作。而可观测的生成量，隐藏的状态序列，有限自动机，无疑是HMM的思想，可以用动态规划的方法在状态机中找一条长度为n的并且能产生最小开销的状态序列。 最后得到了一个状态序列P=(p1,p2, …,pn)，这个序列中所有high状态最大子串即为一个bursty结构。 和直观方法做一下对比，发现后者绕了一大圈其实做的事并不多，主要优势是： 1.低频状态懒惰特性 2.将连续的时间间隔映射成有限个状态 3.提供了一种更具可操作性的阈值指定策略 [文献] Jon Kleinberg等，Bursty and Hierarchical Structure in Streams，DMKD2003 p.s. Bursty Stream这词乍一看怎么让我想起了高桥留美子的某民工漫啊……]]></description>
			<content:encoded><![CDATA[<p>文档在流上以一定时间间隔地顺次到达，定义文档密集出现的时间段为&#8221;Bursty特征&#8221;。</p>
<p>假设文档流的时间戳序列为：<strong>T</strong>=(t0,t1,…,tn)，如何从这之中提取Bursty特征呢？</p>
<p>首先将相邻两篇文档的到达时间相减就会有时间间隔序列：<strong>X</strong>=(x1,x2,…,xn)</p>
<p>一个直观的想法是，设定一个阈值e&gt;0，时间间隔序列中若干个连续的，且数值小于e的最长子串就是Bursty特征。</p>
<p>而文献提出了另一种做法：将Bursty Stream用无限状态自动机建模，文章中证明了无限状态自动机求解这一问题与用有限状态自动机的等价性（虽然我觉得这个证明并没有什么意义……）。特殊地，当目标仅仅是发现Bursty时可以将模型简化成两状态自动机。</p>
<p>顾名思义，自动机只有两个状态，一个称为low，一个称为high，每个时刻自动机都必定处于其中一个状态下，所处的这个状态会在一个&#8221;时间间隔&#8221;后放出一篇文档，随后会有一定概率切换到另一个状态，或是保持原状态。时间间隔的长度服从于当时所处状态所限定参数的指数分布f(x)=aExp(-ax)，并且low状态的参数al要小于high状态的参数ah，以保证high状态以更高的频率放出文档。通过观测量反推时，我们希望观测量能尽可能符合当时状态的指数分布特征，所以设定一个当状态s产生间隔x时的开销函数为-Lnf(x)</p>
<p>另一方面，当自动机切换状态时可能会产生一定损耗。我们希望自动机有保持在低频状态的&#8221;惰性&#8221;，所以指定当自动机从low状态向high状态切换时产生开销c&gt;0。</p>
<p>接下来的工作就是猜测时间间隔序列X中每一个元素是由哪个状态生成的了，这种从观测量反推随机变量的事情自古以来就是MLE的工作。而可观测的生成量，隐藏的状态序列，有限自动机，无疑是HMM的思想，可以用动态规划的方法在状态机中找一条长度为n的并且能产生最小开销的状态序列。</p>
<p>最后得到了一个状态序列<strong>P</strong>=(p1,p2, …,pn)，这个序列中所有high状态最大子串即为一个bursty结构。</p>
<p>和直观方法做一下对比，发现后者绕了一大圈其实做的事并不多，主要优势是：<br />
1.低频状态懒惰特性<br />
2.将连续的时间间隔映射成有限个状态<br />
3.提供了一种更具可操作性的阈值指定策略</p>
<p>[文献]</p>
<p>Jon Kleinberg等，Bursty and Hierarchical Structure in Streams，DMKD2003</p>
<p>p.s.</p>
<p>Bursty Stream这词乍一看怎么让我想起了高桥留美子的某民工漫啊……</p>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2010/10/31/two-state-automaton%e4%b8%8ebursty-stream/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>nDCG measure相关概念</title>
		<link>http://nisekagaku.blog.com/2010/10/26/ndcg-measure%e7%9b%b8%e5%85%b3%e6%a6%82%e5%bf%b5/</link>
		<comments>http://nisekagaku.blog.com/2010/10/26/ndcg-measure%e7%9b%b8%e5%85%b3%e6%a6%82%e5%bf%b5/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 08:35:10 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://delra.info/blog/?p=237</guid>
		<description><![CDATA[nDCG measure Normalized Discounted Cumulative Gain 一种对搜索引擎或相关程序有效性的度量。 假设： 强相关的文档出现在结果列表越靠前（rank越高）越有用 强相关文档比弱相关文档有用，比不相关文档有用 下面有几个层层递进的概念： Graded Relevance: 制定的衡量相关度的若干个等级，如： Highly relevant: 2 Marginally relevant: 1 Irrelevant: 0 一般由人（Human judge）来裁定。下述公式中表示为rel Cumulative Gain: 不考虑结果集中的序信息，单纯把分级相关度相加。 结果集中第p个结果的CG值为： 改变p之前的任意两结果的位置关系不会影响p的CG值 在上述假设下，DCG较CG为优 Discounted Cumulative Gain 如果一个强相关的文档排名靠后则应该受到惩罚 计算式不唯一，理论上只证明了对数折扣因子的平滑性要求 另一个DCG计算公式更加强调相关性 若分级相关度只在0和1取二值的话，二公式效果相同 Normalized Discounted Cumulative Gain 根据Query的不同，结果列表的长度也不同，所以这一度量考虑了正规化问题 IDCGp（Ideal DCG）是在一个完美的排序下，p所具有的最大DCG值 这样一来无论Query是什么，nDCG都可以得到一个平均值，因此不同的Query之间的效能就可以做比较了。 完美的排序算法会使DCGp和IDCGp相同，从而使nDCGp为1，nDCG的取值在0到1之间 例： 结果列表中的6篇文档D1,D2,D3,D4,D5,D6，判定了他们的相关度是3,2,3,0,1,2，则： 一个理想的排序应该是：3，3，2，2，1，0，所以 文献： wikipedia: Discounted Cumulative Gain]]></description>
			<content:encoded><![CDATA[<p>nDCG measure</p>
<p><font color="#0000ff">Normalized Discounted Cumulative Gain</font></p>
<p>一种对搜索引擎或相关程序有效性的度量。</p>
<p><font color="#0000ff">假设：</font></p>
<ol>
<li>强相关的文档出现在结果列表越靠前（rank越高）越有用</li>
</ol>
<ol>
<li>强相关文档比弱相关文档有用，比不相关文档有用</li>
</ol>
<p>下面有几个层层递进的概念：</p>
<p><font color="#0000ff">Graded Relevance:</font></p>
<p>制定的衡量相关度的若干个等级，如：</p>
<p>Highly relevant: 2</p>
<p>Marginally relevant: 1</p>
<p>Irrelevant: 0</p>
<p>一般由人（Human judge）来裁定。下述公式中表示为rel</p>
<p><font color="#0000ff">Cumulative Gain:</font></p>
<p>不考虑结果集中的序信息，单纯把分级相关度相加。</p>
<p>结果集中第p个结果的CG值为：</p>
<p><a href="http://nisekagaku.blog.com/files/2010/10/clip_image001.png"><img style="border-bottom: 0px;border-left: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image001" src="http://nisekagaku.blog.com/files/2010/10/clip_image001_thumb.png" width="152" height="67" /></a></p>
<p>
<p>改变p之前的任意两结果的位置关系不会影响p的CG值</p>
<p> 在上述假设下，DCG较CG为优</p>
<p><font color="#0000ff">Discounted Cumulative Gain</font></p>
<p>如果一个强相关的文档排名靠后则应该受到惩罚</p>
<p><a href="http://nisekagaku.blog.com/files/2010/10/clip_image002.png"><img style="border-bottom: 0px;border-left: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image002" src="http://nisekagaku.blog.com/files/2010/10/clip_image002_thumb.png" width="233" height="68" /></a></p>
<p>计算式不唯一，理论上只证明了对数折扣因子的平滑性要求</p>
<p>另一个DCG计算公式更加强调相关性</p>
<p><a href="http://nisekagaku.blog.com/files/2010/10/clip_image003.png"><img style="border-bottom: 0px;border-left: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image003" src="http://nisekagaku.blog.com/files/2010/10/clip_image003_thumb.png" width="217" height="65" /></a></p>
<p>若分级相关度只在0和1取二值的话，二公式效果相同</p>
<p><font color="#0000ff">Normalized Discounted Cumulative Gain</font></p>
<p>根据Query的不同，结果列表的长度也不同，所以这一度量考虑了正规化问题</p>
<p><a href="http://nisekagaku.blog.com/files/2010/10/clip_image004.png"><img style="border-bottom: 0px;border-left: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image004" src="http://nisekagaku.blog.com/files/2010/10/clip_image004_thumb.png" width="173" height="69" /></a></p>
<p>IDCGp（Ideal DCG）是在一个完美的排序下，p所具有的最大DCG值</p>
<p>这样一来无论Query是什么，nDCG都可以得到一个平均值，因此不同的Query之间的效能就可以做比较了。</p>
<p>完美的排序算法会使DCGp和IDCGp相同，从而使nDCGp为1，nDCG的取值在0到1之间</p>
<p><font color="#0000ff">例：</font></p>
<p>结果列表中的6篇文档D1,D2,D3,D4,D5,D6，判定了他们的相关度是3,2,3,0,1,2，则：</p>
<p><a href="http://nisekagaku.blog.com/files/2010/10/clip_image005.png"><img style="border-bottom: 0px;border-left: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image005" src="http://nisekagaku.blog.com/files/2010/10/clip_image005_thumb.png" width="244" height="46" /></a></p>
<p><a href="http://nisekagaku.blog.com/files/2010/10/clip_image006.png"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image006" src="http://nisekagaku.blog.com/files/2010/10/clip_image006_thumb.png" width="351" height="44" /></a></p>
<p>一个理想的排序应该是：3，3，2，2，1，0，所以</p>
<p><a href="http://nisekagaku.blog.com/files/2010/10/clip_image007.png"><img style="border-bottom: 0px;border-left: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image007" src="http://nisekagaku.blog.com/files/2010/10/clip_image007_thumb.png" width="128" height="35" /></a></p>
<p><a href="http://nisekagaku.blog.com/files/2010/10/clip_image008.png"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image008" src="http://nisekagaku.blog.com/files/2010/10/clip_image008_thumb.png" width="244" height="48" /></a></p>
<p>
<p><font color="#0000ff">文献：</font></p>
<p><a href="http://en.wikipedia.org/wiki/Discounted_cumulative_gain">wikipedia: Discounted Cumulative Gain</a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2010/10/26/ndcg-measure%e7%9b%b8%e5%85%b3%e6%a6%82%e5%bf%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>强类型？弱类型？静态语言？动态语言？</title>
		<link>http://nisekagaku.blog.com/2010/09/28/%e5%bc%ba%e7%b1%bb%e5%9e%8b%ef%bc%9f%e5%bc%b1%e7%b1%bb%e5%9e%8b%ef%bc%9f%e9%9d%99%e6%80%81%e8%af%ad%e8%a8%80%ef%bc%9f%e5%8a%a8%e6%80%81%e8%af%ad%e8%a8%80%ef%bc%9f/</link>
		<comments>http://nisekagaku.blog.com/2010/09/28/%e5%bc%ba%e7%b1%bb%e5%9e%8b%ef%bc%9f%e5%bc%b1%e7%b1%bb%e5%9e%8b%ef%bc%9f%e9%9d%99%e6%80%81%e8%af%ad%e8%a8%80%ef%bc%9f%e5%8a%a8%e6%80%81%e8%af%ad%e8%a8%80%ef%bc%9f/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 06:41:59 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://delra.info/blog/?p=174</guid>
		<description><![CDATA[前回的文章中说道：“Python&#8230;是一种弱类型语言的说法”，写完之后反刍的时候就觉得有点不妥：到底啥么是强类型，啥么是弱类型呢？恰好今天又在python社区里看到常见FAQ中有一篇名为《為什麼 Python 既是動態語言又是強型別的語言?》的文章。这才恍悟道，原来我的理解一直是错的。而且从标题看来，程序语言至少有两种正交的分类方法，python是动态的，又是强类型的。既然如此，必然有静态的和弱类型的。于是赶紧问问google，摸清概念。 英文的当然首推wiki：《Type System》 中文的除了wiki《类型系统》之外，还有一篇大综合的文章《动态语言/静态语言和强类型语言/弱类型语言》 人家说得已经够到位了，我就不重复了。不过，就算是这样一篇大综合的文章之中，前后引用的“专家观点”也有些矛盾呢。看来这个分类的定义除了固有的错误观念之外，也有一些暧昧和含糊不清的地方呢。 嘛～不管了，按照我的理解，简单总结一下： 静态语言（statically typed language）：在编译期确定变量类型，IDE有良好的支持 Ada, AS3, C, C++, C#, Eiffel, F#, Go, JADE, Java, Fortran, Haskell, ML, Objective-C, Pascal, Perl (with respect to distinguishing scalars, arrays, hashes and subroutines) and Scala 动态语言（dynamically typed language）：在运行时确定变量类型，IDE往往难以提供友善的辅助 Erlang, Groovy, JavaScript, Lisp, Lua, Objective-C, Perl (with respect to user-defined types but not [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium">前回的文章中说道：“Python&#8230;是一种弱类型语言的说法”，写完之后反刍的时候就觉得有点不妥：到底啥么是强类型，啥么是弱类型呢？恰好今天又在python社区里看到常见FAQ中有一篇名为《<a href="http://wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%20language%20and%20also%20a%20strongly%20typed%20language">為什麼 Python 既是動態語言又是強型別的語言?</a>》的文章。这才恍悟道，原来我的理解一直是错的。而且从标题看来，程序语言至少有两种正交的分类方法，python是动态的，又是强类型的。既然如此，必然有静态的和弱类型的。于是赶紧问问google，摸清概念。</span></p>
<p><span style="font-size: medium"><span id="more-174"></span>英文的当然首推wiki：《<a href="http://en.wikipedia.org/wiki/Type_system">Type System</a>》</span></p>
<p><span style="font-size: medium">中文的除了wiki《<a href="http://zh.wikipedia.org/zh-cn/%E9%A1%9E%E5%9E%8B%E7%B3%BB%E7%B5%B1">类型系统</a>》之外，还有一篇大综合的文章《<a href="http://blog.csdn.net/leisure55/archive/2009/09/01/4508315.aspx">动态语言/静态语言和强类型语言/弱类型语言</a>》</span></p>
<p><span style="font-size: medium">人家说得已经够到位了，我就不重复了。不过，就算是这样一篇大综合的文章之中，前后引用的“专家观点”也有些矛盾呢。看来这个分类的定义除了固有的错误观念之外，也有一些暧昧和含糊不清的地方呢。</span></p>
<p><span style="font-size: medium">嘛～不管了，按照我的理解，简单总结一下：</span></p>
<p><span style="font-size: medium">静态语言（statically typed language）：在编译期确定变量类型，IDE有良好的支持</span></p>
<blockquote><p><span style="font-size: medium">Ada, AS3, C, C++, C#, Eiffel, F#, Go, JADE, Java, Fortran, Haskell, ML, Objective-C, Pascal, Perl (with respect to distinguishing scalars, arrays, hashes and subroutines) and Scala</span></p></blockquote>
<p><span style="font-size: medium">动态语言（dynamically typed language）：在运行时确定变量类型，IDE往往难以提供友善的辅助</span></p>
<blockquote><p><span style="font-size: medium">Erlang, Groovy, JavaScript, Lisp, Lua, Objective-C, Perl (with respect to user-defined types but not built-in types), PHP, Prolog, Python, Ruby, Smalltalk and Tcl</span></p></blockquote>
<p><span style="font-size: medium">强类型（strongly typed language）：变量类型确定后就严格贯彻到最后，除非有显式地或隐式地定义转型方法，否则类型间无法相互混用</span></p>
<p><span style="font-size: medium">弱类型（weakly typed language）：无视变量类型皆可赋值。（个人感觉好像有点像C语言里原始类型的指针void*）</span></p>
<p><span style="font-size: medium">至于类型安全和不安全（Safely and unsafely typed systems）似乎是另一种分类方法，我的理解是：</span><span style="font-size: medium">对任意一种操作符f，若f可接收n个操作数，则对n个任意类型且持有任意有定义的值的常量或变量集合A，若f(A)的操作总有定义，并且操作之后得到的值是有定义的，则是类型安全的，否则是不安全的。</span></p>
<div id="_mcePaste" style="width: 1px;height: 1px;overflow: hidden"><span style="font-size: medium"><a title="Erlang (programming language)" href="http://en.wikipedia.org/wiki/Erlang_%28programming_language%29">Erlang</a>, <a title="Groovy (programming language)" href="http://en.wikipedia.org/wiki/Groovy_%28programming_language%29">Groovy</a>, <a title="JavaScript" href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, <a title="Lisp (programming language)" href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29">Lisp</a>, <a title="Lua (programming language)" href="http://en.wikipedia.org/wiki/Lua_%28programming_language%29">Lua</a>, <a title="Objective-C" href="http://en.wikipedia.org/wiki/Objective-C">Objective-C</a>, <a title="Perl" href="http://en.wikipedia.org/wiki/Perl">Perl</a><a title="PHP" href="http://en.wikipedia.org/wiki/PHP">PHP</a>, <a class="mw-redirect" title="Prolog (programming language)" href="http://en.wikipedia.org/wiki/Prolog_%28programming_language%29">Prolog</a>, <a title="Python (programming language)" href="http://en.wikipedia.org/wiki/Python_%28programming_language%29">Python</a>, <a title="Ruby (programming language)" href="http://en.wikipedia.org/wiki/Ruby_%28programming_language%29">Ruby</a>, <a title="Smalltalk" href="http://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a><a title="Tcl" href="http://en.wikipedia.org/wiki/Tcl">Tcl</a> (with respect to user-defined types but not built-in types), </span> and</div>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2010/09/28/%e5%bc%ba%e7%b1%bb%e5%9e%8b%ef%bc%9f%e5%bc%b1%e7%b1%bb%e5%9e%8b%ef%bc%9f%e9%9d%99%e6%80%81%e8%af%ad%e8%a8%80%ef%bc%9f%e5%8a%a8%e6%80%81%e8%af%ad%e8%a8%80%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django: Python派对上奏响的轻快圆舞曲</title>
		<link>http://nisekagaku.blog.com/2010/09/27/django-python%e6%b4%be%e5%af%b9%e4%b8%8a%e5%a5%8f%e5%93%8d%e7%9a%84%e8%bd%bb%e5%bf%ab%e5%9c%86%e8%88%9e%e6%9b%b2/</link>
		<comments>http://nisekagaku.blog.com/2010/09/27/django-python%e6%b4%be%e5%af%b9%e4%b8%8a%e5%a5%8f%e5%93%8d%e7%9a%84%e8%bd%bb%e5%bf%ab%e5%9c%86%e8%88%9e%e6%9b%b2/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 15:47:43 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://delra.info/blog/?p=168</guid>
		<description><![CDATA[近来在做着拍脑袋找灵感的工作，自由地漫步在遐想国度之余，开始寻找一些快速构造原型的方法。想象中，一向只留给我们伟岸身影的数学家们可能只需要一打草稿纸就可以搞定一切，但说起来，咱毕竟是搞计算机的哈，若是不具有将理想具现化的能力，于情于理都是说不过去的。 在kite的引荐下，得知了玩聚网，虽然目标不同，方法不同，但同样还都是文本挖掘方面的同僚，看过人家的实现之后还是很有启发的。不过更引起我关注的是网站下端的Django Project字样，自从结识了Wordpress这么一个神奇的家伙之后，就不由自主地会关注网页的footer，真是帮大忙了！ 接下来用膝盖想都知道了：Django就是开发这个网站的框架啦。 那么这个框架究竟是何方神器呢？不打开潘多拉的盒子永远都不会知道的，而打开注定要面临灾厄…… Python，一种从没接触过的神秘语言。远古的传说中流传着它是一种弱类型语言的说法，而对于常年被强类型束缚大脑的coder来说，简直是一场噩梦！还好咱对编程还是有足够的信心的，鼓起勇气，硬起头皮看tutorial。一步一步跟着做。 “接下来就是见证奇迹的时刻。”一位知名小品演员的话语突然响彻耳畔。教程还没翻过第二页，咱就为这宝具的力量所折服：优美的MVC架构，模型与数据库的同步，URL管理机制，模板语言，还有完全不用操心的后台界面…… &#8230;Take a few minutes to marvel at all the code you didn&#8217;t have to write&#8230;. 好了，花几分钟来惊叹一下这些你从未写过的代码吧！ 喂喂，你这毫不自谦的教程能不能给我空一行吐槽的空间呀？哈！ 之前我没说过要做产品介绍，对吧？所以索性不细说了，详情见链接。 这是一个初次踏入这一领域的外行人对前人鬼斧神工的赞叹和膜拜！ 刚入口时，激烈的味道瞬间掀起一阵波澜——那来自一种从没吃过的香料，惊讶之余一股浓香淹没了意识。清醒过来后仔细咀嚼，又是一番别样滋味。令人感到如此清新和愉快。 理性的小恶魔在另一只耳畔说着，其实这不算什么，不过是些小聪明小把戏罢了。这东西的确算不上什么伟大的创造，就算是在相同领域中也未必是最好的，但是正如盛宴上首先呈上的一份开胃菜，不断刺激着本已消化不良的胃。 而在我所不知道的地方，究竟还有多少这般令人兴奋的东西存在呢？ Wake up every day with a feeling of passion for the different technology will make in people&#8217;s Life. By Microsoft http://www.djangoproject.com/ 开源中国社区 啄木鸟社区]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium"> </span></p>
<div id="attachment_169" class="wp-caption alignleft" style="width: 259px"><a href="http://nisekagaku.blog.com/files/2010/09/249px-Django9.jpg"><img class="size-full wp-image-169" src="http://nisekagaku.blog.com/files/2010/09/249px-Django9.jpg" alt="" width="249" height="200" /></a><p class="wp-caption-text">Django</p></div>
<p><span style="font-size: medium">近来在做着拍脑袋找灵感的工作，自由地漫步在遐想国度之余，开始寻找一些快速构造原型的方法。想象中，一向只留给我们伟岸身影的数学家们可能只需要一打草稿纸就可以搞定一切，但说起来，咱毕竟是搞计算机的哈，若是不具有将理想具现化的能力，于情于理都是说不过去的。</span></p>
<p><span style="font-size: medium">在kite的引荐下，得知了<a href="http://sr.ju690.cn/">玩聚网</a>，虽然目标不同，方法不同，但同样还都是文本挖掘方面的同僚，看过人家的实现之后还是很有启发的。不过更引起我关注的是网站下端的Django Project字样，自从结识了Wordpress这么一个神奇的家伙之后，就不由自主地会关注网页的footer，真是帮大忙了！</span></p>
<p><span style="font-size: medium">接下来用膝盖想都知道了：Django就是开发这个网站的框架啦。</span></p>
<p><span style="font-size: medium">那么这个框架究竟是何方神器呢？不打开潘多拉的盒子永远都不会知道的，而打开注定要面临灾厄……<span id="more-168"></span></span></p>
<p><span style="font-size: medium">Python，一种从没接触过的神秘语言。远古的传说中流传着它是一种弱类型语言的说法，而对于常年被强类型束缚大脑的coder来说，简直是一场噩梦！还好咱对编程还是有足够的信心的，鼓起勇气，硬起头皮看tutorial。一步一步跟着做。</span></p>
<p><span style="font-size: medium">“接下来就是见证奇迹的时刻。”一位知名小品演员的话语突然响彻耳畔。教程还没翻过第二页，咱就为这宝具的力量所折服：优美的MVC架构，模型与数据库的同步，URL管理机制，模板语言，还有完全不用操心的后台界面……</span></p>
<blockquote><p><span style="font-size: medium">&#8230;Take a few minutes to marvel at all the code you didn&#8217;t have to write&#8230;.</span></p>
<p><span style="font-size: medium">好了，花几分钟来惊叹一下这些你从未写过的代码吧！</span></p></blockquote>
<p><span style="font-size: medium">喂喂，你这毫不自谦的教程能不能给我空一行吐槽的空间呀？哈！</span></p>
<p><span style="font-size: medium">之前我没说过要做产品介绍，对吧？所以索性不细说了，详情见链接。</span></p>
<p><span style="font-size: medium">这是一个初次踏入这一领域的外行人对前人鬼斧神工的赞叹和膜拜！</span></p>
<p><span style="font-size: medium">刚入口时，激烈的味道瞬间掀起一阵波澜——那来自一种从没吃过的香料，惊讶之余一股浓香淹没了意识。清醒过来后仔细咀嚼，又是一番别样滋味。令人感到如此清新和愉快。</span></p>
<p><span style="font-size: medium">理性的小恶魔在另一只耳畔说着，其实这不算什么，不过是些小聪明小把戏罢了。这东西的确算不上什么伟大的创造，就算是在相同领域中也未必是最好的，但是正如盛宴上首先呈上的一份开胃菜，不断刺激着本已消化不良的胃。</span></p>
<p><span style="font-size: medium">而在我所不知道的地方，究竟还有多少这般令人兴奋的东西存在呢？</span></p>
<blockquote><p><span style="font-size: medium">Wake up every day with a feeling of passion for the different technology will make in people&#8217;s Life. <strong>By</strong> Microsoft<br />
</span></p></blockquote>
<p><span style="font-size: medium"><br />
</span></p>
<p><span style="font-size: medium"><br />
</span></p>
<p><span style="font-size: medium"><a href="http://www.djangoproject.com/">http://www.djangoproject.com/</a></span></p>
<p><span style="font-size: medium"><a href="http://www.oschina.net/p/django">开源中国社区</a></span></p>
<p><span style="font-size: medium"><a href="http://wiki.woodpecker.org.cn/moin/DjanGo">啄木鸟社区</a><br />
</span></p>
<p><span style="font-size: medium"><br />
</span></p>
<p><span style="font-size: medium"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2010/09/27/django-python%e6%b4%be%e5%af%b9%e4%b8%8a%e5%a5%8f%e5%93%8d%e7%9a%84%e8%bd%bb%e5%bf%ab%e5%9c%86%e8%88%9e%e6%9b%b2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>追根溯源</title>
		<link>http://nisekagaku.blog.com/2010/09/23/%e8%bf%bd%e6%a0%b9%e6%9c%94%e6%ba%90/</link>
		<comments>http://nisekagaku.blog.com/2010/09/23/%e8%bf%bd%e6%a0%b9%e6%9c%94%e6%ba%90/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 11:28:16 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://delra.info/blog/?p=162</guid>
		<description><![CDATA[偶然遇到了一个字符编码问题，google了一下，查到了篇不错的文章。名唤《字符编解码的故事（ASCII，ANSI，Unicode，Utf-8）》，方方面面写得都很详细，更可贵的是深入浅出。刚准备分享，猛然发现题目上有个大大的“转”字，遂心道：要分享的话当然还是要找到原始出处再分享为妙吧。可是上上下下地找过之后，发现页面中并没有原文的链接。你这转载也太道德了吧？ 不过这点问题好解决，用这个题目再到google里找一圈去。于是乎，Ok，找到了琳琅满目的真相。 点了几个链接，基本上全是转载。也是呢，google的搜索结果是按PR值排名的，完全没有原创性的保证。（什么？让我去问度娘？这么无耻的话也说得出口！？） 这我就不怪google了，可是你们这帮转载的人不知道给个原文链接吗？有的还荒唐地注上了“原文出处不详”——你以为是武林传说吗？不详你不会去找吗？ 更有甚者，完全不做标记，如果不是你发表时间忒靠后，我还真把你当原创了呢！转载不写引用者，贼人也。鄙视你(ーー) 再去google找，加上关键词“-转载”，依然没有找到原文。好在碰上了一位48岁的程序员博客（前面那句话好像略有语病，嘛……）给了一个醒目而给力的链接，真是感谢！一下就跳到了百度空间上，找到了正主，仔细看看，人家原文不是叫这个名字，而且是一个系列文章中的其中一篇。 问我怎么知道这个是正主？是啊……我也确定不了，只不过看了文章前面的一段引言，加上系列文章，和相似的文风，再考虑到发表时间比较早，严格来讲是原创的概率非常大。由于超过了脑子里的一个固有阈值，所以认为他是原创，这个解释还算合理吧？ 一直对字符的各种编码方式懵懵懂懂，什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕，假如您细细的阅读本文你一定可以清晰的理解他们。Let&#8217;s go! 对写此文章的这位作者表示感谢。 最后，我们的搜索技术除了用pr值这种方法之外，能否在原创性上也加以考虑呢？尽管这相对困难些，但对那些在偏僻的小角落里精心写着精彩文章的博主是一种极大的尊重和肯定啊！ 字符编解码的故事（ASCII，ANSI，Unicode，Utf-8）]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium">偶然遇到了一个字符编码问题，google了一下，查到了篇不错的文章。名唤《<a href="http://dev.firnow.com/course/3_program/java/javaxl/20100719/451946.html">字符编解码的故事（ASCII，ANSI，Unicode，Utf-8）</a>》，方方面面写得都很详细，更可贵的是深入浅出。刚准备分享，猛然发现题目上有个大大的“转”字，遂心道：要分享的话当然还是要找到原始出处再分享为妙吧。可是上上下下地找过之后，发现页面中并没有原文的链接。你这转载也太道德了吧？</span></p>
<p><span style="font-size: medium"><span id="more-162"></span>不过这点问题好解决，用这个题目再到google里找一圈去。于是乎，Ok，找到了琳琅满目的真相。<br />
点了几个链接，基本上全是转载。也是呢，google的搜索结果是按PR值排名的，完全没有原创性的保证。（什么？让我去问度娘？这么无耻的话也说得出口！？）</span></p>
<p><span style="font-size: medium">这我就不怪google了，可是你们这帮转载的人不知道给个原文链接吗？有的还荒唐地注上了“原文出处不详”——你以为是武林传说吗？不详你不会去找吗？</span></p>
<p><span style="font-size: medium"><a href="http://nisekagaku.blog.com/files/2010/09/zhuanzai.jpg"><img class="alignnone size-full wp-image-163" src="http://nisekagaku.blog.com/files/2010/09/zhuanzai.jpg" alt="" width="519" height="96" /></a></span></p>
<p><span style="font-size: medium">更有甚者，<a rel="nofollow" href="http://hi.baidu.com/fzcid/blog/item/11566c893fc14fbe0e24445d.html" target="_blank">完全不做标记</a>，如果不是你发表时间忒靠后，我还真把你当原创了呢！转载不写引用者，贼人也。鄙视你(ーー)<br />
</span></p>
<p><span style="font-size: medium">再去google找，加上关键词“-转载”，依然没有找到原文。好在碰上了一位<a href="http://hi.baidu.com/jxq61/home">48岁的程序员博客</a>（前面那句话好像略有语病，嘛……）给了一个醒目而给力的链接，真是感谢！一下就跳到了百度空间上，找到了<a href="http://hi.baidu.com/zou_wei/blog/item/f8cf366d90e37cfc43169426.html">正主</a>，仔细看看，人家原文不是叫这个名字，而且是一个系列文章中的其中一篇。</span></p>
<p><span style="font-size: medium">问我怎么知道这个是正主？是啊……我也确定不了，只不过看了文章前面的一段引言，加上系列文章，和相似的文风，再考虑到发表时间比较早，严格来讲是原创的概率非常大。由于超过了脑子里的一个固有阈值，所以认为他是原创，这个解释还算合理吧？</span></p>
<blockquote><p><span style="font-size: medium">一直对字符的各种编码方式懵懵懂懂，什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕，假如您细细的阅读本文你一定可以清晰的理解他们。Let&#8217;s go!</span></p></blockquote>
<p><span style="font-size: medium">对写此文章的这位作者表示感谢。</span></p>
<p><span style="font-size: medium">最后，我们的搜索技术除了用pr值这种方法之外，能否在原创性上也加以考虑呢？尽管这相对困难些，但对那些在偏僻的小角落里精心写着精彩文章的博主是一种极大的尊重和肯定啊！<br />
</span></p>
<div id="_mcePaste" style="width: 1px;height: 1px;overflow: hidden">
<h1 class="title_txt"><span style="font-size: medium"> 字符编解码的故事（ASCII，ANSI，Unicode，Utf-8）</span></h1>
</div>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2010/09/23/%e8%bf%bd%e6%a0%b9%e6%9c%94%e6%ba%90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>专家辟谣：“百度说吧”与“百度SB”并无亲子关系</title>
		<link>http://nisekagaku.blog.com/2010/09/17/%e4%b8%93%e5%ae%b6%e8%be%9f%e8%b0%a3%ef%bc%9a%e2%80%9c%e7%99%be%e5%ba%a6%e8%af%b4%e5%90%a7%e2%80%9d%e4%b8%8e%e2%80%9c%e7%99%be%e5%ba%a6sb%e2%80%9d%e5%b9%b6%e6%97%a0%e4%ba%b2%e5%ad%90%e5%85%b3%e7%b3%bb/</link>
		<comments>http://nisekagaku.blog.com/2010/09/17/%e4%b8%93%e5%ae%b6%e8%be%9f%e8%b0%a3%ef%bc%9a%e2%80%9c%e7%99%be%e5%ba%a6%e8%af%b4%e5%90%a7%e2%80%9d%e4%b8%8e%e2%80%9c%e7%99%be%e5%ba%a6sb%e2%80%9d%e5%b9%b6%e6%97%a0%e4%ba%b2%e5%ad%90%e5%85%b3%e7%b3%bb/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 12:58:36 +0000</pubDate>
		<dc:creator>Delete</dc:creator>
		
		<guid isPermaLink="false">http://delra.info/blog/?p=150</guid>
		<description><![CDATA[一不留神，笔者注册了百度说吧——一个号称实名社区的酷似微博的神秘组织，获得了世界上独一无二的SB号。在深感光荣的同时，又感到它是如此的神秘，以至于迫不及待地想看看它的独到之处。 首先我们看到的是一个酷似微博的主页面，但请注意，它不是微博。当然，里面也有一些我们似曾相识的组件：比如有一个只允许输入140个字的奇怪文本框，一个怪蜀黍的个人资料和大头像，还有一个不请自来非要follow你，又非要你follow的小姑娘。 这就是与其他微博不同的地方啦：奇怪文本框的下面有一个插入图片的按钮——而不是“一排”七七八八的插入按钮。以及小姑娘头像下方有一个令人垂涎欲滴的“换”字，不知南京某教授看了之后有何感触。不过据说真相是用户交换手机号，真不错，难怪有专家称可以把百度建设成“世纪佳缘”。 接下来就是强势的“SB广场”页面，里面陈列着各式各样的SB。还有我这个SB在看着他们。 最后，来看看我们最关心的实名认证系统。 注册的时候首先要输入手机号以获取验证码——确保用户有支付一台手机开销的财力。 输入中文姓名——确保用户认得中文。 然后要上传一个头像——确保用户的长相不会吓跑各位相亲的来宾。 最后要输入身份证到哪个威武的平台上去认证——确保用户已经到了适婚年龄。 瞧，做足了婚恋网的准备。 笔者本来想给古板而又可爱的理查德中校征友的，不过好心的系统提示我们说，如果不用真实照片就不能发图片。哦，NO，不能上PP还怎么征友？于是笔者遐想到：莫非是后台有个什么人脸识别系统，对我们二次元的中校不满意？于是改传一个三次元蒙面大叔的照片。 果然一上来大叔受到了亲睐的，系统不再提示照片问题，而是改提示姓名与身份证不符。我勒个去，它还真去公安部验证去啦？……不过好景不长，过了一会儿，蒙面大叔也被抛弃了。莫非系统不是个大叔控，而是萝莉控吗？还是说，其实后台有个家伙在做人脸审核呢？真不禁对他的工作强度表示担心，是不是符合劳动法的呀？对了，淫淫网好像也有头像审核队伍，哎，想看美女图片的人真多。 好了，上面便是笔者看到的全部了，真是“简约而不简单”，简约到吐血，当然我们有理由相信它的血肉会慢慢丰富——反正又没啥难度。接下来说说实质问题吧，看官请轻戳翻页…… 在下一页中专家将为SB辟谣。 【插广告】 在这个新的章节里，我们来说说这个说吧怎样推向市场吧？ 这还用说吗？世纪佳缘嘛。 可百度说：我们的目标是“实名社交平台”——诶？什么嘛，不是婚恋网啊……真失望。 言归正传，所谓实名社区到底会有多少人来参与呢？这里给几个写得很给力的外链供参考。（排名不分先后） 百度说吧，说个毛啊！&#60;&#60; ZFreet . CHeung 东拉西扯：说说百度说吧 &#60;&#60; 对牛乱弹琴 说说百度说吧 如何死掉 &#60;&#60; 苏湘迅观察 前因后果略过了，单说百度是不是傻呀？不想有用户了吗？百度说吧真的是百度SB的近亲吗？ 我想，不是的。 如果想理解别人的意图，首先就一定要坚信：那人不是SB。 百度不是一个菜鸟，他岂能不知实名制将会给自己的市场带来多大的冲击？ 我们应该看到，这是一个信号。 有足够的证据表明，微博是当今社会中非官方信息传播速度最快的媒体，没有之一。 回想一下前些时候，所有微博又重新挂上“测试版”招牌的事吧。他们在做什么呢？ 他们在等待相关规定的出台，等着主人把项圈套在自己的脖子上，生怕自己做了出头鸟，重蹈了谷歌的覆辙。 另一方面，一如既往保持神秘的相关部门却迟迟不见动静，它们去干什么了呢？ 忙着洗脚还是忙着采购中秋月饼为国庆61周年献礼？ 而百度这时候出击了，它提出了一种方案——实名制。 我们应该佩服百度，在最恰当的时机插入到了这片看起来已经成熟，其实却尚未开发的土地。 SB实名制的背后是期望着有人站出来买单，如果成功则一本万利，如果没人买单，以现在这“简约”的投入也损失不了什么东西。 成功的收入主要是官方形象，本来在国外上市，老外股东，充分受到不信任的情况下，现在借助微博实名制又被饲主正眼看待了。 这难道不是聪明之举吗？ 由于不恰当的发言将会直接锁定到个人，因此绝不会有人擅自做出愚蠢的举动。 ——博弈——万马齐喑？ 如果能够达到这个效果，我想相关部门一定很满意。 除此之外，谁来再提个方案吧？新浪，腾讯，你们都来说说看？说一个能让我们神秘的相关部门满意的方案？！ 最后，让我们YY一下如果实名制得到了认可会发生什么事吧～ =&#62;CCAV新闻联播焦点访谈披露某某微博散布色情小段子，影响青少年身心健康。 =&#62;采访青少年代表：“有一天我打开了个微博，很黄很暴力，我马上就给关上了。” =&#62;家长代表强烈要求相关部门对微博进行管控。 =&#62;相关部门以迅雷不及掩耳盗铃之势做出响应，出台管理规定：所有微博必须实行实名制，在得到运营许可证之后才可正式上线，否则视为非法运营。 =&#62;已经拥有大批用户的新浪腾讯早就闻到了气味，第二天就把偷偷准备就绪的认证系统上线，随即损失了一批用户。 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium">一不留神，笔者注册了百度说吧——一个号称实名社区的酷似微博的神秘组织，获得了世界上独一无二的SB号。在深感光荣的同时，又感到它是如此的神秘，以至于迫不及待地想看看它的独到之处。</span></p>
<p><span style="font-size: medium"><a href="http://nisekagaku.blog.com/files/2010/09/baiduSB-1.jpg"><img class="alignnone size-medium wp-image-151" src="http://delra.info/blog/wp-content/uploads/2010/09/baiduSB-1-300x266.jpg" alt="" width="300" height="266" /></a></span></p>
<p><span style="font-size: medium"><span id="more-150"></span>首先我们看到的是一个酷似微博的主页面，但请注意，它不是微博。当然，里面也有一些我们似曾相识的组件：比如有一个只允许输入140个字的奇怪文本框，一个怪蜀黍的个人资料和大头像，还有一个不请自来非要follow你，又非要你follow的小姑娘。</span></p>
<p><span style="font-size: medium">这就是与其他微博不同的地方啦：奇怪文本框的下面有一个插入图片的按钮——而不是“一排”七七八八的插入按钮。以及小姑娘头像下方有一个令人垂涎欲滴的“换”字，不知<a href="http://www.huaxia.com/xw/mttt/2010/04/1824871.html">南京某教授</a>看了之后有何感触。不过据说真相是用户交换手机号，真不错，难怪有专家称可以把百度建设成“</span><span style="font-size: medium">世纪佳缘”。</span></p>
<p><span style="font-size: medium"><a href="http://nisekagaku.blog.com/files/2010/09/baiduSB-2.jpg"><img class="alignnone size-medium wp-image-152" src="http://delra.info/blog/wp-content/uploads/2010/09/baiduSB-2-300x266.jpg" alt="" width="300" height="266" /></a></span></p>
<p><span style="font-size: medium">接下来就是强势的“SB广场”页面，里面陈列着各式各样的SB。还有我这个SB在看着他们。</span></p>
<p><span style="font-size: medium">最后，来看看我们最关心的实名认证系统。</span></p>
<p><span style="font-size: medium">注册的时候首先要输入手机号以获取验证码——确保用户有支付一台手机开销的财力。<br />
输入中文姓名——确保用户认得中文。<br />
然后要上传一个头像——确保用户的长相不会吓跑各位相亲的来宾。<br />
最后要输入身份证到哪个威武的平台上去认证——确保用户已经到了适婚年龄。</span></p>
<p><span style="font-size: medium">瞧，做足了婚恋网的准备。</span></p>
<p><span style="font-size: medium">笔者本来想给古板而又可爱的理查德中校征友的，不过好心的系统提示我们说，如果不用真实照片就不能发图片。哦，NO，不能上PP还怎么征友？于是笔者遐想到：莫非是</span><span style="font-size: medium">后台</span><span style="font-size: medium">有个什么人脸识别系统，对我们二次元的</span><span style="font-size: medium">中校</span><span style="font-size: medium">不满意？于是改传一个三次元蒙面大叔的照片。</span></p>
<p><span style="font-size: medium"><a href="http://nisekagaku.blog.com/files/2010/09/baiduSB-3.jpg"><img class="alignnone size-full wp-image-153" src="http://nisekagaku.blog.com/files/2010/09/baiduSB-3.jpg" alt="" width="189" height="240" /></a></span></p>
<p><span style="font-size: medium">果然一上来大叔受到了亲睐的，系统不再提示照片问题，而是改提示姓名与身份证不符。我勒个去，它还真去公安部验证去啦？……不过好景不长，过了一会儿，蒙面大叔也被抛弃了。莫非系统不是个大叔控，而是萝莉控吗？还是说，其实后台有个家伙在做人脸审核呢？真不禁对他的工作强度表示担心，是不是符合劳动法的呀？对了，淫淫网好像也有头像审核队伍，哎，想看美女图片的人真多。</span></p>
<p><span style="font-size: medium"><a href="http://nisekagaku.blog.com/files/2010/09/baiduSB-4.jpg"><img class="alignnone size-full wp-image-154" src="http://nisekagaku.blog.com/files/2010/09/baiduSB-4.jpg" alt="" width="191" height="219" /></a><br />
</span></p>
<p><span style="font-size: medium">好了，上面便是笔者看到的全部了，</span><span style="font-size: medium">真是“简约而不简单”，简约到吐血，当然我们有理由相信它的血肉会慢慢丰富——反正又没啥难度。接下来说说实质问题吧，看官请轻戳翻页……</span></p>
<p><span style="font-size: medium">在下一页中专家将为SB辟谣。</span></p>
<p><span style="font-size: medium">【插广告】</span></p>
<p><span style="font-size: medium"><br />
</span></p>
<p><span style="font-size: medium">在这个新的章节里，我们来说说这个说吧怎样推向市场吧？</span></p>
<p><span style="font-size: medium">这还用说吗？世纪佳缘嘛。</span></p>
<p><span style="font-size: medium">可百度说：我们的目标是“实名社交平台”——诶？什么嘛，不是婚恋网啊……真失望。</span></p>
<p><span style="font-size: medium">言归正传，所谓实名社区到底会有多少人来参与呢？这里给几个写得很给力的外链供参考。（排名不分先后）</span></p>
<p><a href="http://www.zfreet.com/post/t-baidu-invite.html">百度说吧，说个毛啊！&lt;&lt; ZFreet . CHeung</a><a href="http://blog.donews.com/keso/archive/2010/09/17/1583605.aspx"></a></p>
<p><a href="http://blog.donews.com/keso/archive/2010/09/17/1583605.aspx">东拉西扯：说说百度说吧 &lt;&lt; 对牛乱弹琴</a></p>
<p><a href="http://pma.blog.chinabyte.com/2010/09/16/232/">说说百度说吧 如何死掉 &lt;&lt; 苏湘迅观察</a></p>
<p><span style="font-size: medium">前因后果略过了，单说百度是不是傻呀？不想有用户了吗？百度说吧真的是百度SB的近亲吗？</span></p>
<p><span style="font-size: medium">我想，不是的。<br />
如果想理解别人的意图，首先就一定要坚信：那人不是SB。<br />
百度不是一个菜鸟，他岂能不知实名制将会给自己的市场带来多大的冲击？<br />
我们应该看到，这是一个信号。</span></p>
<p><span style="font-size: medium">有足够的证据表明，微博是当今社会中非官方信息传播速度最快的媒体，没有之一。<br />
回想一下前些时候，所有微博又重新挂上“测试版”招牌的事吧。他们在做什么呢？<br />
他们在等待相关规定的出台，等着主人把项圈套在自己的脖子上，生怕自己做了出头鸟，重蹈了谷歌的覆辙。<br />
另一方面，</span><span style="font-size: medium">一如既往保持神秘的相关部门</span><span style="font-size: medium">却迟迟不见动静，它们去干什么了呢？<br />
忙着洗脚还是忙着采购中秋月饼为国庆61周年献礼？<br />
而百度这时候出击了，它提出了一种方案——实名制。<br />
我们应该佩服百度，在最恰当的时机插入到了这片看起来已经成熟，其实却尚未开发的土地。<br />
</span><span style="font-size: medium">SB实名制的背后是期望着有人站出来买单，如果成功则一本万利，如果没人买单，以现在这“简约”的投入也损失不了什么东西。<br />
成功的收入主要是官方形象，本来在国外上市，老外股东，充分受到不信任的情况下，现在借助微博实名制又被饲主正眼看待了。<br />
这难道不是聪明之举吗？</span></p>
<p><span style="font-size: medium">由于不恰当的发言将会直接锁定到个人，因此绝不会有人擅自做出愚蠢的举动。<br />
</span><span style="font-size: medium">——博弈——万马齐喑？<br />
如果能够达到这个效果，我想相关部门一定很满意。<br />
除此之外，谁来再提个方案吧？新浪，腾讯，你们都来说说看？说一个能让我们神秘的相关部门满意的方案？！</span></p>
<p><span style="font-size: medium">最后，让我们YY一下如果实名制得到了认可会发生什么事吧～<br />
=&gt;CCAV新闻联播焦点访谈披露某某微博散布色情小段子，影响青少年身心健康。<br />
=&gt;采访青少年代表：“有一天我打开了个微博，很黄很暴力，我马上就给关上了。”<br />
=&gt;家长代表强烈要求相关部门对微博进行管控。<br />
=&gt;相关部门以迅雷不及掩耳盗铃之势做出响应，出台管理规定：所有微博必须实行实名制，在得到运营许可证之后才可正式上线，否则视为非法运营。<br />
=&gt;已经拥有大批用户的新浪腾讯早就闻到了气味，第二天就把偷偷准备就绪的认证系统上线，随即损失了一批用户。<br />
分支1=&gt;广大有志青年分分学习bypass技术，纷纷上推表示不满。<br />
=&gt;防火长城频繁升级，加强围追堵截。进一步刺激翻墙技术的开发。<br />
=&gt;我国成为网络技术大国，网络科技创新数量猛飙。<br />
分支2=&gt;一直在百度说吧里谈情说爱的男男女女成为国内微博的主要用户。<br />
=&gt;和谐社会的建立。</span></p>
<p><span style="font-size: medium">如此居功至伟，您还觉得百度说吧和百度SB有关系吗？<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://nisekagaku.blog.com/2010/09/17/%e4%b8%93%e5%ae%b6%e8%be%9f%e8%b0%a3%ef%bc%9a%e2%80%9c%e7%99%be%e5%ba%a6%e8%af%b4%e5%90%a7%e2%80%9d%e4%b8%8e%e2%80%9c%e7%99%be%e5%ba%a6sb%e2%80%9d%e5%b9%b6%e6%97%a0%e4%ba%b2%e5%ad%90%e5%85%b3%e7%b3%bb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
