תוכן עניינים:

עוזר קול מופעל - MAX: 10 שלבים
עוזר קול מופעל - MAX: 10 שלבים

וִידֵאוֹ: עוזר קול מופעל - MAX: 10 שלבים

וִידֵאוֹ: עוזר קול מופעל - MAX: 10 שלבים
וִידֵאוֹ: תפסתי אותה על חםםםם!!!!!! 2024, יולי
Anonim
עוזר קול מופעל - MAX
עוזר קול מופעל - MAX

היי במדריך זה אני הולך לדבר על איך לעשות צ'אט-בוט MAX (בשם עצמי !!!)

עם יישום כלשהו אתה יכול להפוך את הצ'אט בוט הזה לקולי או באמצעות תוכנות שונות אתה יכול להפוך אותו לעוזר קולי. אני כאן לא אדבר על זה מכיוון שכל אחד באמת יכול לבצע את היישום הזה בקלות.

אז כולם בבקשה תמכו בי …….

המדריך הראשון שלי !!!!!!!

מרגיש עצבני מה עומד לקרות …………….

שלב 1: הכרת התחרות

לדעת על התחרות
לדעת על התחרות
לדעת על התחרות
לדעת על התחרות

היי מהנדסים ומעצבים ……..

אני עצמי סטודנטית למדעי המחשב אוהבת לשחק משחק ותמיד קיבלתי השראה במחשבים. מדבר בקצרה אני אוהב לדעת איך כל הדברים האלה בהווה פועלים. אז כסיבה שהמשכתי לחפש, לחפש בגוגל (גם אני נהגתי להשתמש ביאהו !!! !!!) לחיפוש ולמידת הדברים.

אז יום אחד הגעתי לפני המסך של Instructables. זה ממש שיעשע אותי בפרויקטים שונים עם מגוון רעיונות בהיבטים שונים. ואז מאותו יום אני ממשיך לעקוב אחריו. דף התחרות באמת שעשע אותי הן מהעניין של הפרסים והן מהפרויקטים שהוגשו על ידי אנשים שונים ברחבי עוֹלָם.

אתגר מופעל קולי הוא הפלטפורמה הראשונה שלי בנוגע לכתיבת מדריך.

פרסים שיעשעו אותי מאוד (כן !!! יותר מדי ……..).

כמו כן, אני רוצה לשתף את הידע שלי בתחום המחשבים והטכנולוגיה שלה לאחרים על איך דברים שונים באמת עובדים.

במדריך זה אני מראה לך כיצד לבנות עוזר משלך המופעל על ידי קול.

מכיוון שזהו ההוראה הראשון שלי ייתכן שיש כל כך הרבה טעויות (למרות שאני חושב שכל אלה תוקנו), אז סלח על כך.

לכן…

בואו נתחיל את המסע ………………

שלב 2: היכן ידעתי על הדברים?

היכן ידעתי על הדברים?
היכן ידעתי על הדברים?
היכן ידעתי על הדברים?
היכן ידעתי על הדברים?
היכן ידעתי על הדברים?
היכן ידעתי על הדברים?

זו תהיה שאלה מרכזית שלדעתי רובכם עשויים לעבור ………..

יש לי תשוקה רבה לבינה מלאכותית [AI] מהלימודים שלי, מזה חיפשתי הרבה בחיפוש אחר משאבים ללמוד ולפתח מודל לבד.

בהתחלה זה היה מאוד קשה (מצב אמיתי) כיוון שהבנתי שזה נושא מאוד עצום שלא קל לטפל בו כלל.

הספרים שחיפשו כוללים:

  1. בינה מלאכותית גישה מודרנית
  2. מהדורה מלאכותית.אינטליגנציה
  3. למידה עמוקה

אלה ספרים טובים מאוד (כן בוודאי) אבל זה בכלל לא פשוט להבין את הדברים שנכתבו על זה. אחר כך שמרתי על זה בצד והמשכתי לחפש את המשאבים שמוותרים על מושג קצר על מה זה באמת מייצג ודרכים להמשיך בזה.

ואז גיליתי בכך עניין. במהלך החופשה לאחר הלימודים התחלתי ללמוד על זה יותר לעומק.

