十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
计算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另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。