ตลอดทั้งชุดบล็อกนี้ ติดตามการเดินทางของ Seasalt.ai ในการสร้างประสบการณ์การประชุมสมัยใหม่ที่รอบด้าน ตั้งแต่จุดเริ่มต้นที่เรียบง่าย ไปจนถึงการเพิ่มประสิทธิภาพบริการของเราบนฮาร์ดแวร์และโมเดลต่างๆ ไปจนถึงการผสานรวมระบบ NLP ที่ล้ำสมัย และสิ้นสุดที่การตระหนักรู้อย่างเต็มรูปแบบของ SeaMeet โซลูชันการประชุมสมัยใหม่ที่ทำงานร่วมกันของเรา
นอกเหนือจากการถอดความ
อุปสรรคก่อนหน้านี้ทั้งหมดที่เราเผชิญได้สอนบทเรียนที่สำคัญแก่เรา: เราสามารถทำสิ่งเหล่านี้ได้ดีขึ้นด้วยตัวเราเอง ดังนั้นทีมงานที่ Seasalt.ai จึงเริ่มฝึกอบรมโมเดลอะคูสติกและภาษาของเราเองเพื่อแข่งขันกับความสามารถของเครื่องถอดความบทสนทนาของ Azure Microsoft ได้นำเสนอการนำเสนอที่น่าทึ่งในงาน MS Build 2019 โดยจัดแสดงบริการเสียงพูดของ Azure ว่าเป็นผลิตภัณฑ์ที่มีความสามารถสูงและเข้าถึงได้ง่าย หลังจากที่ประทับใจแล้ว เราก็ถูกบังคับให้ถามคำถามว่า เราจะไปทางไหนต่อจากนี้? เราจะขยายผลิตภัณฑ์ที่มีประโยชน์อยู่แล้วนี้ได้อย่างไร? การประชุมสมัยใหม่ได้แสดงให้เห็นถึงศักยภาพในการแปลงคำพูดเป็นข้อความที่แข็งแกร่ง แต่นั่นคือจุดสิ้นสุด เรารู้ว่า Azure สามารถฟังเราได้ แต่ถ้าเราสามารถทำให้มัน คิด แทนเราได้ล่ะ? ด้วยการถอดความเพียงอย่างเดียว แม้ว่าผลิตภัณฑ์จะน่าประทับใจ แต่แอปพลิเคชันก็ค่อนข้างจำกัด
ด้วยการผสานรวมเทคโนโลยีการแปลงคำพูดเป็นข้อความที่มีอยู่เข้ากับระบบที่สามารถสร้างข้อมูลเชิงลึกจากการถอดความ เราสามารถนำเสนอผลิตภัณฑ์ที่เกินความคาดหมายและคาดการณ์ความต้องการของผู้ใช้ได้ เราตัดสินใจที่จะรวมสามระบบเพื่อปรับปรุงมูลค่าโดยรวมของการถอดความ SeaMeet ของเรา: การสรุป การสรุปหัวข้อ และการแยกรายการการดำเนินการ แต่ละระบบได้รับเลือกเพื่อบรรเทาความเจ็บปวดเฉพาะของผู้ใช้
เพื่อสาธิต เราจะแสดงผลลัพธ์ของการรันระบบสรุป หัวข้อ และการดำเนินการกับข้อความถอดความสั้นๆ ต่อไปนี้:
คิม: "ขอบคุณค่ะ Xuchen คุณถูกปิดเสียงอยู่เพราะมีคนจำนวนมากในการโทรนี้ กดดอกจัน 6 เพื่อเปิดเสียง"
Xuchen: "โอเค ฉันคิดว่ามันเป็นแค่การรับสัญญาณที่ไม่ดี"
คิม: "ใช่"
แซม: "ฉันเพิ่งส่งไฟล์แยกต่างหากพร้อมข้อมูลเสียงพูดสำหรับวันอังคารจนถึง 30 วัน พวกคุณน่าจะมีเวอร์ชันที่อัปเดตแล้ว"
คิม: "ดังนั้นจะมีกรณีพิเศษที่สิ่งนี้ใช้ไม่ได้ผลแน่นอน ฉันพบสองสามกรณีแล้วในตัวอย่างนี้ มันเหมือนกับว่าเอากริยาออกไปแล้วบอกว่าผู้พูดคือผู้รับมอบหมาย ทั้งที่จริงๆ แล้วแครอลคือผู้รับมอบหมาย แต่ก็เป็นรูปแบบเดียวกับกรณีที่สองที่คุณต้องการให้ฉันเป็นผู้รับมอบหมายจริงๆ เพราะพวกเขาไม่ได้มอบหมายให้เจสัน แต่พวกเขามอบหมายให้ตัวเองไปบอกเจสัน"
แซม: "เข้าใจแล้ว"
Xuchen: "ดังนั้นข้อเสียของสิ่งนี้คือคุณต้องเขียนกฎสำหรับมัน ใช่ ข้อดีคือมันเป็นโมเดลที่ได้รับการฝึกฝนมาแล้ว คุณสามารถฝึกฝนเพิ่มเติมได้ แต่เราไม่จำเป็นต้องทุ่มข้อมูลจำนวนมากลงไปในสิ่งนี้"
คิม: "แม้ว่ามันจะไม่ได้ทำการจำแนกประเภทที่จะบอกเราว่านี่เป็นการกระทำหรืออย่างอื่น?"
Xuchen: "ดังนั้นเคล็ดลับที่นี่คือเราต้องการให้มีกริยาช่วย แต่เราก็ต้องการชื่อคนด้วย"
แซม: "ใช่ ไม่อย่างนั้นอาจเป็นเพราะ"
Xuchen: "ใช่ ถ้ามีประโยคที่มีคำที่ชัดเจนอยู่หลายกรณี อย่างไรก็ตาม ไม่ใช่ทุกคำที่จะช่วยในการดำเนินการ"
การสรุป

