在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 »
June 9th, 2008
在搜索的结果页面,标题下要显示文本的摘要,但是怎样能使用简短的几句话就可以实现动态摘要呢?
本文提供了三个思路方法:
方法一. 只记录关键字在一篇文档中第一次出现的位置
产生动态摘要时, 根据关键字第一次出现的位置p向前后扩展, 扩展至完整的句子, 扩展到需要的摘要的长度为止. 如果同时检索多个关键字, 那么各句动态摘要合并起来, 可能中间需要用省略号连接.
这种方法产生动态摘要的速度最快, 存储位置占用的空间最小; 但是可能产生的动态摘要不是最好的.
方法二. 记录关键字在一篇文档中所有出现的位置
记录所有的位置可以计算出文档的哪一部分与查询最相关, 尤其进行多关键字查询时, 将每个关键字出现的所有位置进行统计, 计算出文档的哪一部分同时出现了这几个关键字, 从而产生动态摘要. 这样产生的动态摘要比较准确, 但是存储位置占用的空间比较大.
方法三. 对文档事先进行断句(分块)处理, 记录关键字出现的所有句子编号.
生成动态摘要时, 对包含查询关键字的句子进行打分, 将得分最高的句子做为摘要.
这样产生的动态摘要也比较准确, 但是这种方法需要对文档事先进行断句(或是分块)的预处理.
Posted in 搜索引擎技术 | 2 Comments »
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 »
June 9th, 2008
BMM方法和FMM过程类似,不同点仅在于BMM是从文本的末尾开始处理,每次匹配不成功时去掉的是最前面的一个字。BMM方法的精度要高一些,其错误率是1/245。
Posted in 刘杰乱弹 | No Comments »
June 9th, 2008
如果你想写分词器,那么就需要有标注语料库进行训练,以下是 成 彦 的一些方法:
语料库标注或加工就是对语料(书面语和口语)进行不同层次的语言学分析,并添加相应的“显性”解释性语言学信息的过程。 语料库很关键,只有经过不周层次加工的“熟”语料才可真正用于自然语言处理系统的训练,测试。
目前我在网上找到的标注语料库是北京大学计算语言学研究所免费提供的“PFR人民日报标注语料1.0”。
PFR人民日报标注语料库1.0是在得到人民日报社新闻信息中心许可的条件下,以1998年人民日报语料为对象,由北京大学计算语言学研究所和富士通研究开发中心有限公司共同制作的标注语料库。该语料库对600多万字节的中文文章进行了分词及词性标注,其被作为原始数据应用于大量的研究和论文中。
是不是感觉该标注语料库太小太旧了? 那我们去构建自己的标注语料库吧。
思路:用最好的分词器去处理语料库,生成标注语料。
工具:海量分词器研究版,搜狗互联网语料库
海量分词器:目前最好的中文分词器,无论在速度还是准确性都是国内第一。切分准确率达99.7%,速度高达2000万字/分钟。
搜狗互联网语料库:完整版本的压缩后近130G,这需要自己去到搜狐联系。网上提供示例版,解压后是1G,50万篇文章。注意的一点是,不知道是否故意还是无意,这个文件里有错误,处理的时候一定要注意。该文件中一篇文档的分界标志是:
文档内容
而不是
文档内容
写个简短的程序,查看海量的文档,设置海量分词相应的输出格式,然后用海量切每一篇文档。
如此训练出的标注语料库,应该是质量蛮高的吧!
Posted in 中文分词 | No Comments »
|