สารบัญ:

ผู้ช่วยที่เปิดใช้งานด้วยเสียง - สูงสุด: 10 ขั้นตอน
ผู้ช่วยที่เปิดใช้งานด้วยเสียง - สูงสุด: 10 ขั้นตอน

วีดีโอ: ผู้ช่วยที่เปิดใช้งานด้วยเสียง - สูงสุด: 10 ขั้นตอน

วีดีโอ: ผู้ช่วยที่เปิดใช้งานด้วยเสียง - สูงสุด: 10 ขั้นตอน
วีดีโอ: อะไรเอ่ย #สิว #สิวอุดตัน #สิวอักเสบ #สิวเห่อ #รอยสิว #รักษาสิว #เล็บเท้า #satisfying 2024, พฤศจิกายน
Anonim
ผู้ช่วยที่เปิดใช้งานด้วยเสียง - MAX
ผู้ช่วยที่เปิดใช้งานด้วยเสียง - MAX

เฮ้ในคำแนะนำนี้ฉันจะพูดถึงวิธีสร้างแชทบ็อต MAX (ชื่อตัวเอง !!!)

ด้วยการใช้งานบางอย่าง คุณสามารถทำให้แชทบอทควบคุมด้วยเสียง หรือด้วยการใช้ซอฟต์แวร์ต่างๆ คุณสามารถทำให้เป็นผู้ช่วยเสียงได้ ฉันจะไม่พูดถึงเรื่องนี้เพราะทุกคนสามารถดำเนินการนี้ได้อย่างง่ายดายอย่างแท้จริง

ดังนั้นทุกคนโปรดสนับสนุนฉันด้วย…….

คำสั่งแรกของฉัน !!!!!!!

รู้สึกประหม่ากับสิ่งที่กำลังจะเกิดขึ้น ……………..

ขั้นตอนที่ 1: รู้เกี่ยวกับการแข่งขัน

รู้เรื่องการแข่งขัน
รู้เรื่องการแข่งขัน
รู้เรื่องการแข่งขัน
รู้เรื่องการแข่งขัน

สวัสดีวิศวกรและนักออกแบบ……..

ตัวฉันเองที่เป็นนักศึกษาวิทยาการคอมพิวเตอร์ชอบเล่นเกมและมีแรงบันดาลใจในการใช้คอมพิวเตอร์เสมอ พูดสั้นๆ ว่าฉันชอบที่จะรู้ว่าสิ่งเหล่านี้ทำงานอย่างไร ดังนั้นฉันจึงค้นหาไปเรื่อยๆ (แต่ฉันก็เคยใช้ Yahoo เหมือนกันนะ!!!) !!!) เพื่อค้นหาและเรียนรู้สิ่งต่างๆ

วันหนึ่งฉันมาที่หน้าจอของคำสั่งสอน มันทำให้ฉันขบขันผ่านโครงการต่าง ๆ ที่มีความคิดที่หลากหลายในด้านต่าง ๆ จากนั้นจากวันนั้นฉันก็ติดตามมัน หน้าการประกวดทำให้ฉันขบขันทั้งเรื่องรางวัลและโครงการที่ผู้คนต่างส่งเข้ามา โลก.

VOICE ACTIVATED CHALLENGE เป็นแพลตฟอร์มแรกของฉันเกี่ยวกับการเขียน Instructable

ของรางวัลทำให้ฉันขบขันมาก (ใช่ !!! มากเกินไป……..)

นอกจากนี้ ฉันต้องการแบ่งปันความรู้ของฉันในด้านคอมพิวเตอร์และเป็นเทคโนโลยีกับผู้อื่นเกี่ยวกับการทำงานของสิ่งต่าง ๆ จริง ๆ

ในคำแนะนำนี้ ฉันจะแสดงวิธีสร้างผู้ช่วยที่เปิดใช้งานด้วยเสียงของคุณเอง

เนื่องจากเป็น Instructable แรกของฉัน อาจมีข้อผิดพลาดมากมาย (แม้ว่าฉันคิดว่าสิ่งเหล่านี้ได้รับการแก้ไขแล้ว) ดังนั้นให้อภัยสำหรับสิ่งนั้น

