تحديث 2021: حزمة بيثون قابلة للتثبيت
تنفيذ Python لبعض خوارزميات فك التشفير الزمني للاتصال الشائع (CTC) . يتم توفير نموذج لغة الحد الأدنى.
pip install .tests/ وقم بتنفيذ pytest للتحقق مما إذا كان التثبيت يعمل فيما يلي مثال قابل للتنفيذ:
import numpy as np
from ctc_decoder import best_path , beam_search
mat = np . array ([[ 0.4 , 0 , 0.6 ], [ 0.4 , 0 , 0.6 ]])
chars = 'ab'
print ( f'Best path: " { best_path ( mat , chars ) } "' )
print ( f'Beam search: " { beam_search ( mat , chars ) } "' ) من المتوقع أن يكون mat الإخراج (صفيف numpy ، softmax بالفعل) من الشبكة العصبية المدربة CTC على شكل TXC ويتم تمريرها كحجة أولى إلى وحدة فك التشفير. T هو عدد الخطوات الزمنية ، و C عدد الأحرف (خلاصة CTC هي العنصر الأخير). يتم تمرير الأحرف التي يمكن التنبؤ بها من قبل الشبكة العصبية كسلسلة chars إلى وحدة فك الترميز. وحدة فك التشفير إرجاع السلسلة فك التشفير.
تشغيل مخرجات الرمز:
Best path: ""
Beam search: "a"
لمعرفة المزيد من الأمثلة حول كيفية استخدام عمليات فك التشفير ، يرجى إلقاء نظرة على البرامج النصية في tests/ المجلد.
يمكن للبحث عن الشعاع دمج نموذج لغة على مستوى الأحرف. يتم استخدام إحصائيات النص (BigRams) عن طريق البحث عن شعاع لتحسين دقة القراءة.
from ctc_decoder import beam_search , LanguageModel
# create language model instance from a (large) text
lm = LanguageModel ( 'this is some text' , chars )
# and use it in the beam search decoder
res = beam_search ( mat , chars , lm = lm )يحسب وحدة فك ترميز Search المعجم تقريبًا تقريبًا مع أفضل فك تشفير المسار. بعد ذلك ، يستخدم شجرة BK لاسترداد كلمات مماثلة ، ويسجلها ويعيد أخيرًا أفضل كلمة تسجيل. يتم إنشاء BK-Tree من خلال توفير قائمة بكلمات القاموس. تحدد معلمة التسامح أقصى مسافة تحرير من كلمة الاستعلام إلى كلمات القاموس التي تم إرجاعها.
from ctc_decoder import lexicon_search , BKTree
# create BK-tree from a list of words
bk_tree = BKTree ([ 'words' , 'from' , 'a' , 'dictionary' ])
# and use the tree in the lexicon search
res = lexicon_search ( mat , chars , bk_tree , tolerance = 2 )بعض الملاحظات:
rnn_output شكل TXBXC ، مع ب البعد الدُفعاتmat = rnn_output[:, 0, :]وحدة فك التشفير الموصى بها:
best_path : أفضل وحدة فك ترميز مسار (أو جشع) ، أسرع من جميع الخوارزميات ، ومع ذلك ، غالباً ما تؤدي وحدة فك الترميز الأخرى بشكل أفضلbeam_search : يمكن ضبط وحدة فك ترميز بحث الشعاع ، الذي يدمج اختياريًا نموذج لغة على مستوى الأحرف ، عبر معلمة عرض الشعاعlexicon_search : وحدة فك ترميز بحث معجم ، تُرجع أفضل كلمة تسجيل من القاموسأجهزة فك التشفير الأخرى ، من تجربتي غير مناسبة حقًا لأغراض عملية ، ولكن يمكن استخدامها للتجارب أو البحث:
prefix_search : وحدة فك ترميز بحث البادئةtoken_passing : خوارزمية تمرير الرمز المميزextras/ المجلد)تقدم هذه الورقة اقتراحات عند استخدام أفضل فك تشفير المسار ، وفك تشفير الشعاع ومرور الرمز المميز.