Программа частотного словаря сочетаний слов

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

if A[M] > X then:=RecurceFind (L, M - 1)

else:=RecurceFind (M + 1, R)

end;

 

begin:=RecurceFind (Low(A), High(A));

end;

Выбор алгоритма двоичного поиска обусловлен простотой и быстродействием по сравнению с приведенным выше алгоритмом линейного поиска.

 

2.Описание использованных структур данных

 

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

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя - двумерными и т.д. Одномерный массив нестрого соответствует вектору в математике, двумерный - матрице.

 

Рис. 2.1. Схематическое изображение двумерного массива

 

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

 

3.Описание процедур и функций procedureTForm1. Button1Click (Sender: TObject)

 

Данная процедура позволяет выбрать файл для работы из файловой системы Windows. При этом открывается диалоговое окно с каталогом. Делается это с помощью переменной типа TOpenDialog. Свойство Filter позволило создать ограничение на открытие файлов. Программа открывает только файлы с расширением.txtи.rtf. Путь к выбранному файлу записывается в глобальную переменную Failтипа String, после чего открывается файл по указанному пути, и содержание файла копируется в поле МЕМО1.

procedure TForm1. Button2Click (Sender: TObject):

ДаннаяпроцедуранаподобииprocedureTForm1. Button1Click (Sender:TObject) открывает файл настройки с разделителями и выводит его в MEMO3.

procedureTForm1. Button3Click (Sender: TObject):

Данная процедура выполняет основную задачу программы - создает словарь. На первом этапе работы процедуры создается массив разделителей razd, получаемый из поля MEMO3. Затем текст из MEMO1 построчно считывается в переменную строкового типа s. Если какой-либо символ этой строки оказывается равным одному из разделителей, то слово записывается в массив строк slova, где каждому слову соответствует один из элементов массива. Далее из пар элементов массива slova формируется массив frazi, элементами которого являются все словосочетания текста. После этого запускается алгоритм поиска одинаковых словосочетаний. При наличии некоторого числа одинаковых элементов в массиве fraziпроисходит удаление всех одинаковых элементов за исключением проверяемого и увеличение счетчика на количество найденных элементов. После обхода по всему массиву в проверяемый элемент дописывается значение счетчика, отображающее частоту употребления словосочетания в тексте и переход к проверке следующего словосочетания. Далее происходит сортировка (методом перестановок) полученного словаря по алфавиту.

На входе процедуры подается текст из MEMO1. На выходе в MEMO2 выводится отсортированный словарь вида .

procedure TForm1. Button4Click (Sender: TObject):

Данная процедура позволяет сохранять полученный ранее словарь в текстовой файл. В ней также открывается диалоговое окно с каталогом файловой системы. Используется переменная типа TSaveDialog. Путь к файлу записывается в переменную Slvrтипа String. Информация для записи в файл берется из поля MEMO2.

procedureTForm1. Button5Click (Sender: TObject):

Данная процедура выполняет сортировку словаря методом перестановок. Если значение свойстваIndexItemкомпонента RadioGroupравно 0, то словарь сортируется по алфавиту, иначе по частоте.

procedure TForm1. Button6Click (Sender: TObject)):

Данная процедура осуществляет двоичный поиск по словарю. На входе подается словарь frazi, на выходе в Labelзаписывается результат поиска.

 

4.Описание структуры приложения и интерфейса пользователя

 

Задача была реализована на языке Delphiв интегрированной среде Embarcadero RAD Studio XE2. Приложение состоит из одного модуля Unit1. В основной форме данной программы определены три компонента текстового ввода, кнопка открытия файла, кнопка открытия файла с настройками, кнопка создания словаря, кнопка сохранения словаря и поле для ввода слов для поиска (рис. 4.1)

 

Рис. 4.1. Главное окно программы

 

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

 

Рис. 4.2. Ввод обрабатываемого текста и списка разделителей.

 

После этого можно будет нажать кнопку Пуск! и в поле Частотный словарь словосочетаний появится информация (рис. 4.3).

 

Рис. 4.3. Составленный словарь словосочетаний

 

Полученный словарь можно отсортировать по частоте или по алфавиту, выбрав соответствующий пункт в поле Сортировка словаря инажав кнопку Сортировка (рис. 4.4).

Рис. 4.4. Сортировка по частоте

 

Поиск словосочетания по словарю осуществляется путем ввода в поле Поиск требуемой фразы и клика н?/p>