ดังนั้น….

เรามาเริ่มการเดินทางกันเลย………

ขั้นตอนที่ 2: ฉันรู้เกี่ยวกับสิ่งต่าง ๆ ที่ไหน

ฉันรู้เกี่ยวกับสิ่งต่าง ๆ ที่ไหน?
ฉันรู้เกี่ยวกับสิ่งต่าง ๆ ที่ไหน?
ฉันรู้เกี่ยวกับสิ่งต่าง ๆ ที่ไหน?
ฉันรู้เกี่ยวกับสิ่งต่าง ๆ ที่ไหน?
ฉันรู้เกี่ยวกับสิ่งต่าง ๆ ที่ไหน?
ฉันรู้เกี่ยวกับสิ่งต่าง ๆ ที่ไหน?

นี่จะเป็นคำถามสำคัญที่ฉันคิดว่าจิตใจของคุณส่วนใหญ่อาจต้องผ่าน…………

ฉันมีความหลงใหลในปัญญาประดิษฐ์[AI] จากการเรียนมาก จากนั้นฉันก็ค้นหาแหล่งข้อมูลมากมายเพื่อศึกษาและพัฒนาแบบจำลองด้วยตัวเอง

ตอนแรกมันยากมาก (สภาพจริง) เพราะฉันเข้าใจว่ามันเป็นเรื่องที่กว้างใหญ่มากซึ่งไม่ง่ายเลยที่จะจัดการ

หนังสือที่ค้นหารวมถึง:

  1. ปัญญาประดิษฐ์ แนวทางสมัยใหม่
  2. Artificial. Intelligence.in.the.21st. Century.2nd. Edition
  3. การเรียนรู้อย่างลึกซึ้ง

เหล่านี้เป็นหนังสือที่ดีมาก (ใช่แน่นอน) แต่มันไม่ง่ายเลยที่จะเข้าใจสิ่งที่เขียนไว้ จากนั้นฉันก็เก็บไว้ที่ด้านข้างและค้นหาแหล่งข้อมูลที่ทำให้ความคิดสั้น ๆ เกี่ยวกับสิ่งที่ มันเป็นตัวแทนและวิธีเข้าถึงมันจริงๆ

จากนั้นฉันก็พบความสนใจในเรื่องนี้ ตลอดช่วงพักร้อนหลังเลิกเรียน ฉันเริ่มเรียนรู้เรื่องนี้อย่างลึกซึ้งยิ่งขึ้น

ตอนนั้นฉันยังได้เรียนรู้ภาษาการเขียนโปรแกรมต่างๆ (C++, C, Python, Java ….) ซึ่งน่าสนใจมาก

เมื่ออ่านเพิ่มเติมในหัวข้อนี้ ฉันเข้าใจสิ่งสำคัญอย่างหนึ่ง………………..

ภาษาโปรแกรมเป็นพื้นฐานสำหรับกระบวนการเรียนรู้เครื่องจักรทุกกระบวนการ

Machine Learning เป็นกระบวนการของการนำ AI มาประยุกต์ใช้

ด้วยความเข้าใจที่ดีเกี่ยวกับภาษาโปรแกรมและสิ่งต่าง ๆ ที่สามารถทำได้ขึ้นอยู่กับโปรแกรมเมอร์ที่จะทำให้คอมพิวเตอร์ทำอะไรให้เรา

ดังนั้นฉันจึงตัดสินใจสร้างพื้นฐานที่ดีเกี่ยวกับภาษาที่ทำให้ฉันเข้าใจแนวคิดที่ให้ไว้ในหนังสือที่ฉันได้กล่าวไปแล้ว

คุณเองก็ทำได้…….

มีเว็บไซต์มากมายในเว็บเพื่อสอนภาษาโปรแกรมอย่างอิสระ

เพื่อให้คุณสามารถท่องอินเทอร์เน็ตเพื่อทำความเข้าใจเพิ่มเติมได้หากต้องการ………

ขั้นตอนที่ 3: มาเริ่มกันเลย

ฉันก่อนที่จะเริ่มเขียน Instructable ฉันคิดว่าจะเขียนบางสิ่งที่เข้าใจได้โดย:

  1. ผู้ที่มีประสบการณ์เกี่ยวกับการเข้ารหัส
  2. คนที่ไม่มีพื้นฐานการเข้ารหัสใด ๆ

ดังนั้นฉันคิดว่าฉันได้ทำสิ่งนั้นโดยไม่มีข้อผิดพลาด (หวังว่า)

ดังนั้นฉันจึงตัดสินใจสร้างแชทบอทที่สามารถพูดคุยกับผู้ใช้และตอบสนองตามที่เราพูดคุยได้

โปรแกรม(ชุดคำสั่ง) คิดเองไม่ได้ มีฐานข้อมูล (สถานที่จัดเก็บข้อมูล) ข้อเท็จจริงและกฎเกณฑ์ ซึ่งค้นหาในขณะที่พูดคุยเพื่อให้การตอบสนองที่ดีที่สุดเท่าที่จะเป็นไปได้ซึ่งเชื่อมโยงกับผู้ใช้

มันทำงานโดยกระบวนการจับคู่โดยขึ้นอยู่กับสิ่งต่าง ๆ ที่ป้อน เฉพาะในกรณีที่ไม่ค่อยพบทั้งประโยคจะถูกจับคู่กับประโยคที่สมบูรณ์

ขั้นตอนที่ 4: มันทำงานอย่างไร ?

ขั้นตอนที่ 1:

MAX ค้นหาว่าผู้ใช้ได้ป้อนข้อมูลที่เป็นโมฆะหรือไม่ หากผู้ใช้ระบุอินพุตในลักษณะดังกล่าว จะใช้ข้อเท็จจริงจากฐานข้อมูลแบบสแตติกเพื่อตอบกลับ

โอ้ขอโทษ …….

ลืมบอกไปว่า

ฐานข้อมูลแบบคงที่: ตำแหน่งที่เก็บการตอบสนองในตัว ตอบสนองเช่น:

1. เมื่อ MAX ไม่เข้าใจสิ่งที่ผู้ใช้กำลังพูดถึง

2. เมื่อผู้ใช้ทำซ้ำตัวเอง

3. สำหรับคำทักทาย

4. เมื่อผู้ใช้ไม่พิมพ์อะไรเลยและกด Enter ต่อไป

คำสำคัญ: คำที่มีความหมายพิเศษ

ขั้นตอนที่ 2:

มีการตอบสนองในตัวบางอย่างที่ MAX สามารถจดจำได้ง่ายและรวดเร็ว พบประโยคดังกล่าวหลังจากระบุข้อมูลที่ผู้ใช้ป้อนและจดจำคีย์เวิร์ดที่เกี่ยวข้อง

ขั้นตอนที่ 3:

หากไม่พบประโยคที่สร้างขึ้นแม้หลังจากการแตกแฟรกเมนต์ของประโยคที่กำหนด MAX จะค้นหาคำหลักเฉพาะเพื่อกำหนดบริบท หากไม่พบบริบท เป้าหมายต่อไปก็คือการทำให้ผู้ใช้พูดถึงหัวข้อนั้นอย่างจงใจมากขึ้นในลักษณะเฉพาะ

ขั้นตอนที่ 4:

จาก Static Database ที่เราได้พูดคุยกันไปแล้ว มันก็จะรับคำตอบที่ขึ้นกับว่าผู้ใช้ได้พูดถึงอะไร

ขั้นตอนที่ 5:

ฉันไม่จำเป็นต้องเปลี่ยนคำที่จะทำเอง (เช่น Conversion ของฉันเป็นของคุณ ฯลฯ ….)

ขั้นตอนที่ 5: ให้เรารหัส …………

ฉันใช้ Turbo C IDE 3.0 เนื่องจากนี่คือ IDE [Integrated Developmental Environment]

