YouTokentome عبارة عن رمز نص غير خاضع للإشراف يركز على الكفاءة الحسابية. وهي تنفذ حاليًا ترميز زوج البايت السريع (BPE) [Sennrich et al.]. إن تنفيذنا أسرع بكثير في التدريب والرمز المميز من معانقة الوجه ، FastBPE و Secndespiece. في بعض حالات الاختبار ، هو أسرع 60 مرة. تحقق من نتائجنا القياسية.
المزايا الرئيسية:
O(N) ، حيث N هو طول بيانات التدريبميزات إضافية:
وكذلك في الخوارزمية من الورقة الأصلية ، لا يعتبرنا الرموز المميزة التي تعبر حدود الكلمات. تمامًا كما هو الحال في SentencePiece ، تم استبدال جميع رموز الفضاء برمز META "or" (U+2581). يسمح بتحويل تسلسلات الرموز إلى النص وإعادة استعادة حدود الكلمات.
على سبيل المثال ، عبارة Blazingly fast tokenization! يمكن أن تكون رمزية في
['▁Bl', 'az', 'ingly', '▁fast', '▁token', 'ization', '!']
pip install youtokentomeلنبدأ بمثال مستقل ذاتي.
import random
import youtokentome as yttm
train_data_path = "train_data.txt"
model_path = "example.model"
# Generating random file with training data
# 10000 lines with 100 characters in each line
n_lines = 10000
n_characters = 100
with open ( train_data_path , "w" ) as fout :
for _ in range ( n_lines ):
print ( "" . join ([ random . choice ( "abcd " ) for _ in range ( n_characters )]), file = fout )
# Generating random text
test_text = "" . join ([ random . choice ( "abcde " ) for _ in range ( 100 )])
# Training model
yttm . BPE . train ( data = train_data_path , vocab_size = 5000 , model = model_path )
# Loading model
bpe = yttm . BPE ( model = model_path )
# Two types of tokenization
print ( bpe . encode ([ test_text ], output_type = yttm . OutputType . ID ))
print ( bpe . encode ([ test_text ], output_type = yttm . OutputType . SUBWORD )) youtokentome . BPE . train ( data , model , vocab_size , coverage , n_threads = - 1 , pad_id = 0 , unk_id = 1 , bos_id = 2 , eos_id = 3 )يدرب نموذج BPE ويحفظ للملف.
args:
data : سلسلة ، مسار إلى ملف مع بيانات التدريبmodel : سلسلة ، مسار إلى حيث سيتم حفظ النموذج المدربvocab_size : int ، عدد الرموز في المفردات النهائيةcoverage : تعويم ، جزء من الشخصيات التي يغطيها النموذج. يجب أن يكون في النطاق [0 ، 1]. قيمة جيدة للاستخدام حوالي 0.9999.n_threads : int ، عدد مؤشرات الترابط المتوازية المستخدمة لتشغيل. إذا تم تمرير -1 ، فسيتم استخدام جميع المواضيع المتاحة. لاحظ أن عدد المواضيع محدودة بمقدار 8 (انظر المعيار).pad_id : int ، معرف محجوز للحشوunk_id : int ، معرف محجوز للرموز غير المعروفةbos_id : int ، معرف محفوظ لبدء الرمز المميز للعقوبةeos_id : int ، معرف محفوظ لرمز نهاية الجملة إرجاع : الفصل youtokentome.BPE مع النموذج المحمّل.
youtokentome . BPE ( model , n_threads = - 1 )مُنشئ الطبقة. يحمل النموذج المدرب.
model : سلسلة ، مسار إلى النموذج المدربn_threads : int ، عدد مؤشرات الترابط المتوازية المستخدمة لتشغيل. إذا كان يساوي -1 ، فسيتم استخدام الحد الأقصى لعدد مؤشرات الترابط المتاحة. الفصل youtokentome.BPE لديه الطرق التالية:
encode ( self , sentences , output_type = yttm . OutputType . ID , bos = False , eos = False , reverse = False , dropout_prob = 0 )args:
sentences : قائمة الأوتار ، الجمل للرمز المميز.output_type : التعداد ، يمكن أن تكون الجملة رمزية على معرفات أو كلمات فرعية. استخدم OutputType.ID لـ IDS و OutputType.SUBWORD للكلمات الفرعية.bos : Bool ، إذا كان صحيحًا ، فسيتم إضافة رمز "بداية الجملة"eos : Bool ، إذا كان صحيحًا ، فسيتم إضافة رمز "نهاية الجملة"reverse : منطقي ، إذا كان صحيحًا ، فسيتم عكس تسلسل الإخراج من الرموزdropout_prob : تعويم ، احتمال bpe-dropout (احتمال إسقاط الدمج). يجب أن يكون في النطاق [0 ، 1]. إرجاع: إذا كان output_type مساوياً لـ youtokentome.OutputType.ID أو youtokentome.OutputType.SUBWORD ، فسيتم إرجاع قائمة قوائم الأعداد الصحيحة أو قائمة قوائم السلاسل على التوالي.
vocab ( self ) إرجاع: قائمة المفردات vocab_size . تتوافق السلسلة i-th في القائمة مع الكلمة الفرعية i-th.
vocab_size ( self )عائدات: int. حجم المفردات.
subword_to_id ( self , subword )args:
subword : سلسلة. إرجاع: عدد صحيح من النطاق [0 ، vocab_size-1]. معرف الكلمة الفرعية أو ، إذا لم يكن هناك مثل هذا الكلمة الفرعية في المفردات ، فسيتم إرجاع unk_id .
id_to_subword ( self , id )args:
id : int ، يجب أن يكون في النطاق [0 ، vocab_size-1]إرجاع: سلسلة. الكلمة الفرعية من المفردات بواسطة ID.
decode ( self , ids , ignore_ids = None )قم بتحويل كل معرف إلى الكلمة الفرعية والسلسلة مع رمز الفضاء.
args:
ids : قائمة قوائم الأعداد الصحيحة. يجب أن تكون جميع الأعداد الصحيحة في النطاق [0 ، vocab_size-1]ignore_ids : مجموعة من الأعداد الصحيحة. سيتم تجاهل هذه المؤشرات أثناء فك التشفير. يجب أن تكون جميع الأعداد الصحيحة في النطاق [0 ، vocab_size-1] [افتراضي: لا شيء]عائدات: قائمة السلاسل.
$ yttm bpe --data TRAINING_DATA_FILE --model OUTPUT_MODEL_FILE --vocab_size 2000
$ yttm encode --model OUTPUT_MODEL_FILE --output_type subword < TEST_DATA_FILE > ENCODED_DATA يدعم YouTokenToMe الأوامر التالية:
$ yttm --help
Usage: yttm [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
bpe Train BPE model.
decode Decode ids to text.
encode Encode text to ids or subwords.
vocab Print list of learned subwords.
يتيح لك Command bpe تدريب نموذج ترميز زوج البايت بناءً على ملف نصي.
$ yttm bpe --help
Usage: yttm bpe [OPTIONS]
Train BPE model.
Options:
--data PATH Training data file path. [required]
--model PATH Output model file path. [required]
--vocab_size INTEGER Number of tokens in the final vocabulary. [required]
--coverage FLOAT Fraction of characters covered by the model. [default: 1.0]
--n_threads INTEGER Number of threads. [default: -1]
--pad_id INTEGER Padding token id. [default: 0]
--unk_id INTEGER Unknown token id. [default: 1]
--bos_id INTEGER 'Begin of sentence' token id. [default: 2]
--eos_id INTEGER 'End of sentence' token id. [default: 3]
--help Show this message and exit.
قم بتطبيق ترميز BPE لمجموعة من الجمل. استخدم stdin للإدخال و stdout للإخراج.
بشكل افتراضي ، يعمل الترميز بالتوازي باستخدام مؤشرات ترابط n_threads . يقتصر عدد المواضيع على 8 (انظر المعيار).
باستخدام الخيار --stream -سيتم تجاهل --n_threads وسيتم معالجة جميع الجمل واحدة تلو الأخرى. كل جملة ستكون رمزية وكتابة إلى stdout قبل قراءة الجملة التالية.
$ yttm encode --help
Usage: yttm encode [OPTIONS]
Encode text to ids or subwords.
Options:
--model PATH Path to file with learned model. [required]
--output_type TEXT 'id' or 'subword'. [required]
--n_threads INTEGER Number of threads. [default: -1]
--bos Add tab 'begin of sentence'.
--eos Add tab 'end of sentence'.
--reverse Reverse output sequence of tokens.
--stream Process each line before reading the next one.
--dropout_prob BPE-dropout probability (the probability of a merge being dropped). [default: 0]
--help Show this message and exit.
المفردات طباعة. هذا يمكن أن يكون مفيدًا لفهم النموذج.
$ yttm vocab --help
Usage: yttm vocab [OPTIONS]
Print list of learned subwords.
Options:
--model PATH Path to file with learned model. [required]
--verbose Add merging rules.
--help Show this message and exit.
تحويل المعرفات مرة أخرى إلى النص. استخدم stdin للإدخال و stdout للإخراج.
$ yttm decode --help
Usage: yttm decode [OPTIONS]
Decode ids to text.
Options:
--model PATH Path to file with learned model. [required]
--ignore_ids List of indices to ignore for decoding. Example: --ignore_ids=1,2,3
--help Show this message and exit.