BC/NW 2014 №2 (25):7.1
ПОСТРОЕНИЕ ЕСТЕСТВЕННО-ЯЗЫКОВОГО ИНТЕРФЕЙСА УПРАВЛЕНИЯ ФАЙЛОВОЙ СИСТЕМОЙ НА ОСНОВЕ ТЕОРИИ
К-ПРЕДСТАВЛЕНИЙ
Разоренов А.А.
(НИУ “Высшая школа экономики” (ВШЭ), Москва, Россия)
Введение
По мере возрастания сложности применяемого программного обеспечения всё сильнее стали проявляться ограничения ставших стандартом за последние десятилетия графических пользовательских интерфейсов (GUI). В поисках выхода из создавшейся ситуации проводятся исследования как в рамках парадигмы GUI, так и вне её. Одним из перспективных направлений развития пользовательских интерфейсов для сложного программного обеспечения являются естественно-языковые пользовательские интерфейсы.
Наибольшее количество исследований и разработок естественно-языковых интерфейсов на данный момент посвящены интерфейсам к базам данных. Тема управления программным обеспечением исследована слабее, однако и в этом направлении ведутся работы, например [2,3].
В настоящее время имеются различные программы, использующие естественно-языковой интерфейс (Natural Language Interface) для управления программным обеспечением, такие как:
· Siri – средство речевого управления телефонами iPhone 4S/5[16];
· её русскоязычный аналог: Собеседник HD [17];
· Ubiquty – дополнение к Web-обозревателю Firefox[18];
· GNOME Do – приложение для быстрого поиска информации в окружении рабочего стола GNOME: приложений, закладок браузера, музыкальных файлов – и выполнения базовых операций над ними[13];
· Braina Project – программное обеспечение для управления компьютером в целом[12];
· NLUI Server – cерверное программное обеспечение для построения сценариев взаимодействия с программами на естественном языке и встраивания поддержки естественно-языкового интерфейса в приложения[15].
Описанные решения выполняют простые одноактные команды: открыть файл «имя файла», создать папку «наименование папки», скопировать файл «имя файла» в папку «имя файла», сказать сколько время. В то же время диапазон пользовательских команд неизмеримо шире, он может включать в себя такие сложные конструкции, как «Скопировать все текстовые и музыкальные файлы, созданные в этом году, из папки А в папку Б, запаковать их и отправить по электронной почте на адрес someperson@example.org». Учесть всё многообразие возможных пользовательских команд, используя прямолинейный подход к обработке входных предписаний, невозможно.
Поэтому возникает идея создания естественно-языковых интерфейсов (ЕЯ-интерфейсов) управления компьютерными системами.
Требования к естественно-языковым интерфейсам
Для создания ЕЯ-интерфейсов управления компьютерными системами необходима разработка формального математического аппарата, описывающего управление программным обеспечением с помощью естественно-языковых предписаний (команд), а также программного обеспечения на его основе.
Очевидно, что данный аппарат должен базировать на некоторой теории семантического представления команд пользователя, определяющей формальные языки, обладающие более богатыми по сравнению с языками логики первого порядка выразительными возможностями. К ним, например, можно отнести эпизодическую логику, разработанную в Университете Рочестера (США, штат Нью-Йорк)[7] или нечёткую модальную логику[9], а также ряд других современных теорий.
В то же время, как уже отмечалось ранее, нет необходимости выдвигать в качестве требования к естественно-языковым интерфейсам возможность речевого ввода команд.
Данный аппарат должен описывать механизм интерпретации семантических представлений естественно-языковых предписаний пользователя для некоторого подмножества естественного языка (русского, английского или иного).
В данной статье будет использован формальный аппарат теории К-представлений, предложенной В.А. Фомичевым [4].
Основные свойства СК-языков
Анализ показывает, что широкие возможности по разработке теоретических основ проектирования естественно-языковых интерфейсов приложений предоставляются теорией K-представлений (концептуальных представлений). Данная теория, разработанная В.А. Фомичевым, вводит, в частности, новый класс формальных языков, называющихся СК-языками (стандартными концептуальными языками).
Определение класса СК-языков – часть математической модели, разработанной в [4] и описывающей десять частичных операций на концептуальных структурах. Данная модель предоставляет средства для представления смысловых структур естественно-языковых предложений и сколь угодно сложных текстов, относящихся к различным сферам профессиональной деятельности: технологии, медицина, экономика, спорт и т.д. Рассмотрим некоторые важные свойства класса СК-языков, определённого в [4] и обсуждавшегося в [5, 6].
Алфавит СК-языков включает в себя два непересекающихся множества:
· X – первичный универсум – множество базовых семантических единиц;
· V – множество переменных.
Первичный универсум включает в себя несколько непересекающихся множеств:
· St – множество сортов (обозначений наиболее общих понятий), они используются для ассоциирования выражений СК-языков с их семантическими характеристиками, называемыми типами;
· R – множество реляционных символов, включающее подмножество функциональных символов F.
Каждый первичный универсум должен включать в себя ряд обязательных символов, в том числе символы:
Данные символы используются при построении K-представлений предложений и текстов на естественном языке. Термин «К-представления» используется для обозначения семантических представлений текстов, являющихся выражениями СК-языков.
Выражения СК-языков строятся из элементов концептуального базиса с помощью индуктивного применения правил построения с номерами от 0 до 10. Язык, порождённый концептуальным базисом , обозначается .
Правило с номером 0 говорит о том, что элементы первичного универсума и переменные являются К-формулами. В частности, единица файл является выражением некоторого СК-языка Ls(B).
1-е правило позволяет присоединять к формулам интенсиональные кванторы, то есть порождать формулы вида нек файл, нек файл*(Расширение, "doc"), все файл*(Расширение, "doc").
2-е правило позволяет строить формулы вида , где — функция: Дата-создания(нек файл).
3-е правило позволяет строить формулы вида . Пример: (документ≡ файл*(Расширение, "doc")).
4-е правило позволяет строить формулы вида , где — отношение, например: Раньше(Дата-создания(нек файл), Вчера).
5-е правило даёт нам возможность отмечать переменными часть формулы или её всю. Например: все файл*(Расширение, "doc"):v1.
6-е правило определяет присоединение символа отрицания () к формулам: ¬файл.
7-е правило определяет порядок использования логических связок и . Например: файл*(Расширение, ("doc" ∨ "docx")).
8-е правило позволяет определять составные понятия построением конструкций вида
файл*(Расширение, ("doc" ∨ "docx"))(Расположение, Рабочий-стол), которые соответствуют фразам вида «файл с расширением doc или docx, находящийся на Рабочем столе».
9-е правило позволяет использовать в формулах кванторы всеобщности и существования ( и ).
10-е правило позволяет строить наборы вида <Источник, нек архив*(Расположение, Папка*(Наименование,"Текущий год"))>. Также 10-е правило позволяет строить более длинные наборы, например, для представления пространственных координат: <16, 52, 23>.
Дизайн и реализация естественно-языкового интерфейса
Для проверки разработанного формального аппарата была создана программа на языке Haskell[8,10,11], выполняющая ограниченный набор команд на файловой системе – Natural Language Commander Version 1 (NLC1).
Данная программа принимает на вход команды пользователя из некоторого ограниченного подмножества русского языка. Далее программа с помощью алгоритма SemSyn, описанного в [4], преобразует введённую пользователем команду в её К-представление и выполняет необходимые преобразования из базы преобразований, получая в результате унифицированное К-представление. Данное K-представление принадлежит тому же СК-языку, что и исходное представление. Однако, в нём сложные понятия, такие, как «документ», «музыка», «видео», заменены более простыми понятиями с дополнительными квалификаторами. Например, «документ» интерпретируется как «файл с расширением doc, docx или odt».
Далее унифицированное K-представление преобразуется в сценарий на языке командной оболочки операционной системы. NLC1 использует для этих целей Borne Again Shell (Bash) как для POSIX-совместимых операционных систем, так и для Windows.
Рассмотрим на примере обработку команды «Если размер музыкальных файлов в папке Загрузка не превышает 1 гигабайта, скопировать музыку из папки Загрузка на резервный диск в папку с названием "Музыка" или "Моя музыка"». Данная команда пользователя преобразуется в следующее K-представление:
Если-то (Меньше (Размер (все Музыка*(Расположение, Папка*Наименование("Загрузка")):o1 ), 1/гигабайт), Команда (#сейчас#, Копирование* (Источники,o1)(Назначение, Папка*(Наименование, "Музыка" ∨ "Моя музыка")(Расположение, Резервный-диск)))).
Далее с помощью преобразований из базы знаний
Mузыка ├ Файл*(Расширение, "mp3" ∨ "ogg" ∨ "wav" ∨ "aac")
Резервный-диск ├ Диск*(Наименование,"F")
К-представление приводится к виду:
Если-то (Меньше (Размер (все Файл*(Расширение, "mp3" ∨ "ogg" ∨ "wav" ∨ "aac")(Расположение, Папка*Наименование("Загрузка")):o1), 1/гигабайт), Команда (#сейчас#, Копирование*(Источники,o1)(Назначение, Папка*(Наименование, "Музыка" ∨ "Моя музыка")(Расположение,Диск*(Наименование,"F")))))
Итоговый сценарий командной оболочки BASH выглядит следующим образом:
if [ $(du -cb "Загрузка/*.mp3" "Загрузка/*.ogg" "Загрузка/*.wav" "Загрузка/*.acc"|grep total|sed -e "s/\s.*$//g") -le 1000000000 ]; then cp "Загрузка/*.mp3" "Загрузка/*.ogg" "Загрузка/*.wav" "Загрузка/*.acc" $(ls /f/|grep -iE "^Музыка$|^Моя музыка$" | head -n1); fi
Заключение
Согласно некоторым исследованиям, например [1,14], естественно-языковые интерфейсы не эффективны для простых приложений, однако они могут быть более эффективны для более сложных приложений, таких как ERP-системы или оболочки операционных систем. Метод, рассмотренный в данной статье, может упростить взаимодействие между компьютером и пользователем. Благодаря использованию СК-языков для построения семантических представлений команд, предложенный алгоритм может оперировать сложными пользовательскими командами. Данное свойство разработанного метода предоставляет возможность для создания естественно-языковых интерфейсов сложного программного обеспечения с поддержкой пользовательских команд разной сложности: от самых простых до длинных сложных инструкций.
Литература
1. Androutsopoulos I, Ritchie G., and P. Thanisch. Natural Language Interfaces to Databases. arXiv:cmp-lg/9503016
2. Bassil Y., Barbar A. MyProLang – My Programming Language: A Template-Driven Automatic Natural Programming Language. arXiv:1204.0221
3. Chong S., Pucella R. A Framework for Creating Natural Language User Interfaces for Action-Based Applications, Proceedings of the Third International AMAST Workshop on Algebraic Methods in Language Processing, TWLT Report 21, pp. 83-98, 2003 (arXiv:cs/0412065)
4. Fomichov V.A. Semantics-Oriented Natural Language Processing: Mathematical Models and Algorithms. IFSR International Series on Systems Science and Engineering, Vol. 27. Springer: New York, Dordrecht, Heidelberg, London, 2010.-354 p.
5. Fomichov V.A. Theory of K-calculuses as a Powerful and Flexible Mathematical Framework for Building Ontologies and Designing Natural Language Processing Systems // Troels Andreasen, Amihai Motro, Henning Christiansen, Henrik Legind Larsen (Eds.), Flexible Query Answering Systems. 5th Intern. Conference, FQAS 2002, Copenhagen, Denmark, Oct. 27 - 29, 2002. Proceedings; LNAI 2522 (Lecture Notes in Artificial Intelligence, Vol. 2522), Springer: Berlin, Heidelberg, New York, Barcelona, Hong Kong, London, Milan, Paris, Tokyo, 2002. P. 183-196.
6. Fomichov, V.A. The Advantages of Using SK–languages for Designing Semantic-Syntactic Analyzers of Recommender Systems // Kurt J. Engemann and George E. Lasker (Eds.) Advances in Decision Technology and Intelligent Information Systems, Vol. XIV. The International Institute for Advanced Studies in Systems Research and Cybernetics (IIAS), Tecumseh, Ontario, Canada, 2013, p. 37-41.
7. Hwang C.H. and Schubert L.K. (1993): Episodic Logic: A Comprehensive, Natural Representation for Language Understanding. Minds and Machines, Vol. 3, 381-419.
8. Marlow S.: Parallel and Concurrent Programming in Haskell, O'Reilly, August 2013, English, 322 pages, ISBN-10: 1449335942, ISBN-13: 978-1449335946
9. Nie J. and Brisebois M. (1996): Using Fuzzy Modal Logic for Inferential Information Retrieval. Informatica (Slovenia), Vol. 20, 299-318.
10. O'Sullivan B., Stewart D., and Goerzen J.: Real World Haskell, Paperback: O'Reilly, November 2008, English, 700 pages, ISBN-10: 0596514980, ISBN-13: 978-0596514983
11. Peyton Jones, S.: Haskell 98 language and libraries: the Revised Report, Cambridge University Press, 2003, 272 pages, ISBN 0521826144
12. Braina Project (Электронный ресурс): http://www.brainasoft.com/braina/#overview (доступ 2014-02-10)
13. GNOME Do (Электронный ресурс): http://do.cooperteam.net/ (доступ 2014-02-10)
14. Is it easier to learn how to use a computer program if you communicate with it using English-language type commands? (Электронный ресурс): http://onlinestatbook.com/case_studies_rvls/interface/index.html (доступ 2014-02-15).
15. NLUI Server (Электронный ресурс): http://www.linguasys.net/web_production/server-item/NLUI%20Server (доступ 2014-02-09)
16. Siri (Электронный ресурс): http://www.apple.com/ios/siri/ (доступ 2014-02-10)
17. Sobesednik HD (Электронный ресурс): http://sobesednik.idevelops.com/ (доступ 2014-02-10)
18. Ubiquity (Электронный ресурс): https://wiki.mozilla.org/Labs/Ubiquity (доступ 2014-02-10)