ลองใช้ IDE ออนไลน์!
Chatito ช่วยคุณสร้างชุดข้อมูลสำหรับการฝึกอบรมและตรวจสอบความถูกต้องของโมเดลแชทบอทโดยใช้ DSL แบบธรรมดา
หากคุณกำลังสร้างแชทบอทโดยใช้โมเดลเชิงพาณิชย์ เฟรมเวิร์กโอเพ่นซอร์ส หรือเขียนโมเดลการประมวลผลภาษาธรรมชาติของคุณเอง คุณต้องมีตัวอย่างการฝึกอบรมและการทดสอบ Chatito พร้อมช่วยคุณแล้ว
โครงการนี้ประกอบด้วย:
สนทนาออนไลน์ IDE
ข้อกำหนด Chatito DSL
ตัวแยกวิเคราะห์ DSL AST ในรูปแบบ pegjs
ตัวสร้างนำไปใช้ในแพ็คเกจ typescript + npm
สำหรับข้อกำหนดภาษาและเอกสารฉบับเต็ม โปรดดูเอกสารข้อกำหนด DSL
การติดตั้งมากเกินไปเป็นปัญหาที่สามารถป้องกันได้หากเราใช้ Chatito อย่างถูกต้อง แนวคิดเบื้องหลังเครื่องมือนี้คือ ให้มีจุดตัดระหว่างการเพิ่มข้อมูลและคำอธิบายของชุดประโยคที่เป็นไปได้ ไม่ได้มีจุดมุ่งหมายเพื่อสร้างชุดข้อมูลที่กำหนดขึ้นซึ่งอาจเหมาะสมกับโมเดลประโยคเดียว ในกรณีดังกล่าว คุณสามารถควบคุมเส้นทางการสร้างได้เพียงดึงตัวอย่างตามที่ต้องการเท่านั้น
ปลั๊กอินเน้นไวยากรณ์ Visual Studio Code ขอบคุณ Yuri Golobokov สำหรับงานของเขาในเรื่องนี้
พิมพ์เขียว AI: วิธีสร้างและปรับใช้โครงการธุรกิจ AI ใช้ตัวอย่างแชทบอตเต็มรูปแบบที่ใช้งานได้จริงโดยใช้ chatito ในบทที่ 7
3 ขั้นตอนในการแปลงข้อมูลการฝึกอบรมแชทบอทระหว่างผู้ให้บริการ NLP ต่างๆ ให้รายละเอียดเกี่ยวกับวิธีง่ายๆ ในการแปลงรูปแบบข้อมูลเป็นอะแดปเตอร์ที่ไม่ได้ใช้งาน คุณสามารถใช้ชุดข้อมูลที่สร้างขึ้นกับผู้ให้บริการ เช่น DialogFlow, Wit.ai และ Watson
Aida-nlp เป็นไลบรารีการเรียนรู้เชิงลึก NLP แบบทดลองขนาดเล็กสำหรับการจำแนกข้อความและ NER สร้างด้วย Tensorflow.js, Keras และ Chatito นำไปใช้ใน JS และ Python
ภาษาไม่ขึ้นอยู่กับรูปแบบเอาต์พุตที่สร้างขึ้น และเนื่องจากแต่ละรุ่นสามารถรับพารามิเตอร์และการตั้งค่าที่แตกต่างกัน นี่เป็นรูปแบบข้อมูลที่นำไปใช้ในปัจจุบัน หากไม่มีรายชื่อผู้ให้บริการของคุณ ในส่วนเครื่องมือและทรัพยากร จะมีข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสนับสนุนเพิ่มเติม รูปแบบ
หมายเหตุ: ตัวอย่างจะไม่สับเปลี่ยนระหว่าง Intent เพื่อให้ตรวจสอบได้ง่ายขึ้น และเนื่องจากอะแดปเตอร์บางตัวสตรีมตัวอย่างไปยังไฟล์โดยตรง และขอแนะนำให้แยก Intent เป็นไฟล์ต่างๆ เพื่อให้ตรวจสอบและบำรุงรักษาได้ง่ายขึ้น
Rasa เป็นเฟรมเวิร์กแมชชีนเลิร์นนิงแบบโอเพ่นซอร์สสำหรับการสนทนาด้วยข้อความและเสียงอัตโนมัติ ทำความเข้าใจข้อความ จัดการสนทนา และเชื่อมต่อกับช่องทางการรับส่งข้อความและ API Chatito สามารถช่วยคุณสร้างชุดข้อมูลสำหรับส่วนประกอบ Rasa NLU
ลักษณะการทำงานเฉพาะอย่างหนึ่งของอะแดปเตอร์ Rasa คือ เมื่อประโยคคำจำกัดความของสล็อตมีนามแฝงเดียวเท่านั้น และนามแฝงนั้นกำหนดอาร์กิวเมนต์ 'คำเหมือน' ด้วย 'จริง' ชุดข้อมูล Rasa ที่สร้างขึ้นจะแมปนามแฝงเป็นคำเหมือน เช่น:
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
ในตัวอย่างนี้ ชุดข้อมูล Rasa ที่สร้างขึ้นจะมี entity_synonyms
synonym 1
และ synonym 2
กับ some slot synonyms
Flair กรอบงานที่เรียบง่ายสำหรับ NLP ที่ล้ำสมัย พัฒนาโดยการวิจัย Zalando มีการฝังที่ทันสมัย (GPT, BERT, RoBERTa, XLNet, ELMo ฯลฯ ...) ที่ผ่านการฝึกอบรมล่วงหน้าสำหรับหลายภาษาที่ทำงานนอกกรอบ อะแดปเตอร์นี้สนับสนุนชุดข้อมูล text classification
ในรูปแบบ FastText และชุดข้อมูล named entity recognition
ในคำที่มีคำอธิบายประกอบ BIO สองคอลัมน์ ตามที่บันทึกไว้ในเอกสารประกอบของ flair Corpus รูปแบบข้อมูลทั้งสองนี้เป็นเรื่องธรรมดามากและเกิดขึ้นกับผู้ให้บริการหรือโมเดลอื่นๆ มากมาย
ชุดข้อมูล NER ต้องการการประมวลผลโทเค็นคำซึ่งปัจจุบันดำเนินการโดยใช้โทเค็นไนเซอร์แบบธรรมดา
หมายเหตุ: อะแดปเตอร์ Flair ใช้ได้กับแพ็คเกจ NodeJS NPM CLI เท่านั้น ไม่ใช่สำหรับ IDE
LUIS เป็นส่วนหนึ่งของบริการ Cognitive ของ Microsoft Chatito รองรับการฝึกโมเดล LUIS NLU ผ่านจุดสิ้นสุดคำพูดที่มีป้ายกำกับการเพิ่มแบบกลุ่ม และ API การทดสอบแบบแบตช์
หากต้องการฝึกโมเดล LUIS คุณจะต้องโพสต์คำพูดเป็นชุดไปยัง API ที่เกี่ยวข้องสำหรับการฝึกหรือการทดสอบ
ปัญหาอ้างอิง: #61
Snips NLU เป็นอีกหนึ่งเฟรมเวิร์กโอเพ่นซอร์สที่ยอดเยี่ยมสำหรับ NLU ลักษณะการทำงานอย่างหนึ่งของอะแดปเตอร์ Snips คือคุณสามารถกำหนดประเภทเอนทิตีสำหรับสล็อตได้ เช่น:
%[date search]('training':'1') for @[date] @[date]('entity': 'snips/datetime') ~[today] ~[tomorrow]
ในตัวอย่างก่อนหน้านี้ ค่า @[date]
ทั้งหมดจะถูกแท็กด้วยแท็กเอนทิตี snips/datetime
ใช้รูปแบบเริ่มต้นหากคุณวางแผนที่จะฝึกโมเดลแบบกำหนดเอง หรือหากคุณกำลังเขียนอะแดปเตอร์แบบกำหนดเอง นี่เป็นรูปแบบที่ยืดหยุ่นที่สุดเนื่องจากคุณสามารถใส่คำอธิบายประกอบ Slots
และ Intents
ด้วยอาร์กิวเมนต์เอนทิตีแบบกำหนดเองได้ และทั้งหมดจะปรากฏที่เอาต์พุตที่สร้างขึ้น ดังนั้น ตัวอย่างเช่น คุณยังสามารถรวมตรรกะการสร้างไดอะล็อก/การตอบกลับเข้ากับ DSL ได้อีกด้วย เช่น:
%[some intent]('context': 'some annotation') @[some slot] ~[please?] @[some slot]('required': 'true', 'type': 'some type') ~[some alias here]
เอนทิตีแบบกำหนดเอง เช่น 'บริบท' 'จำเป็น' และ 'ประเภท' จะพร้อมใช้งานที่เอาต์พุต เพื่อให้คุณสามารถจัดการอาร์กิวเมนต์แบบกำหนดเองนี้ได้ตามที่คุณต้องการ
Chatito รองรับ Node.js >= v8.11
ติดตั้งด้วยเส้นด้ายหรือ npm:
npm i chatito --save
จากนั้นสร้างไฟล์คำจำกัดความ (เช่น trainClimateBot.chatito
) ด้วยโค้ดของคุณ
เรียกใช้ตัวสร้าง npm:
npx chatito trainClimateBot.chatito
ชุดข้อมูลที่สร้างขึ้นควรจะพร้อมใช้งานถัดจากไฟล์คำจำกัดความของคุณ
นี่คือตัวเลือกตัวสร้าง npm แบบเต็ม:
npx chatito <pathToFileOrDirectory> --format=<format> --formatOptions=<formatOptions> --outputPath=<outputPath> --trainingFileName=<trainingFileName> --testingFileName=<testingFileName> --defaultDistribution=<defaultDistribution> --autoAliases=<autoAliases>
เส้นทาง <pathToFileOrDirectory>
ไปยังไฟล์ .chatito
หรือไดเรกทอรีที่มีไฟล์ chatito หากเป็นไดเร็กทอรี จะค้นหา *.chatito
ไฟล์ทั้งหมดภายในแบบวนซ้ำ และใช้ไฟล์เหล่านั้นเพื่อสร้างชุดข้อมูล เช่น: lightsChange.chatito
หรือ ./chatitoFilesFolder
<format>
ไม่จำเป็น default
, rasa
, luis
, flair
หรือ snips
<formatOptions>
ไม่จำเป็น พาธไปยังไฟล์ .json ที่อะแด็ปเตอร์แต่ละตัวสามารถเลือกใช้ได้
<outputPath>
ไม่จำเป็น ไดเร็กทอรีที่ใช้บันทึกชุดข้อมูลที่สร้างขึ้น ใช้ไดเร็กทอรีปัจจุบันเป็นค่าเริ่มต้น
<trainingFileName>
ไม่จำเป็น ชื่อของไฟล์ชุดข้อมูลการฝึกอบรมที่สร้างขึ้น อย่าลืมเพิ่มนามสกุล .json ต่อท้ายด้วย ใช้ <format>
_dataset_training.json เป็นชื่อไฟล์เริ่มต้น
<testingFileName>
ไม่จำเป็น ชื่อของไฟล์ชุดข้อมูลการทดสอบที่สร้างขึ้น อย่าลืมเพิ่มนามสกุล .json ต่อท้ายด้วย ใช้ <format>
_dataset_testing.json เป็นชื่อไฟล์เริ่มต้น
<defaultDistribution>
ไม่จำเป็น การกระจายความถี่เริ่มต้นหากไม่ได้กำหนดไว้ที่ระดับเอนทิตี ค่าเริ่มต้นเป็น regular
และสามารถตั้งค่าเป็น even
<autoAliases>
ไม่จำเป็น พฤติกรรมทั่วไปเมื่อค้นหานามแฝงที่ไม่ได้กำหนด ตัวเลือกที่ถูกต้องคือ allow
warn
restrict
ค่าเริ่มต้นเป็น 'อนุญาต'
โรดริโก ปิเมนเทล
sr.rodrigopv[at]gmail