Web数据挖掘实验,留这儿纪念下。

基本目的:

读入指定目录下的所有文本文件,对文本文件中的内容进行分词操作,在分词结果中找出形容词副词,按照指定格式输出到结果文件中。

其中调用了scws的API(http://www.ftphp.com/scws/api.php

{之前也试过phpanalysis2.0,分词速度很快,只是scws提供的接口比较多,如果只是分分词的话,phpanalysis2.0就足够了。}

主要php代码如下:

set_dict($dict); //指定辞典文件

$cws->set_rule('etc/rules.ini');

$cws->set_ignore($ignore);

$cws->set_multi($level);

//$cws->set_duality('yes'); //是否为单音节词

$cws->set_debug($debug);

$cws->send_text($mydata);

// 执行切分, 分词结果数组

$stat_string = '';

$head_string = '';

$list = $cws->get_result();

//$list = $cws->get_tops($list,100);

$word_num = 0;

foreach ($list as $k => $v)

{ if(strpbrk($v['attr'],"ai")){ //只取形容词副词

$position=$v['off']-10; //取前后上下文作为对照

if($position<=0) {$position=0;}
$stat_string .= sprintf("%-4d %-15s %-15s %-4d %-40s %-30f\r\n",$word_id+1,'2nd Round',$v['word'],$key,substr(str_replace("\n","",$mydata),$position,30),$v['idf']);
//$word_num += $v['times'];
$word_id+=1;
}
continue;
}

//将处理结果保存到数组
$temp_string[$key]=$stat_string;
}
// 以下显示结果
$head_string .= sprintf("%-4s %-15s %-15s %-8s %-35s %-40s\r\n", 'ID','UID','word-string', 'docid','content-string','probability');
$fp=fopen("dest/result.txt",'w');
fwrite($fp,$head_string);
file_put_contents("dest/result.txt", $temp_string,FILE_APPEND);
fclose($fp);
echo "识别成功,请见dest文件夹下的结果文本";
?>

期间修改项:

  1. sprintf函数的参数设置调整
  2. 字符所在位置坐标选取
  3. 直接输出改为存到数组后再输出
  4. 词典选择
  5. pscws版本4的api与之前版本的差异
  6. 词频计算并输出