国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHPAnalysis簡單方便的PHP分詞系統類

2024-05-04 21:50:39
字體:
來源:轉載
供稿:網友

PHPAnalysis分詞程序使用居于unicode的詞庫,使用反向匹配模式分詞,理論上兼容編碼更廣泛,并且對utf-8編碼尤為方便。 由于PHPAnalysis是無組件的系統,因此速度會比有組件的稍慢,不過在大量分詞中,由于邊分詞邊完成詞庫載入,因此內容越多,反而會覺得速度越 快,這是正常現象。

PHPAnalysis的詞庫是用一種類似哈希(Hash)的數據結構進行存儲的,因此對于比較短的字符串分詞,只需要占極小的資源, 比那種一次性載入所有詞條的實際性要高得多,并且詞庫容量大小不會影響分詞執行的速度。

PHPAnalysis分詞系統是基于字符串匹配的分詞方法進行分詞的,這種方法又叫做機械分詞方法,它是按照一定的策略將待分析的漢字串與 一個“充分大的”機器詞典中的詞條進行配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。

按照掃描方向的不同,串匹配分詞方法可以分為正向匹配 和逆向匹配;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;按照是否與詞性標注過程相結合,又可以分為單純分詞方法和分詞與 標注相結合的一體化方法。常用的幾種機械分詞方法如下:

正向最大匹配法(由左到右的方向)。

逆向最大匹配法(由右到左的方向)。

最少切分(使每一句中切出的詞數最小)。

還可以將上述各種方法相互組合,例如,可以將正向最大匹配方法和逆向最大匹配方法結合起來構成雙向匹配法。由于漢語單字成詞的特點,正向最小匹配和逆向 最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高于正向匹配,遇到的歧義現象也較少。

統計結果表明,單純使用正向最大匹配的錯誤率為1/169, 單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。實際使用的分詞系統,都是把機械分詞作為一種初分手段,還需通過利用各 種其它的語言信息來進一步提高切分的準確率。

另一種方法是改進掃描方式,稱為特征掃描或標志切分,優先在待分析字符串中識別和切分出一些帶有明 顯特征的詞,以這些詞作為斷點,可將原字符串分為較小的串再來進機械分詞,從而減少匹配的錯誤率。

另一種方法是將分詞和詞類標注結合起來,利用豐富的詞類 信息對分詞決策提供幫助,并且在標注過程中又反過來對分詞結果進行檢驗、調整,從而極大地提高切分的準確率。

PHPAnalysis分詞先對需要分詞的詞進行粗分,然后對粗分的短句子進行二次逆向最大匹配法(RMM)的方法進行分詞,分詞后對分詞結果進行優化,然后才得到最終的分詞結果。

API文檔

成員變量

變量 默認值 描述

$resultType 1 生成的分詞結果數據類型

1 為全部

2為詞典詞匯及單個中日韓簡繁字符及英文

3 為詞典詞匯及英文

這個變量一般用 SetResultType( $rstype ) 這方法進行設置。

$notSplitLen 5 切分句子最短長度

$toLower false 把英文單詞全部轉小寫

$differMax false 使用最大切分模式對二元詞進行消岐

$unitWord true 嘗試合并單字(即是新詞識別)

$differFreq false 使用熱門詞優先模式進行消岐

成員函數

__construct() 

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 方法設置要操作的文本

SetSource() 

public function SetSource( $source, $source_charset='utf-8', $target_charset='utf-8' ) 

函數說明:設置源字符串

參數列表:

$source 源字符串

$source_charset 源字符串編碼

$target_charset 目錄字符串編碼

返回值:bool

StartAnalysis()

public function StartAnalysis($optimize=true)

函數說明:開始執行分詞操作

參數列表:

$optimize 分詞后是否嘗試優化結果

返回值:void

一個基本的分詞過程:

  1. $pa = new PhpAnalysis(); 
  2. $pa->SetSource('需要進行分詞的字符串'); 
  3. //設置分詞屬性 
  4. $pa->resultType = 2; 
  5. $pa->differMax  = true; 
  6. $pa->StartAnalysis(); 
  7. //獲取你想要的結果 
  8. $pa->GetFinallyIndex(); 
  9. SetResultType() 

public function SetResultType( $rstype )

函數說明:設置返回結果的類型,實際是對成員變量$resultType的操作

參數 $rstype 值為:

1 為全部

2為 詞典詞匯及單個中日韓簡繁字符及英文

3 為詞典詞匯及英文

返回值:void

GetFinallyKeywords()

public function GetFinallyKeywords( $num = 10 )

函數說明:獲取出現頻率最高的指定詞條數(通常用于提取文檔關鍵字)

參數列表:

$num = 10 返回詞條個數

返回值:用”,”分隔的關鍵字列表

GetFinallyResult()

public function GetFinallyResult($spword=' ')

函數說明:獲得最終分詞結果

參數列表:

$spword 詞條之間的分隔符

返回值:string

GetSimpleResult()

public function GetSimpleResult()

函數說明:獲得粗分結果

返回值:array

GetSimpleResultAll()

public function GetSimpleResultAll()

函數說明:獲得包含屬性信息的粗分結果

屬性(1中文詞句、2 ANSI詞匯(包括全角),3 ANSI標點符號(包括全角),4數字(包括全角),5 中文標點或無法識別字符)

返回值:array

GetFinallyIndex()

public function GetFinallyIndex()

函數說明:獲取hash索引數組

返回值:array(‘word’=>count,…) 按出現頻率排序

MakeDict()

public function MakeDict( $source_file, $target_file='' )

函數說明:把文本文件詞庫編譯成詞典

參數列表:

$source_file 源文本文件

$target_file 目標文件(如果不指定,則為當前詞典)

返回值:void

ExportDict()

public function ExportDict( $targetfile )

函數說明:導出當前詞典全部詞條為文本文件

參數列表:

$targetfile 目標文件

返回值:void

簡單示例:

require_once 'phpanalysis2.0/phpanalysis.class.php';

$pa=new PhpAnalysis();

$pa->SetSource("PHPAnalysis分詞系統是基于字符串匹配的分詞方法進行分詞的,這種方法又叫做機械分詞方法,它是按照一定的策略將待分析的漢字串與 一個“充分大的”機器詞典中的詞條進行配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。按照掃描方向的不同,串匹配分詞方法可以分為正向匹配 和逆向匹配;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;按照是否與詞性標注過程相結合,又可以分為單純分詞方法和分詞與 標注相結合的一體化方法。常用的幾種機械分詞方法如下: ");

  1. $pa->resultType=2; 
  2. $pa->differMax=true; 
  3. $pa->StartAnalysis(); 
  4. $arr=$pa->GetFinallyIndex(); 
  5. echo "<pre>"
  6. print_r($arr); 
  7. echo "</pre>"

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 忻城县| 汾阳市| 威宁| 周宁县| 静乐县| 林周县| 江永县| 醴陵市| 天气| 枝江市| 连山| 大新县| 雅安市| 马边| 黄骅市| 鞍山市| 平定县| 通河县| 古丈县| 团风县| 余江县| 乌兰察布市| 嘉义县| 日喀则市| 西畴县| 五莲县| 屯留县| 嘉鱼县| 深水埗区| 谷城县| 巴彦淖尔市| 苏尼特右旗| 大安市| 同仁县| 阳新县| 密山市| 淳安县| 桂阳县| 南雄市| 湖口县| 临沭县|