ภาพรวมของอินเทอร์เฟซ SeaMeet ของเรา ซึ่งมีการแสดงคำพูดของผู้ใช้พร้อมบทสรุปสั้นๆ ทางด้านซ้าย
แม้ว่าการนำทางข้อความถอดความจะง่ายกว่าการค้นหาไฟล์เสียงที่บันทึกไว้เป็นเวลาหลายชั่วโมงอย่างแน่นอน แต่สำหรับการประชุมที่ยาวนานเป็นพิเศษ การค้นหาเนื้อหาที่ต้องการหรือการดูภาพรวมของการสนทนาทั้งหมดก็ยังอาจใช้เวลานาน เราเลือกที่จะให้บทสรุปสองประเภทนอกเหนือจากการถอดความฉบับเต็ม
บทสรุปในระดับคำพูดแต่ละคำจะให้ส่วนที่กระชับและอ่านง่ายขึ้น นอกจากนี้ บทสรุปสั้นๆ ยังช่วยปรับข้อความให้เป็นปกติโดยการลบส่วนที่ว่างเปล่าทางความหมายและทำการแก้ไขคำสรรพนามและการอ้างอิงร่วม จากนั้นเราสามารถป้อนส่วนที่สรุปแล้วลงในแอปพลิเคชันดาวน์สตรีม (เช่น การสรุปหัวข้อ) เพื่อปรับปรุงผลลัพธ์สุดท้าย
นอกเหนือจากบทสรุปสั้นๆ แล้ว เรายังเลือกที่จะให้บทสรุปยาวหนึ่งฉบับซึ่งมีจุดมุ่งหมายเพื่อสร้างภาพรวมทั่วไปของการประชุมทั้งหมด บทสรุปนี้ทำหน้าที่เหมือนบทคัดย่อสำหรับการประชุม โดยครอบคลุมเฉพาะประเด็นการพูดคุยและข้อสรุปหลักเท่านั้น
ต่อไปนี้เป็นตัวอย่างของบทสรุปสั้นๆ ซึ่งเราได้ป้อนแต่ละส่วนในข้อความถอดความต้นฉบับผ่านเครื่องมือสรุป:
คิม: "Xuchen ถูกปิดเสียงอยู่เพราะมีคนจำนวนมากในการโทร"
Xuchen: "มันเป็นแค่การรับสัญญาณที่ไม่ดี"
แซม: "ฉันส่งไฟล์แยกต่างหากพร้อมข้อมูลเสียงพูดสำหรับวันอังคารจนถึง 30 วัน"
คิม: "จะมีกรณีพิเศษที่สิ่งนี้ใช้ไม่ได้ผล"
Xuchen: "ข้อเสียของการฝึกอบรมโมเดลที่ได้รับการฝึกฝนมาแล้วคือคุณต้องเขียนกฎสำหรับมัน"
คิม: "การจำแนกประเภทไม่ได้ทำการจำแนกประเภทที่จะให้การกระทำแก่พวกเขา"
Xuchen: "เคล็ดลับที่นี่คือพวกเขาต้องการให้มีกริยาช่วย แต่พวกเขาก็ต้องการชื่อคนด้วย"
Xuchen: "ถ้ามีประโยคที่มีคำ ไม่ใช่ทุกคำที่จะช่วยในการดำเนินการ"
และตัวอย่างนี้แสดงให้เห็นการประชุมทั้งหมดที่สรุปไว้ในย่อหน้าเดียว:
"Xuchen ถูกปิดเสียงอยู่เพราะมีคนจำนวนมากในการโทร แซมส่งไฟล์แยกต่างหากพร้อมข้อมูลเสียงพูดสำหรับวันอังคารจนถึง 30 วัน Xuchen พบกรณีพิเศษบางกรณีที่ผู้พูดคือผู้รับมอบหมาย"
หัวใจสำคัญของทั้งส่วนประกอบการสรุปแบบสั้นและแบบยาวคือโมเดลการสรุปที่ใช้หม้อแปลง เราปรับแต่งโมเดลบนชุดข้อมูลบทสนทนาสำหรับการสรุปแบบนามธรรม ข้อมูลประกอบด้วยข้อความที่ตัดตอนมาจากความยาวต่างๆ ซึ่งแต่ละข้อความจะจับคู่กับบทสรุปที่เขียนด้วยลายมือ สำหรับการสรุปหลายภาษา เราใช้กระบวนทัศน์เดียวกัน แต่ใช้โมเดลพื้นฐานหลายภาษาที่ปรับแต่งบนเวอร์ชันที่แปลของชุดข้อมูล จากอินเทอร์เฟซ SeaMeet ผู้ใช้ยังมีตัวเลือกในการตรวจสอบบทสรุปที่สร้างโดยเครื่องหรือให้บทสรุปของตนเอง จากนั้นเราสามารถรวบรวมบทสรุปที่ผู้ใช้ป้อนเหล่านี้และเพิ่มกลับเข้าไปในชุดการฝึกอบรมของเราเพื่อปรับปรุงโมเดลของเราอย่างต่อเนื่อง
การสรุปหัวข้อ

อินเทอร์เฟซ SeaMeet โดยเน้นที่แท็บ ‘หัวข้อ’ ทางด้านขวา
ปัญหาอีกประการหนึ่งเมื่อต้องจัดการกับคอลเล็กชันการถอดความจำนวนมากคือการจัดระเบียบ การจัดหมวดหมู่ และการค้นหา ด้วยการสรุปคำหลักและหัวข้อจากการถอดความโดยอัตโนมัติ เราสามารถให้ผู้ใช้มีวิธีที่ง่ายดายในการติดตามการประชุมบางรายการ หรือแม้แต่ส่วนเฉพาะของการประชุมที่มีการหารือหัวข้อที่เกี่ยวข้อง นอกจากนี้ หัวข้อเหล่านี้ยังทำหน้าที่เป็นอีกวิธีหนึ่งในการสรุปข้อมูลที่สำคัญและน่าจดจำที่สุดในการถอดความ
นี่คือตัวอย่างของคำหลักที่จะถูกแยกออกจากข้อความถอดความตัวอย่าง:
กริยาช่วย
ผู้พูด
ข้อมูลเสียงพูด
ไฟล์แยกต่างหาก
เวอร์ชันที่อัปเดตแล้ว
ชื่อคน
โมเดลที่ได้รับการฝึกฝน
เขียนกฎ
งานการแยกหัวข้อใช้การผสมผสานระหว่างแนวทางแบบนามธรรมและแบบสกัด นามธรรมหมายถึงแนวทางการจำแนกข้อความ โดยที่แต่ละอินพุตจะถูกจำแนกออกเป็นชุดของป้ายกำกับที่เห็นในระหว่างการฝึกอบรม สำหรับวิธีนี้ เราใช้สถาปัตยกรรมประสาทที่ฝึกฝนบนเอกสารที่จับคู่กับรายการหัวข้อที่เกี่ยวข้อง การสกัดหมายถึงแนวทางการค้นหาวลีสำคัญ โดยที่วลีสำคัญที่เกี่ยวข้องจะถูกสกัดจากข้อความที่ให้มาและส่งคืนเป็นหัวข้อ สำหรับแนวทางนี้ เราใช้การผสมผสานระหว่างเมตริกความคล้ายคลึงกัน เช่น ความคล้ายคลึงกันของโคไซน์และ TF-IDF นอกเหนือจากข้อมูลการเกิดร่วมกันของคำเพื่อสกัดคำหลักและวลีที่เกี่ยวข้องมากที่สุด
ทั้งเทคนิคแบบนามธรรมและแบบสกัดมีข้อดีและข้อเสีย แต่ด้วยการใช้ร่วมกัน เราสามารถใช้ประโยชน์จากจุดแข็งของแต่ละเทคนิคได้ โมเดลนามธรรมนั้นยอดเยี่ยมในการรวบรวมรายละเอียดที่แตกต่างกันแต่เกี่ยวข้องกัน และค้นหาหัวข้อที่ค่อนข้างทั่วไปซึ่งเหมาะกับทั้งหมด อย่างไรก็ตาม มันไม่สามารถคาดเดาหัวข้อที่ไม่เคยเห็นในระหว่างการฝึกอบรมได้ และเป็นไปไม่ได้ที่จะฝึกอบรมในทุกหัวข้อที่อาจเกิดขึ้นในการสนทนา! ในทางกลับกัน โมเดลสกัดสามารถดึงคำหลักและหัวข้อได้โดยตรงจากข้อความ ซึ่งหมายความว่ามันเป็นอิสระจากโดเมน และสามารถสกัดหัวข้อที่ไม่เคยเห็นมาก่อนได้ ข้อเสียของแนวทางนี้คือบางครั้งหัวข้อมีความคล้ายคลึงกันมากเกินไปหรือเฉพาะเจาะจงเกินไป ด้วยการใช้ทั้งสองอย่าง เราได้พบจุดกึ่งกลางที่มีความสุขระหว่างสิ่งที่สามารถสรุปได้และสิ่งที่เฉพาะเจาะจงสำหรับโดเมน
การแยกรายการการดำเนินการ

