首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 中文分詞實作:基於 PSCWS4 的封裝函數

     編輯:PHP 相關知識

簡介

分享一個基於 PSCWS4(PHP Chinese Word Segmentation)的中文分詞封裝函數,支援返回字串或陣列、自定義分隔符、提取前 N 個關鍵詞。

依賴準備

  1. 下載 PSCWS4:官網 或 GitHub
  2. 解壓至專案目錄(如 ./pscws4/)
  3. 確保包含: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('青花夔龍紋香爐'));
?>

參數說明

參數類型預設說明
$textstring-待分詞文本,必須為 UTF-8 編碼
$topint5返回前 N 個高權重詞,0 返回全部
$return_arrayboolfalsetrue 返回陣列,false 返回分隔符連接字串
$sepstring','字串模式下的分隔符

進階配置

  • set_multi(3):啟用多元切分(獲取更多候選詞)
  • set_duality(true):返回雙關鍵詞(如「銀行」同時返回「銀」「行」)
  • set_debug(true):開啟調試輸出
  • 自定義詞典:add_dict() 載入專業領域詞庫

應用場景

  • 站內搜尋關鍵詞提取
  • 文章標籤自動生成
  • 內容推薦系統的特徵提取
  • 敏感詞過濾預處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved