12 KiB
Utangulizi wa Usindikaji wa Lugha Asilia
Somo hili linahusu historia fupi na dhana muhimu za usindikaji wa lugha asilia, tawi la isimu ya kompyuta.
Jaribio la kabla ya somo
Utangulizi
NLP, kama inavyojulikana kwa kawaida, ni mojawapo ya maeneo yanayojulikana zaidi ambapo ujifunzaji wa mashine umetumika na kutumika katika programu za uzalishaji.
✅ Je, unaweza kufikiria programu unayotumia kila siku ambayo labda ina NLP ndani yake? Vipi kuhusu programu zako za kuandika maneno au programu za simu unazotumia mara kwa mara?
Utajifunza kuhusu:
- Wazo la lugha. Jinsi lugha zilivyoendelea na maeneo makuu ya masomo yalivyokuwa.
- Ufafanuzi na dhana. Pia utajifunza ufafanuzi na dhana kuhusu jinsi kompyuta zinavyosindika maandishi, ikiwa ni pamoja na uchambuzi, sarufi, na kutambua nomino na vitenzi. Kuna baadhi ya kazi za kuandika programu katika somo hili, na dhana kadhaa muhimu zinatambulishwa ambazo utajifunza kuandika programu baadaye katika masomo yanayofuata.
Isimu ya Kompyuta
Isimu ya kompyuta ni eneo la utafiti na maendeleo kwa miongo kadhaa ambalo linachunguza jinsi kompyuta zinavyoweza kufanya kazi na hata kuelewa, kutafsiri, na kuwasiliana na lugha. Usindikaji wa lugha asilia (NLP) ni uwanja unaohusiana unaolenga jinsi kompyuta zinavyoweza kusindika lugha 'asilia', au lugha za binadamu.
Mfano - Dikteta ya simu
Ikiwa umewahi kuzungumza na simu yako badala ya kuandika au kuuliza msaidizi wa kidijitali swali, hotuba yako ilibadilishwa kuwa maandishi na kisha kusindika au kuchambuliwa kutoka lugha uliyosema. Maneno muhimu yaliyotambuliwa yalichakatwa kuwa muundo ambao simu au msaidizi angeweza kuelewa na kuchukua hatua.
Ufahamu halisi wa isimu ni mgumu! Picha na Jen Looper
Teknolojia hii inawezekanaje?
Hii inawezekana kwa sababu mtu aliandika programu ya kompyuta kufanya hivyo. Miongo kadhaa iliyopita, baadhi ya waandishi wa hadithi za kisayansi walitabiri kwamba watu wangezungumza zaidi na kompyuta zao, na kompyuta zingeelewa kila wanachomaanisha. Kwa bahati mbaya, ilibainika kuwa ni tatizo gumu zaidi kuliko wengi walivyodhani, na ingawa ni tatizo linaloeleweka vyema leo, kuna changamoto kubwa za kufanikisha usindikaji wa lugha asilia 'mkamilifu' linapokuja suala la kuelewa maana ya sentensi. Hili ni tatizo gumu hasa linapokuja suala la kuelewa ucheshi au kugundua hisia kama kejeli katika sentensi.
Kwa wakati huu, unaweza kuwa unakumbuka masomo ya shule ambapo mwalimu alifundisha sehemu za sarufi katika sentensi. Katika baadhi ya nchi, wanafunzi hufundishwa sarufi na isimu kama somo maalum, lakini katika nyingi, mada hizi hujumuishwa kama sehemu ya kujifunza lugha: ama lugha yako ya kwanza shuleni (kujifunza kusoma na kuandika) na labda lugha ya pili baada ya shule ya msingi, au shule ya sekondari. Usijali ikiwa wewe si mtaalamu wa kutofautisha nomino na vitenzi au vielezi na vivumishi!
Ikiwa unapata ugumu wa kutofautisha kati ya wakati uliopo rahisi na wakati uliopo unaoendelea, hauko peke yako. Hili ni jambo gumu kwa watu wengi, hata wazungumzaji wa lugha ya asili. Habari njema ni kwamba kompyuta ni nzuri sana katika kutumia sheria rasmi, na utajifunza kuandika programu inayoweza kuchambua sentensi kama binadamu. Changamoto kubwa zaidi utakayochunguza baadaye ni kuelewa maana, na hisia, za sentensi.
Mahitaji ya awali
Kwa somo hili, hitaji kuu ni uwezo wa kusoma na kuelewa lugha ya somo hili. Hakuna matatizo ya hesabu au milinganyo ya kutatua. Ingawa mwandishi wa awali aliandika somo hili kwa Kiingereza, pia limetafsiriwa katika lugha nyingine, kwa hivyo unaweza kuwa unasoma tafsiri. Kuna mifano ambapo lugha kadhaa tofauti zinatumika (kulinganisha sheria tofauti za sarufi za lugha tofauti). Hizi hazitafsiriwi, lakini maandishi ya maelezo yanatafsiriwa, kwa hivyo maana inapaswa kuwa wazi.
Kwa kazi za kuandika programu, utatumia Python na mifano inatumia Python 3.8.
Katika sehemu hii, utahitaji, na kutumia:
-
Uelewa wa Python 3. Uelewa wa lugha ya programu ya Python 3, somo hili linatumia pembejeo, vigezo, usomaji wa faili, safu.
-
Visual Studio Code + kiendelezi. Tutatumia Visual Studio Code na kiendelezi chake cha Python. Unaweza pia kutumia IDE ya Python unayopendelea.
-
TextBlob. TextBlob ni maktaba rahisi ya usindikaji wa maandishi kwa Python. Fuata maelekezo kwenye tovuti ya TextBlob ili kuisakinisha kwenye mfumo wako (sakinisha corpora pia, kama inavyoonyeshwa hapa chini):
pip install -U textblob python -m textblob.download_corpora
💡 Kidokezo: Unaweza kuendesha Python moja kwa moja katika mazingira ya VS Code. Angalia docs kwa maelezo zaidi.
Kuzungumza na mashine
Historia ya kujaribu kufanya kompyuta kuelewa lugha ya binadamu inarudi miongo kadhaa, na mmoja wa wanasayansi wa mapema kuzingatia usindikaji wa lugha asilia alikuwa Alan Turing.
Jaribio la 'Turing'
Wakati Turing alipokuwa akichunguza akili bandia katika miaka ya 1950, alifikiria ikiwa jaribio la mazungumzo linaweza kufanywa kwa binadamu na kompyuta (kupitia mawasiliano yaliyoandikwa) ambapo binadamu katika mazungumzo hakuwa na uhakika ikiwa alikuwa akizungumza na binadamu mwingine au kompyuta.
Ikiwa, baada ya muda fulani wa mazungumzo, binadamu hangeweza kubaini kwamba majibu yalikuwa kutoka kwa kompyuta au la, basi je, kompyuta ingeweza kusemekana kuwa inawaza?
Msukumo - 'mchezo wa kuiga'
Wazo hili lilitokana na mchezo wa sherehe uitwao Mchezo wa Kuiga ambapo mhojiwa yuko peke yake katika chumba na anapewa jukumu la kubaini ni nani kati ya watu wawili (katika chumba kingine) ni mwanamume na mwanamke mtawalia. Mhojiwa anaweza kutuma maelezo, na lazima ajaribu kufikiria maswali ambapo majibu yaliyoandikwa yanafichua jinsia ya mtu wa fumbo. Bila shaka, wachezaji katika chumba kingine wanajaribu kumdanganya mhojiwa kwa kujibu maswali kwa njia ya kupotosha au kuchanganya mhojiwa, huku wakitoa mwonekano wa kujibu kwa uaminifu.
Kuunda Eliza
Katika miaka ya 1960 mwanasayansi wa MIT aitwaye Joseph Weizenbaum alitengeneza Eliza, 'daktari wa kompyuta' ambaye angeuliza maswali ya binadamu na kutoa mwonekano wa kuelewa majibu yao. Hata hivyo, ingawa Eliza angeweza kuchambua sentensi na kutambua miundo fulani ya sarufi na maneno muhimu ili kutoa jibu la kuridhisha, haingeweza kusemekana kuwa inaelewa sentensi. Ikiwa Eliza ingepewa sentensi inayofuata muundo "Mimi ni huzuni" inaweza kupanga upya na kubadilisha maneno katika sentensi ili kuunda jibu "Umekuwa wewe huzuni kwa muda gani".
Hii ilitoa mwonekano kwamba Eliza alielewa taarifa hiyo na alikuwa akiuliza swali la kufuatilia, ilhali kwa kweli, ilikuwa ikibadilisha wakati na kuongeza maneno fulani. Ikiwa Eliza haingeweza kutambua neno muhimu ambalo lilikuwa na jibu lake, badala yake ingetoa jibu la nasibu ambalo linaweza kutumika kwa taarifa nyingi tofauti. Eliza ingeweza kudanganywa kwa urahisi, kwa mfano ikiwa mtumiaji aliandika "Wewe ni baiskeli" inaweza kujibu "Umekuwa mimi baiskeli kwa muda gani?", badala ya jibu lenye mantiki zaidi.
🎥 Bofya picha hapo juu kwa video kuhusu programu ya awali ya ELIZA
Kidokezo: Unaweza kusoma maelezo ya awali ya Eliza iliyochapishwa mwaka wa 1966 ikiwa una akaunti ya ACM. Vinginevyo, soma kuhusu Eliza kwenye wikipedia
Zoezi - kuandika programu ya bot ya mazungumzo ya msingi
Bot ya mazungumzo, kama Eliza, ni programu inayochochea pembejeo ya mtumiaji na inaonekana kuelewa na kujibu kwa akili. Tofauti na Eliza, bot yetu haitakuwa na sheria kadhaa zinazotoa mwonekano wa kuwa na mazungumzo ya akili. Badala yake, bot yetu itakuwa na uwezo mmoja tu, kuendeleza mazungumzo kwa majibu ya nasibu ambayo yanaweza kufanya kazi katika mazungumzo yoyote ya kijuujuu.
Mpango
Hatua zako unapoandika bot ya mazungumzo:
- Chapisha maelekezo yanayomshauri mtumiaji jinsi ya kuingiliana na bot
- Anzisha kitanzi
- Kubali pembejeo ya mtumiaji
- Ikiwa mtumiaji ameomba kutoka, basi toka
- Sindika pembejeo ya mtumiaji na uamue jibu (katika kesi hii, jibu ni chaguo la nasibu kutoka kwa orodha ya majibu yanayowezekana ya jumla)
- Chapisha jibu
- Rudi kwa hatua ya 2
Kuunda bot
Hebu tuunde bot sasa. Tutaanza kwa kufafanua baadhi ya misemo.
-
Unda bot hii mwenyewe kwa Python na majibu ya nasibu yafuatayo:
random_responses = ["That is quite interesting, please tell me more.", "I see. Do go on.", "Why do you say that?", "Funny weather we've been having, isn't it?", "Let's change the subject.", "Did you catch the game last night?"]
Hapa kuna baadhi ya matokeo ya sampuli ya kukuongoza (pembejeo ya mtumiaji iko kwenye mistari inayoanza na
>
):Hello, I am Marvin, the simple robot. You can end this conversation at any time by typing 'bye' After typing each answer, press 'enter' How are you today? > I am good thanks That is quite interesting, please tell me more. > today I went for a walk Did you catch the game last night? > I did, but my team lost Funny weather we've been having, isn't it? > yes but I hope next week is better Let's change the subject. > ok, lets talk about music Why do you say that? > because I like music! Why do you say that? > bye It was nice talking to you, goodbye!
Suluhisho moja linalowezekana la kazi ni hapa
✅ Simama na fikiria
- Je, unadhani majibu ya nasibu yangemdanganya mtu kufikiria kwamba bot inaelewa kweli?
- Ni vipengele gani bot ingehitaji kuwa bora zaidi?
- Ikiwa bot ingeweza 'kuelewa' maana ya sentensi, je, ingehitaji 'kukumbuka' maana ya sentensi za awali katika mazungumzo pia?
🚀Changamoto
Chagua mojawapo ya vipengele vya "simama na fikiria" hapo juu na ujaribu kuvitumia katika programu au andika suluhisho kwenye karatasi ukitumia pseudocode.
Katika somo linalofuata, utajifunza kuhusu mbinu kadhaa za kuchambua lugha asilia na ujifunzaji wa mashine.
Jaribio la baada ya somo
Mapitio na Kujisomea
Angalia marejeleo hapa chini kama fursa za kusoma zaidi.
Marejeleo
- Schubert, Lenhart, "Isimu ya Kompyuta", The Stanford Encyclopedia of Philosophy (Toleo la Spring 2020), Edward N. Zalta (ed.), URL = https://plato.stanford.edu/archives/spr2020/entries/computational-linguistics/.
- Chuo Kikuu cha Princeton "Kuhusu WordNet." WordNet. Chuo Kikuu cha Princeton. 2010.
Kazi
Kanusho:
Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI Co-op Translator. Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.