UI ของ SeaMeet โดยเน้นที่แท็บ ‘การดำเนินการ’ ทางด้านขวา
จุดปวดสุดท้ายที่เราตั้งใจจะบรรเทาให้ผู้ใช้คือการบันทึกรายการการดำเนินการ การบันทึกรายการการดำเนินการเป็นงานที่พบบ่อยมากซึ่งมอบหมายให้พนักงานทำในระหว่างการประชุม การจดว่า ‘ใครบอกใครให้ทำอะไรเมื่อไหร่’ อาจใช้เวลานานมาก และอาจทำให้ผู้เขียนเสียสมาธิและไม่สามารถเข้าร่วมการประชุมได้อย่างเต็มที่ ด้วยการทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ เราหวังว่าจะลดความรับผิดชอบบางส่วนออกจากผู้ใช้เพื่อให้ทุกคนสามารถทุ่มเทความสนใจอย่างเต็มที่ในการเข้าร่วมการประชุม
ต่อไปนี้เป็นตัวอย่างของรายการการดำเนินการบางส่วนที่สามารถแยกออกจากข้อความถอดความตัวอย่าง:
ข้อเสนอแนะ: "แซมบอกว่าทีมควรมีเวอร์ชันที่อัปเดตแล้ว"
คำแถลง: "คิมบอกว่าจะมีกรณีพิเศษที่สิ่งนี้ใช้ไม่ได้ผลแน่นอน"
คำสั่ง: "Xuchen บอกว่ามีคนต้องเขียนกฎสำหรับมัน"
ความต้องการ: "Xuchen บอกว่าทีมต้องการให้มีกริยาช่วย แต่ก็ต้องการชื่อคนด้วย"
วัตถุประสงค์ของระบบตัวแยกการดำเนินการคือการสร้างบทสรุปนามธรรมสั้นๆ ของรายการการดำเนินการที่แยกมาจากการถอดความการประชุม ผลลัพธ์ของการรันตัวแยกการดำเนินการกับการถอดความการประชุมคือรายการคำสั่ง ข้อเสนอแนะ คำแถลงเจตนา และส่วนอื่นๆ ที่สามารถดำเนินการได้ ซึ่งสามารถนำเสนอเป็นสิ่งที่ต้องทำหรือการติดตามผลสำหรับผู้เข้าร่วมการประชุม ในอนาคต ตัวแยกจะจับชื่อผู้รับมอบหมายและผู้มอบหมาย รวมถึงวันครบกำหนดที่ผูกไว้กับแต่ละรายการการดำเนินการด้วย
ไปป์ไลน์การแยกการดำเนินการมีส่วนประกอบหลักสองส่วน: ตัวจำแนกประเภทและตัวสรุป ขั้นแรก แต่ละส่วนจะถูกส่งผ่านไปยังตัวจำแนกประเภทหลายคลาสและรับป้ายกำกับต่อไปนี้อย่างใดอย่างหนึ่ง:
- คำถาม
- คำสั่ง
- ข้อเสนอแนะ
- ความต้องการ
- คำแถลง
- ไม่สามารถดำเนินการได้
หากส่วนได้รับป้ายกำกับอื่นใดนอกจาก ‘ไม่สามารถดำเนินการได้’ จะถูกส่งไปยังส่วนประกอบการสรุปพร้อมกับสองส่วนก่อนหน้าในการถอดความ ซึ่งให้บริบทเพิ่มเติมสำหรับการสรุป ขั้นตอนการสรุปนั้นโดยพื้นฐานแล้วเหมือนกับส่วนประกอบการสรุปแบบสแตนด์อโลน อย่างไรก็ตาม โมเดลได้รับการฝึกฝนบนชุดข้อมูลที่สร้างขึ้นโดยเฉพาะสำหรับการสรุปรายการการดำเนินการด้วยรูปแบบเอาต์พุตที่ต้องการ
SeaMeet ได้สมอง
นี่เป็นก้าวสำคัญในการสร้างผลิตภัณฑ์ที่เป็นเอกลักษณ์ของเราเอง: การฝึกอบรมโมเดลการสรุปพร้อมกับการแยกหัวข้อและการดำเนินการเพื่อพัฒนาผลิตภัณฑ์ของเราให้ดียิ่งขึ้นไปอีก และการออกแบบอินเทอร์เฟซที่สวยงามเพื่อผูกทุกอย่างเข้าด้วยกันในแพ็คเกจที่น่าทึ่ง นี่คือเรื่องราวทั้งหมดจนถึงตอนนี้ จุดเริ่มต้นของการเดินทางของ Seasalt.ai ในการนำเสนอโซลูชันทางธุรกิจที่ดีที่สุดสู่ตลาดที่พัฒนาอย่างรวดเร็วและส่งมอบสู่โลก SeaMeet: อนาคตของการประชุมสมัยใหม่