Windows 環境下安裝 scws
php 擴展下載地址1. 根據您當前用的 PHP 版本,下載相應已編譯好的 php_scws.dll 擴展庫。 目前支持 PHP-4.4.x 和 PHP-5.2.x 系列,下載地址分別為: php-4.4.x: http://www.xunsearch.com/scws/down/php-4.4.x/php_scws.dll php-5.2.x: http://www.xunsearch.com/scws/down/php-5.2.x/php_scws.dll php-5.3.x: http://www.xunsearch.com/scws/down/php-5.3.x/php_scws.dll2. 將下載后的 php_scws.dll 放到 php 安裝目錄的 extensions/ 目錄中去(通常為:X:/php/extensions/或 X:/php/ext/)。3. 建立一個本地目錄放規則集文件和詞典文件,建議使用:C:/program files/scws/etc4. 從 scws 主頁上下載詞典文件,解壓后將 *.xdb 放到上述目錄中 詞典系列:http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2 http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2 http://www.xunsearch.com/scws/down/scws-dict-cht-utf8.tar.bz25. 從 scws 主頁上下載規則集文件,解壓后將 *.ini 放到第 3 步建立的目錄 規則集文件壓縮包:http://www.xunsearch.com/scws/down/rules.tgz 解壓后有三個文件分別為 rules.ini rules.utf8.ini rules_cht.utf8.ini 將三件文件拷到第 3 步所述的目錄中6. 修改 php.ini 通常位于 C:/windows/php.ini 或 C:/winnt/php.ini 之類的目錄, 在 php.ini 的末尾加入以下幾行:[scws]; 注意請檢查 php.ini 中的 extension_dir 的設定值是否正確, 否則請將 extension_dir 設為空,; 再把 php_scws.dll 指定為絕對路徑。extension = php_scws.dllscws.default.charset = gbkscws.default.fpath = c:/program files/scws/etc 5. 重開 web 服務器即可完成。
php 代碼
php 代碼 ?php$so = scws_new();//$so- set_charset( utf-8 // 這里沒有調用 set_dict 和 set_rule 系統會自動試調用 ini 中指定路徑下的詞典和規則文件$so- send_text( 我是一個中國人,我會C++語言,我也有很多T恤衣服 name is hai while ($tmp = $so- get_result()) print_r($tmp);$so- close();預定義常量-----------* `SCWS_XDICT_XDB` 詞典文件為 XDB* `SCWS_XDICT_MEM` 將詞典全部加載到內存里* `SCWS_XDICT_TXT` 詞典文件為 TXT(純文本)* `SCWS_MULTI_NONE` 不進行復合分詞* `SCWS_MULTI_SHORT` 短詞復合 * `SCWS_MULTI_DUALITY` 散字二元復合* `SCWS_MULTI_ZMAIN` 重要單字* `SCWS_MULTI_ZALL` 全部單字---------這是一個類似 `Directory` 的內置式偽類操作,類方法建立請使用 `scws_new()` 函數,而不能直接用 `new SimpleCWS`。否則不會包含有 handle 指針,將無法正確操作。它包含的方法有:```phphtml' target='_blank'>class SimpleCWS { resource handle; bool close(void); bool set_charset(string charset) bool add_dict(string dict_path[, int mode = SCWS_XDICT_XDB]) bool set_dict(string dict_path[, int mode = SCWS_XDICT_XDB]) bool set_rule(string rule_path) bool set_ignore(bool yes) bool set_multi(int mode) bool set_duality(bool yes) bool send_text(string text) mixed get_result(void) mixed get_tops([int limit [, string xattr]]) bool has_word(string xattr) mixed get_words(string xattr) string version(void) **注意** 類方法的用與支 scws_xxx_xxx 系列函數用法一致,只不過免去第一參數, 故不另外編寫說明,請參見函數列表即可。**例子1** 使用類方法分詞```php ?php$so = scws_new();$so- set_charset( gbk // 這里沒有調用 set_dict 和 set_rule 系統會自動試調用 ini 中指定路徑下的詞典和規則文件$so- send_text( 我是一個中國人,我會C++語言,我也有很多T恤衣服 while ($tmp = $so- get_result()) print_r($tmp);$so- close();**例子2** 使用函數提取高頻詞```php ?php$sh = scws_open();scws_set_charset($sh, gbk scws_set_dict($sh, /path/to/dict.xdb scws_set_rule($sh, /path/to/rules.ini $text = 我是一個中國人,我會C++語言,我也有很多T恤衣服 scws_send_text($sh, $text);$top = scws_get_tops($sh, 5);print_r($top); **注意** 為方便使用,當 `SimpleCWS::send_text` 方法或 `scws_send_text()` 函數被調用前并且沒有 加載任何詞典和規則集時,系統會自動在 `scws.default.fpath` (ini配置)目錄中查找相應的字符集詞典。 詞典和規則文件的命名方式為 dict[.字符集].xdb 和 rules[.字符集].ini ,當字符集是 gbk 時中括號里面的 部分則不需要,直接使用 dict.xdb 和 rules.ini 而不是 dict.gbk.xdb 。 此外,輸入的文字,詞典、規則文件這三者的字符集必須統一,如果不是默認的 gbk 字符集請調用 `SimpleCWS::set_charset` 或 `scws_set_charset` 來設定,否則可能出現意外錯誤。--------1. `mixed scws_new(void)` 創建并返回一個 `SimpleCWS` 類操作對象。 **返回值** 成功返回類操作句柄,失敗返回 false。2. `mixed scws_open(void)` 創建并返回一個分詞操作句柄。 **返回值** 成功返回 scws 操作句柄,失敗返回 false。3. `bool scws_close(resource scws_handle)` `SimpleCWS::close(void)` 關閉一個已打開的 scws 分詞操作句柄。 **參數 scws_handle** 即之前由 scws_open 打開的返回值。 **返回值** 始終為 true **注意** 后面的 API 中省去介紹 scws_handle 參數,含義和本函數相同。4. `bool scws_set_charset(resource scws_handle, string charset)` `bool SimpleCWS::set_charset(string charset)` 設定分詞詞典、規則集、欲分文本字符串的字符集。 **參數 charset** 要新設定的字符集,目前只支持 utf8 和 gbk。(注:默認為 gbk,utf8不要寫成utf-8) **返回值** 始終為 true5. `bool scws_add_dict(resource scws_handle, string dict_path [, int mode])` `bool SimpleCWS::add_dict(string dict_path [, int mode])` 添加分詞所用的詞典,新加入的優先查找。 **參數 dict_path** 詞典的路徑,可以是相對路徑或完全路徑。(遵循安全模式下的 open_basedir) **參數 mode** 可選,表示加載的方式。其值有: - SCWS_XDICT_TXT 表示要讀取的詞典文件是文本格式,可以和后2項結合用 - SCWS_XDICT_XDB 表示直接讀取 xdb 文件(此為默認值) - SCWS_XDICT_MEM 表示將 xdb 文件全部加載到內存中,以 XTree 結構存放,可用異或結合另外2個使用。 **返回值** 成功返回 true 失敗返回 false6. `bool scws_set_dict(resource scws_handle, string dict_path [, int mode])` `bool SimpleCWS::set_dict(string dict_path [, int mode])` 設定分詞所用的詞典并清除已存在的詞典列表。 **參數 dict_path** 詞典的路徑,可以是相對路徑或完全路徑。(遵循安全模式下的 open_basedir) **參數 mode** 可選,表示加載的方式。參見 `scws_add_dict` **返回值** 成功返回 true 失敗返回 false7. `bool scws_set_rule(resource scws_handle, string rule_path)` `bool SimpleCWS::set_rule(string rule_path)` 設定分詞所用的新詞識別規則集(用于人名、地名、數字時間年代等識別)。 **參數 rule_path** 規則集的路徑,可以是相對路徑或完全路徑。(遵循安全模式下的 open_basedir) **參數 mode** 可選,表示加載的方式。參見 `scws_add_dict` **返回值** 成功返回 true 失敗返回 false8. `bool scws_set_ignore(resource scws_handle, bool yes)` `bool SimpleCWS::set_ignore(bool yes)` 設定分詞返回結果時是否去除一些特殊的標點符號之類。 **參數 yes** 設定值,如果為 true 則結果中不返回標點符號,如果為 false 則會返回,缺省為 false。 **返回值** 始終為 true9. `bool scws_set_multi(resource scws_handle, int mode)` `bool SimpleCWS::set_multi(bool yes)` 設定分詞返回結果時是否復式分割,如“中國人”返回“中國+人+中國人”三個詞。 **參數 mode** 復合分詞法的級別,缺省不復合分詞。取值由下面幾個常量異或組合(也可用 1-15 來表示): - SCWS_MULTI_SHORT (1)短詞 - SCWS_MULTI_DUALITY (2)二元(將相鄰的2個單字組合成一個詞) - SCWS_MULTI_ZMAIN (4)重要單字 - SCWS_MULTI_ZALL (8)全部單字 **返回值** 始終為 true10. `bool scws_set_duality(resource scws_handle, bool yes)` `bool SimpleCWS::set_duality(bool yes)` 設定是否將閑散文字自動以二字分詞法聚合 **參數 yes** 設定值,如果為 true 則結果中多個單字會自動按二分法聚分,如果為 false 則不處理,缺省為 false。 **返回值** 始終為 true11. `bool scws_send_text(resource scws_handle, string text)` `bool SimpleCWS::send_text(string text)` 發送設定分詞所要切割的文本。 **參數 text** 要切分的文本的內容。 **返回值** 成功返回 true 失敗返回 false **注意** 系統底層處理方式為對該文本增加一個引用,故不論多長的文本并不會造成內存浪費; 執行本函數時,若未加載任何詞典和規則集,則會自動試圖在 ini 指定的缺省目錄下查找缺省字符集的詞典和規則集。12. `mixed scws_get_result(resource scws_handle)` `mixed SimpleCWS::get_result()` 根據 send_text 設定的文本內容,返回一系列切好的詞匯。 **返回值** 成功返回切好的詞匯組成的數組,若無更多詞匯,返回 false。返回的詞匯包含的鍵值如下: - word _string_ 詞本身 - idf _float_ 逆文本詞頻 - off _int_ 該詞在原文本路的位置 - attr _string_ 詞性 **注意** 每次切詞后本函數應該循環調用,直到返回 false 為止,因為程序每次返回的詞數是不確定的。13. `mixed scws_get_tops(resource scws_handle [, int limit [, string attr]])` `mixed SimpleCWS::get_tops([int limit [, string attr]])` 根據 send_text 設定的文本內容,返回系統計算出來的最關鍵詞匯列表。 **參數 limit** 可選參數,返回的詞的最大數量,缺省是 10 **參數 attr** 可選參數,是一系列詞性組成的字符串,各詞性之間以半角的逗號隔開, 這表示返回的詞性必須在列表中,如果以~開頭,則表示取反,詞性必須不在列表中,缺省為NULL,返回全部詞性,不過濾。 **返回值** 成功返回統計好的的詞匯組成的數組,返回 false。返回的詞匯包含的鍵值如下: - word _string_ 詞本身 - times _int_ 詞在文本中出現的次數 - weight _float_ 該詞計算后的權重 - attr _string_ 詞性14. `mixed scws_get_words(resource scws_handle, string attr)` `mixed SimpleCWS::get_words(string attr)` 根據 send_text 設定的文本內容,返回系統中詞性符合要求的關鍵詞匯。 **參數 attr** 是一系列詞性組成的字符串,各詞性之間以半角的逗號隔開, 這表示返回的詞性必須在列表中,如果以~開頭,則表示取反,詞性必須不在列表中,若為空則返回全部詞。 **返回值** 成功返回符合要求詞匯組成的數組,返回 false。返回的詞匯包含的鍵值參見 `scws_get_result`15. `bool scws_has_words(resource scws_handle, string attr)` `mixed SimpleCWS::has_words(string attr)` 根據 send_text 設定的文本內容,返回系統中是否包括符合詞性要求的關鍵詞。 **參數 attr** 是一系列詞性組成的字符串,各詞性之間以半角的逗號隔開, 這表示返回的詞性必須在列表中,如果以~開頭,則表示取反,詞性必須不在列表中,若為空則返回全部詞。 **返回值** 如果有則返回 true,沒有就返回 false。16. `string scws_version(void)` `string SimpleCWS::version(void)` 返回 scws 版本號名稱信息(字符串)。鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答