Libscws C API 使用說明

2021-04-13 07:56:30 字數 4541 閱讀 7608

libscws c api 使用說明

libscws - 0.0.1 c api 說明

0. 概述

libscws **是當前 scws(簡易中文分詞) 演算法使用c語言編寫的鏈結庫,目前僅基於 unix 族的作業系統,可能必須適當修改才能執行在 windows 平台中。這套 scws 庫沒有外部擴充套件依賴,**力爭簡潔高效,針對分詞詞典組織上做了一些優化。

除分詞外,由於分詞詞庫採用的是自行設計的xdb 和 xtree 結構,故本庫函式也可以用以 xdb 和 xtree 資料訪問(另行介紹)。

1. 資料型別

·scws_t scws_new();

描述:分配或初始化與scws系列操作的 scws_st 物件。該函式將自動分配、初始化、並返回新物件的指標。通過呼叫 scws_free() 來釋放該物件。

返回值:初始化的 scws_st * (即 scws_t) 控制代碼。如果無足夠記憶體以分配新的物件,返回null。

錯誤:在記憶體不足的情況下,返回null。

·void scws_free(scws_t s);

描述:釋放由 scws_new() 返回的 scws 操作控制代碼及物件內容,同時也會釋放已經載入的詞典和規則。

返回值:

錯誤:

·void scws_set_charset(scws_t s, const char *cs);

描述:設定當前 scws 所使用的字符集,目前僅支援 gbk 和 utf-8 兩種字符集。引數 cs 描述的是新指定的字符集。若無此呼叫則系統預設使用gbk字符集,指定字符集時 cs 引數的大小寫不敏感。

返回值:

錯誤:若指定的字符集不存在,則會自動使用 gbk 字符集替代。

·void scws_set_dict(scws_t s, const char *fpath, int mode);

描述:設定當前 scws 操作所有的詞典檔案。引數 fpath 描述的是詞典的檔案路徑,詞典格式是 xdb 格式。

引數 mode 有2種值,分別為巨集定義的:scws_xdict_xdb (這表示直接讀取 xdb 檔案)、scws_xdict_mem (這表示將 xdb 檔案全部載入到記憶體中,以 xtree 結構存放)。具體用哪種方式需要根據自己的實際應用來決定。當使用本庫做為 daemon server 時應當使用 mem 方式,當只是 embed 呼叫時應該使用 xdb 方式,將 xdb 檔案載入進記憶體不僅占用了比較多的記憶體,而且也需要一定的時間(35萬條資料約需要0.3~0.5秒左右)。

若此前 scws 控制代碼已經載入過詞典,則此呼叫會先釋放已經載入的詞典。

返回值:

錯誤:如果載入失敗,scws_t 結構中的 d 元素為 null,即通過  s->d == null 與否來判斷載入失敗或成功。

·void scws_set_rule(scws_t s, const char *fpath);

描述:設定規則集檔案。引數 fpath 是規則集檔案的路徑。若此前 scws 控制代碼已經載入過規則集,則此呼叫會先釋放已經載入的規則集。規則集定義了一些新詞自動識別規則,包括常見的人名、地區、數字年代等。規則編寫方法另行參考其它部分。

返回值:

錯誤:載入失敗,scws_t 結構中的 r 元素為 null,即通過 s->r == null 與否來判斷載入的失敗與成功。

·void scws_set_ignore(scws_t s, int yes);

描述:設定分詞執行過程中是否忽略所有的標點等特殊符號(不會忽略/r和/n)。引數 yes 為 1 表示忽略,為0表示不忽略,預設情況為不忽略。

返回值:

錯誤:

·void scws_set_multi(scws_t s, int yes);

描述:設定分詞執行時是否執行針對長詞復合切分。(例如:中國人->中國+人+中國人)。引數 yes 為 1表示復合分,為0表示相反。預設不復合分詞。

返回值:

錯誤:

·void scws_set_debug(scws_t s, int yes);

描述:設定分詞時對於疑難多路徑綜合分詞時,是否列印出各條路徑的情況。注意,列印使用的是 fprintf(stderr, ... 故,這項功能不要隨便使用,僅在命令列嵌入式呼叫時可以使用,參見例子中的 cmd.c 。當庫函式編譯選項中加入 -dlibscws_quiet 時此項不生效。(參見 php 擴充套件,php擴充套件裡就是加入此項)

返回值:

錯誤:

·void scws_send_text(scws_t s, const char *text, int len);

描述:設定要切分的文字資料,text 指定該串文字的起始位置,而 len 表示這段文字的長度。該函式可安全用於二進位制資料,不會因為字串中包括 /0 而停止切分。這個函式應該在 scws_get_result 和 scws_get_tops 之前呼叫。

返回值:

錯誤:無。

注:scws結構內部維護著該字串的指標和相應的偏移及長度,故連續呼叫的話後者會覆蓋前者的設定;不應在多次 scws_get_result 迴圈中呼叫 scws_send_text()。

·scws_res_t scws_get_result(scws_t s);

描述:取回一系列分詞結果集,該分詞結果必須呼叫 scws_free_result() 釋放,傳入煉表頭指標。

返回值:返回的是結果集鍊錶的頭部指標。該函式必須迴圈呼叫,當返回值為 null 時表示分詞結束。

錯誤:

·void scws_free_result(scws_res_t result);

描述:根據結果集的煉表頭釋放結果集

返回值:

錯誤:

·scws_top_t scws_get_tops(scws_t s, int limit, char *xattr);

描述:根據詞表集的煉表頭釋放詞表集

返回值:

錯誤:

3. 使用例項

乙個簡單的分詞例項:

code:

#include

#include

main()

scws_set_charset(s, "gbk");

scws_set_dict(s, "/path/to/dict.xdb", scws_xdict_xdb);

scws_set_rule(s, "/path/to/rules.ini");

scws_send_text(s, text, strlen(text));

while (res = cur = scws_get_result(s))

scws_free_result(res);

}scws_free(s);

}假設 libscws 被放在 /path/to/libscws/ 中編譯

編譯:gcc -o test -i/path/to/libscws -l/path/to/libscws test.c -lscws -lm

完整的例項請參見相關的原始碼:scwsc 命僅行分詞**。

引自: http://cws.twomice.net/bbs/viewthread.php?tid=37

相關演示和原碼

使用說明 附註工具使用說明

附註工具使用說明 附註工具用途 附註工具主要用於更新利用word附註應用程式生成的帶域 的附註,該工具在word右鍵 更新鏈結 的基礎上進行了優化,故在使用時,不能再利用word右鍵 更新鏈結 而要用本工具的 更新當前鏈結 或 更新所有鏈結 使用說明 一 更換路徑 當利用word附註應用程式生成帶域...

使用說明 農用遮光網使用說明

農用遮光網使用說明 建築防塵網購買方 建築施工企業 在購買建築防塵網時,應該對 作出比較,可以分辨品牌 型號,且購買時應該在一定程度上了解信譽良莠。建築防塵網購買方 市場售賣方 在選購建築防塵網時,可以把 作為基礎,好的 可以用來彌補信譽不足,而差的 則需要按照你的服務收費。農用遮光網使用說明 用途...

Hibernate tools 使用說明

05年的8月份第一次接觸hibernate tools,使用起來感覺還不錯,但也沒有深入研究,後來由於一直在做乙個專案,再後來用了一陣myeclipse,現在換了公司,使用wtp all in one eclipse的乙個版本 生成domain的時候使用了hibernate tools,發現都不知怎...