Kognitivní asistent

1. 2. 2014 23:23 (aktualizováno) zboj

Jak se implementuje aplikace à la Siri? Protože právě na podobném projektu pracuji, popíšu (velmi stručně) jednotlivé moduly v pořadí, jak si předávají data. V závorkách uvádím anglické názvy pro snazší vygooglování.

1. Rozpoznání řeči (speech recognition). To si člověk na koleně nenapíše. Pro mobilní aplikace nabízí SDK například Nuance. Někdy je vhodné použít ne nejpravděpodobnější rozpoznaný text, ale celý chart (lattice). Pokud nemáte dokonalý akcent, anglicky si s počítačem ale moc nepopovídáte.

2. Syntaktická analýza (parsing). V současné době existují již velmi dobré parsery. Pro kognitivní aplikace je nejlepší nějaký unifikační parser. Výstupem tohoto modulu je syntaktický strom (ten se zahodí) a nějaká interní reprezentace vztahů mezi frázemi (ta se použije dále). Pro angličtinu existují velmi dobré gramatiky, ale i pro češtinu se najdou kvalitní analyzátory.

3. Sémantická a pragmatická analýza. Zde se řeší rozpoznání záměru nebo plánu ze vstupu (intent/plan ascription/recognition). Výpočetně je to peklo (témeř všechny algoritmy jsou NP-těžké). Zde se poprvé šířeji uplatní pravděpodobnostní (stochastické) metody. V případě úspěchu tento modul dodá logickou reprezentaci vstupní věty. V tomto modulu se také uplatní kontext.

4. Inference a plánování. První část kognitivní inteligence, percepci, máme za sebou a můžeme přejít k proaktivní části. Výsledek předchozí analýzy se uloží do báze znalostí, zjistí se důsledky nových informací a naplánuje se reakce. Tento modul nejvíce závisí na konkrétní aplikaci (případně může zcela chybět). Sofistikovanější systémy budou pracovat nad nějakou obecnou ontologií (upper ontology) a množstvím faktů o příslušné doméně.

Zatímco moduly 1 a 2 jsou celkem nudné (není problém je naimplementovat), 3 a 4 jsou skutečným oříškem (tím spíše, že je chceme mít co nejrychlejší). Kromě logiky prvního řǎdu se používají například Bayesovské sítě a podobné mechanismy. Nicméně z vlastní zkušenosti můžu říci, že s trochou snahy lze vymyslet algoritmus, jenž poběží dostatečně rychle (real-time) i na mobilu. O konkrétní aplikaci někdy příště.

Sdílet