อัปเดต 2021: แพ็คเกจ Python ที่ติดตั้งได้
การใช้ 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-BLANK เป็นองค์ประกอบสุดท้าย) อักขระที่สามารถคาดการณ์ได้โดยเครือข่ายประสาทจะถูกส่งผ่านเป็นสตริง 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 )ตัวถอดรหัสการค้นหาพจนานุกรมคำนวณการประมาณครั้งแรกด้วยการถอดรหัสเส้นทางที่ดีที่สุด จากนั้นมันใช้ BK-Tree เพื่อดึงคำที่คล้ายกันให้คะแนนและในที่สุดก็ส่งคืนคำให้คะแนนที่ดีที่สุด 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 โดยมี b the batch dimensionmat = rnn_output[:, 0, :]ตัวถอดรหัสที่แนะนำ:
best_path : ตัวถอดรหัสเส้นทางที่ดีที่สุด (หรือโลภ) ซึ่งเร็วที่สุดของอัลกอริทึมทั้งหมดอย่างไรก็ตามตัวถอดรหัสอื่น ๆ มักจะทำงานได้ดีขึ้นbeam_search : ตัวถอดรหัสการค้นหาลำแสงตัวเลือกรวมโมเดลภาษาระดับอักขระสามารถปรับได้ผ่านพารามิเตอร์ความกว้างของลำแสงlexicon_search : ตัวถอดรหัสการค้นหาพจนานุกรมส่งคืนคำให้คะแนนที่ดีที่สุดจากพจนานุกรมตัวถอดรหัสอื่น ๆ จากประสบการณ์ของฉันไม่เหมาะสำหรับวัตถุประสงค์ในทางปฏิบัติ แต่อาจใช้สำหรับการทดลองหรือการวิจัย:
prefix_search : คำนำหน้าตัวถอดรหัสการค้นหาtoken_passing : อัลกอริทึมการส่งผ่านโทเค็นextras/ Folder)บทความนี้ให้คำแนะนำเมื่อใดที่จะใช้การถอดรหัสเส้นทางที่ดีที่สุดการถอดรหัสการค้นหาลำแสงและโทเค็นผ่าน