KrashV / Stemming-ru

Russian stemming procedure based on Porter's algorithm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Стеммер Портера для русского языка

Russian_Stemming image

Введение. Цель проекта

В русском языке, в отличии от английского, выделение основы слова является непростой задачей. Исторически, она решается при помощи составления больших подробных морфологических словарей, воспользоваться которыми не всегда удобно и возможно. Наш проект реализует алгоритм нахождения основы для заданного исходного слова, что позволяет экономить своё время и нервы.

Сравнение с аналогами

Название продукта Вид приложения Поддержка русского языка Поддержка других языков Примитивные тесты Язык программирования
Online Snowball stemmers demo online + + + JavaScript
Стемминг текста online + + - PHP
Stemming-ru exe + - + C++

Ошибки в тестах у программы Стемминг текста основаны на том, что она использует не только алгоритм стемминга, но и лемматизатор, для приведения слов к базовой форме.

Требования к аппаратуре

Продукт предназначен для работы на персональном компьютере. Системные аппаратные средства, используемые программой, должны быть представлены персональным компьютером с уровнем процессора не ниже Intel Celeron 1Ghz, и количеством оперативной памяти не ниже 520 Mb.

Требования к программному обеспечению

Для корректной работы программы требуется операционная система Windows 8 64 Bit или более поздние версии операционных систем Windows. Также, необходимо наличие свободной оперативной памяти, минимум 520 Mb, и не меньше 25 Mb свободно памяти на жёстком диске.

Средства разработки программного обеспечения

При разработке программного продукта использовались:

  1. Библиотеки языка программирования С++
  2. Среда программирования Microsoft Visual Studio Community 2017 версия 15.1 (26403.7) Release
  3. Автоматическое построение документации путём использования doxygen
  4. Проверка стиля и синтексиса итогового продукта с помощью Cpp Check Code Analysis Tools ver. 1.82.
  5. Разработка тестов для проверки функциональности продукта при помощи QT ver 5.7.0

Характеристики продукта

  1. Расход памяти: О(n), где n - это длина слова. Так как мы считываем только одно слово из файла, запоминаем его, выполняем стемминг и забываем это слово.
  2. Производительность: О(n), где n - это длина слова.
  3. Надежность: Наш проект ничего не ломает. Даже в самом худшем случае, во время возникновения системной ошибки, повреждён может быть только выходной файл проекта.
  4. Рыночная ниша: Несмотря на довольно небольшой возраст проекта, он обладает большим потенциалом, и мы надеемся, что в скором времени он сможет занять достойное месро среди общеизвестных аналогов.

Формат входных данных

В качестве входных данных проект поддерживает текстовые файлы в кодировке UTF-8, содержащие информацию на русском языке. Поддерживаемый формат файлов: .txt. Размер принимаемых файлов ограничивается объёмом оперативной памяти используемого устройства.

Формат выходных данных

После того как программа обработает все полученные данные при помощи алгоритма стемминга Портера, пользователю будет предоставлен файл формата csv, заполненный результатами работы программы, записанными на русском языке.

Установка продукта

Для установки продукта необходимо скачать себе на персональный компьютер архив, содержащий проект, и распаковать его в отдельную папку на диске или на сам диск. После этого продукт готов к использованию пользователем.

Запуск продукта

Для запуска продукта необходимо в командной строке после ссылки на консольное приложение ввести через пробел два аргумента: имя входного файла (любого текстового формата) и имя выходного файла (формата csv).

Описание интерфейса пользователя

В нашем программном продукте реализован интерфейс командной строки, так как нет действий, требующих явного взаимодействия пользователя и программы. Вся работа алгоритма скрыта от пользователя. Ему доступны только входной и выходной файлы.

Описание API библиотеки

Для автоматического генерирования документации было использовано средство встроенного документирования doxygen. В документации располагаются описания и комментарии к файлам исходного кода, классам, методам классов.

Создание и просмотр документации первый способ:

  1. Загрузите проект в виде архива Stemming-ru-master.zip на персональный компьютер, распакуйте архив и расположите его в корневом каталоге рабочего диска
  2. С помощью doxywizard откройте файл Doxyfile
  3. Необходимо, чтобы в Source code directory был указан путь к исходному коду программы
  4. Запустите doxygen во вкладке Run
  5. Просмотреть полученную документацию в браузере можно, нажав Show HTML output

Сборка и просмотр документации второй способ:

  1. Загрузите проект в виде архива Stemming-ru-master.zip на персональный компьютер, распакуйте архив и расположите его в корневом каталоге рабочего диска
  2. Откройте командную строку
  3. cd <путь к проекту>
  4. doxygen Doxyfile
  5. Откройте созданную папку index в каталоге проекта

Сборка проекта возможна с использованием утилиты CMake. Для сборки проекта введите следующую команду: cmake <root_repository_folder>

Детали реализации

При реализации проекта были созданы и использованы два класса:

  1. Класс, отвечающий за получение стема слова, то есть реализующий алгоритм.
  2. Класс, работающий с входным файлом. Этот же класс производит запись полученного результата в выходной файл.

Тестирование

Для тестирования стиля и синтаксиса кода поректа на C++ мы использовали утилиту cppcheck. Для проверки корректности работы проекта были использованы тесты, написанные при помощи инструмента QTest и утилиты QT VS Tools, с использованием библиотеки QT ver 5.7.0. При тестировании подается на вход текстовый файл, который содержит слово и его стем. Чтобы добавить/удалить тестируемые слова необходимо изменить текстовый файл в папке Test_data. Запуск тестовых функций происходит с помощью макроса QTEST_MAIN(). Тесты запускаются автоматически при компиляции проекта. Прежде чем запустить тестовое приложение, убедитесь, что выставлена корректная PATH-переменная QTDIR. Для запуска тестового приложения из командной строки, необходимо поменять в свойствах тестового проекта рабочий каталог на OutDir.

Ссылки и литература

Для выполнения данного проекта была использована информация из следующих источников:

  1. Russian stemming algorithm
  2. Стеммер Портера для русского языка, 2010
  3. Павел Пересторонин, Стеммер Портера для русского языка, 2015

About

Russian stemming procedure based on Porter's algorithm

License:MIT License


Languages

Language:C++ 77.8%Language:Shell 20.9%Language:CMake 1.3%