乙個很好的php分詞類庫 SCWS

2021-08-27 08:40:50 字數 3675 閱讀 6586

一位網友推薦了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...