4.4 Описание схемы работы системы

Схема работы системы представляет собой последовательность этапов, которую необходимо выполнить для классификации информационных сообщений СМИ.

Работу необходимо начать с загрузки информационных сообщений СМИ

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

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

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

По результатам классификации формируются рекомендации для принятия решений и отчеты. Отчеты сохраняются в текстовом файле формата doc.

При выборе завершающего режима работы системы произойдет выход из нее.

Схема работы системы представлена на рисунке 4.4.1.

Текст программы представлен в приложении Е.


Рисунок 4.4.1 – Схема работы системы


5 ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ АИС «КЛАССИФИКАТОР»

  5.1 Описание комплекса технических средств

АИС «Классификатор» реализована на базе ПЭВМ. ПЭВМ позволяет существенно повысить эффективность работы пользователя архитектурными и техническими возможностями. Решено использовать базовый комплект ПЭВМ типа IBM PC, технические характеристики которого позволяют решать все поставленные задачи.

При проектировании и функционировании системы используется базовый комплект ПЭВМ IBM PC, включающий следующие устройства:

- процессор Intel Seleron с тактовой частотой 2 ГГц;

- 256 Мбайт оперативной памяти;

- жесткий диск не менее 2 Гбайт;

- операционная система – Windows Me, 2000, XP;

- монитор SVGA;

- клавиатура стандартная русифицированная;

- мышь.

При эксплуатации оборудования пользователи должны руководствоваться следующими документами:

- инструкция по технике безопасности;

- руководство пользователя.

Необходимо соблюдать требования техники безопасности и следующие меры предосторожности:

1) не подключать и не отключать соединители электропитания при поданном напряжении в сеть;

2) не оставлять ЭВМ включенной без наблюдателя;

3) по окончанию работ отключать ПЭВМ от сети.


5.2 Инструкция по эксплуатации комплекса технических средств

Данная инструкция дает пользователю необходимое указание по использованию базового комплекта ПЭВМ IBM PC. К работе с ЭВМ допускаются лица, прошедшие инструктаж по технике безопасности при работе с электроустановками напряжением до 1000 В.

При эксплуатации ПЭВМ запрещается:

1) применять комплектующие изделия, носители данных и материалы, не указанные в эксплуатационной документации;

2) подключать устройства, использование которых не согласовано с изготовителем ПЭВМ;

3) извлекать электронные модули, отсоединять кабель интерфейса при подключенном электропитании любой из составных частей ПЭВМ;

4) снимать кожухи устройства, проводить какие-либо ремонтные работы.

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

К эксплуатации оборудования допускаются лица, работающие с АИС «Классификатор», которые могут не являться специалистами в области компьютерных технологий и программирования, а обладают лишь навыками работы с компьютером.

Решение задач осуществляется ПЭВМ под управлением операционной системы (ОС) Windows Me, 2000, XP. Подготовка к работе заключается в начальной загрузке в ОЗУ ПЭВМ ОС Windows. Начальная загрузка OC Windows выполняется автоматически в следующих случаях:

1) при включении электропитания компьютера;

2) при нажатии на клавишу RESET, которая находится на передней панели корпуса ПЭВМ;

3) при перезагрузке компьютера.

Чтобы выполнить загрузку системы, необходимы следующие действия:

1) включить стабилизатор напряжения (если необходимо);

2) включить (если необходимо) принтер;

3) включить монитор компьютера;

4) включить выключатель на корпусе системного блока.

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

После успешного окончания начальной загрузки можно перейти к решению задач пользователя.

При окончании работы программы необходимо:

1) закончить работу программ;

2) выключить принтер, если он включен;

3) выключить монитор компьютера, если необходимо;

4) выключить компьютер;

5) выключить стабилизатор напряжения.


ЗАКЛЮЧЕНИЕ

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

- создание информационной базы для автоматизированного процесса классификации статей к той или иной категории;

- загрузка информационных сообщений СМИ в базу;

- обработка текстовой и цифровой информации с использованием метода нечеткого поиска;

- классификация информационных сообщений с использованием метода ранжирования;

- открытость структуры рубрикатора и словаря, то есть возможность оперативной их корректировки;

- формирование рекомендаций для принятия решений;