באותו זמן למדתי גם שפות תכנות שונות (C ++, C, Python, Java…), שהן מעניינות מדי.

בקריאה נוספת בנושא הבנתי דבר אחד חשוב ………………..

שפות התכנות הינן הבסיסיות לכל תהליך למידה של כל מכונה

למידת מכונה היא תהליך היישום של AI

עם הבנה רבה על שפות תכנות ודברים שונים שניתן לבצע בהתאם למתכנת ליצור מחשב שיעשה הכל בשבילנו.

אז החלטתי ליצור בסיס טוב על השפות שגרמו לי להבין את המושגים המסופקים בספר שכבר הזכרתי

גם אתה יכול לעשות את זה ……

ישנם כל כך הרבה אתרים הקיימים באינטרנט ללמד שפות תכנות באופן חופשי

אז אתה יכול לגלוש באינטרנט כדי להבין יותר על זה אם אתה רוצה ………

שלב 3: תן לנו להתחיל

אני לפני שהתחלתי לכתוב את המדריך חשבתי לכתוב משהו שכזה יובן על ידי:

  1. אנשים שיש להם ניסיון בקוד
  2. אנשים ללא כל רקע קידוד

אז אני חושב שעשיתי את הדבר ללא טעויות (בתקווה).

אז החלטתי לבנות בוט צ'אט שיכול לדבר עם המשתמש ויכול להגיב בהתאם לשיחות שלנו.

התוכנית (סט ההוראות) לא יכולה לחשוב לבד. יש לו מסד נתונים (מקום בו נתונים נשמרו) של עובדות וכללים, שאותם מחפשים בזמן השיחה כדי לתת את המענה הטוב ביותר האפשרי בקשר עם המשתמש.

זה עובד לפי תהליך התאמה בהתאם לדברים שהוזנו, רק במקרים נדירים משפט שלם מותאם למשפט שלם.

שלב 4: איך זה באמת עובד?

שלב 1:

MAX מגלה אם המשתמש נתן קלט null. אם המשתמש מקבל קלט בצורה כזו, זה לוקח את העובדה ממסד הנתונים הסטטי כדי להגיב.

אה סליחה ……

שכחתי לומר,

מאגר נתונים סטטי: המקום בו נשמרות תגובות מובנות. תגובות כמו:

1. כאשר MAX לא מבין על מה המשתמש מדבר.

2. כשהמשתמש חוזר על עצמו.

3. להצהרות ברכה.

4. כאשר המשתמש אינו מקליד כלום ופשוט ממשיך ללחוץ על Enter.

מילת מפתח: מילים בעלות משמעות מיוחדת.

שלב 2:

יש כמה תגובות מובנות ש- MAX יכול לזהות בקלות ובקלות. הוא מוצא את נוכחותו של משפט כזה לאחר זיהוי קלט המשתמשים וזוכר את מילת המפתח המשויכת.

שלב 3:

אם לא נמצא משפט מובנה גם לאחר פיצול המשפט הנתון, אזי MAX מחפש את מילת המפתח הספציפית להגדרת ההקשר. אם לא נמצא הקשר אז המטרה הבאה היא לגרום למשתמש לדבר על הנושא בצורה מכוונת יותר באופן ספציפי.

שלב 4:

ממאגר הנתונים הסטטי שכבר דיברנו עליו, הוא יאסוף את התגובה שתלויה על מה שהמשתמש דיבר עליו.

שלב 5:

אני צריך לשנות את המילים שהוא יעשה את זה בעצמו (כגון המרת MY ל- YOUR וכו '…)

שלב 5: תנו לנו לקוד …………

אני משתמש ב- Turbo C IDE 3.0 מכיוון שזהו IDE [סביבה התפתחותית משולבת]

לפני הקידוד, הבה נראה את מבנה קובץ הנתונים לדוגמה.

MAX מזהה מילות מפתח מסוימות.

אם מילות מפתח אלה נמצאות בכניסה שניתנה על ידי המשתמש, אז תגובה מקבילה נבחרת מקובץ הנתונים ונבחרת ומוצגת על המסך.

מילת מפתח מופרדת בקובץ הנתונים מהתגובות באמצעות האסימון @ KWD @.

אסימון הוא חלק הכי קטן מכל היבט תכנותי.

אסימון זה מציין שהשורה הבאה היא מילת מפתח ולא תגובה.

@ KWD@ HELLO

היי, מה שלומך

שלום יקירי !

אני בסדר

איך היה התפקיד שלך?

בן כמה אתה?

אני ארצה

אתה תעשה זאת. אני מאמין לזה יותר מדי…

האם תוכל לעשות זאת?

האם תסמוך עלי?

כן

האם אתה בטוח ?

איך אתה יכול להיות כל כך בטוח ?

לא

אתה נראה מאוד פסימי.

לעולם אל תגיד לא…

אף פעם אל תגיד אף פעם

לעולם אל תהיה גס רוח

לעולם אל תהיה מתנשא !!!!

לעולם אל תגיד שאני לא יכול לעשות את זה

לעולם אל תהיה אופטימי

מַחשֵׁב

אני יודע כיצד לעבוד על מחשב.

אתה משתמש כרגע במחשב. ימין ?

לדוגמה, 'שלום', מהמילון לעיל, MAX תיתן אחת מהתגובות הבאות:

היי, כמה אתה אהוב יקר!

אני בסדר

איך היה התפקיד שלך?

בן כמה אתה?

שלב 6: שיעורים

ברגע שדבר זה ברור, הבה נגדיר כעת את מבני הנתונים בהם נשתמש.

אנו יוצרים שתי כיתות:

progstr - זה משמש לאחסון המידע הקשור לקלט של המשתמש.

resp - זה משמש לאחסון המידע אודות התגובות השונות

proggr class

פּוּמְבֵּי:

char userip [MAX_USER_INPUT];

מילת מפתח char [30];

int keyfound;

int keyno;

int nullip;

// בונה

progstr () {keyno = -1; בטל = 0; keyfound = 0;

}

} ip;

כיתה resp

{

int tot_resp;

int last_resp;

תשובות צ'אר [MAX_RESP_NO] [MAX_RESP_LEN];

מילת תווים [MAX_KWD_LEN];

פּוּמְבֵּי:

// בונה

resp ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

החזר last_resp;

}

כתובת ad void (char str [MAX_KWD_LEN])

{

strcpy (מילה, str);

}

char * getword ()

{

מילת החזרה;

}

addrespid void (char str [MAX_RESP_LEN])

{

strcpy (תגובות [++ last_resp], str);

}

// מוגדר מאוחר יותר

void display_resp (int num);

void quit_display_resp (int num);

};

במבט על המחלקה הראשונה, מערך התווים userip משמש לאחסון המשפט המסופק על ידי המשתמש.

מילת מפתח נוספת של מערך משמשת לאחסון מילת המפתח, אם קיימת, הנמצאת בקלט זה. אם נמצאה מילת מפתח, אנו יוצרים את המפתח האישי ל- 1 אחר, היא נשארת 0, מכיוון שהיא מתאתחלת ל -0 בבניין.

keyno מאחסן את מספר המפתח המתאים של מילת המפתח המתאימה.

nullip מציין אם המשתמש נתן קלט Null כלשהו, כלומר, הוא רק לוחץ על enter מבלי לעשות שום דבר אחר.

עכשיו בואו נגיע למחלקה השנייה, resp.

חבר הנתונים הראשון, tot_resp מציין את מספר התגובות הכולל עבור מילת מפתח נתונה.

התשובות מאוחסנות למעשה בתגובות [MAX_RESP_NO] [MAX_RESP_LEN] ומילת המפתח המתאימה מאוחסנת במילת המערך.

קונסטרוקטור: זה משמש לאתחול המספר הכולל של התגובות ל- 0. מדוע Last_resp מאתחל ל -1 יהיה ברור כשאתה מסתכל על הפונקציה add_resp.

int getcount ():

פונקציה זו משמשת כדי לקבל ספירה של כמה תגובות שיש למילת מפתח נתונה.

כתובת ad void (char str [MAX_KWD_LEN]):

זה משמש להוספת מילת מפתח.

char * getword ():

משמש להחזרת מילת המפתח לאובייקט מסוים בכיתה resp.

void addresp (…):

זה משמש להוספת תגובה המתאימה למילת מפתח נתונה.

void display_resp (int):

זה משמש להצגת התגובה למשתמש המתאימה למספר אינדקס נתון לתגובות. (למעשה זה עושה יותר מזה!).

void quit_display_resp (int):

ההבדל בין פונקציה זו לפונקציה שלמעלה הוא שהיא משמשת בסופו של דבר כאשר המשתמש עוזב. אז זה לא מחזיר את ההנחיה למשתמש.

שלב 7: פונקציות

void initialize_global ()

{

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

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

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

strcpy (wordout [1], "ARE");

strcpy (wordin [2], "WERE");

strcpy (wordout [2], "WAS");

strcpy (wordin [3], "WAS");

strcpy (wordout [3], "WERE");

strcpy (wordin [4], "YOU");

strcpy (wordout [4], "ME");

strcpy (wordin [5], "אני");

strcpy (wordout [5], "YOU");

strcpy (wordin [6], "YOUR");

strcpy (wordout [6], "MY");

strcpy (wordin [7], "MY");

strcpy (wordout [7], "YOUR");

strcpy (wordin [8], "I'VE");

strcpy (wordout [8], "YOU'VE");

strcpy (wordin [9], "YOU'VE");

strcpy (wordout [9], "I'VE");

strcpy (wordin [10], "I'm");

strcpy (wordout [10], "YOURE");

strcpy (wordin [11], "YOURE");

strcpy (wordout [11], "I'M");

strcpy (wordin [12], "ME");

strcpy (wordout [12], "YOU");

strcpy (wordin [13], "YOU");

strcpy (wordout [13], "ME");

}

הבה נכתוב כעת פונקציה להצגת התשובות למשתמש. הצהרת ה- if הראשונה בלולאת ה- for משמשת לביצוע שגיאת הקלדה מכוונת בכדי לגרום לה להיראות אנושית יותר;-). תו אחד נבחר באופן אקראי לשגיאת הקלדה. מקרים מיוחדים כמו New Line ו- Backspace נשקלים בנפרד. (תחשוב למה?). עכשיו אני מציג משהו חדש. דמות מיוחדת - *. Char * מייצג את כל הטקסט שנמצא לאחר מילת המפתח שזוהתה, ולפני אחד מסימני הפיסוק הבאים.

לדוגמה, שקול את קלט המשתמש

עמית> אני יכול ללכת לחנות מחר?

מקס> מה אם אתה לא הולך לחנות מחר?

החלק המסומן בקו תחתון אינו מאוחסן במילון, אלא נלקח מקלט המשתמש. בקובץ MAX. Dat, אנו שומרים מידע זה כ

האם אני יכול

מה אם אתה לא עושה *

כוכב (*) מבקש מהתוכנית פשוט להעתיק את כל מה שהוקלד אחרי מילת המפתח (כאן CAN I) בקלט המשתמש, כפי שהוא. אני מקווה שעכשיו הפונקציה של * כמילת מפתח מיוחדת ברורה. אז, הבה נבחן מקרה מסובך יותר.

עמית> האם אוכל ללכת לקניות?

מקס> מה אם אתה לא הולך לקניות?

עלינו לבצע טרנספורמציה מסוימת. כאשר אנו חושבים על טרנספורמציה, המשפט מתחלק לשלושת הסעיפים הבאים:

  • טקסט לפני טרנספוזיציה Word. (כאן, עבור לחנות עם)
  • מילת המפתח Transposed. (כאן, שלך, במקום שלי)
  • מילת מפתח לאחר הטרנספוזיציה. (הנה אני ?)

שלב 8: ניתן לטפל בתיקים על ידי ………

שלב 9: חיפוש מילת מפתח בכניסת המשתמש

MAX_KEY מציין את מספר מילות המפתח בקובץ DAT.

אנו פשוט מחפשים אם מילת המפתח נמצאת בקלט המשתמש.

שלב 10: סיכום

זה הכל ………

עשית את זה !!!!!!!

אני חושב שכולם הבינו את הדברים בצורה ברורה ……

מוּמלָץ: