|
首页>编程技术>p2p> |
一个用PHP写的中文分词函数 |
|
Visited times , Welcome to Data Mining Forum & Data Mining Expert & Data Mining Tools |
|
|
<?php class Segmentation { var $options = array("lowercase" => TRUE, "segment_english" => FALSE); var $dict_name = "Unknown"; 数据挖掘论坛 var $dict_words = array(); function setLowercase($value) { if ($value) { 数据挖掘工具 $this->options["lowercase"] = TRUE; } else { $this->options["lowercase"] = FALSE; } return TRUE; 数据挖掘研究院 } function setSegmentEnglish($value) { if ($value) { $this->options["segment_english"] = TRUE; } else { $this->options["segment_english"] = FALSE; 数据挖掘论坛 } return TRUE; } function load($dict_file) { if (!file_exists($dict_file)) { 数据挖掘工具 return FALSE; } $fp = fopen($dict_file, "r"); 数据挖掘论坛 $temp = fgets($fp, 1024); if ($temp === FALSE) { 数据挖掘实验室 return FALSE; } else { if (strpos($temp, " ") !== FALSE) { list ($dict_type, $dict_name) = explode(" ", trim($temp)); 数据挖掘工具 } else { $dict_type = trim($temp); $dict_name = "Unknown"; 数据挖掘实验室 } $this->dict_name = $dict_name; if ($dict_type !== "DICT_WORD_W") { 数据挖掘研究院 return FALSE; } } while (!feof($fp)) { 数据挖掘工具 $this->dict_words[rtrim(fgets($fp, 32))] = 1; 数据挖掘研究院 } fclose($fp); return TRUE; } function getDictName() { return $this->dict_name; } function segmentString($str) { if (count($this->dict_words) === 0) { return FALSE; } $lines = explode("
", $str); 数据挖掘工具 return $this->_segmentLines($lines); } function segmentFile($filename) { if (count($this->dict_words) === 0) { return FALSE; } $lines = file($filename); 数据挖掘研究院 return $this->_segmentLines($lines); } function _segmentLines($lines) { $contents_segmented = ""; 数据挖掘论坛 foreach ($lines as $line) { $contents_segmented .= $this->_segmentLine(rtrim($line)) . "
"; 数据挖掘论坛 } do { $contents_segmented = str_replace(" ", " ", $contents_segmented); } while (strpos($contents_segmented, " ") !== FALSE); return $contents_segmented; } function _segmentLine($str) { $str_final = ""; 数据挖掘研究院 $str_array = array(); $str_length = strlen($str); 数据挖掘实验室 if ($str_length > 0) { if (ord($str{$str_length-1}) >= 129) { 数据挖掘论坛 $str .= " "; } } for ($i=0; $i<$str_length; $i++) { 数据挖掘工具 if (ord($str{$i}) >= 129) { $str_array[] = $str{$i} . $str{$i+1}; $i++; } else { $str_tmp = $str{$i}; 数据挖掘工具 for ($j=$i+1; $j<$str_length; $j++) { 数据挖掘论坛 if (ord($str{$j}) < 129) { $str_tmp .= $str{$j}; } else { break; } } $str_array[] = array($str_tmp); 数据挖掘研究院 $i = $j - 1; } } $pos = count($str_array); while ($pos > 0) { $char = $str_array[$pos-1]; 数据挖掘论坛 if (is_array($char)) { $str_final_tmp = $char[0]; 数据挖掘论坛 if ($this->options["segment_english"]) { $str_final_tmp = preg_replace("/([!"#$\%&"()*+,-./:;<=>?@[\\]^\_`{|}~ f]+)/", " $1 ", $str_final_tmp); $str_final_tmp = preg_replace("/([!"#$\%&"()*+,-./:;<=>?@[\\]^\_`{|}~ f])([!"#$\%&"()*+,-./:;<=>?@[\\]^\_`{|}~ f])/", " $1 $2 ", $str_final_tmp); 数据挖掘论坛 } if ($this->options["lowercase"]) { $str_final_tmp = strtolower($str_final_tmp); 数据挖掘研究院 } $str_final = " $str_final_tmp$str_final"; $pos--; 数据挖掘研究院 } else { $word_found = 0; $word_array = array(0 => ""); 数据挖掘论坛 if ($pos < 4) { $word_temp = $pos + 1; } else { $word_temp = 5; } for ($i=1; $i<$word_temp; $i++) { 数据挖掘实验室 $word_array[$i] = $str_array
|
|
|
|
|
[数据挖掘专家]
[数据挖掘研究院]
[数据挖掘论坛]
[数据挖掘实验室]
|
上一篇:mysql方式操作文本数据库
下一篇:Apache的Mod_rewrite学习
|
|
|
|