關於scws分詞的一些記錄


測試環境:windows 2003 + php5.3.5 + apache2.2 + scws 1.1.9 

自定義詞庫,words.txt 如下:

騰訊    1.0    1.0    @
C++    1.0    1.0    !
中國人    1.0    1.0    !
就是    1.0    1.0    !  

1.每行由4個字段組成,依次為“詞語"(由中文字或3個以下的字母合成), "TF", "IDF", "詞性", 字段之間用空格或制表符分開,數量不限 (注意,發現如果字段時間用空格隔開,然后用scws官方的php程序將txt詞庫轉換xdb后,詞庫無效,但是txt詞庫有效,所以為了兼容性,字段之間最好僅用一個制表符分隔,且注意txt文件的編碼要與程序要使用的編碼一致)

2.詞性設為“!“,則表示該詞設為無效,即使在其它核心庫中存在該詞也視為無效 
 

 

使用自定義詞庫,需要注意加載詞庫代碼的位置

$txt  = '我就是一個中國人,我是會C++語言,我有很多T恤衣服'; 
$sh=scws_open();
//注意,加載詞庫的代碼放在此處無效,但是按照官方的例子應該是放在這里
//scws_add_dict( $sh, 'D:\Apache3W\words.txt', SCWS_XDICT_TXT);
scws_send_text( $sh$txt);
//加載詞庫的代碼必須放在scws_send_text函之后才有效
scws_add_dict( $sh, 'D:\Apache3W\words.txt', SCWS_XDICT_TXT); 
while ( $words = scws_get_result( $sh)) {
     foreach ( $words  as  $word)
    {
         var_dump( $word);
    }
}
scws_close( $sh);

如果非要將 scws_add_dict 放到 scws_send_text 前面 還可以這樣寫:

$txt = '我就是一個中國人,我是會C++語言,我有很多T恤衣服';
$sh=scws_open();
//scws_set_dict也可以改為scws_add_dict 
scws_set_dict( $sh, 'D:\Program Files\scws\etc\dict.utf8.xdb', SCWS_XDICT_XDB);
scws_add_dict( $sh, 'D:\Apache3W\words.txt', SCWS_XDICT_TXT);
scws_send_text( $sh$txt);
while ( $words = scws_get_result( $sh)) {
     foreach ( $words  as  $word)
    {
         var_dump( $word);
    }
}
scws_close( $sh );  


 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM