在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(”把数据保存到数据库archives表时出错,请检查!”,”-1″);
exit();
}
改成
if(!$dsql->ExecuteNoneQuery()){
$errorSql = htmlSpecialchars($dsql->queryString);
$errorMsg = htmlSpecialchars(mysql_error());
$dsql->Close();
//ShowMsg(”把数据保存到数据库archives表时出错,请检查!”,”-1″);
//ShowMsg是document.write的js方法,不知为什么在加入$errorSql后不显示,所以用echo
echo “把数据保存到数据库archives表时出错,请检查!查询语句:
$errorSql
mysql错误提示:
$errorMsg “;
exit();
}
看提示是keywords字段长了,原来是中文分词时出错,include/pub_splitword_www.php调用字典include/data/dede_wwwdic.csv,可csv是gbk编
码的.改分词程序没成功,所以不分词了,关键字手工填就是了.把article_add_action.php中的
//自动获取文章中的关键字
//———————————-
if($autokey==1||$keywords==”"){
改成
//自动获取文章中的关键字
//———————————-
if(0 && ($autokey==1||$keywords==”")){
发布文档后的成功提示无法显示,
把include/win_templet.htm中
charset={dede:cfg_language/}改成
charset=utf-8
更新html那个框架中的字乱码,在浏览器中选utf8就行,但不知在哪个文件中改
图片栏目如果选分页显示,会在第2页开始图片上方有一行字:分页标题#e#,找不到在哪改,因此修改
dede/templates/default/article_iamge.htm,把
{dede:field name=’imgurls’/}
改成
| {dede:field name=’imgurls’/}
也就是用js把这串字符替换
dede/article_eidt.php有错误,没有定义SelectTemplets函数,所以不能选择模板,在页面上方的js中把这个函数加上
function SelectTemplets(fname)
{
var posLeft = window.event.clientY-200;
var posTop = window.event.clientX-300;
window.open(”../include/dialog/select_templets.php?&activepath==urlencode($cfg_templets_dir.'/plus')?>&f=”+fname,
“poptempWin”, “scrollbars=yes,resizable=yes,statebar=no,width=600,height=400,left=”+posLeft+”, top=”+posTop);
}
程序的一些bug:
1.article_eidt.p,hp编辑选模板有js错误,并且无法在ff中使用这个函数,因为不支持window.event
2.栏目如果是频道列表,生成页后子频道的文档无法在该页显示,进入子频道才能看到
3.图片栏目如果选分页显示,会在第2页开始图片上方有一行字:分页标题#e#,不知是UTF-8改的原因还是bug
4.图片栏目修改文档后,最后一页没重新生成?选生成文档HTML才搞定
5.UTF8部分,分词和拼音还无法解决,生成html的提示乱码,一定要手工指定编码为utf8
6.图片栏目中生成缩略图有问题.好在不会在列表页显示出错
7.文章栏目中GIF图片似乎都无法生成缩略图?
8.dede/inc/writer.txt和dede/inc/source.txt都应该设成可写
9.两个广告紧连着会出问题,如{dede:myad name=’abc’/}和{dede:myad name=”efg” /}连着,后一个就会显示成文字.只有分开
10.在本地测试时安装在非根目录下,首页连接用cfg_cmspath正确,上传到网站后,这儿改成空,页面中这儿竟然被解析成当前目录
Posted in 工程学&编码 | No Comments »
Monday, June 9th, 2008
在搜索的结果页面,标题下要显示文本的摘要,但是怎样能使用简短的几句话就可以实现动态摘要呢?
本文提供了三个思路方法:
方法一. 只记录关键字在一篇文档中第一次出现的位置
产生动态摘要时, 根据关键字第一次出现的位置p向前后扩展, 扩展至完整的句子, 扩展到需要的摘要的长度为止. 如果同时检索多个关键字, 那么各句动态摘要合并起来, 可能中间需要用省略号连接.
这种方法产生动态摘要的速度最快, 存储位置占用的空间最小; 但是可能产生的动态摘要不是最好的.
方法二. 记录关键字在一篇文档中所有出现的位置
记录所有的位置可以计算出文档的哪一部分与查询最相关, 尤其进行多关键字查询时, 将每个关键字出现的所有位置进行统计, 计算出文档的哪一部分同时出现了这几个关键字, 从而产生动态摘要. 这样产生的动态摘要比较准确, 但是存储位置占用的空间比较大.
方法三. 对文档事先进行断句(分块)处理, 记录关键字出现的所有句子编号.
生成动态摘要时, 对包含查询关键字的句子进行打分, 将得分最高的句子做为摘要.
这样产生的动态摘要也比较准确, 但是这种方法需要对文档事先进行断句(或是分块)的预处理.
Posted in 搜索引擎技术 | 1 Comment »
Monday, June 9th, 2008
一般序列分类模型常常采用隐马模型(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|W)
在线性链CRF上, 这个计算任务可以用一般的Viterbi算法来有效地完成.
目前我发现的关于CRF的实现有:
* CRF++(http://crfpp.sourceforge.net/)
* Pocket CRF(http://sourceforge.net/project/showfiles.php?group_id=201943)
Posted in 刘杰乱弹 | No Comments »
Monday, June 9th, 2008
BMM方法和FMM过程类似,不同点仅在于BMM是从文本的末尾开始处理,每次匹配不成功时去掉的是最前面的一个字。BMM方法的精度要高一些,其错误率是1/245。
Posted in 刘杰乱弹 | No Comments »
Monday, June 9th, 2008
如果你想写分词器,那么就需要有标注语料库进行训练,以下是 成 彦 的一些方法:
语料库标注或加工就是对语料(书面语和口语)进行不同层次的语言学分析,并添加相应的“显性”解释性语言学信息的过程。 语料库很关键,只有经过不周层次加工的“熟”语料才可真正用于自然语言处理系统的训练,测试。
目前我在网上找到的标注语料库是北京大学计算语言学研究所免费提供的“PFR人民日报标注语料1.0”。
PFR人民日报标注语料库1.0是在得到人民日报社新闻信息中心许可的条件下,以1998年人民日报语料为对象,由北京大学计算语言学研究所和富士通研究开发中心有限公司共同制作的标注语料库。该语料库对600多万字节的中文文章进行了分词及词性标注,其被作为原始数据应用于大量的研究和论文中。
是不是感觉该标注语料库太小太旧了? 那我们去构建自己的标注语料库吧。
思路:用最好的分词器去处理语料库,生成标注语料。
工具:海量分词器研究版,搜狗互联网语料库
海量分词器:目前最好的中文分词器,无论在速度还是准确性都是国内第一。切分准确率达99.7%,速度高达2000万字/分钟。
搜狗互联网语料库:完整版本的压缩后近130G,这需要自己去到搜狐联系。网上提供示例版,解压后是1G,50万篇文章。注意的一点是,不知道是否故意还是无意,这个文件里有错误,处理的时候一定要注意。该文件中一篇文档的分界标志是:
文档内容
而不是
文档内容
写个简短的程序,查看海量的文档,设置海量分词相应的输出格式,然后用海量切每一篇文档。
如此训练出的标注语料库,应该是质量蛮高的吧!
Posted in 中文分词 | No Comments »
Monday, June 9th, 2008
即利用统计语言模型分词的方法。几乎所有准确率高的中文分词器都会使用统计语言模型实现分词。对于统计语言模型的介绍请参阅
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|w1)P(w3| w1 w2)…P(wn|w1 w2…wn-1)
其中 P (w1) 表示第一个词w1 出现的概率;P (w2|w1) 是在已知第一个词的前提下,第二个词出现的概率;以次类推。不难看出,到了词wn,它的出现概率取决于它前面所有词。从计算上来看,各种可能性太多,无法实现。因此我们假定任意一个词wi的出现概率只同它前面的词 wi-1 有关(即马尔可夫假设),于是问题就变得很简单了。现在,S 出现的概率就变为:
P(S) = P(w1)P(w2|w1)P(w3|w2)…P(wi|wi-1)…
(当然,也可以假设一个词又前面N-1个词决定,模型稍微复杂些。)
接下来的问题就是如何估计 P (wi|wi-1)。现在有了大量机读文本后,这个问题变得很简单,只要数一数这对词(wi-1,wi) 在统计的文本中出现了多少次,以及 wi-1 本身在同样的文本中前后相邻出现了多少次,然后用两个数一除就可以了,P(wi|wi-1) = P(wi-1,wi)/ P (wi-1)。
也许很多人不相信用这么简单的数学模型能解决复杂的语音识别、机器翻译等问题。其实不光是常人,就连很多语言学家都曾质疑过这种方法的有效性,但事实证明,统计语言模型比任何已知的借助某种规则的解决方法都有效。比如在 Google 的中英文自动翻译中,用的最重要的就是这个统计语言模型。去年美国标准局(NIST) 对所有的机器翻译系统进行了评测,Google 的系统是不仅是全世界最好的,而且高出所有基于规则的系统很多。
现在,读者也许已经能感受到数学的美妙之处了,它把一些复杂的问题变得如此的简单。当然,真正实现一个好的统计语言模型还有许多细节问题需要解决。贾里尼克和他的同事的贡献在于提出了统计语言模型,而且很漂亮地解决了所有的细节问题。十几年后,李开复用统计语言模型把 997 词语音识别的问题简化成了一个 20 词的识别问题,实现了有史以来第一次大词汇量非特定人连续语音的识别。
常用于中文分词的统计语言模型有条件随机场,隐马尔科夫模型,互信息,N元等。
Posted in 刘杰乱弹 | 1 Comment »
Monday, June 9th, 2008
正向最大匹配分词方法的基本思想是:假设字典中最长的关键字的长度为i,取当前待处理文本的前i个字作为匹配字段w,在字典中查找,若字典中有w, 则匹配成功,w即做为一个词被切分出来;如果匹配失败,则去掉w的最后一个字,继续去字典中查找. 切分出w后,继续对w之后的字词进行上面步骤的切分,直到切分出所有的词为止.
梁南元先生在其论文《书面汉语的自动分词与另一个自动分词系统CDWS》提到,FMM方法的错误切分率为1/169. 一般不单独使用,而是和其它方法配合使用。
Posted in 刘杰乱弹 | No Comments »
Monday, June 9th, 2008
关于搜索引擎技术中的中文分词,让很多全文检索爱好者都头痛不已,这里我将几篇有用的文章介绍给大家。
现有的中文分词方法基本上都是采用基于词表的正(反)向最大匹配法进行词语切分。不过这种分词方法具有一个最大的问题,对于未登录词(也就是在词表中并未录入的词)的切分具有先天的不足,一般的解决方法是在基于正向最大匹配法切分模块后再加入一个未登录词模块,用于处理对于未登录词的切分。而在中文分词技术中,对于未登录词的切分错误极大的影响到了整体分词的召回率。现在主流的分词算法对于未登录词的召回率仍然在0.6 左右。
最新的一种分词算法叫做“由字构词”的分词方法,关于“由字构词”分词方法的最早的一篇论文发表在2002 年第一届SIGHAN 研讨会上,紧接着Xue 在ME 模型上实现了由字构词的分词系统参加了Bakeoff2003 的评测,获得了封闭测试项目的第二名,让人瞩目的是,它对于未登录词的召回率高达70%以上。而在Bakeoff2005 的各项赛事中,基于由字构词方法的分词系统几乎囊括了开放和封闭测试的全部冠军!而到了Bakeoff2006,由微软亚洲研究院采用基于CRF 模型实现的由字构词分词系统,获得了参加的六项评测中的四个第一,两个第三。
由字构词的分词方法和以往的分词方法不同,它是把分词视为一个字的分类问题。在微软亚洲研究院的系统中,他们把字分成了六类:S(单独成词)、 B(词首)、B2(词中第二个字)、B3(词中第三个字)、M(词中)、E(词尾)。比如以下的分词结果,可以将字标注为以下形式:
1. /上海/计划/到/本/世纪/末/实现/人均/国内/生产/总值/五千美元/。/
2. 上/B海/E计/B划/E到/S本/S世/B纪/E末/S实/B现/E人/B均/E国/B内/E生/B产/E总/B值/E五/B千/B2美/B3元/E。/S
/上海/计划/到/本/世纪/末/实现/人均/国内/生产/总值/五千美元/。/ 上/B海/E计/B划/E到/S本/S世/B纪/E末/S实/B现/E人/B均/E国/B内/E生/B产/E总/B值/E五/B千/B2美/B3元/E。/S
那么最后可以形成一个字库,规定每个字的词位标记中某一个词位超过50%,那么就认为这个词位是这个字的主词位,否则就认为这个字是自由字。在现有的资料中,语料库中总字量为5147 个,有主词位的字为3920 个,占据总字量的76%。
个人感觉由字构词的分词方法有两个优点:
1、能很好的切分未登录词,而使中文分词切分召回率得到显著提高
2、词表非常小,中文中172个汉字就占据了所有中文用字的50%以上,常用汉字也就2000多个,比起基于最大匹配法所用到的词表小了非常多。
最重要的是构建一个字表,基本形式如下:
1. 的 S
2. 一 B
3. 是 S
剩下的处理过程就和基于词表的正向最大匹配过程一样了,采用EM 或者 HMM 模型,对字窗中的字进行切分.
由字构词的方法解决的就是新词(未登录词)的猜测成功率,基于词表的大概在60%-70%左右,而此方法可以高达80%-90%甚至更高。
现在语言学界对于分词以及语意识别一般有两种取向,基于统计和基于规则。而事实验证,可行的方式只有以统计为主,在时间日期、命名实体(组织机构名或者人名、地名)上面辅助以规则的分词对于分词的准确率以及分词效率是最高的。
对于中文来讲,一个词蕴涵着多种含义,如何区分他们的关系,一边正确的切词成为了另人头疼的问题。
Posted in 中文分词 | No Comments »
Monday, June 9th, 2008
在这里找些优化的文章给朋友们看,因为很多朋友再作搜索引擎优化工作,另外相对于百度,大家普遍比较重视.
各个搜索引擎对关键词以及搜索偏好是不同,针对国内行情来说我们更注重百度的优化,中文站百度来的流量是最大的。下面我们就说一下如何优化百度也就是SEO
首先搜索引擎喜欢的是什么 当然是 文字 图片蜘蛛是不识别的,有人说我加批注,批注只是几个文字,而一篇文章多则能上百个关键词,流量从此而来,所以多加文字性的东西对搜索引擎比较好。
其次写文章标题什么一定要写的有水平,不求多但求精,因为不同词的排行都是不一样的,带来的流量也是不同的
最后要说的是你的网站要有内容,棉花他放在一起也是很大一堆,所以说尽量补充你的内容,让搜索引擎有的收录。
搜索引擎喜欢的是新鲜的东西原创的最好,原创多了他会天天爬你(那我做的的外挂站或软件站名字都是一样的怎么办?) 刘杰的博客 www.liujie.org.cn 你可以看下我的站点上的文章很多都是一样的东西但是名字都修改了点还有说明,你添加点别的文字搜索引擎还会爬你,你原题不变就会向我以前一样3-4个月才收录站点 所以说我这个站收录还是不行但是现在百度天天都在爬我站,这就是技巧和一点小小的思路,当然思路是自己想的。
Posted in SEO(搜索引擎优化) | No Comments »
|