ก่อนการเข้ารหัส ให้เราดูโครงสร้างของไฟล์ข้อมูลตัวอย่าง

MAX รู้จักคำหลักบางคำ

หากพบคำหลักเหล่านี้ในข้อมูลที่ป้อนโดยผู้ใช้ การตอบสนองที่เกี่ยวข้องจะถูกเลือกจากไฟล์ข้อมูลและจะถูกเลือกและแสดงบนหน้าจอ

คีย์เวิร์ดถูกแยกในไฟล์ข้อมูลจากการตอบสนองโดยโทเค็น @KWD@

โทเค็นเป็นส่วนที่เล็กที่สุดของทุกแง่มุมของการเขียนโปรแกรม

โทเค็นนี้หมายถึงบรรทัดถัดไปคือคีย์เวิร์ด ไม่ใช่การตอบกลับ

@KWD@ สวัสดีครับ

สวัสดี คุณเป็นอย่างไรบ้าง

สวัสดีที่รัก !

ฉันสบายดี

งานของคุณเป็นอย่างไร?

คุณอายุเท่าไหร่?

ฉันจะทำ

คุณจะทำเช่นนั้น ฉันก็เชื่อเหมือนกัน…

คุณจะสามารถทำเช่นนั้นได้หรือไม่ ?

คุณจะเชื่อใจฉันไหม

ใช่

คุณแน่ใจไหม ?

คุณจะมั่นใจได้อย่างไร?

ไม่

คุณดูเหมือนจะมองโลกในแง่ร้ายมาก

ไม่เคยปฏิเสธ…

ไม่เคยพูดไม่เคย

ไม่เคยหยาบคาย

ไม่เคยหยิ่ง !!!!

อย่าพูดว่าฉันทำไม่ได้

อย่ามองโลกในแง่ดี

คอมพิวเตอร์

ฉันรู้วิธีทำงานบนคอมพิวเตอร์

คุณกำลังใช้คอมพิวเตอร์อยู่ในขณะนี้ ขวา ?

ตัวอย่างเช่น 'สวัสดี' จากพจนานุกรมด้านบน MAX จะตอบกลับอย่างใดอย่างหนึ่งต่อไปนี้:

สวัสดี คุณเป็นอย่างไรบ้างที่รัก !

ฉันสบายดี

งานของคุณเป็นอย่างไร?

คุณอายุเท่าไหร่?

ขั้นตอนที่ 6: ชั้นเรียน

เมื่อสิ่งนี้ชัดเจน ให้เรากำหนดโครงสร้างข้อมูลที่เราจะใช้

เราสร้างสองคลาส:

progstr - ใช้เพื่อเก็บข้อมูลที่เกี่ยวข้องกับอินพุตของผู้ใช้

resp - ใช้เพื่อเก็บข้อมูลเกี่ยวกับการตอบสนองต่างๆ

คลาส progstr{

สาธารณะ:

ถ่านผู้ใช้[MAX_USER_INPUT];

คีย์เวิร์ดอักขระ[30];

คีย์เวิร์ด int;

int keyno;

int nullip;

// ตัวสร้าง

progstr() { คีย์โน=-1; nullip=0; คีย์พบ=0;

}

}ไอพี;

ชั้นเรียน

{

int tot_resp;

int last_resp;

ถ่านตอบกลับ[MAX_RESP_NO][MAX_RESP_LEN];

คำอักขระ[MAX_KWD_LEN];

สาธารณะ:

// ตัวสร้าง

ตอบกลับ ()

{

tot_resp=0;

last_resp=-1;

}

รับจำนวนเต็ม ()

{

ส่งคืน last_resp;

}

เป็นโมฆะ addword(ถ่าน str[MAX_KWD_LEN])

{

strcpy(คำ, str);

}

ถ่าน * getword()

{

กลับคำ;

}

ที่อยู่เป็นโมฆะ (ถ่าน str[MAX_RESP_LEN])

{

strcpy(ตอบกลับ[++last_resp], str);

}

//กำหนดภายหลัง

เป็นโมฆะ display_resp (จำนวน int);

เป็นโมฆะ quit_display_resp (จำนวน int);

};

มองไปที่ชั้นหนึ่ง, userip อาร์เรย์อักขระใช้เพื่อเก็บประโยคที่ผู้ใช้ให้มา

คีย์เวิร์ดอาร์เรย์อื่นใช้เพื่อจัดเก็บคีย์เวิร์ด (หากมี) อยู่ในอินพุตนั้น หากพบคีย์เวิร์ด เราจะสร้างคีย์เวิร์ด int ไปที่ 1 รายการอื่น โดยยังคงเป็น 0 เนื่องจากคีย์เวิร์ดเริ่มต้นเป็น 0 ใน Constructor

keyno เก็บหมายเลขคีย์ที่สอดคล้องกันของคีย์เวิร์ดที่เกี่ยวข้อง

nullip บ่งชี้ว่าผู้ใช้ได้ให้อินพุต Null หรือไม่ เช่น เขาเพียงแค่กด Enter โดยไม่ต้องทำอย่างอื่น

มาต่อกันที่ชั้นสองกันเถอะ

สมาชิกข้อมูลตัวแรก tot_resp ระบุจำนวนการตอบสนองทั้งหมดสำหรับคำหลักที่กำหนด

จริง ๆ แล้วการตอบกลับจะถูกเก็บไว้ในการตอบกลับ[MAX_RESP_NO][MAX_RESP_LEN] และคำหลักที่เกี่ยวข้องจะถูกเก็บไว้ในคำอาร์เรย์

ตัวสร้าง: ใช้เพื่อเริ่มต้นจำนวนการตอบกลับทั้งหมดเป็น 0 เหตุใด Last_resp จึงเริ่มต้นเป็น -1 จะชัดเจนเมื่อคุณดูฟังก์ชัน add_resp

int getcount():

ฟังก์ชันนี้ใช้เพื่อนับจำนวนการตอบกลับสำหรับคีย์เวิร์ดที่กำหนด

เป็นโมฆะ addword (ถ่าน str[MAX_KWD_LEN]):

ใช้เพื่อเพิ่มคำสำคัญ

ถ่าน * getword():

ใช้เพื่อส่งคืนคีย์เวิร์ดสำหรับอ็อบเจ็กต์เฉพาะของ class resp

ที่อยู่เป็นโมฆะ (…):

ใช้เพื่อเพิ่มการตอบสนองที่สอดคล้องกับคำหลักที่กำหนด

เป็นโมฆะ display_resp (int):

ใช้เพื่อแสดงการตอบสนองต่อผู้ใช้ที่สอดคล้องกับหมายเลขดัชนีที่กำหนดสำหรับการตอบกลับ (อันที่จริงมันทำได้มากกว่านั้น!)

เป็นโมฆะ quit_display_resp (int):

ความแตกต่างระหว่างฟังก์ชันนี้และฟังก์ชันด้านบนคือใช้เมื่อผู้ใช้เลิกใช้งาน ดังนั้นจึงไม่ส่งคืนพรอมต์ให้กับผู้ใช้

ขั้นตอนที่ 7: ฟังก์ชั่น

เป็นโมฆะ initialize_global()

{

strcpy(wordin[0], "ARE");

strcpy(wordout[0], "AM");

strcpy(wordin[1], "AM");

strcpy(wordout[1], "เป็น");

strcpy(wordin[2], "เคย");

strcpy(คำพูด[2], "เคย");

strcpy(คำใน[3], "เคย");

strcpy(คำพูด[3], "เคย");

strcpy(คำใน[4], "คุณ");

strcpy(คำพูด[4], "ฉัน");

strcpy(wordin[5], " ฉัน ");

strcpy(คำพูด[5], "คุณ");

strcpy(wordin[6], "ของคุณ");

strcpy(คำพูด[6], "ของฉัน");

strcpy(คำใน[7], "ของฉัน");

strcpy(คำพูด[7], "ของคุณ");

strcpy(wordin[8], "ฉัน");

strcpy(คำพูด[8], "คุณ");

strcpy(wordin[9], "คุณ");

strcpy(คำพูด[9], "ฉัน");

strcpy(wordin[10], "ฉัน");

strcpy(คำพูด[10], "คุณ");

strcpy(wordin[11], "คุณ");

strcpy(คำพูด[11], "ฉัน");

strcpy(คำใน [12], "ฉัน");

strcpy(คำพูด[12], "คุณ");

strcpy(wordin[13], "คุณ");

strcpy(คำพูด[13], "ฉัน");

}

