ailia_tokenizer  1.4.0.0
公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
ailiaTokenizer.AiliaTokenizerModel クラス
ailiaTokenizer.AiliaTokenizerModel の継承関係図
Inheritance graph
[凡例]
ailiaTokenizer.AiliaTokenizerModel 連携図
Collaboration graph
[凡例]

公開メンバ関数

bool Create (int type, int flag)
 インスタンスを作成します。 [詳解]
 
bool Open (string model_path=null, string dictionary_path=null, string vocab_path=null, string merge_path=null)
 モデルファイルを開きます。 [詳解]
 
virtual void Close ()
 インスタンスを破棄します。 [詳解]
 
virtual void Dispose ()
 リソースを解放します。 [詳解]
 
int[] Encode (string utf8)
 エンコードを実行します。 [詳解]
 
int[] EncodeWithSpecialTokens (string utf8)
 スペシャルトークンを含んだエンコードを実行します。 [詳解]
 
string Decode (int[] tokens)
 デコードを実行します。 @pram tokens 入力トークン [詳解]
 
string DecodeWithSpecialTokens (int[] tokens)
 スペシャルトークンを含んだデコードを実行します。 @pram tokens 入力トークン [詳解]
 
int GetVocabSize ()
 Vocabの数を取得します。 [詳解]
 
string GetVocab (int token)
 Vocabの取得を行います。 [詳解]
 
bool AddSpecialTokens (string[] tokens)
 SpecialTokenの追加を行います。 [詳解]
 

限定公開メンバ関数

virtual void Dispose (bool disposing)
 

関数詳解

◆ AddSpecialTokens()

bool ailiaTokenizer.AiliaTokenizerModel.AddSpecialTokens ( string[]  tokens)
inline

SpecialTokenの追加を行います。

引数
tokensトークン
戻り値
成功した場合はtrue、失敗した場合はfalseを返す。

AILIA_TOKENIZER_TYPE_ROBERTAの場合のみ有効です。

393  {
394  IntPtr[] utf8Strings = new IntPtr[tokens.Length];
395  for (int i = 0; i < tokens.Length; i++) {
396  byte[] utf8Bytes = System.Text.Encoding.UTF8.GetBytes(tokens[i] + '\0');
397  utf8Strings[i] = Marshal.AllocHGlobal(utf8Bytes.Length);
398  Marshal.Copy(utf8Bytes, 0, utf8Strings[i], utf8Bytes.Length);
399  }
400 
401  IntPtr tokensPtr = Marshal.AllocHGlobal(IntPtr.Size * tokens.Length);
402  Marshal.Copy(utf8Strings, 0, tokensPtr, utf8Strings.Length);
403 
404  int status = AiliaTokenizer.ailiaTokenizerAddSpecialTokens(net, tokensPtr, (uint)tokens.Length);
405 
406  Marshal.FreeHGlobal(tokensPtr);
407  foreach (IntPtr ptr in utf8Strings) {
408  Marshal.FreeHGlobal(ptr);
409  }
410 
411  if (status != 0){
412  if (logging){
413  Debug.Log("ailiaTokenizerAddSpecialTokens failed " + status);
414  }
415  return false;
416  }
417  return true;
418  }

◆ Close()

virtual void ailiaTokenizer.AiliaTokenizerModel.Close ( )
inlinevirtual

インスタンスを破棄します。

インスタンスを破棄し、初期化します。

134  {
135  if (net != IntPtr.Zero){
136  AiliaTokenizer.ailiaTokenizerDestroy(net);
137  net = IntPtr.Zero;
138  }
139  }

◆ Create()

bool ailiaTokenizer.AiliaTokenizerModel.Create ( int  type,
int  flag 
)
inline

インスタンスを作成します。

引数
typeタイプ(AiliaTokenizer.AILIA_TOKENIZER_TYPE_*)
flagフラグの論理和(AiliaTokenizer.AILIA_TOKENIZER_FLAG_*)
戻り値
成功した場合はtrue、失敗した場合はfalseを返す。
37  {
38  if (net != IntPtr.Zero){
39  Close();
40  }
41 
42  int status = AiliaTokenizer.ailiaTokenizerCreate(ref net, type, flag);
43  if (status != 0){
44  if (logging){
45  Debug.Log("ailiaTokenizerCreate failed " + status);
46  }
47  return false;
48  }
49 
50  return true;
51  }

◆ Decode()

string ailiaTokenizer.AiliaTokenizerModel.Decode ( int[]  tokens)
inline

デコードを実行します。 @pram tokens 入力トークン

戻り値
成功した場合は文字列、失敗した場合は空文字列を返す。
303  {
304  return DecodeCore(tokens, false);
305  }

◆ DecodeWithSpecialTokens()

string ailiaTokenizer.AiliaTokenizerModel.DecodeWithSpecialTokens ( int[]  tokens)
inline

スペシャルトークンを含んだデコードを実行します。 @pram tokens 入力トークン

