盲反馈检索系统实验记录三
admin
2023-07-03 21:24:53
0次

计算tf/idf

在使用fileStr获取新闻的内容和长度后,我们就可以计算他们的tf和idf:


//计算tf\idf
static public function tf_df($seg){
    $str=self::fileStr();
    $file_dir=self::fileDir(TEXT_PATH);
    $df=array();
    for($i=0;$i



该方法传递的参数$seg就是前面提到若的使用segment分词方法返回的结果。这里使用的是它计算出来的['word']和['times']。

第一个for双重循环:第一个for循环得到每一篇文档所有词的信息,第二个for循环取出这篇文档每个词的信息,比如$seg[$i][$j]['times']是一个词出现的次数,再除以这篇文档的长度$str[$i]['len']就可以得到词频。

第二个for双重循环:大概意思就是得到该文档集的文档频率df后,使用公式idf=log(N/df),N表示文档集总数,df就是所计算词的文档频率,最后得出idf(逆文档频率)。

新创建一个用来测试的php文件test.php,代码如下


在浏览器中运行(这个过程大概花费20s),查看源代码:

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

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


计算特征向量

万事俱备,只欠东风。到这里,我们已经得到了所有词项的tf和idf,他们的权重=tf*idf.在这里我们又会使用到之前已经创建好的词表(保存在dic.txt),词表中的每一个词代表空间中的一个维度,dic.txt中有1000多个词,因而空间中就有1000多维。我们把每篇文档的词项都映射到这1000多个维度里,每个维度的值表示该词项的权重,若该篇文档不存在词典中出现的词,则对应的维度值设为0.(这里利用的是向量空间模型的知识)。

计算特征向量的代码封装在方法vsm中:


//特征向量,并写入文件(tf/idf以及存在seg中)
static public function vsm($seg){
    $file_dir=self::fileDir(TEXT_PATH);
    $dic_str=file_get_contents('dic.txt');
    $dic_arr=explode(',',$dic_str);
                                                                                                       
    $vsm_arr=array();   //向量空间
    for($i=0;$i


该方法把对应文档的特征向量计算出来后,把他们保存在目录名为vsm的目录中,文件名和它们的新闻文档文件名相同。修改test.php:

即可运行,在系统目录的vsm下可以看到多出了10个txt文件,里边的内容保存的分别是对应文档的特征向量。


附件:http://down.51cto.com/data/2364246

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...