Разработка программных средств конвертирования HTML-текстов в семантические сети
выдает результаты (см. рисунок)Изучив предложенный текст, TextAnalyst формирует сеть наиболее значимых понятий, содержащихся в данном тексте. В такую включены те термины текста, которые несут основную смысловую нагрузку. Т.о. сеть позволяет отбросить несущественную информацию и представить содержание текста в сжатом виде. Каждое понятие, появляющееся множество раз в различных частях текста, в сети представлено единственным узлом. Различные формы слов для отображения в один узел сети представляются к общей грамматической форме.
Каждый элемент сети характеризуется числовой оценкой – смысловым весом. Связи между понятиями также характеризуются весами. Значение смыслового веса (от 1 до 100) показывает, насколько важную роль играет понятие для смысла всего текста, т.е. как много информации в тексте касается данного понятия. Максимальное значение, равное 100, говорит о том, что понятие является ключевым и представляет важнейшую тему текста. Маленькое, близкое к единице значение показывает, что соответствующая тема лишь вскользь упомянута в тексте и в нем очень мало информации, относящейся к данному понятию. Второе число, стоящее перед смысловым весом, ближе к раскрытому узлу, представляет вес связи от понятия в вершине раскрытого списка к данному. Большое значение веса связи (близкое к 100) указывает на то, что подавляющая часть информации в тексте, касающаяся первого, касается в то же время и второго понятия. Малое (близкое к 1) значение означает, что первое понятие слабо связано со вторым и очень мало информации по первой теме касается в тоже время и второй.
По умолчанию на экране отображаются понятия с весом не менее 5. Вид сети на экране можно настраивать, изменяя количество отображаемых понятий и связей, а также способ их сортировки.
TextAnalyst предоставляет услугу автоматического реферирования. Формируемый реферат содержит список наиболее информативных предложений текста. Это позволяет быстро ознакомиться с содержанием текста. Подробность реферата можно настраивать, изменяя количество формирующих его предложений. Каждое предложение характеризуется относительной степенью значимости во всем тексте.
В нашем примере реферат выглядит таким образом:
98 анализа содержания текста с автоматическим формированием семантической сети с гиперссылками - получения смыслового портрета текста в терминах основных понятий и их смысловых связей;
98
Цифры показывают степень значимости предложений в тексте. Значение веса, близкое к 100, означает, что данное предложение представляет важнейшую информацию, касающуюся главных понятий текста. Эти понятия в реферате выделяются цветом.
По умолчанию на экране отображаются предложения реферата с весами не менее 90.
Для рассматриваемого выше примераHTML-текста описания страницы Analyst фрагменты семантической сети выглядят следующим образом:
Принцип работы HTML-конвертора
Рассмотрим в качестве примера следующее подмножество HTML-языка, которое может быть задано следующими определениями:
HTML-text :: = HEAD BODY
HEAD :: = TITLE{HEAD}| META{HEAD}| LINK{HEAD}…
TITLE :: =
META :: =
KEYWORDS :: = …
BODY :: =
HTML-BODYHTML-BODY :: = PARAGRAPH{HTML-BODY} | TABLE {HTML-BODY} | LIST{HTML-BODY} | ANCHOR{HTML-BODY} | …
PARAGRAPH :: =
текст
TABLE :: =
TABLE-CELLS :: = STROKA{TABLE-CELLS} | …
STROKA :: =
CELL :: =
LIST :: =
- LIST-ATOM
LIST-ATOM :: = …
ANCHOR :: = TEXT
TEXT :: = …
LINK: = …
Синтаксическая диаграмма, соответствующая этим правилам выглядит следующим образом:
С теоретической точки зрения HTML – это простой язык программирования с контекстно-свободной грамматикой. Для анализа HTML-текстов можно использовать нисходящие распознаватели, реализуемые на базе метода рекурсивного спуска. Рассмотрим продукционно-фреймовый формализм представления знаний и разработку на его основе интеллектуальный HTML-конвертор.
Для начала необходимо задать регулярное отображение каждого правила спецификации HTML-конструкций в соответствующий объект базы знаний на уровне фрейма-прототипа. Система таких прототипов даст нам описание языка, а множество фреймов-экземпляров – спецификацию конкретных и синтаксически правильных HTML-текстов. Основные правила такого отображения таковы:
каждому концепту из левой части BNF-определения ставим в соответствие имя фрейма-прототипа;
альтернативам из правой части BNF-определения при этом должны соответствовать имена слотов этого фрейма;
для концептов-нетерминалов соответствующий слот должен иметь тип frame;
для концептов-терминалов соответствующие слоты будут, как правило, иметь тип numb или string;
рекурсия в BNF-определениях заменяется итерацией, а соответствующие слоты становятся множественными.
После применения данных правил к BNF-определениям языка HTML получим следующее множество фреймов-прототипов:
[html is_aprototype, if_added HTML();
HEADframe, restr_by head;
BODYframe, restr_by body ];
[head is_aprototype, if_added HEAD();
BODY{frame}, restr_by one_of {title, meta, …}];
[title is_aprototype, if_added TITLE();
BODYstring ];
[meta is_aprototype, if_added META();
BODYstring ];
………………….
[body is_aprototype, if_added BODY();
SENT{frame}, restr_by one_of {header, paragraph, table, …}];
[paragraph is_aprototype, if_added PARAGRAPH();
[LIST is_aprototype; ATOM{frame}, if_added LI() ];
BODYframe, restr_by text];
[table is_aprototype; if_added TABLE();
TAB{frame}, restr_by one_of {stroka,…};]
[stroka is_aprototype, if_added TR();
CELLS{frame}, restr_by one_of{cell,…}];
[cell is_aprototype, if_added TD();];
……………………
[anchor is_aprototype;
BODYframe, restr_by text];
……………………
[link is_aprototype;
URLframe, restr_by one_of {http,ftp,…}];
MAILframe, restr_by mail];
[url is_alink; without_slot MAIL];
[http is_aurl, if_added HTTP();
SERVERstring;
DIR{string};
FILEstring];
[ftp is_aurl, if_added FTP();
SERVERstring;
DIR{string};
FILEstring];
…………………………
В соответствии с приведенными фреймами-прототипами и синтаксическими диаграммами, можно специфицировать процедурную часть конвертора как систему демонов, присоединенных к фреймам или к их слотам.
Спецификация одного из таких демонов представлена ниже на языке Java:
public>
HEAD head=null;
BODY body-null;
………….
String keyword;
Public void HTML (String name) {
Super (name);
keyword=getToken();
if (keywordpareTo (“”) = =0 {
head = new HEAD (getNewName());
body = new BODY (getNewName());
};
keyword = getToken ();
if (keywordpareTo (“”)= =0) return;
}
…………………
Public void (String nam) {
Super (name);
Keword=getToken();
If (keyword compareTo (“
”) = = 0 {paragraph = new PARAGRAPH (getNewName());
header = new HEADER (getNewName());
table = new TABLE (getNewName());
};
keyword = getToken ();
if (keyword compareTo (“”) = = 0) return;
}
…………………………..
}
По существу, такой демон является конструктором класса HTML, а запуск конвертора осуществляется с помощью оператора создания нового объекта этого класса:
HTML currPage = new HTML (get_new_name());
При этом будут рекурсивно вызываться конструкторы других классов (на верхнем уровне это HEAD, BODY), что, в конечном счете, приведет к построению множества фреймов-экземпляров, представляющих анализируемую HTML-страницу.
Получение полезной в дальнейшем базы знаний предполагает дальнейшую семантическую интерпретацию фреймового представления и построение в конечном счете семантической сети, отражающей смысл исходного Интернет – документа.
Список использованных источников:
Т.А. Гаврилова, В.Ф. Хорошевский «Базы знаний интеллектуальных систем», учебник, Санкт-Петербург, «Питер», 2001
www.citforum
www.bur.oivta
www.analyst