Təbii Dili İstifadəçi İnterfeysi yalnız İstifadəçi İnterfeysidir

Bu bot şırınga haqqında bir neçə kəlmə ...

Deyək ki, bir ərizə yazırsınız və ona bir danışıq interfeysi vermək istəyirsiniz: istifadəçiləriniz hansısa bir əmr yazacaq və tətbiqiniz bəlkə də aydınlaşdırma istədikdən sonra cavab olaraq bir şey edəcəkdir.

Bu texnologiya ilə əlaqəli bir çox termin var - danışıq ticarəti, botlar, AI agentləri və s. Hesab edirəm ki, qoşula biləcəyiniz Qrafik İstifadəçi İnterfeysi (GUI) ilə bənzətməklə onu Linqvistik İstifadəçi İnterfeysi (LUI) adlandırmaq daha aydındır. eyni tətbiq.

Tətbiqinizi bir GUI ilə təsəvvür etmək, potensial yunlu "AI agentləri" haqqında düşünmək üçün yaxşı bir antidotdur. Siz hələ UI-ni əsas tətbiqə bağlamalısınız və əsas tətbiqinizin konseptual modeli hələ də ümumi istifadəçi təcrübəsində dominant rol oynayacaq.

İstifadəçi Mətniniz klik kimidir

Deyək ki, dörd funksiyanı yerinə yetirə bilən sadə bir tətbiqiniz var:

  • check_weather (): Cari hava və sabah proqnozunu göstərin.
  • check_calendar (): Bugünkü görüşləri göstər.
  • call_mom (): ananıza zəng edin.
  • Tell_joke (): Qarğıdalı bir zarafat deyin.

Bu tətbiq üçün sıfırdan bir GUI yazdığını düşünün. İstifadəçi kursoru və klikləri hərəkət etdirir. Hər klikdə, kursorun mövqeyini təmsil edən bir cüt nömrə əldə edirsiniz. Beləliklə, hər bir istifadəçi hərəkəti sizə iki real dəyərdən ibarət bir vektor verir. Tətbiqiniz dörd düymənin sərhəd qutularını bilir. Hər bir vektor üçün nöqtənin düymələrdən birinin hüdudlarına daxil olub olmadığını yoxlayırsınız. Əgər belədirsə, düyməni basın animasiyasını işə salırsınız və müvafiq funksiyanı yerinə yetirirsiniz.

LUI-ni sıfırdan yazmaq üçün istifadəçinin mətnini götürüb nömrələrin bir vektoruna həll etməliyik. İstifadəçinin "tıkladığını" "harada" anlamalıyıq. Tipik olaraq hər sözü ixtiyari bir şəxsiyyət xəritəsinə salırıq. Sonra 5000 söz lüğətini tanıyırıqsa, hər sözü 5000 ölçülü məkanda fərqli bir nöqtə kimi qəbul edə bilərik. Sonra bu məkanı daha ölçüdə, 300 ölçüdə daha sıx bir məkana endiririk. Bu, mətni həll oluna bilən bir məna vektoruna həll etmək üçün bizə çox kömək edir.

Bunu göstərmək üçün bir neçə sözün bir lüğətini tanıyaq və hər sözə həqiqi bir dəyər təyin edək. İstifadəçinin mətnini iki ölçüyə uyğunlaşdırmaq üçün x koordinatı kimi tanıdığımız ilk sözü və y koordinatı kimi tanıdığımız son sözü götürəcəyik.

Yuxarıdakı sadə funksiya istifadəçi mətninin "mənasını" iki real dəyərin cütü kimi təqdim etməyə imkan verir:

  • get_coords ("havanı yoxlayın") → (0.3, 0.3)
  • get_coords ("təqvimimi göstər") → (0.1, 0.7)
  • get_coords ("komik bir şey söylə") → (0.1, 0.1)
  • get_coords ("ana zəng edin") → (0.9, 0.9)

LUI və GUI arasındakı bənzətməni bu dəyərləri planlaşdıraraq və "düymələrimiz" üçün tətbiqetmənin hərəkətlərini təklif edərək tamamlaya bilərik.

Bir GUI ilə, tıklamanın koordinatlarını təyin etməkdə problem yoxdur və klik hadisəsini müəyyən bir düyməyə həll etmək barədə heç vaxt düşünməməlisiniz. Bu şey sadəcə baş verir - sizin üçün qayğı göstərilib. Bir LUI ilə bu detallara diqqət yetirməlisiniz. Bununla daha yaxşı və ya daha pis bir iş görə bilərsiniz, ancaq "qızıl standart" - bütün maşın öyrənmə səylərinizin müqəddəs çarxı - yalnız bir GUI içərisində aldığınız bir şeyi verəcəkdir. Əlbətdə, istifadəçinin "tıklaya" biləcəyi olduqca böyük, çox ölçülü bir kətan var və hər klik sizə zəngin bir quruluş verə bilər. Ancaq hələ də bu kətan üzərində düymələri, formaları, naviqasiya menyularını və s. Boya çəkməlisiniz. Bəzi sabit əsas imkanlar dəsti üçün bir UI bağlayırsınız.

Bu kimi bir dialoqa fikir verin:

- Salam! Bu gün sizə necə kömək edə bilərəm? - Avtomobil sığortası axtarıram. - Mövcud siyasət sahibiisiniz? - Yox bu mənim ilk maşınımdır

Deyək ki, başlıq altında istifadəçinin son ifadəsi mətn divarını yazdıran car_insurance.non_holder.tell () funksiyasını işə salır. Burada LUI istifadəçiyə seçimləri əsas domen tərəfindən təyin olunan iyerarxik bir menyu verir. GUI dizaynında, iç içə menyuların yaratdığı problemlər yaxşı bilinir və bir LUI üçün oxşar problemləri təsəvvür etmək asandır.

Yuvalı bir menyunun yuxarısına baxırsan, ağacın yarpaqlarının nə olduğunu haradan bilirsən? Və müəyyən bir yarpağa ehtiyacınız olduğunu bilirsinizsə, ona necə getməyi etibarlı şəkildə necə təxmin edirsiniz? LUI istəkləri sizə daha çox mətn verir, buna görə kontekst bəzən daha aydın ola bilər. Digər tərəfdən, mövcud seçimlər çeşidi həmişə sayılmır və niyyətiniz səhv təsnif edilə bilər.

Buradakı məqam, bir dil istifadəçi interfeysi (LUI) sadəcə bir interfeys olmasıdır. Tətbiqinizə hələ konseptual bir model lazımdır və mütləq həmin konseptual modeli istifadəçilərinizə çatdırmaq lazımdır. Beləliklə, özünüzə sual verin: əgər bu tətbiqetmədə GUI varsa, bu GUI nəyə oxşayacaqdı?

Siri'nin bir GUI versiyası, ehtimal ki, Siri'nin alt tətbiqlərinin hər biri üçün forma elementlərinin səhifələrindən ibarət bir ev ekranı verəcəkdir. Siri'nin atomik "həvəsli yumurta" funksiyalarını işə salması üçün düymələrin uzun bir siyahısı da olacaq. Qeyd edək ki, Siri-yə GUI sadəcə iOS-un ana ekranı olmayacaq. Əgər bu həqiqət olsaydı, onda Siri sözlərinizi toxunma hadisələri və istifadəçi girişləri ardıcıllığı ilə əlaqələndirərdi.

"Anama deyim ki, onu sevirəm" deyəndə Siri sms əmrini yerinə yetirir ("anam", "mən onu sevirəm"). Mütləq istifadəçi hərəkətlərinin ardıcıllığını yerinə yetirmir, yəni “pilotlar” sizin iPhone-u necə etdiyiniz kimi. Bunu etməyə çalışmaq dəli olardı. Siri yalnız bir tətbiqdir, yerinə yetirmək istədiyiniz öz konseptual fəaliyyət modeli ilə. Bu hərəkətləri bir GUI yox, LUI vasitəsi ilə sizə təqdim edir.

Dünən nə edə bilmədik?

Düşünürəm ki, yeni və təkmilləşdirilmiş AI texnologiyasının hansı imkanları açdığını anlamaq vacibdir. Artıq istifadəçinin "klik" ini tutmağı və düzgün hərəkətlə düzgün şəkildə həll etməyi gözləyə biləcəyiniz üçün bir LUI mümkündür. İndi istifadəçinin mətnini yaxşı şərh etməsini gözləyə bilərsiniz. Bu yenidir və fürsət maraqlıdır. Ancaq fürsət də bir çox insanın düşündüyü kimi daha dardır.

Düşünürəm ki, LUI mürəkkəb formaları doldurmaq üçün xüsusilə xoş ola bilər, burada çox az istifadə olunan bir çox arqument var. Ancaq nə qədər dəqiq olmağımı istəsəm, təbii dildən istifadə etməkdən o qədər həyəcanlanıram. NL sorğum verilənlər bazası sorğusuna daxil ediləcək və soruşduğum cədvəlin quruluşu əvvəlcədən müəyyənləşdirilib. Masanın quruluşunun məndən gizli olması həm yaxşı, həm də pis ola bilər.

Üstünlüyü, UI ilə qarşılıqlı təsirimi dəyişdirmədən masanın quruluşu dəyişə bilər. Dezavantajı, yalan danışmağımdır - sızan bir abstraksiya üzərindən tətbiqlə əlaqəli olmağa məcburam. Yəqin ki, axşam saat 10-dan sonra açıq WiFi və vegetarian variantları olan yaxınlıqdakı bir kafe tapmaq istəsən, NL interfeysindən istifadə etməkdən məmnun olaram. Avstraliyaya uçuş sifariş edərəmsə, dizüstü kompüterimi açıb veb forma doldurmaq istərdim.

İstifadəçinin təlimatlarını koda daxil edib onu qiymətləndirməyincə (məsləhət görməzdim!) Bir LUI heç bir əlavə ifadəlik təqdim etmir. Dil istifadəçi interfeysi və qrafik istifadəçi interfeysi hər ikisi ... istifadəçi interfeysi.

Dil interfeysi daha yaxşı ola bilər və ya daha pis ola bilər. Dizayndan aşağı düşür və uğurunuz qurmağa çalışdığınız tətbiqlə yaxından əlaqələndiriləcəkdir. Problem ondadır ki, LUI-lərin dizaynını çox az təcrübəliyik və istifadəçilər onlardan istifadə etməkdə daha az təcrübəyə malikdirlər.

Proqnozum linqvistik istifadəçi interfeysi ilə tətbiqetmələr quran insanlar üçün güclü ikinci bir üstünlük olacaqdır. UI dizaynı ilə bağlı dərsləri öyrənmək lazımdır və istifadə fərziyyələri bir mədəniyyət toplamalı olacaq. Bu vaxt, LUI-lərin populyar platformalarda xərcləri və donuz dəstəyini azaltmaq üçün həyəcan verən nisbətən təvazökar tətbiqlər üçün ən yaxşı uyğun olacağını gözləyirəm.

Başqa sözlə, düşünürəm ki, LUI-lər kiçik sərmayə qoyan kiçik və yaramaz komandalar üçün ən uyğun. Böyük bir cəsarətli bir planınız varsa və ehtirasınız tətbiqinizə "bənzərsiz bir istifadəçi interfeysi" verməyi özündə ehtiva edirsə, nə istədiyinizi diqqətli etməlisiniz. Bu maraqlı dövrlərdə yaşamağa ümid etmək kimi.

Mənim haqqımda

Mən Sidney və Berlindən bir hesablama dilçisiyəm. Mən spaCy NLP alətlərinin inkişaf etdiricisiyəm və Partlayış Aİ-nin həmtəsisçisiyəm. AI və ya ML üzərində çalışırsınızsa, Prodigy'yi aktiv öyrənən annotasiya alətimiz oldu.

Email: [email protected] Twitter: @honnibal