盲反馈检索系统实验记录一
admin
2023-07-03 22:04:02
0

在进行实验之前,先了解相关反馈和盲反馈的一些概念:

相关反馈是基于用户的,由用户标出初次查询结果相关还是不相关,再经过Rocchio算法或其他算法使检索结果更能满足用户需求;

盲反馈也称伪反馈,是由计算机自动处理检索结果,不需要用户的参与也可以得到比较满意的检索效果。这种方法假定用户初始检索结果的前k篇文档是相关的,再由系统抽选出这k篇文档的特征词,然后把这些特征词和初始查询词再放入搜索框中进行二次检索,这种行为我们称之为“扩展查询词”。通过扩展查询词可以提高检索系统的性能。

 本项目就是基于盲反馈理论以及结合相应算法编写一个检索系统,并通过一系列的评价指标来测试此系统的性能。本系统是经过小组成员结合相关理论后而确定实施的,本文从项目最初代码的编写,直到一个检索系统的成功运行,以及涉及到的信息检索的理论,笔者都会一一讲解。


编程环境的准备:PHP+MySQL+Apache(项目初期没有使用MySQL,随着后期数据集的增大,可以考虑)

额外知识:HTML+CSS+JS+Ajax(主要用于前台的显示)


语料库:本实验使用搜狗实验室提供的语料库http://www.sogou.com/labs/dl/c.html

       在测试时笔者使用的是mini版的10篇IT新闻(文件目录名问C000010)


在代码编写过程中,笔者先使用过程化的方法,然后再把各个功能封装到Tool.class.php的工具类中,便于以后代码重用。


首先,建立自己的词表。

笔者是这样考虑的,假如有三篇文档,文档内容为:

(html html)

(java html java)

(python java)

先对这三遍文档去重,

(html)

(java html)

(python java)

然后合并这三篇文档:

(html java html python java)

然后再对其去重,并且按字母升序排列:

(html java python)

这样就可以得到我们自己的词典了。

那为什么我们不直接把最初的三篇文档先合并再去重,这样不就可以省去对三篇文档分别去重这一步了吗?事实上我们也是这样做的,上面是为了便于我们理解我们的文档频率df是怎么计算出来的,由红色字体部分我们可以知道,有多少个重复的词,这个词的的文档频率就是多少。比如html的df为2,java的为2,python为1.

在中文分词系统中,我们采用的是分词工具SCWS,使用PHP调用他提供的方法get_tops可以得到分词的情况,在内部他已经帮我们对每篇文档去了重,并且计算出了每个词的出现的次数times。


我们先来了解一下初始配置文件init.inc.php

此文件定义了两个常量,TEXT_PATH是保存搜狗实验室的10篇IT新闻的硬路径,ROOT_PATH是系统存储位置的硬路径;然后是require引入的两个文件,func.inc.php用来存放使用到的函数,以后会讲到;Tool.class.php存放系统主要的功能,随着功能的增多,可能会再创建一个类。以后需要用到的配置都存放到这个文件中。


在Tool.class.php文件中我们定义了一个静态方法,用来获得并存储词表:

class Tool{
        //获取并存储词表
        static public function dic($seg){
            $dic=array();   //词表
            for($i=0;$i



这个方法需要传递一个参数,这个参数是由Tool.class.php里定义的一个分词方法segment得来的,稍后会讲到。变量$seg是一个三维数组,$seg[i][j][]表示第i篇文档的第j个词。通过两个for循环,把该词压入数组$dic中(array_push方法可以压入具有相同值的元素),然后array_unique对$dic去重,再按中文拼音字母升序排列,一个数组形式的词表产生了。为了把该词表存入文件名为dic的txt文件中,需要使用imploded方法把数组通过“,”连接成字符串,然后在使用文件方法fopen把词表存入dic.txt.


上面提到的segment分词方法代码如下:

//scws分词
static function segment($str){
                                                                                                                                                                                                                    
    if(!$scws=scws_new()) exit('创建SCWS对象失败!');      //创建SCWS
    $scws->set_charset('gbk');   //设置字符集
    if(!$scws->set_dict('C:\Program Files\scws\dict.xdb')) exit('词典路径设置失败!');
    $scws->set_multi(1);
    $scws->set_ignore(true); //忽略标点
                                                                                                                                                                                                                    
    if(is_string($str)){
        $scws->send_text($str);
        $top=$scws->get_tops(800);
    }else if(is_array($str)){
        for($i=0;$isend_text($str[$i]['con']);
            $top[]=$scws->get_tops(800);
        }
    }
    return $top;
                                                                                                                                                                                                                    
}



该方法需要传第一个参数该参数可以说字符串,也可以是包含内容的数组。可以使用下面介绍的fileStr方法获取10篇IT新闻的内容并把它们存入数组中。segment方法内部都是调用SCWS提供的分词方法,如需详细了解可以到SCWS官网查看文档(该项目开源)。笔者只介绍get_tops方法,该方法返回的是最终的分词结果:

盲反馈检索系统实验记录一

盲反馈检索系统实验记录一

由于词的数量太多,以后实验效果截图只截取前面和最后的部分。可以看到get_tops的返回结果是一个三维数组[word]表示所截取的词,[times]表示词频,[weight]表示权重(不是我们所了解的tf*idf),[attr]表示词性。get_tops方法已经为我们除去了大部分无意义的词。与get_tops相对应的是get_result,它返回的是所有分好的词,包括停用词、标点符号等。





相关内容

热门资讯

内蒙古包头:首批投运1000辆... 新华社5月31日消息,近日,我国自主研发的氢能两轮车在内蒙古自治区包头市面向公众投入运营,首批将在公...
缅甸边境发生爆炸,云南群众目击... 5月31日,缅甸掸邦北部南坎镇发生一起爆炸事故,已导致多人伤亡,多处民宅、房屋遭到严重损毁。经初步调...
大湾区打出智造新名片,高域首台... 近日,在广州黄埔区的智能制造产业园内,一架白色多旋翼飞行器缓缓驶出生产线,标志着高域(GOVY)这家...
VR眼镜与元宇宙:沉浸式体验会... VR眼镜与元宇宙:沉浸式体验会不会导致“魂不守舍”?虚拟现实对精神能量的消耗 杨明德/文 朋友们好,...
张凌赫粉丝挤爆玻璃门、活动临时... 5月31日,张凌赫原定在广西南宁万象城出席品牌活动,大批粉丝早早前往商场排队等候。现场人潮涌动,人群...
5月31日“蓝月亮”上线,还是... 据新华社:5月31日,农历四月十五,一轮满月将现身夜空。这轮满月有些特别,它是本月第二次满月,同时它...
中国的刀产量,究竟有多恐怖? 中年男人在短视频平台最爱看啥?小姐姐跳舞?那你可就想错了——锻刀大赛才是中年男人真正的“减速带”。在...
花费半生积蓄,农村自建房热背后 今年以来,在安徽安庆望江县做外墙漆生意的徐仙琴越来越忙碌了,她和员工们每天奔波在县城的各个村庄里,找...
黎以冲突再升级对中东地区影响几... 从当前的局势来看,黎以双方博弈已陷入谈判停滞、战火升级的恶性循环,地区冲突风险持续走高。根据以军发布...
易事达取得载带冷却定型装置专利... 国家知识产权局信息显示,浙江易事达电子材料有限公司取得一项名为“一种载带冷却定型装置”的专利,授权公...