分享一個基於 PSCWS4(PHP Chinese Word Segmentation)的中文分詞封裝函數,支援返回字串或陣列、自定義分隔符、提取前 N 個關鍵詞。
./pscws4/)pscws4.php、etc/dict.utf8.xdb、etc/rules.utf8.ini<?php
/**
* 中文分詞處理
* @param string $text 待處理文本
* @param int $top 返回前 N 個關鍵詞,0 為全部
* @param bool $return_array true 返回陣列,false 返回字串
* @param string $sep 字串模式下的分隔符
* @return mixed
*/
function scws($text, $top = 5, $return_array = false, $sep = ',') {
include('./pscws4/pscws4.php');
$cws = new PSCWS4('utf-8');
$cws->set_charset('utf-8');
$cws->set_dict('./pscws4/etc/dict.utf8.xdb');
$cws->set_rule('./pscws4/etc/rules.utf8.ini');
$cws->set_ignore(true); // 忽略標點等
$cws->send_text($text);
$ret = $cws->get_tops($top, 'r,v,p'); // 返回詞、權重、詞性
$result = $return_array ? [] : '';
foreach ($ret as $value) {
if ($return_array) {
$result[] = $value['word'];
} else {
$result .= $sep . $value['word'];
}
}
return $return_array ? $result : substr($result, 1);
}
// 測試
print_r(scws('青花夔龍紋香爐'));
?>
| 參數 | 類型 | 預設 | 說明 |
|---|---|---|---|
| $text | string | - | 待分詞文本,必須為 UTF-8 編碼 |
| $top | int | 5 | 返回前 N 個高權重詞,0 返回全部 |
| $return_array | bool | false | true 返回陣列,false 返回分隔符連接字串 |
| $sep | string | ',' | 字串模式下的分隔符 |
set_multi(3):啟用多元切分(獲取更多候選詞)set_duality(true):返回雙關鍵詞(如「銀行」同時返回「銀」「行」)set_debug(true):開啟調試輸出add_dict() 載入專業領域詞庫