- формирование отчетов.

Были сформулированы назначение и цели системы, поставлены задачи и определены функции.

Была разработана форма и представлено подробное описание структуры входных информационных сообщений СМИ и результатов классификации, используемых и получаемых в результате функционирования АИС «Классификатор». Была разработана структура организации базы для хранения информационных сообщений СМИ.

Была разработана математическая постановка задачи классификации информационных сообщений СМИ, а также описаны метод нечеткого поиска и метод ранжирования, применяемые при реализации требуемых функциональных характеристик АИС «Классификатор», была разработана схема работы системы.

Была рассчитана надежность системы на всех этапах ее развития.

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

- ведение информационной базы: формирование, добавление записи, изменение записи, удаление записи, сохранение записи, согласованное с работой всего объекта автоматизации;

- обработка информационных сообщений СМИ: открытие списка текстовых файлов в каталоге, открытие файла, считывание строки из файла, запись информационных сообщений СМИ в базу, закрытие файла;

- настройка параметров: определение каталога с файлами, задание расширения файлов с исходными данными, настройка расширения файлов, настройка параметров классификации;

- открытость структуры рубрикатора и словаря, то есть возможность оперативной их корректировки;

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

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


БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.         ГОСТ 2.105-95. ЕСКД. Общие требования к текстовым документам.

2.         ГОСТ Р50.1.028-2001. Методология функционального моделирования.

3.         ГОСТ 28195-89. Оценка качества программных средств.

4.         ГОСТ 19.102-77.ЕСПД. Стадии разработки.

5.         ГОСТ 19.402-78.ЕСПД. Описание программы.

6.         ГОСТ 12.1.005-88 Общие санитарно-гигиенические требования к воздуху в рабочей зоне.

7.         ГОСТ 19.701-90 Схемы алгоритмов, программ, данных и систем.

8.         ГОСТ 34.201-89 Информационная технология. Виды, комплектность и обозначение документов при создании автоматизированных систем.

9.         ГОСТ 34.602-89 Информационная технология. Техническое задание на создание автоматизированной системы.

10.       СанПиН 2.2.2/2.4.1340-03 Гигиенические требования к персональным электронно-вычислительным машинам и организации работы.

11.        Р.2.2.2006-05 Гигиенические критерии оценки условий труда по показателям вредности и опасности окружающей среды, тяжести и напряженности трудового процесса.

12.       СанПиН 2.2.548-96 Общие санитарно-гигиенические требования к воздуху в рабочей зоне.

13.       Андрейчиков А.В., Андрейчикова О.Н. Интеллектуальные информационные системы: Учебник. – М.: Финансы и статистика, 2004. – 424 с.: ил.

14.       Базы данных в Delphi 7. Самоучитель/ В. Понамарев. – СПб.: Питер, 2003. – 224 с.: ил.

15.       Башмаков А.И., Башмаков И.А. Интеллектуальные информационные технологии: Учеб. пособие. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2005. – 304 с.: ил.

16.       Бобровский С.И. Delphi 7. Учебный курс.– СПб.: Питер, 2003. – 736с.

17. Глушаков С.В., Клевцов А.Л. Программирование в среде Delphi 7. – Харьков: Фолио, 2003. – 528с.

18. Гофман В.Э., Хомоненко А.Д. Работа с базами данных в Delphi / В. - 2-е изд. – СПб.: БХВ – Петербург, 2002. – 624с.: ил.

19. Девятков В.В. Системы искусственного интеллекта: Учеб. пособие для вузов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. – 352 с.: ил.

20. Диго С.М. Проектирование баз данных: Учебник. – М.: Финансы и статистика, 1988. – 216с.

21. Дубнов П.Ю. Access 2000: Программирование баз данных. – М.: ДМК, 2000. – 272с.: ил.

22. Пономарев В. Базы данных в Delphi 7: Самоучитель. – М. и др.: Питер, 2003. – 224с.: ил.

23. Средства защиты в машиностроении: Расчет и проектирование: Справочник/С.В. Белов, А.Ф. Козьяков, О.Ф. Партолин и др.; Под ред. С.В. Белова. – М.: Машиностроение, 1989. – 368 с.: ил.

