<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.3" -->
<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/"
	>

<channel>
	<title>刘杰</title>
	<link>http://www.liujie.org.cn</link>
	<description>刘杰懂得刘杰的幸福，然后刘杰说：刘杰不会忘了痛苦，因为那里有幸福的源头。</description>
	<pubDate>Sat, 22 Nov 2008 00:59:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.3</generator>
	<language>en</language>
			<item>
		<title>大淘宝VS.百度之技术屏障</title>
		<link>http://www.liujie.org.cn/archives/62</link>
		<comments>http://www.liujie.org.cn/archives/62#comments</comments>
		<pubDate>Sat, 22 Nov 2008 00:59:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[刘杰乱弹]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/62</guid>
		<description><![CDATA[注意力一直在搜索引擎上，直到最近Ming总时不时提到“大淘宝”，才开始关注这件事情。
事件1：
昨日去阿里得知大淘宝计划已经实施。
事件2：
从百度部门得知，百度搜索引擎已经开始对用户的搜索、点击行为（行动轨迹）进行记录。
事件3：
阿里妈妈正在研发网络碎片相关技术嵌入阿里妈妈体系。
百度可以在第一时间拿到网民搜索数据，这点对于阿里来讲略显困难。大淘宝提出了“淘宝的数据更有价值”，不难看出，从海量的用户搜索数据到淘宝的用户购物数据，淘宝更为精准。
数据挖掘，数据挖掘……
大淘宝战略与百度抗衡的关键技术点啊！
]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/62/feed</wfw:commentRss>
		</item>
		<item>
		<title>TextMate心得</title>
		<link>http://www.liujie.org.cn/archives/61</link>
		<comments>http://www.liujie.org.cn/archives/61#comments</comments>
		<pubDate>Wed, 23 Jul 2008 02:09:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/61</guid>
		<description><![CDATA[折腾了多日，搞定了mac os x 和编译器，以及这个TextMate。很关键，一定要记录一下。
TextMate 介绍
TextMate is not an IDE but by using its powerful snippets, macros, and unique scoping system, it can often provide features that even a language specific IDE lacks. It has enough project management features to keep most users happy, but is otherwise kept lightweight with a clean and minimalistic GUI.
下载地址
http://macromates.com/
因为TextMate自带 Ruby [...]]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/61/feed</wfw:commentRss>
		</item>
		<item>
		<title>Web2.0:帮你辨别跟你聊天的是人还是狗</title>
		<link>http://www.liujie.org.cn/archives/60</link>
		<comments>http://www.liujie.org.cn/archives/60#comments</comments>
		<pubDate>Tue, 01 Jul 2008 16:09:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[刘杰乱弹]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/60</guid>
		<description><![CDATA[今晚心血来潮和哥几个一起吃饭，我们如是说：
8年前流行一句话：你不知道互联网另一端屏幕前坐着的是个人还是条狗。 那就是web.
今天：有了SNS你就可以辨别出互联网另一端的屏幕前坐着的是人还是狗。 这就是web2.0
好大的飞跃啊！
]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/60/feed</wfw:commentRss>
		</item>
		<item>
		<title>Ruby中“符号”Symbol 的意义</title>
		<link>http://www.liujie.org.cn/archives/59</link>
		<comments>http://www.liujie.org.cn/archives/59#comments</comments>
		<pubDate>Tue, 17 Jun 2008 08:58:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/59</guid>
		<description><![CDATA[在Ruby中，一个符号是就是一个Symbol类的实例，它的语法是在通常的变量名前加一个冒号，如
:my_sy
Ruby的符号像一个字符串，因为它内部表现形式是一个字符序列。而与字符串不同的是，每个符号的实例只有一个。看下面的例子：
array = [&#8221;foo&#8221;, &#8220;foo&#8221;, &#8220;foo&#8221;, :foo, :foo, :foo]
建立这个数组后，内存中将有三个内容为&#8221;foo&#8221;的字符串对象，而只有一个:foo对象。
一个符号有它唯一对应的一个整数值，可以用to_i来获取它。
符号常用的地方是用它来代表变量名或者方法名：
class SomeClass
  attr_accessor :whatever
end
与上面程序对等的程序如下：
class SomeClass
  def whatever
    @whatever
  end
  def whatever=(val)
    @whatever = val
  end
end
你可能会问，为什么不用字符串来表示呢？其实，字符串也是可以的：
attr_reader :alpha
attr_reader &#8220;beta&#8221;   # 也是合法的
那它们的区别在哪里？某种意义上来说，是为了提高程序性能，节省内存吧。
有的人说,&#8221;符号就如同不可变的字符串&#8221;，从它的行为上来说，可能是对的。但是，Symbol并是是继承至String，而且，与字符串相关
的那些典型操作方法，Symbol也不一定有，也不需要有。
符号不一定看起来是像变量一样，它也可以这样：
sym1 = :&#8221;This is a symbol&#8221;
sym2 = :&#8221;This is, too!&#8221;
sym3 = :&#8221;)(*&#038;^%$&#8221;
你可以用这样奇怪的符号来定义实例变量名或方法，你可以使用诸如send或instance_variable_get来获取它们的引用。虽然是可行的，
但请尽量不要使用这么奇怪的符号。
用Symbol作为枚举
==========================================
像Pascal或版本稍晚的C语言，都存在enum这种类型。Ruby不能正真的拥有这样的类型，因为它没有类型检查。但使用Symbol可以用来产生
这样的效果：
North, South, East, West = :north, [...]]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/59/feed</wfw:commentRss>
		</item>
		<item>
		<title>Dede cms(utf-8)中的问题及解决</title>
		<link>http://www.liujie.org.cn/archives/57</link>
		<comments>http://www.liujie.org.cn/archives/57#comments</comments>
		<pubDate>Mon, 09 Jun 2008 10:37:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[工程学&amp;编码]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/57</guid>
		<description><![CDATA[在dedecms4的utf8改版中,发布文档时可能出现:
更新数据库archives表时出错，请检查！
或
把数据保存到数据库archives表时出错，请检查!
以上两种情况分别为修改和新增,对应的php为
article_eidt_action.php和article_add_action.php,数据库操作为include/pub_db_mysql.php,中文字符串截取为
include/inc_functions.php中的cn_substr函数,此函数只支持双字节即gbk编码,所以要改成截取utf-8的.此时edit已正常,但add还出错,把
if(!$dsql->ExecuteNoneQuery()){
   $dsql->Close();
   ShowMsg(&#8221;把数据保存到数据库archives表时出错，请检查！&#8221;,&#8221;-1&#8243;);
   exit();
}
改成
if(!$dsql->ExecuteNoneQuery()){
   $errorSql = htmlSpecialchars($dsql->queryString);
   $errorMsg = htmlSpecialchars(mysql_error());
   $dsql->Close();
   //ShowMsg(&#8221;把数据保存到数据库archives表时出错，请检查！&#8221;,&#8221;-1&#8243;);
   //ShowMsg是document.write的js方法,不知为什么在加入$errorSql后不显示,所以用echo
   echo &#8220;把数据保存到数据库archives表时出错，请检查！查询语句: $errorSql  mysql错误提示:  $errorMsg &#8220;;
   exit();
}
看提示是keywords字段长了,原来是中文分词时出错,include/pub_splitword_www.php调用字典include/data/dede_wwwdic.csv,可csv是gbk编
码的.改分词程序没成功,所以不分词了,关键字手工填就是了.把article_add_action.php中的
//自动获取文章中的关键字
//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
if($autokey==1&#124;&#124;$keywords==&#8221;"){
改成
//自动获取文章中的关键字
//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
if(0 &#038;&#038; ($autokey==1&#124;&#124;$keywords==&#8221;")){
发布文档后的成功提示无法显示,
把include/win_templet.htm中
charset={dede:cfg_language/}改成
charset=utf-8
更新html那个框架中的字乱码,在浏览器中选utf8就行,但不知在哪个文件中改
图片栏目如果选分页显示,会在第2页开始图片上方有一行字:分页标题#e#,找不到在哪改,因此修改
dede/templates/default/article_iamge.htm,把
{dede:field name=&#8217;imgurls&#8217;/}
改成
{dede:field name=&#8217;imgurls&#8217;/}

var imagePageBody = document.getElementById(\'imagePageBody\');
imagePageBody.innerHTML = imagePageBody.innerHTML.replace(\'分页标题#e#\', \'\');

也就是用js把这串字符替换
dede/article_eidt.php有错误,没有定义SelectTemplets函数,所以不能选择模板,在页面上方的js中把这个函数加上
function SelectTemplets(fname)
{
  var [...]]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/57/feed</wfw:commentRss>
		</item>
		<item>
		<title>如何生成搜索结果中的动态摘要</title>
		<link>http://www.liujie.org.cn/archives/55</link>
		<comments>http://www.liujie.org.cn/archives/55#comments</comments>
		<pubDate>Mon, 09 Jun 2008 10:15:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[搜索引擎技术]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/55</guid>
		<description><![CDATA[在搜索的结果页面，标题下要显示文本的摘要，但是怎样能使用简短的几句话就可以实现动态摘要呢？
本文提供了三个思路方法：
方法一. 只记录关键字在一篇文档中第一次出现的位置
产生动态摘要时, 根据关键字第一次出现的位置p向前后扩展, 扩展至完整的句子, 扩展到需要的摘要的长度为止. 如果同时检索多个关键字, 那么各句动态摘要合并起来, 可能中间需要用省略号连接.
这种方法产生动态摘要的速度最快, 存储位置占用的空间最小; 但是可能产生的动态摘要不是最好的.
方法二. 记录关键字在一篇文档中所有出现的位置
记录所有的位置可以计算出文档的哪一部分与查询最相关, 尤其进行多关键字查询时, 将每个关键字出现的所有位置进行统计, 计算出文档的哪一部分同时出现了这几个关键字, 从而产生动态摘要. 这样产生的动态摘要比较准确, 但是存储位置占用的空间比较大.
方法三. 对文档事先进行断句(分块)处理, 记录关键字出现的所有句子编号.
生成动态摘要时, 对包含查询关键字的句子进行打分, 将得分最高的句子做为摘要.
这样产生的动态摘要也比较准确, 但是这种方法需要对文档事先进行断句(或是分块)的预处理.
]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/55/feed</wfw:commentRss>
		</item>
		<item>
		<title>中文分词的重要概念：条件随机场(Conditional Random Fields, CRFs)</title>
		<link>http://www.liujie.org.cn/archives/53</link>
		<comments>http://www.liujie.org.cn/archives/53#comments</comments>
		<pubDate>Mon, 09 Jun 2008 10:00:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[刘杰乱弹]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/53</guid>
		<description><![CDATA[一般序列分类模型常常采用隐马模型(HMM), 像基于类的中文分词, 但隐马 模型中存在两个假设: 输出独立性假设和马尔可夫性假设. 其中, 输出独立性假设要求序列数据严格相互独立才能保证推导的正确性, 而事实上大多数序列数据不能 被表示成一系列独立事件. 而条件随机场则使用一种概率图模型, 具有表达长距离依赖性和交叠性特征的能力, 能够较好地解决标注(分类)偏置等问题的优点, 而且所有特征可以进行全局归一化, 能够求得全局的最优解.
条件随机场是一个无向图上概率分布的学习框架, 由Lafferty 等首先引入到自然语言处理的串标引学习任务中来. 最常用的一类CRF是线性链CRF, 适用于我们的分词学习. 记观测串为W=w1w2…wn, 标记串(状态)序列 Y=y1y2…yn, 线性链CRF对一个给定串的标注, 其概率定义为:

其中, Y是串的标注序列, W是待标记的字符, fk是特征函数, λk是对应的特征函数的权值, 而t是标记, Z(W)是归一化因子, 使得上式成为概率分布.
CRF模型的参数估计通常使用L-BFGS算法来完成. CRF的解码过程, 也就是求解未知串标注的过程, 需要搜索计算该串上的一个最大联合概率, 即:
Y* = arg max(y)P(Y&#124;W)
在线性链CRF上, 这个计算任务可以用一般的Viterbi算法来有效地完成.
目前我发现的关于CRF的实现有:
    * CRF++(http://crfpp.sourceforge.net/)
    * Pocket CRF(http://sourceforge.net/project/showfiles.php?group_id=201943)
]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/53/feed</wfw:commentRss>
		</item>
		<item>
		<title>分词方法三：反向最大匹配分词(BMM)</title>
		<link>http://www.liujie.org.cn/archives/49</link>
		<comments>http://www.liujie.org.cn/archives/49#comments</comments>
		<pubDate>Mon, 09 Jun 2008 09:57:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[刘杰乱弹]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/49</guid>
		<description><![CDATA[BMM方法和FMM过程类似，不同点仅在于BMM是从文本的末尾开始处理，每次匹配不成功时去掉的是最前面的一个字。BMM方法的精度要高一些，其错误率是1/245。
]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/49/feed</wfw:commentRss>
		</item>
		<item>
		<title>如何DIY你的标注语料库</title>
		<link>http://www.liujie.org.cn/archives/52</link>
		<comments>http://www.liujie.org.cn/archives/52#comments</comments>
		<pubDate>Mon, 09 Jun 2008 09:57:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[中文分词]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/52</guid>
		<description><![CDATA[如果你想写分词器，那么就需要有标注语料库进行训练，以下是 成 彦 的一些方法：
语料库标注或加工就是对语料（书面语和口语）进行不同层次的语言学分析，并添加相应的“显性”解释性语言学信息的过程。 语料库很关键，只有经过不周层次加工的“熟”语料才可真正用于自然语言处理系统的训练，测试。
目前我在网上找到的标注语料库是北京大学计算语言学研究所免费提供的“PFR人民日报标注语料1.0”。
PFR人民日报标注语料库1.0是在得到人民日报社新闻信息中心许可的条件下，以1998年人民日报语料为对象，由北京大学计算语言学研究所和富士通研究开发中心有限公司共同制作的标注语料库。该语料库对600多万字节的中文文章进行了分词及词性标注，其被作为原始数据应用于大量的研究和论文中。
是不是感觉该标注语料库太小太旧了? 那我们去构建自己的标注语料库吧。
思路：用最好的分词器去处理语料库，生成标注语料。
工具：海量分词器研究版，搜狗互联网语料库
海量分词器：目前最好的中文分词器，无论在速度还是准确性都是国内第一。切分准确率达99.7%，速度高达2000万字/分钟。
搜狗互联网语料库：完整版本的压缩后近130G，这需要自己去到搜狐联系。网上提供示例版，解压后是1G，50万篇文章。注意的一点是，不知道是否故意还是无意，这个文件里有错误，处理的时候一定要注意。该文件中一篇文档的分界标志是：
文档内容
而不是
文档内容
写个简短的程序，查看海量的文档，设置海量分词相应的输出格式，然后用海量切每一篇文档。
如此训练出的标注语料库，应该是质量蛮高的吧！
]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/52/feed</wfw:commentRss>
		</item>
		<item>
		<title>分词方法四：基于统计分词</title>
		<link>http://www.liujie.org.cn/archives/50</link>
		<comments>http://www.liujie.org.cn/archives/50#comments</comments>
		<pubDate>Mon, 09 Jun 2008 09:42:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[刘杰乱弹]]></category>

		<guid isPermaLink="false">http://www.liujie.org.cn/archives/50</guid>
		<description><![CDATA[即利用统计语言模型分词的方法。几乎所有准确率高的中文分词器都会使用统计语言模型实现分词。对于统计语言模型的介绍请参阅
http://googlechinablog.com/2006/04/blog-post.html
统计语言模型 (Statistical Language Models)
Google 的使命是整合全球的信息，所以我们一直致力于研究如何让机器对信息、语言做最好的理解和处理。长期以来，人类一直梦想着能让机器代替人来翻译语言、识别语音、认识文字（不论是印刷体或手写体）和进行海量文献的自动检索，这就需要让机器理解语言。但是人类的语言可以说是信息里最复杂最动态的一部分。为了解决这个问题，人们容易想到的办法就是让机器模拟人类进行学习 - 学习人类的语法、分析语句等等。尤其是在乔姆斯基（Noam Chomsky 有史以来最伟大的语言学家）提出 “形式语言” 以后，人们更坚定了利用语法规则的办法进行文字处理的信念。遗憾的是，几十年过去了，在计算机处理语言领域，基于这个语法规则的方法几乎毫无突破。
其实早在几十年前，数学家兼信息论的祖师爷 香农 (Claude Shannon)就提出了用数学的办法处理自然语言的想法。遗憾的是当时的计算机条件根本无法满足大量信息处理的需要，所以他这个想法当时并没有被人们重视。七十年代初，有了大规模集成电路的快速计算机后，香农的梦想才得以实现。
首先成功利用数学方法解决自然语言处理问题的是语音和语言处理大师贾里尼克 (Fred Jelinek)。当时贾里尼克在 IBM 公司做学术休假 (Sabbatical Leave)，领导了一批杰出的科学家利用大型计算机来处理人类语言问题。统计语言模型就是在那个时候提出的。
给大家举个例子：在很多涉及到自然语言处理的领域，如机器翻译、语音识别、印刷体或手写体识别、拼写纠错、汉字输入和文献查询中，我们都需要知道一个文字序列是否能构成一个大家能理解的句子，显示给使用者。对这个问题，我们可以用一个简单的统计模型来解决这个问题。
如果 S 表示一连串特定顺序排列的词 w1， w2，…， wn ，换句话说，S 可以表示某一个由一连串特定顺序排练的词而组成的一个有意义的句子。现在，机器对语言的识别从某种角度来说，就是想知道S在文本中出现的可能性，也就是数学上所说的S 的概率用 P(S) 来表示。利用条件概率的公式，S 这个序列出现的概率等于每一个词出现的概率相乘，于是P(S) 可展开为：
P(S) = P(w1)P(w2&#124;w1)P(w3&#124; w1 w2)…P(wn&#124;w1 w2…wn-1)
其中 P (w1) 表示第一个词w1 出现的概率；P (w2&#124;w1) 是在已知第一个词的前提下，第二个词出现的概率；以次类推。不难看出，到了词wn，它的出现概率取决于它前面所有词。从计算上来看，各种可能性太多，无法实现。因此我们假定任意一个词wi的出现概率只同它前面的词 wi-1 有关(即马尔可夫假设），于是问题就变得很简单了。现在，S 出现的概率就变为：
P(S) = P(w1)P(w2&#124;w1)P(w3&#124;w2)…P(wi&#124;wi-1)…
(当然，也可以假设一个词又前面N-1个词决定，模型稍微复杂些。）
接下来的问题就是如何估计 P (wi&#124;wi-1)。现在有了大量机读文本后，这个问题变得很简单，只要数一数这对词（wi-1,wi) 在统计的文本中出现了多少次，以及 wi-1 本身在同样的文本中前后相邻出现了多少次，然后用两个数一除就可以了,P(wi&#124;wi-1) = P(wi-1,wi)/ [...]]]></description>
		<wfw:commentRss>http://www.liujie.org.cn/archives/50/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
