【転】libscws(簡体字中文分詞庫)

13111 ワード

回転:http://blog.csdn.net/chenwei825825/article/details/20406183
他の住所:http://www.predream.org/show-119-187-1.html
データの種類:
1.   scwst scws操作のハンドル、大多数 API の第一パラメータタイプを通して、  scws_new() コピーしないでください。  struct scws_st データ、コピー結果は正確に動作することが保証されていません。
 
typedef struct scws_st {
 struct scws_st *p;
xdict_t d; //  NULL          
rule_t r; //  NULL          
unsignedchar *mblen;
unsignedint mode;
unsignedchar *txt;
int len;
int off;
int wend;
scws_res_t res0; // scws_res_t      
scws_res_t res1;
word_t **wmap;
 struct scws_zchar *zmap;
} scws_st, *scws_t;
 
2.   scwsレススt scws 単語の結果集、シングルチェーンの構造、  scws_get_result() 返します。分詞ごとに返した結果集の回数は一定ではないです。戻りますまで循環して呼び出さなければなりません。  NULL 
typedef struct scwsレスリング *scwsレススt;
struct scwsレスリング{
 要点 オフ;  // この語は原文の中のずれです。
 float idf; // この語の idf 値
 unsignedchar len; // この語の長さ
 char atr[3] // 品詞
 scwsレススt next // 次の単語

 
3.      scwstop_t 高周波キーワード統計集、略して「語彙集」といいます。 scws で呼び出しを統計して返す構造も、シングルチェーンテーブル構造です。
 
typedef struct scws_topword *scws_top_t;
struct scws_topword
{
char *word; //        
float weight; //     
short times; //     
char attr[2];// 2 ’\0‘   
scws_top_t next;//    
};
 
 
関数詳細
1.     scws_t scws_new() 割り当てまたは初期化と scws シリーズの操作  scws_st オブジェクトこの関数は自動的に割り当てられ、初期化され、新しいオブジェクトのポインタを返します。呼び出しのみ  scws_free() を選択します。
戻り値 初期化された scws最* (すなわち scwsハンドル。エラー メモリが足りない場合、NULLに戻ります。
2.     scws_t scws_fork(scws_t p) すでにあります scws オブジェクト上に分岐が発生し、スレッドの単語を独立して使用することができますが、親対象辞書、ルールセットリソースを継承し共有します。呼び出しが必要です  scws_free() を選択します。この分岐オブジェクトに辞書、規則セットをリセットすることは、親オブジェクトおよび他の分岐に影響しません。
パラメータ p 既存の scws オブジェクト(ブランチでもよい)の戻り値 クローンの分岐 scwsst*(scws_)t) ハンドルエラー メモリが足りない場合、NULLに戻ります。注意 主にマルチスレッド環境に使用され、メモリ辞書、ルールセットを共有します。はい、 v 1.2.0 かつては、枝先設定辞書規則集会は元の対象及び他の兄弟分岐に影響を及ぼしていた。
3.     void scws_free(scws_t s) 釈放する scws ハンドルやオブジェクトの内容を操作しながら、既に読み込まれている辞書やルールを解放します。
4.     void scws_set_charset(scws_t s, const char *cs) 現在の設定 scws 使用する文字セット。
パラメータ cs。 新しく指定された文字セット。この呼び出しがないとシステムがデフォルトで使用されます。 gbk、まだサポートしています utf 8は、文字セットを指定する際のパラメータの大きさの書き込みに敏感ではありません。エラー 指定された文字セットが存在しない場合、自動的に使用されます。 gbk 文字セットの置換
5.     int scws_add_dict(scws_t s, const char *fpath,int mode) 辞書ファイルを現在に追加 scws オブジェクト
パラメータ fpath 辞書のファイルパス、辞書のフォーマットは XDBまたはTXT を選択します。パラメータ モード 3つの値があります。それぞれ定義済みです。
o    SCWS_XDICT_TXT 読みたい辞書ファイルはテキスト形式で、後の2つと組み合わせて使うことができます。
o    SCWS_XDICT_XDB ダイレクト読み取りを表します xdb ファイル
o    SCWS_XDICT_MEMは xdb ファイルをすべてメモリにロードします。 XTree 構造保存は、他の2つの使用と異なるか結合することができます。
具体的にどのような方法を使うかは自分の実際の応用によって決めます。このライブラリをデーモンとして使用する場合におすすめです。 mem メソッドは、組み込み呼び出しのみの場合に使用するべきです。 xdb モード xdb ファイルをメモリにロードするには、比較的多くのメモリが必要であるだけでなく、一定の時間が必要です(35万データは約0.3~0.5秒程度が必要です)。
戻り値 戻りました 0,失敗しました -1です。注意 前のように scws 文頭が既に辞書を読み込んでいると、新しく入った辞書はより優先権が高いです。
6.     int scws_set_dict(scws_t s, const char *fpath,int mode) 現在をクリアして設定します。 scws すべての辞書ファイルを操作します。
パラメータ fpath 辞書のファイルパス、辞書のフォーマットは XDBまたはTXT を選択します。パラメータ モード 3つの値があります  scws_add_dict。戻り値 戻りました 0,失敗しました -1です。注意 前のように scws ハンドルが既に辞書に読み込まれている場合、この呼び出しは先に読み込まれたすべての辞書を解放します。和  scws_add_dict の違いは既存の辞書を上書きすることです。
7.     void scws_set_rule(scws_t s, const char *fpath) ルールセットファイルを設定します。
パラメータ fpath 規則セットファイルのパス。前のように scws ハンドルに規則セットがロードされている場合、この呼び出しは先にロードされた規則セットを解放します。エラー ローディングに失敗しましたt 構造中の r 元素は NULL、つまり通過します s->r==NULL ロードの失敗と成功を判断します。注意 規則集は新語の自動識別ルールを定義しています。よくある人名、地域、数字年代などが含まれています。規則の編纂方法は別に他の部分を参考にします。
8.     void scws_set_ignore(scws_t s, int yes) 分詞の結果を、句読点などの特殊記号を無視するかどうかを設定します。
パラメータ yes 1 無視する おろそかにしないことを表す。
9.     void scws_set_multi(scws_t s, int mode) 分詞実行時に、長語に対する複合カットを実行するかどうかを設定します。例:「中国人」は「中国」、「人」、「中国人」に分けられます。
パラメータ モード 複合分詞法のレベルは、デフォルトでは複合分詞ではない。取得値は、以下のいくつかの定数によって異なります。
o    SCWS_MULTI_ショー 短い言葉
o    SCWS_MULTI_DUALITY 二元(隣の二文字を一つの単語に組み合わせる)
o    SCWS_MULTI_ZMAIN 重要な単語
o    SCWS_MULTI_ZLL すべての単語
10.  void scws_set_duality(scws_t s, int yes) 閑散文字を自動的に二文字分詞で集約するかどうかを設定します。
パラメータ yes ものなら 1 二分重合を実行することを表します。0 処理しないことを表す。 0です
11.  void scws_set_debug(scws_t s, int yes) 分詞を設定する場合、難解なマルチパスの総合分詞に対して、各パスが印刷されているかどうか。
注意 印刷に使うのは  fprintf(stderr,...) 勝手に使ってはいけません。コンパイルする時だけ、enaber-debugに加入します。 オプションが有効です
12.  void scws_send_text(scws_t s, const char *text,int len) 分割するテキストデータを設定します。
パラメータ テキスト テキスト文字列ポインタ。パラメータ len テキストの長さ。注意 この関数は、文字列に含まれているので、バイナリデータに安全に使用できます。 \0 分割を停止します。この関数は  scws_get_result() 和  scws_get_tops() 前に呼び出します
scws 構造内部では、文字列のポインタと対応するオフセットと長さが維持されています。呼び出しが連続して上書きされる前の設定です。だから何度もscwsにいないはずです。ゲットするレスリング サイクル中にscws_を呼び出します。send_text() 間違いを避ける
13.  scws_res_t scws_get_result(scws_t s) 一連の分詞結果集を取り戻す。
戻り値 結果セットリストの頭のポインタは、この関数を循環して呼び出さなければなりません。 NULL 時になって、分詞が終わるという意味です。注意 この単語の結果は呼び出しが必要です。  scws_free_result() リリースします。パラメータは戻りのチェーンヘッドポインタです。
14.  void scws_free_result(scws_res_t result) 結果セットのチェーンヘッダから結果セットを解放します。
15.  scws_top_t scws_get_tops(scws_t s, int limit,char *xattr) 指定されたキーワードリストの統計を返します。システムは自動的に単語の出現回数と idf ランキングを計算します
パラメータ limit 取得したデータの最大数を指定します。着信値が0または負の値であれば、自動的に10にリセットされます。パラメータ xatr 除外または参加する統計語彙の品詞を記述するために用いられ、複数の語句の間にコンマで区切られます。統計結果にはこれらの語が含まれていないことを表します。そうでないと含まなければならないという意味です。NULLに入ってきます。 統計の全語性を表します。戻り値 フレーズ集チェーンの頭ポインタは、このフレーズ集を呼び出す必要があります。  scws_free_tops() 釈放する
16.  void scws_free_tops(scws_top_t tops) フレーズ集の連番に基づいてフレーズ集をリリースします。
17.  int scws_has_word(scws_t s, char *xattr) textに指定された品詞が含まれていると判断します。
パラメータ xatr 除外または参加する統計語彙の品詞を記述するために用いられ、複数の語句の間にコンマで区切られます。統計結果にはこれらの語が含まれていないことを表します。そうでないと含まなければならないという意味です。NULLに入ってきます。 統計の全語性を表します。戻り値 戻りがあれば 1 なしで戻る 0です
18.  scws_top_t scws_get_words(scws_t s, char*xattr) 指定された語句のキーワード表を返します。システムは言葉によって現れた前後にリストを挿入します。
パラメータ xatr 除外または参加する統計語彙の品詞を記述するために用いられ、複数の語句の間にコンマで区切られます。統計結果にはこれらの語が含まれていないことを表します。そうでないと含まなければならないという意味です。NULLに入ってきます。 統計の全語性を表します。戻り値 フレーズ集チェーンの頭ポインタを返します。このフレーズ集は必ず呼び出されます。  scws_free_tops() 釈放する。