24. Типовые нормы времени на программирование задач для ЭВМ. – М.: Экономика, 1989.

25. http://google.ru/com/str.zip

26. http://google.ru//narod.ru/Hem/infon.zip


Приложение 1. Структура входных и выходных документов

Результаты классификации информационных сообщений СМИ

Код Наименование рубрики Название Текст Ключевые слова Результат

Отчет по результатам классификации статьи

Дата публикации:_________________

Файл публикации:________________

Название публикации:_____________

Ключевые слова:__________________

Автор публикации: ________________

Текст публикации: _______________

Код Наименование По названию По тексту По ключевым словам Результат

Отчет по обработанным статьям файла

Дата публикации: ____________________

Название публикации: ________________

Ключевые слова: _____________________

Автор публикации: ___________________

Текст публикации: ___________________

Сопоставленные рубрики: _______________


Приложение 2. Текст программы

unit uMain;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, Menus, OleServer, WordXP;

type

 TfrmMain = class(TForm)

 mnMain: TMainMenu;

 N1: TMenuItem;

 N2: TMenuItem;

 N3: TMenuItem;

 N4: TMenuItem;

 N5: TMenuItem;

 N6: TMenuItem;

 N7: TMenuItem;

 N8: TMenuItem;

 N9: TMenuItem;

 N10: TMenuItem;

 N11: TMenuItem;

 wa: TWordApplication;

 wd: TWordDocument;

 wf: TWordFont;

 N12: TMenuItem;

 procedure N2Click(Sender: TObject);

 procedure N3Click(Sender: TObject);

 procedure N5Click(Sender: TObject);

 procedure N7Click(Sender: TObject);

 procedure N9Click(Sender: TObject);

 procedure N11Click(Sender: TObject);

 procedure N12Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 frmMain: TfrmMain;

implementation

uses uInputModule, uClassify, uEditDictModule, uClassifySettings,

 uDataModule, uGetFileName, uEditPubl;

{$R *.dfm}

procedure TfrmMain.N2Click(Sender: TObject);

begin

 frmInputForm.ShowModal;

end;

procedure TfrmMain.N3Click(Sender: TObject);

begin

 frmClassify.ShowModal;

end;

procedure TfrmMain.N5Click(Sender: TObject);

begin

frmEditDict.ShowModal;

end;

procedure TfrmMain.N7Click(Sender: TObject);

begin

 frmClassifySettings.ShowModal;

end;

procedure TfrmMain.N9Click(Sender: TObject);

begin

 Close;

end;

procedure TfrmMain.N11Click(Sender: TObject);

var tmpl, Template, NewTemplate, ItemIndex: olevariant;

 ARange: Range;

 pars: Paragraphs;

 par: Paragraph;

 st: string;

 vcol: OleVariant;

 iStat: integer;

begin

 dmIAS.aqFiles.Close;

 dmIAS.aqFiles.Open;

 frmGetFileName.cbFiles.Items.Clear;

 frmGetFileName.cbFiles.Text:= dmIAS.aqFiles.FieldByName('file').AsString;

 while not dmIAS.aqFiles.Eof do

 begin

 frmGetFileName.cbFiles.Items.Add(dmIAS.aqFiles.FieldByName('file').AsString);

 dmIAS.aqFiles.Next;

 end;

 frmGetFileName.iMD:= 0;

 frmGetFileName.ShowModal;

 if (frmGetFileName.iMD = 0) or (frmGetFileName.cbFiles.Text = '')

 then exit;

 dmIAS.aqExe.Close;

 dmIAS.aqExe.SQL.Text:= 'Select * from qObrPubl where file = :file';

 dmIAS.aqExe.Parameters.ParamByName('file').Value:= frmGetFileName.cbFiles.Text;

 dmIAS.aqExe.Open;

 try

 wa.Connect;

 wa.Visible := True;

 except

 MessageDlg('А у Вас Word не установлен :(', mtError, [mbOk], 0);

 Abort;

 end;

 ItemIndex:= 1;

 Template:= EmptyParam;

 NewTemplate := False;

 // Создание документа

 wa.Documents.Add(Template, NewTemplate, EmptyParam, EmptyParam) ;

 wd.ConnectTo(wa.Documents.Item(ItemIndex));

 wd.PageSetup.Set_Orientation(wdOrientLandscape);

 wa.Options.CheckSpellingAsYouType := False;

 wa.Options.CheckGrammarAsYouType := False;

 ARange:= wd.Range(EmptyParam, EmptyParam);

 pars:= wd.Paragraphs;

 tmpl:= ARange;

 par:= pars.Add(tmpl);

 wf.ConnectTo(wd.Sentences.Get_Last.Font);

 wd.Range.Paragraphs.Set_Alignment(wdAlignParagraphLeft);

 wa.Selection.Font.Bold:= 1;

 wa.Selection.Font.Size:= 16;

 st:= 'Отчет по обработанным статьям файла ' + frmGetFileName.cbFiles.Text;

 wa.Selection.InsertAfter(st+#13);

 wa.Selection.InsertAfter(' '+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 iStat:= -1;

 while not dmIAS.aqExe.Eof do

 begin

 if iStat <> dmIAS.aqExe.FieldByName('id_publ').AsInteger

 then

 begin

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 wa.Selection.Font.Bold:= 0;

 wa.Selection.Font.Size:= 14;

 wa.Selection.InsertAfter(' '+#13);

 wa.Selection.InsertAfter(' '+#13);

 st:= 'Дата публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 if (dmIAS.aqExe.FieldByName('data').AsString = '30.12.1899')

 then st:= ' '

 else st:= dmIAS.aqExe.FieldByName('data').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Название публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.aqExe.FieldByName('name_publ').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Ключевые слова: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.aqExe.FieldByName('keywords').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Автор публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.aqExe.FieldByName('author').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Текст публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.aqExe.FieldByName('text_publ').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Сопоставленные рубрики:';

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.aqExe.FieldByName('indx').AsString

 + ' '

 + dmIAS.aqExe.FieldByName('name_r').AsString;

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 iStat:= dmIAS.aqExe.FieldByName('id_publ').AsInteger;

 end

 else

 begin

 wa.Selection.InsertAfter(' '+#13);

 st:= dmIAS.aqExe.FieldByName('indx').AsString

 + ' '

 + dmIAS.aqExe.FieldByName('name_r').AsString;

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 end;

 dmIAS.aqExe.Next;

 end;

 wa.Disconnect;

end;

procedure TfrmMain.N12Click(Sender: TObject);

begin

 frmEditPubl.ShowModal;

end;

end.

unit uFuzzySearch;

interface

 function IndistinctMatching(MaxMatching:Integer; strInputMatching:WideString; strInputStandart:WideString):Integer;

implementation

uses SysUtils;

type

 TRetCount = packed record

 lngSubRows : Word;

 lngCountLike : Word;

 end;

function Matching(StrInputA:WideString; StrInputB:WideString; lngLen:Integer):TRetCount;

Var

 TempRet : TRetCount;

 PosStrB : Integer;

 PosStrA : Integer;

 StrA : WideString;

 StrB : WideString;

 StrTempA : WideString;

 StrTempB : WideString;

begin

 StrA := String(StrInputA);

 StrB := String(StrInputB);

 For PosStrA:= 1 To Length(strA) - lngLen + 1 do

 begin

 StrTempA:= System.Copy(strA, PosStrA, lngLen);

 For PosStrB:= 1 To Length(strB) - lngLen + 1 do

 begin

 StrTempB:= System.Copy(strB, PosStrB, lngLen);

 If SysUtils.AnsiCompareText(StrTempA,StrTempB) = 0 Then

 begin

 Inc(TempRet.lngCountLike);

 break;

 end;

 end;

 Inc(TempRet.lngSubRows);

 end; // PosStrA

 Matching.lngCountLike:= TempRet.lngCountLike;

 Matching.lngSubRows := TempRet.lngSubRows;

end; { function }

//------------------------------------------------------------------------------

function IndistinctMatching(MaxMatching:Integer; strInputMatching:WideString; strInputStandart:WideString):Integer;

Var

 gret : TRetCount;

 tret : TRetCount;

 lngCurLen: Integer ; //текущая длина подстроки

begin

 //если не передан какой-либо параметр, то выход

 If (MaxMatching = 0) Or (Length(strInputMatching) = 0) Or

 (Length(strInputStandart) = 0) Then

 begin

 IndistinctMatching:= 0;

 exit;

 end;

 gret.lngCountLike:= 0;

 gret.lngSubRows := 0;

 // Цикл прохода по длине сравниваемой фразы

 For lngCurLen:= 1 To MaxMatching do

 begin

 //Сравниваем строку A со строкой B

 tret:= Matching(strInputMatching, strInputStandart, lngCurLen);

 gret.lngCountLike := gret.lngCountLike + tret.lngCountLike;

 gret.lngSubRows := gret.lngSubRows + tret.lngSubRows;

 //Сравниваем строку B со строкой A

 //tret:= Matching(strInputStandart, strInputMatching, lngCurLen);

 //gret.lngCountLike := gret.lngCountLike + tret.lngCountLike;

 //gret.lngSubRows := gret.lngSubRows + tret.lngSubRows;

 end;

 If gret.lngSubRows = 0 Then

 begin

 IndistinctMatching:= 0;

 exit;

 end;

 IndistinctMatching:= Trunc((gret.lngCountLike / gret.lngSubRows) * 100);

end;

end.

unit uClassify;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, ExtCtrls, Mask, DBCtrls, Grids, DBGridEh, ComCtrls,

 WordXP, OleServer;

type

 TfrmClassify = class(TForm)

 Panel1: TPanel;

 Panel2: TPanel;

 Label1: TLabel;

 DBNavigator1: TDBNavigator;

 dbmText: TDBMemo;

 Panel3: TPanel;

 Label7: TLabel;

 Button2: TButton;

 Panel4: TPanel;

 Label6: TLabel;

 Label3: TLabel;

 dbAuthor: TDBEdit;

 Label2: TLabel;

 dbDate: TDBEdit;

 Label4: TLabel;

 dbName: TDBEdit;

 Label5: TLabel;

 dbKeywords: TDBEdit;

 pbClassify: TProgressBar;

 dbgClassify: TDBGridEh;

 Button1: TButton;

 Label8: TLabel;

 dbFile: TDBEdit;

 lblCountArticles: TLabel;

 Button3: TButton;

 wd: TWordDocument;

 wa: TWordApplication;

 wf: TWordFont;

 procedure SetDBElemColor(flColor: boolean);

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 procedure FormShow(Sender: TObject);

 procedure Button3Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 frmClassify: TfrmClassify;

implementation

uses uDataModule, uFuzzySearch, uClassifySettings, uStructs;

{$R *.dfm}

procedure TfrmClassify.SetDBElemColor(flColor: boolean);

begin

 if frmClassify = nil

 then exit;

 if flColor

 then

 begin

 dbName.Color:= clMoneyGreen;

 dbKeywords.Color:= clMoneyGreen;

 dbmText.Color:= clMoneyGreen;

 end

 else

 begin

 dbName.Color:= clWindow;

 dbKeywords.Color:= clWindow;

 dbmText.Color:= clWindow;

 end;

end;

procedure TfrmClassify.Button1Click(Sender: TObject);

var id_publ, id_rubr, level,

 Name_cnt, Text_cnt, Key_cnt, im,

 iNamePorog12, iTextPorog12, iKeyPorog12,

 iNamePorog23, iTextPorog23, iKeyPorog23,

 iFuzzyPorog: integer;

 stWord, res: string;

 function GetRes(NameCnt, TextCnt, KeyCnt: integer): String;

 begin

 if (NameCnt < iNamePorog12)

 and (TextCnt < iTextPorog12)

 and (KeyCnt < iKeyPorog12)

 then result:= '-'

 else

 if (NameCnt >= iNamePorog23)

 or (TextCnt >= iTextPorog23)

 or (KeyCnt >= iKeyPorog23)

 then result:= '+'

 else result:= '?';

 end;

begin

 // Устанавливаем пороги срабатывания

 iNamePorog12:= frmClassifySettings.GetNamePorog(12);

 iTextPorog12:= frmClassifySettings.GetTextPorog(12);

 iKeyPorog12:= frmClassifySettings.GetKeyPorog(12);

 iNamePorog23:= frmClassifySettings.GetNamePorog(23);

 iTextPorog23:= frmClassifySettings.GetTextPorog(23);

 iKeyPorog23:= frmClassifySettings.GetKeyPorog(23);

 iFuzzyPorog:= frmClassifySettings.GetFuzzyPorog;

 // Начинаем классификацию

 dmIAS.aqDict.Close;

 dmIAS.aqDict.Open;

 dmIAS.TruncClassify;

 pbClassify.Position:= 0;

 pbClassify.Max:= dmIAS.atPublikatsii.RecordCount * (dmIAS.aqDict.RecordCount+1);

 with dmIAS.atPublikatsii do

 begin

 First;

 while not Eof do

 begin

 id_publ:= FieldByName('id_publ').AsInteger;

 Name_cnt:= 0;

 Text_cnt:= 0;

 Key_cnt:= 0;

 dmIAS.aqDict.First;

 id_rubr:= dmIAS.aqDict.FieldByName('id').AsInteger;

 level:= dmIAS.aqDict.FieldByName('level').AsInteger;

 while not dmIAS.aqDict.Eof do

 begin

 // Классифицируем по словарю для каждой рубрики

 if id_rubr <> dmIAS.aqDict.FieldByName('id').AsInteger

 then

 begin

 res:= GetRes(Name_cnt, Text_cnt, Key_cnt);

 dmIAS.InsertClassify(id_publ, id_rubr, level, Name_cnt,

 Text_cnt, Key_cnt, res);

 id_rubr:= dmIAS.aqDict.FieldByName('id').AsInteger;

 level:= dmIAS.aqDict.FieldByName('level').AsInteger;

 Name_cnt:= 0;

 Text_cnt:= 0;

 Key_cnt:= 0;

 end;

 stWord:= AnsiUpperCase(dmIAS.aqDict.FieldByName('Word').AsString);

 // Классификация по наименованию

 im:= IndistinctMatching(length(stWord),

 stWord,

 AnsiUpperCase(FieldByName('name_publ').AsString));

 if im > iFuzzyPorog

 then Inc(Name_cnt);

 // Классификация по тексту

 im:= IndistinctMatching(length(stWord),

 stWord,

 AnsiUpperCase(FieldByName('text_publ').AsString));

 if im > iFuzzyPorog

 then Inc(Text_cnt);

 // Классификация по ключевым словам

 im:= IndistinctMatching(length(stWord),

 stWord,

 AnsiUpperCase(FieldByName('keywords').AsString));

 if im > iFuzzyPorog

 then Inc(Key_cnt);

 dmIAS.aqDict.Next;

 pbClassify.StepIt;

 Application.ProcessMessages;

 end;

 res:= GetRes(Name_cnt, Text_cnt, Key_cnt);

 dmIAS.InsertClassify(id_publ, id_rubr, level, Name_cnt,

 Text_cnt, Key_cnt, res);

 Next;

 pbClassify.StepIt;

 Application.ProcessMessages;

 end;

 end;

 dmIAS.aqClassify.Close;

 dmIAS.atPublikatsii.First;

 dmIAS.aqClassify.Open;

 Application.ProcessMessages;

 ShowMessage('Классификация успешно завершена.');

end;

procedure TfrmClassify.Button2Click(Sender: TObject);

var i, i_rubr, level: integer;

begin

 if dbgClassify.SelectedRows.Count = 0

 then

 begin

 ShowMessage('Не выбрано ни одной записи!');

 exit;

 end;

 // Удалить все записи из Publ_Rubr для данной статьи

 dmIAS.DeleteFromPublRubr(dmIAS.atPublikatsii.FieldByName('id_publ').AsInteger);

 // Записать в Publ_Rubr все выбранные рубрики для данной статьи

 for i:= 0 to dbgClassify.SelectedRows.Count-1 do

 begin

 dbgClassify.DataSource.DataSet.GotoBookmark(Pointer(dbgClassify.SelectedRows.Items[i]));

 i_rubr:= dbgClassify.DataSource.DataSet.FieldByName('id').AsInteger;

 level:= dbgClassify.DataSource.DataSet.FieldByName('level_r').AsInteger;

 dmIAS.InsertIntoPublRubr(dmIAS.atPublikatsii.FieldByName('id_publ').AsInteger,

 i_rubr,

 level);

 end;

 dbgClassify.DataSource.DataSet.GotoBookmark(Pointer(dbgClassify.SelectedRows.Items[0]));

 ShowMessage('Соответствующие статье рубрики сохранены.');

 dmIAS.atObrPublikatsii.Close;

 dmIAS.atObrPublikatsii.Open;

 dmIAS.atCountObrPublikatsii.Close;

 dmIAS.atCountObrPublikatsii.Open;

 lblCountArticles.Caption:= 'Всего в базе: '

 + IntToStr(dmIAS.atPublikatsii.RecordCount)

 + ' статей. '

 + ' Классифицировано '

 + IntToStr(dmIAS.atCountObrPublikatsii.RecordCount)

 + ' статей.';

end;

procedure TfrmClassify.FormCreate(Sender: TObject);

begin

 frmClassifySettings.SetNamePorog(2, 12);

 frmClassifySettings.SetTextPorog(3, 12);

 frmClassifySettings.SetKeyPorog(2, 12);

 frmClassifySettings.SetNamePorog(4, 23);

 frmClassifySettings.SetTextPorog(6, 23);

 frmClassifySettings.SetKeyPorog(4, 23);

 frmClassifySettings.SetFuzzyPorog(50);

 frmClassifySettings.SetflShowAll(true);

end;

procedure TfrmClassify.FormShow(Sender: TObject);

begin

{ if frmClassifySettings.GetflShowAll

 then // Показывать все статьи

 with dmIAS.atPublikatsii do

 begin

 Close;

 SQL.Text:= stSelectAllPubl;

 Open;

 end

 else // Показывать необработанные статьи

 with dmIAS.atPublikatsii do

 begin

 Close;

 SQL.Text:= stSelectNeobrPubl;

 Open;

 end;}

 lblCountArticles.Caption:= 'Всего в базе: '

 + IntToStr(dmIAS.atPublikatsii.RecordCount)

 + ' статей. '

 + ' Классифицировано '

 + IntToStr(dmIAS.atCountObrPublikatsii.RecordCount)

 + ' статей.';

end;

procedure TfrmClassify.Button3Click(Sender: TObject);

var tmpl, Template, NewTemplate, ItemIndex: olevariant;

 ARange: Range;

 pars: Paragraphs;

 par: Paragraph;

 tbls: Tables;

 tbl1: Table;

 st: string;

 vcol: OleVariant;

 i: integer;

begin

 try

 wa.Connect;

 wa.Visible := True;

 except

 MessageDlg('А у Вас Word не установлен :(', mtError, [mbOk], 0);

 Abort;

 end;

 ItemIndex:= 1;

 Template:= EmptyParam;

 NewTemplate := False;

 // Создание документа

 wa.Documents.Add(Template, NewTemplate, EmptyParam, EmptyParam) ;

 wd.ConnectTo(wa.Documents.Item(ItemIndex));

 wd.PageSetup.Set_Orientation(wdOrientLandscape);

 wa.Options.CheckSpellingAsYouType := False;

 wa.Options.CheckGrammarAsYouType := False;

 ARange:= wd.Range(EmptyParam, EmptyParam);

 pars:= wd.Paragraphs;

 tmpl:= ARange;

 par:= pars.Add(tmpl);

 wf.ConnectTo(wd.Sentences.Get_Last.Font);

 wd.Range.Paragraphs.Set_Alignment(wdAlignParagraphLeft);

 wa.Selection.Font.Bold:= 1;

 wa.Selection.Font.Size:= 16;

 st:= 'Отчет по результатам классификации статьи ';

 wa.Selection.InsertAfter(st+#13);

 wa.Selection.InsertAfter(' '+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 wa.Selection.Font.Bold:= 0;

 wa.Selection.Font.Size:= 14;

 st:= 'Дата публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 if (dmIAS.atPublikatsii.FieldByName('data').AsString = '30.12.1899')

 then st:= ' '

 else st:= dmIAS.atPublikatsii.FieldByName('data').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Файл публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.atPublikatsii.FieldByName('file').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Название публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.atPublikatsii.FieldByName('name_publ').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Ключевые слова: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.atPublikatsii.FieldByName('keywords').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Автор публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.atPublikatsii.FieldByName('author').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= 'Текст публикации: ';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 st:= dmIAS.atPublikatsii.FieldByName('text_publ').AsString;

 wa.Selection.InsertAfter(st+#13);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 wa.Selection.InsertAfter(' '+#13);

 st:= 'Результаты классификации:';

 wa.Selection.InsertAfter(st);

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 ARange:= wd.Sentences.Last;

 tbls:= ARange.Tables;

 tbl1:= tbls.Add(ARange,

 dmIAS.aqClassify.RecordCount+1, // число строк

 6, // число столбцов

 EmptyParam,

 EmptyParam);

 tbl1.Cell(1, 1).Range.Text:= 'Код';

 tbl1.Cell(1, 2).Range.Text:= 'Наименование';

 tbl1.Cell(1, 3).Range.Text:= 'По назв.';

 tbl1.Cell(1, 4).Range.Text:= 'По тексту';

 tbl1.Cell(1, 5).Range.Text:= 'По кл.сл.';

 tbl1.Cell(1, 6).Range.Text:= 'Результат';

 i:= 2;

 dmIAS.aqClassify.First;

 while not dmIAS.aqClassify.Eof do

 begin

 tbl1.Cell(i, 1).Range.Text:= dmIAS.aqClassify.FieldByName('indx').AsString;

 tbl1.Cell(i, 2).Range.Text:= dmIAS.aqClassify.FieldByName('name_r').AsString;

 tbl1.Cell(i, 3).Range.Text:= dmIAS.aqClassify.FieldByName('name_cnt').AsString;

 tbl1.Cell(i, 4).Range.Text:= dmIAS.aqClassify.FieldByName('text_cnt').AsString;

 tbl1.Cell(i, 5).Range.Text:= dmIAS.aqClassify.FieldByName('key_cnt').AsString;

 tbl1.Cell(i, 6).Range.Text:= dmIAS.aqClassify.FieldByName('res').AsString;

 dmIAS.aqClassify.Next;

 Inc(i);

 end;

 vcol := wdCollapseEnd;

 wa.Selection.Collapse(vcol);

 wa.Disconnect;

 dmIAS.aqClassify.First;

end;

end.


Информация о работе «Автоматизированная интеллектуальная система классификации информационных сообщений средств массовой информации»
Раздел: Информатика, программирование
Количество знаков с пробелами: 73358
Количество таблиц: 15
Количество изображений: 7

Похожие работы

Скачать
344059
1
0

... мероприятия по новому месту работы, жительства; также в окружении носителей коммерческих секретов. Персонал оказывает су­щественное, а в большинстве случаев даже решающее влияние на информационную безопасность банка. В этой связи подбор кадров, их изучение, рас­становка и квалифицированная работа при увольнени­ях в значительной степени повышают устойчивость коммерческих предприятий к возможному ...

Скачать
83570
0
0

... ; однако, чтобы выполнять предназначенную ему роль, сам модуль также нуждается в защите, как собственными средствами, так и средствами окружения (например, операционной системы). Стандарт шифрования DES Также к стандартам информационной безопасности США относится алгоритм шифрования DES, который был разработан в 1970-х годах, и который базируется на алгоритме DEA. Исходные идеи алгоритма ...

Скачать
49153
0
1

... не производится. Рис. 1.1. Классификация информационных систем Основываясь на степени автоматизации информационных процессов в системе управления фирмой, информационные системы делятся на ручные, автоматические и автоматизированные. Ручные ИС характеризуются отсутствием современных технических средств переработки информации и выполнением всех операций человеком. В автоматических ИС все ...

Скачать
58238
1
7

... средства защиты должны строиться с учетом их сопряжения с ее аппаратными и программными средствами. В целях перекрытия возможных каналов НСД к информации ЭВМ, кроме упомянутых, могут быть применены и другие методы и средства защиты. При использовании ЭВМ в многопользовательском режиме необходимо применить в ней программу контроля и разграничения доступа. Существует много подобных программ, ...

0 комментариев


Наверх