Были созданы и использованы следующие тестовые программы:
1. Консольное приложение, написанное на языке c#.
2. Консольное приложение, написанное на языке Java, которое использует стандартный модуль для создания кода клиента сервиса из документа WSDL.
3. Web-клиент, представляющий собой HTML-страницу, с вызовами функций сервиса с помощью JQuery.
4.3 Тестирование индексации на основе естественно-языковой адресации
Тестирование эффективности индексации на основе естественно-языковой адресации включало в себя сравнение скорости поиска документов по ключевому слову с применением индексации на основе естественно-языковой адресации и при простом последовательном сканировании документов.
Результаты тестирования, приведенные на рисунке Рисунок 4.1, показали, что поиск с применением индексации имеет преимущество перед последовательным поиском ключевого слова.
Рисунок 4.1. Графики зависимости времени поиска от количества слов в корпусе
При достижении суммарного количества слов в корпусе примерно в 5 тысяч слов разница во времени работы между поиском с индексацией и без индексации всё больше увеличивается.
Таким образом, применение индексации на основе естественно-языковой адресации является целесообразным подходом, даже если суммарное количество слов корпуса не слишком велико.
Заключение
Итогом данной работы стал WCF-сервис для хранения корпусов текстов с индексацией на основе естественно-языковой адресации, реализованный на языке C#. Данный сервис является частью системы для анализа научных текстов с веб-интерфейсом, которая разрабатывается в рамках работы научно-исследовательской группы НИУ ВШЭ-Пермь.
Была выполнены задачи данной работы: изучены существующие решения, и на основе этого выдвинуты требования к сервису для хранения корпусов текстов, изучены подходы к хранению неструктурированной информации, а именно документо-ориентированные базы данных, среди которых для использования была выбрана Azure Cosmos DB. Выполнение всех задач работы обеспечило достижение поставленной цели.
Индексация на основе естественно-языковой адресации была применена для полнотекстового поиска текстов по ключевым словам в корпусах, что позволила повысить производительность базы данных. Далее был спроектирован контракт сервиса, построены диаграммы прецедентов, классов и компонентов. Разработанный сервис был тщательно протестирован и отлажен.
Созданное приложение позволяет хранить информацию о пользователях, корпусах, а также различную информацию о текстах: название, плоский текст, аннотацию и любые другие благодаря гибкой структуре документо-ориентированной СУБД. Поиск по ключевым словам текста был реализован с помощью древовидной структуры для индексации на основе естественно-языковой адресации. Данная индексация показала преимущество перед полнотекстовым поиском с полным последовательным чтением текста.
Результаты исследования вместе с результатами работ Каликовой А.Р. и Гуляевым В.Ю. прошли апробацию на всероссийской научно-практической конференции молодых учёных с международным участием «Математика и междисциплинарные исследования - 2018» (ПГНИУ, г. Пермь) в секции «Прикладная лингвистика» и заняли первое место.
Возможной дальнейшей работой является изучение эффективности индексации на основе естественно-языковой адресации по сравнению с другими видами индексации, а также полноценное внедрение сервиса в разрабатываемую систему.
Библиографический список
1. Бармина Е.И. Система для обработки корпусов текстов / Е.И. Бармина, Р.Н. Бушуев, Н.В. Котельникова, В.В. Ланин, О.А. Плотникова // Математика и междисциплинарные исследования - Пермь: Пермский государственный национальный исследовательский университет, 2016. - С. 245-250.
2. Величко В. К вопросу естественно-языковой адресации / В. Величко, К. Иванова, К. Марков // Problems of Computer in Intellectualization. - София, Болгария: ITHEA 2012. - С. 77-83.
3. Документация по базе данных Azure Cosmos // Техническая документация, материалы по API и примеры кода. URL: https://docs.microsoft.com/ru-ru/azure/cosmos-db/ (дата обращения: 12.11.2017)
4. Индексирование в базах данных // Основы компьютерного моделирования - URL: http://bourabai.ru/dbt/dbms/001.htm (дата обращения: 12.11.2017)
5. Конноли Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика / Т. Конноли, К. Бегг. - М.: ООО "И.Д. Вильямс". - 2017. - 1440 c.
6. Копотев М.В. Введение в корпусную лингвистику: учеб. пособие для студентов филологических и лингвистических специальностей университетов / М.В. Копотев. - Прага: Animedia Company. - 2014. - 230 с.
7. Сведения о производительности (Entity Framework) // Техническая документация, материалы по API и примеры кода. URL: https://docs.microsoft.com/ru-ru/dotnet/framework/data/adonet/ef/performance-considerations (дата обращения: 04.05.2018)
8. Типы коллекций Hashtable и Dictionary // Техническая документация, материалы по API и примеры кода. URL: https://docs.microsoft.com/ru-ru/dotnet/standard/collections/hashtable-and-dictionary-collection-types (дата обращения: 04.05.2018)
9. Фаулер M. NoSQL: новая методология разработки нереляционных баз данных / М. Фаулер, П. Дж. Садаладж - М.: ООО "И.Д. Вильямс". - 2013. - 192 c.
10. Anthony L. AntConc: design and development of a freeware corpus analysis toolkit for the technical writing classroom / L. Anthony // Anthony Professional Communication Conference, 2005 - IPCC, 2005 - С. 729-737.
11. Bontcheva K. GATE Teamware: a web-based, collaborative text annotation framework / K. Bontcheva , H. Cunningham, Ian Roberts, A. Roberts, V. Tablan, N. Aswani, G. Gorrell // Language Resources and Evaluation. - Sheffield, UK: Springer Netherlands, 2013 -№47 - С. 1007-1029.
12. Boldi P. MG4J at TREC 2005 / P. Boldi, S. Vigna // Proceedings of the Fourteenth Text REtrieval Conference (TREC 2005) - NIST, 2005 - Vol. 500 - С. 266-271.
13. CORSIS // An open-source corpus analysis class library -URL: http://corsis.sourceforge.net/index.php/CORSIS (дата обращения: 27.01.2017)
14. Cunningham H. Gate / H. Cunningham, D. Maynard, K. Bontcheva, V. Tablan // Proceedings of the 40th Annual Meeting on Association for Computational Linguistics - ACL 02, 2002.
15. Cunningham H. Getting More Out of Biomedical Documents with GATEs Full Lifecycle Open Source Text Analytics / H. Cunningham, V. Tablan, A. Roberts, K. Bontcheva // PLoS Computational Biology. - 2013 -№9 - С. 1-16.
16. DictionaryBase.cs // Microsoft Reference Source. URL: https://referencesource.microsoft.com/#mscorlib/system/collections/dictionarybase.cs (дата обращения: 04.05.2018)
17. Entity Framework Windows SQL Azure // Microsoft Developer Network. URL: https://msdn.microsoft.com/en_us/library/jj556244(v=vs.113).aspx (дата обращения: 04.05.2018)
18. GATE. General architecture for text engineering // А full-lifecycle open source solution for text processing. URL: https://gate.ac.uk (дата обращения: 12.11.2017)
19. Hardie A. CQPweb -- combining power, flexibility and usability in a corpus analysis tool / A. Hardie // International Journal of Corpus Linguistics. -Amsterdam:John Benjamins Publishing Company, 2012 -№17(3) - С. 380-409.
20. Hirani Z. Entity Framework 6 Recipes / Z. Hirani, L. Tenny, N. Gupta, B. Driscoll, R. Vettor. - Apress. - 2013. - 548 с.
21. Ivanova K. Ontoarm - a system for storing ontologies by natural language addressing / K. Ivanova // International Journal "Information Technologies & Knowledge". - Sofia, Bulgaria: ITHEA 2014. -№8 - С. 303-312.
22. Ivanova K. Practical aspects of natural language addressing / K. Ivanova // Computational models for business and engineering domains. - Sofia, Bulgaria: ITHEA® 2012. - С. 172-186.
23. Manning C. Introduction to Information Retrieval / C. Manning, P. Raghavan, H. Schьtze. - Cambridge: Cambridge University Press. - 2008. - 680 с.
24. Markov K. Natural Language Addressing: / K. Markov, K. Ivanova, K. Vanhoof, V. Velychko, J. Castellanos. - Sofia, Bulgaria: ITHEA. - 2015. - 315 с.
25. Salvendy G. Handbook of Industrial Engineering, Technology and Operations Management: / G. Salvendy. - Hoboken, NJ, USA: John Wiley & Sons, Inc. - 2001. - 2796 с.
26. Stevens M. Subtleties of Scientific Style / M. Stevens. - Thornleigh, N.S.W. : ScienceScape Editing. - 2007. - 104 c.
27. Windows Communication Foundation // Microsoft Developer Network. URL: https://msdn.microsoft.com/ru_ru/library/dd456779.aspx (дата обращения: 12.11.2017)
Приложение А
Описание прецедентов
1. Создание нового корпуса текстов
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для создания корпуса с переданными необходимыми данными в качестве аргументов.
Основной поток:
1. Клиент выполняет вызов функции для создания корпуса (Е1).
2. Сервис отправляет запрос в реляционную СУБД для сохранения информации о корпусе (Е2).
Альтернативные потоки:
E1: Клиент сначала выполняет поиск пользователя для создания частного корпуса.
E2: При возникновении ошибки система отправляет информацию о ней клиенту.
2. Изменение корпуса текстов
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для изменения корпуса с переданной новой информацией в качестве аргументов.
Основной поток:
1. Клиент выполняет вызов функции для изменения корпуса.
2. Сервис отправляет запрос в реляционную СУБД для изменения информации о корпусе (Е1).
Альтернативные потоки:
E1: При возникновении ошибки система отправляет информацию о ней клиенту.
3. Удаление корпуса текстов
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для удаления корпуса с переданным идентификатором в качестве аргумента.
Основной поток:
1. Клиент выполняет вызов функции для удаления корпуса (S1).
2. Сервис отправляет запрос в реляционную СУБД для удаления информации о корпусе (Е1).
Подпотоки:
S1: Система удаляет все документы из данного корпуса.
Альтернативные потоки:
E1: При возникновении ошибки система отправляет информацию о ней клиенту.
4. Создание нового документа
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для добавления документа с переданными необходимыми данными в качестве аргументов.
Основной поток:
1. Клиент выполняет вызов функции для добавления документа (Е1).
2. Сервис отправляет запрос в реляционную СУБД для сохранения информации о документе (Е2).
3. Сервис отправляет запрос в документо-ориентированную СУБД для сохранения информации о документе (S1).
Подпотоки:
S1: Индексация документа.
Альтернативные потоки:
E1: Клиент сначала выполняет поиск корпуса для добавления документа.
E2: При возникновении ошибки система отправляет информацию о ней клиенту.
5. Изменение документа
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для изменения документа с переданной новой информацией в качестве аргументов.
Основной поток:
1. Клиент выполняет вызов функции для изменения документа.
2. Сервис отправляет запрос в реляционную СУБД для изменения информации о корпусе (Е1).
3. Сервис отправляет запрос в документо-ориентированную СУБД для изменения информации о документе (Е2).
Альтернативные потоки:
E1: При возникновении ошибки система отправляет информацию о ней клиенту.
E2: При изменении текста документа происходит переиндексация текста (удаления старых индексов, добавление новых).
6. Удаление документа
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для удаления документа с переданным идентификатором в качестве аргумента.
Основной поток:
1. Клиент выполняет вызов функции для удаления корпуса (S1).
2. Сервис отправляет запрос в реляционную и документо-ориентированную СУБД для удаления информации о корпусе (Е1).
Подпотоки:
S1: Система удаляет все индексы для данного документа.
Альтернативные потоки:
E1: При возникновении ошибки система отправляет информацию о ней клиенту.
7. Регистрация нового пользователя
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для добавления информации о новом пользователе с переданными необходимыми данными в качестве аргументов.
Основной поток:
1. Клиент выполняет вызов функции для добавления информации о пользователе.
2. Сервис отправляет запрос в реляционную СУБД для сохранения информации о пользователе (Е1).
Альтернативные потоки:
E1: При возникновении ошибки система отправляет информацию о ней клиенту.
8. Изменение информации о пользователе
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для изменения информации о пользователе с переданной новой информацией в качестве аргументов.
Основной поток:
1. Клиент выполняет вызов функции для изменения информации о пользователе.
2. Сервис отправляет запрос в реляционную СУБД для изменения информации о пользователе (Е1).
Альтернативные потоки:
E1: При возникновении ошибки система отправляет информацию о ней клиенту.
9. Удаление информации о пользователе
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для удаления информации о пользователе с переданным идентификатором в качестве аргумента.
Основной поток:
1. Клиент выполняет вызов функции для удаления информации о пользователе (S1).
2. Сервис отправляет запрос в реляционную СУБД для удаления информации о пользователе (Е1).
Подпотоки:
S1: Система удаляет все корпуса данного пользователя.
Альтернативные потоки:
E1: При возникновении ошибки система отправляет информацию о ней клиенту.
10. Получение информации о пользователе
Акторы: Клиент (Другие приложение).
Краткое описание: Вызов функции для получения информации о пользователе с переданными логином и паролем в качестве аргументов.
Основной поток:
1. Клиент выполняет вызов функции для получения информации о пользователе.
2. Сервис отправляет запрос в реляционную СУБД для получения информации о пользователе и отправляет её клиенту (Е1).
Альтернативные потоки:
E1: Если такой пользователь не найден, возвращается пустая ссылка.