一位網友推薦了scws分詞系統,看著挺不錯,在這裡記一下。
最近做實驗,苦於php分詞的問題,從網上找了很多,但都不行,導致試驗結果不是很好,今天早晨抱著不放棄的努力,又試著重網上找開源的php分詞詞庫,終於功夫不負有心人。
發現了乙個很好的分詞類庫phpanalysis2.0。
phpanalysis類api文件
一、比較重要的成員變數
$resulttype = 1 生成的分詞結果資料型別(1 為全部, 2為 詞典詞彙及單個中日韓簡繁字元及英文, 3 為詞典詞彙及英文)
這個變數一般用 setresulttype( $rstype ) 這方法進行設定。
$notsplitlen = 5 切分句子最短長度
$tolower = false 把英文單詞全部轉小寫
$differmax = false 使用最大切分模式對二元詞進行消岐
$unitword = true 嘗試合併單字(即是新詞識別)
$differfreq = false 使用熱門詞優先模式進行消岐
二、主要成員函式列表
1、public function __construct($source_charset='utf-8', $target_charset='utf-8', $load_all=true, $source='')
函式說明:建構函式
引數列表:
$source_charset 源字串編碼
$target_charset 目錄字串編碼
$load_all 是否完全載入詞典(此引數已經作廢)
$source 源字串
如果輸入輸出都是utf-8,實際上可以不必使用任何引數進行初始化,而是通過 setsource 方法設定要操作的文字
2、public function setsource( $source, $source_charset='utf-8', $target_charset='utf-8' )
函式說明:設定源字串
引數列表:
$source 源字串
$source_charset 源字串編碼
$target_charset 目錄字串編碼
返回值:bool
3、public function startanalysis($optimize=true)
函式說明:開始執行分詞操作
引數列表:
$optimize 分詞後是否嘗試優化結果
返回值:void
乙個基本的分詞過程:
//$pa = new phpanalysis();
$pa->setsource('需要進行分詞的字串');
//設定分詞屬性
$pa->resulttype = 2;
$pa->differmax = true;
$pa->startanalysis();
//獲取你想要的結果
$pa->getfinallyindex();
4、public function setresulttype( $rstype )
函式說明:設定返回結果的型別
實際是對成員變數$resulttype的操作
引數 $rstype 值為:
1 為全部, 2為 詞典詞彙及單個中日韓簡繁字元及英文, 3 為詞典詞彙及英文
返回值:void
5、public function getfinallykeywords( $num = 10 )
函式說明:獲取出現頻率最高的指定詞條數(通常用於提取文件關鍵字)
引數列表:
$num = 10 返回詞條個數
返回值:用","分隔的關鍵字列表
6、public function getfinallyresult($spword=' ')
函式說明:獲得最終分詞結果
引數列表:
$spword 詞條之間的分隔符
返回值:string
7、public function get******result()
函式說明:獲得粗分結果
返回值:array
8、public function get******resultall()
函式說明:獲得包含屬性資訊的粗分結果
屬性(1中文詞句、2 ansi詞彙(包括全形),3 ansi標點符號(包括全形),4數字(包括全形),5 中文標點或無法識別字元)
返回值:array
9、public function getfinallyindex()
函式說明:獲取hash索引陣列
返回值:array('word'=>count,...) 按出現頻率排序
10、public function makedict( $source_file, $target_file='' )
引數列表:
$source_file 源文字檔案
$target_file 目標檔案(如果不指定,則為當前詞典)
返回值:void
11、public function exportdict( $targetfile )
引數列表:
$targetfile 目標檔案
返回值:void
測試**:(其實最終只需要引入詞包dict目錄,按照下面的方法呼叫對應的方法即可)
//岐義處理
$do_fork = empty($_post['do_fork']) ? false : true;
//新詞識別
$do_unit = empty($_post['do_unit']) ? false : true;
//多元切分
$do_multi = empty($_post['do_multi']) ? false : true;
//詞性標註
$do_prop = empty($_post['do_prop']) ? false : true;
//是否預載全部詞條
$pri_dict = empty($_post['pri_dict']) ? false : true;
//初始化類
phpanalysis::$loadinit = false;
$pa = new phpanalysis('utf-8', 'utf-8', $pri_dict);
//載入詞典
$pa->loaddict();
//執行分詞
$pa->setsource('為什麼訂單不能取消,並且無法進行接單。');
$pa->differmax = $do_multi;
$pa->unitword = $do_unit;
$pa->startanalysis( $do_fork );
$okresult = $pa->getfinallyresult(' ', $do_prop);
return $okresult;
效果如下:
PHP中的乙個很好用的檔案上傳類
class fileupload else 定義不同的錯誤級別 private function geterror 時出錯 switch this errornum 個位元組 break case 3 str.上傳失敗 break case 4 str.建立存放上傳目錄失敗,請重新指定上傳目錄 br...
PHP中的乙個很好用的檔案上傳類
class fileupload else 定義不同的錯誤級別 private function geterror 時出錯 switch this errornum 個位元組 break case 3 str.上傳失敗 break case 4 str.建立存放上傳目錄失敗,請重新指定上傳目錄 br...
WTL 乙個很好用的ToolTip
找到了乙個老外寫的很好用的tooltip,但是有兩個小問題,終於解決了,拿出來和大家分享下。問題1 有時候出現這樣的情況,滑鼠劃上去後立馬彈出提示,然後消失,最後又彈出一次 問題2 提示框彈出後預設只顯示5秒鐘就消失了,這樣時間太短了,提示的內容還沒看完就消失了。解決方法 問題1 m tt.setd...