PHP计算文档频率与特征向量
步骤:
(1)读取3篇txt格式的英文文档;
(2)对每篇文档进行分词;
(3)利用正则表达式去掉逗号、句号等标点符号;
(4)计算文档频率;
(5)统计特征向量
<?php $_txts = array(‘1.txt‘,‘2.txt‘,‘3.txt‘); $_len = count($_txts); for ($i = 0;$i < $_len;$i++){ $_contents[] = file_get_contents($_txts[$i]); } for ($i = 0;$i < $_len;$i++){ //分词 $_words[] = explode(‘ ‘,trim($_contents[$i])); foreach ($_words[$i] as $_key=>$_value){ $_value = trim($_value); $_value = preg_replace(‘/[.|,|(|)|-|;]/‘,‘‘,$_value); $_words[$i][$_key]=strtolower($_value); } //去重 $_words[$i]= array_unique($_words[$i]); } //合并 $_words_com = array_merge($_words[0],$_words[1],$_words[2]); //文档频率 $_df = array_count_values($_words_com); //特征向量 for ($i = 0;$i < $_len;$i++){ $_vsm[$i] = $_df; foreach($_vsm[$i] as $_key=>$_value){ $_vsm[$i][$_key] = 0; } for ($j=0;$j<count($_words[$i]);$j++){ if (in_array($_words[$i][$j],$_words_com)){ $_vsm[$i][($_words[$i][$j])] +=1; } } } for($i = 0;$i < count($_vsm); $i++){ echo ‘第‘.($i+1).‘篇文档的特征向量: (‘. implode(",",$_vsm[$i]).‘)<br/>‘; } print_r($_df); ?>
本文出自 “花间词的技术博客” 博客,请务必保留此出处http://ufish.blog.51cto.com/6626671/1381246
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。