ให้เราเขียนฟังก์ชันเพื่อแสดงการตอบสนองต่อผู้ใช้ คำสั่งแรก if ในลูป for ถูกใช้เพื่อสร้างข้อผิดพลาดในการพิมพ์โดยเจตนาเพื่อให้ดูเหมือนมนุษย์มากขึ้นเช่น;-) มีการสุ่มเลือกอักขระหนึ่งตัวสำหรับข้อผิดพลาดในการพิมพ์ กรณีพิเศษเช่น New Line และ Backspace จะพิจารณาแยกกัน (คิดว่าทำไม?). ตอนนี้ฉันแนะนำสิ่งใหม่ อักขระพิเศษ - *. Char * แทนข้อความทั้งหมดที่พบหลังคีย์เวิร์ดที่ระบุ และก่อนเครื่องหมายวรรคตอนอย่างใดอย่างหนึ่งต่อไปนี้

ตัวอย่างเช่น พิจารณาอินพุตของผู้ใช้

AMIT > พรุ่งนี้ฉันจะไปอินดอร์ได้ไหม

MAX > ถ้าพรุ่งนี้คุณไม่ไปอินดอร์ล่ะ ?

ส่วนที่ขีดเส้นใต้จะไม่ถูกเก็บไว้ในพจนานุกรม แต่จะนำมาจากข้อมูลที่ผู้ใช้ป้อน ในไฟล์ MAX. Dat เราเก็บข้อมูลนี้เป็น

ให้ฉัน

เกิดอะไรขึ้นถ้าคุณไม่ทำ *

Star (*) ขอให้โปรแกรมคัดลอกสิ่งที่พิมพ์หลังจากคำหลัก (ที่นี่ CAN I) ในการป้อนข้อมูลของผู้ใช้ตามที่เป็นอยู่ ฉันหวังว่าตอนนี้ฟังก์ชันของ * เป็นคำหลักพิเศษจะชัดเจน ดังนั้น ให้เราพิจารณากรณีที่ซับซ้อนกว่านี้

AMIT > ฉันสามารถไปช้อปปิ้งได้หรือไม่?

MAX > เกิดอะไรขึ้นถ้าคุณไม่ไปช้อปปิ้ง ?

เราต้องทำการเปลี่ยนแปลงบางอย่างด้วย เมื่อเรานึกถึงการเปลี่ยนแปลง ประโยคจะถูกแบ่งออกเป็น 3 ส่วนต่อไปนี้:

  • ข้อความก่อนย้ายคำ (ที่นี่ไปช้อปปิ้งกับ)
  • คีย์เวิร์ด Transposed (ที่นี่ ของคุณ แทนที่ MY)
  • ข้อความหลังการโยกย้ายคำสำคัญ (ฉันอยู่นี่ ?)

ขั้นตอนที่ 8: กรณีสามารถแก้ไขโดย…………

ขั้นตอนที่ 9: ค้นหาคำหลักในอินพุตของผู้ใช้

MAX_KEY ระบุจำนวนคำหลักในไฟล์ DAT

เราเพียงแค่ค้นหาว่ามีคำสำคัญอยู่ใน User's Input หรือไม่

ขั้นตอนที่ 10: สรุป

แค่นั้น ………

คุณทำได้!!!!!!!!

ฉันคิดว่าทุกคนเข้าใจสิ่งต่าง ๆ อย่างชัดเจน……

หากใครมีข้อสงสัยประการใด สามารถสอบถามได้ครับ

แนะนำ: