Cătălin (referință la Cătălin din Luceafărul) este un motor conversațional în limba română aflat încă în plină dezvoltare dată fiind complexitatea lui. Împreună cu coechipierul meu, Paul, încerc să realizez un motor de conversație (momentan tip discuție chat) în limba română, care să înțeleagă ce îi spune utilizatorul și răspundă inteligent. Am vrut să creez acest motor în limba română (cu diacritice) pentru că în limba engleză astfel de „roboți” au mai fost realizați, dar și pentru că limba română e foarte încâlcită dar și „dumnezeiesc de frumoasă” (N. Stănescu) De precizat că al nostru Cătălin nu este un robot de tipul A.L.I.C.E. care la aceeași propoziție/întrebare răspunde mereu cu același răspuns, ci își gândește și își formulează singur răspunsurile. La momentul actual, Cătălin răspunde doar la întrebări de tipul „A (nu) este B?”, „ce/cine este/sunt A?” dar cum spuneam, lucrăm intens la el și odată ce am reușit să îl facem să răspundă la aceste câteva întrebări, restul bănuiesc va fi ceva mai trivial. Lucrul la el se desfășoară de 2 luni și mai intens de câteva săptămâni… Câteva specificații tehnice… l-am scris în C++. Inițial am vrut să îi facem interfață wxWidgets, cu speranța de a-l vedea rulând și pe Windows și pe Linux. Paul a reușit să instaleze wxWidgets pe calculatorul lui, eu n-am reușit; cu greu și cu ajutorul cuiva abia am reușit să îl instalez și eu pe Linux… dar după aproape o săptămână de nervi am decis că nu interfața este până la urma urmei miezul, așa că am ales o soluție de compromis: am făcut interfața în AutoHotkey, înglobat în programul principal (reminiscență de anul trecut, când am participat cu MusicSuite, scris integral în AutoHotkey) și motorul efectiv l-am așezat într-un DLL separat. Toate cuvintele (împreună cu flexiunile lor), noțiunile și lucrurile pe care le cunoaște Cătălin sunt conținute într-o bază de date SQLite. Îmi doresc să fac programul capabil și să învețe cuvinte noi, doar că flexiunile în limba română sunt o nebunie (vapor – vapori de apă – vapoare pe apă). Dacă nu reușesc aceasta, oricum mi-aș dori să apuc să îl fac să învețe despre diverse lucruri pe măsură ce îi povestesc despre ele (dacă îi zic la un moment dat că „Andrei are un câine”, mâine să știe la cine mă refer dacă îi vorbesc despre „câinele lui Andrei”). Baza de date conține toate flexiunile, declinările, formele, etc. cuvintelor… Am scris câteva funcții pentru flexionarea anumitor părți de vorbire există dar dau rateuri inevitabil și nu știu dacă le voi folosi până la urmă… În captura de ecran mai de jos am surprins câteva răspunsuri pe care le dă Cătălin, în care se vă pot spune că „în spatele scenei” Cătălin face anumite deduceri pentru a veni cu răspunsurile pe care le afișează, printre care că pisica este mamifer, mamiferul este animal => pisica este animal dar și că „simpatic” este sinonim pentru „drăguț”. Voi reveni cu noi imagini pe măsură ce lui Cătălin îi crește IQ-ul. Cu scuzele de rigoare pentru descrierea lungă și nearanjată (nu se vede unde am lăsat linie nouă) sperăm că al nostru Cătălin v-a trezit entuziasmul/curiozitatea! 🙂