ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP で書かれた中国語単語分割関数のチュートリアル

PHP_PHP で書かれた中国語単語分割関数のチュートリアル

WBOY
WBOYオリジナル
2016-07-20 10:59:56861ブラウズ

 

クラスの分割{
var $options = array('小文字' => TRUE,
'segment_english' =>偽);
var $dict_name = '不明';
var $dict_words = array();
関数 setLowercase($value) {
if ($value) {
$this->options['小文字'] = TRUE;
} その他 {
$this->options['小文字'] = FALSE;
}
TRUE を返します;
}
function setSegmentEnglish($value) {
if ($value) {
$this->options['segment_english'] = TRUE;
} その他 {
$this->options['segment_english'] = FALSE;
}
TRUE を返します;
}
関数ロード($dict_file) {
if (!file_exists($dict_file)) {
FALSE を返します;
}
$fp = fopen($dict_file, 'r');
$temp = fgets($fp, 1024);
if ($temp === FALSE) {
FALSE を返します;
} その他 {
if (strpos($temp, "t") !== FALSE) {
list ($dict_type, $dict_name) =explode("t", trim($temp));
} その他 {
$dict_type = トリム($temp);
$dict_name = '不明';
}
$this->dict_name = $dict_name;
if ($dict_type !== 'DICT_WORD_W') {
FALSE を返します;
}
}
while (!feof($fp)) {
$this->dict_words[rtrim(fgets($fp, 32))] = 1;
}
fclose($fp);
TRUE を返します;
}
関数 getDictName() {
$this->dict_name を返す;
}
関数セグメント文字列($str) {
if (count($this->dict_words) === 0) {
FALSE を返します;
}
$lines =explode("n", $str);
return $this->_segmentLines($lines);
}
関数セグメントファイル($ファイル名) {
if (count($this->dict_words) === 0) {
FALSE を返します;
}
$lines = ファイル($ファイル名);
return $this->_segmentLines($lines);
}
関数 _segmentLines($lines) {
$contents_segmented = '';
foreach ($lines を $line) {
$contents_segmented .= $this->_segmentLine(rtrim($line)) 。 「ん」;
}
やります{
$contents_segmented = str_replace(' ', ' ', $contents_segmented);
} while (strpos($contents_segmented, ' ') !== FALSE);
$contents_segmented を返す;


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445565.html技術記事 class Segmentation { var $options = array(小文字 = TRUE、segment_english = FALSE); var $dict_name = 不明; var $dict_words = array(); function setLowercase($value) { if ($value...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。