戻り値
成功した場合は文字列、失敗した場合は空文字列を返す。
321  {
322  return DecodeCore(tokens, true);
323  }

◆ Dispose() [1/2]

virtual void ailiaTokenizer.AiliaTokenizerModel.Dispose ( )
inlinevirtual

リソースを解放します。

149  {
150  Dispose(true);
151  }

◆ Dispose() [2/2]

virtual void ailiaTokenizer.AiliaTokenizerModel.Dispose ( bool  disposing)
inlineprotectedvirtual
154  {
155  if (disposing){
156  // release managed resource
157  }
158  Close(); // release unmanaged resource
159  }

◆ Encode()

int [] ailiaTokenizer.AiliaTokenizerModel.Encode ( string  utf8)
inline

エンコードを実行します。

引数
utf8入力文字列
戻り値
成功した場合はトークン列、失敗した場合は空配列を返す。
267  {
268  return EncodeCore(utf8, false);
269  }

◆ EncodeWithSpecialTokens()

int [] ailiaTokenizer.AiliaTokenizerModel.EncodeWithSpecialTokens ( string  utf8)
inline

スペシャルトークンを含んだエンコードを実行します。

引数
utf8入力文字列
戻り値
成功した場合はトークン列、失敗した場合は空配列を返す。
285  {
286  return EncodeCore(utf8, true);
287  }

◆ GetVocab()

string ailiaTokenizer.AiliaTokenizerModel.GetVocab ( int  token)
inline

Vocabの取得を行います。

引数
tokenトークン
戻り値
成功した場合は string 、そうでなければnullを返す。
363  {
364  IntPtr ptr = IntPtr.Zero;
365  int status = AiliaTokenizer.ailiaTokenizerGetVocab(net, token, ref ptr);
366  if (status != 0){
367  if (logging){
368  Debug.Log("ailiaTokenizerGetVocab failed " + status);
369  }
370  return null;
371  }
372  return Marshal.PtrToStringAnsi(ptr);
373  }

◆ GetVocabSize()

int ailiaTokenizer.AiliaTokenizerModel.GetVocabSize ( )
inline

Vocabの数を取得します。

戻り値
成功した場合は 0以上の数値 、そうでなければ-1を返す。
337  {
338  uint len = 0;
339  int status = AiliaTokenizer.ailiaTokenizerGetVocabSize(net, ref len);
340  if (status != 0){
341  if (logging){
342  Debug.Log("ailiaTokenizerGetVocabSize failed " + status);
343  }
344  return -1;
345  }
346  return (int)len;
347  }

◆ Open()

bool ailiaTokenizer.AiliaTokenizerModel.Open ( string  model_path = null,
string  dictionary_path = null,
string  vocab_path = null,
string  merge_path = null 
)
inline

モデルファイルを開きます。

引数
model_pathモデルファイルへのパス。(nullの場合は読み込まない)
dictionary_path辞書ファイルへのパス。(nullの場合は読み込まない)
vocab_pathVocabファイルへのパス。(nullの場合は読み込まない)
merge_pathMergeファイルへのパス。(nullの場合は読み込まない)
戻り値
成功した場合はtrue、失敗した場合はfalseを返す。
72  {
73  if (net == IntPtr.Zero){
74  return false;
75  }
76 
77  int status = 0;
78 
79  if (model_path != null){
80  status = AiliaTokenizer.ailiaTokenizerOpenModelFile(net, model_path);
81  if (status != 0){
82  if (logging){
83  Debug.Log("ailiaTokenizerOpenModelFile failed " + status);
84  }
85  return false;
86  }
87  }
88  if (dictionary_path != null){
89  status = AiliaTokenizer.ailiaTokenizerOpenDictionaryFile(net, dictionary_path);
90  if (status != 0){
91  if (logging){
92  Debug.Log("ailiaTokenizerOpenDictionaryFile failed " + status);
93  }
94  return false;
95  }
96  }
97  if (vocab_path != null){
98  status = AiliaTokenizer.ailiaTokenizerOpenVocabFile(net, vocab_path);
99  if (status != 0){
100  if (logging){
101  Debug.Log("ailiaTokenizerOpenVocabFile failed " + status);
102  }
103  return false;
104  }
105  }
106  if (merge_path != null){
107  status = AiliaTokenizer.ailiaTokenizerOpenMergeFile(net, merge_path);
108  if (status != 0){
109  if (logging){
110  Debug.Log("ailiaTokenizerOpenMergeFile failed " + status);
111  }
112  return false;
113  }
114  }
115 
116  return true;
117  }

このクラス詳解は次のファイルから抽出されました:
ailiaTokenizer.AiliaTokenizerModel.Dispose
virtual void Dispose()
リソースを解放します。
Definition: AiliaTokenizerModel.cs:148
ailiaTokenizer.AiliaTokenizerModel.Close
virtual void Close()
インスタンスを破棄します。
Definition: AiliaTokenizerModel.cs:133