E-mail:
Пароль:
Забыли пароль?

Обработка текстов на естественном языке

«Открытые системы», № 12, 2003 г.

Константин Селезнёв

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

Компьютерная лингвистика – это раздел науки, изучающий применение математических моделей для описания лингвистических закономерностей. Эту область можно разделить на две большие части. Первая изучает способы применения вычислительной техники в лингвистических исследованиях – применение известных математических подходов (например, статистической обработки) для выявления закономерностей. Данные закономерности используются второй частью компьютерной лингвистики, изучающей вопросы осмысления текстов, написанных на естественном языке – создание математических моделей для решения лингвистических задач и разработка программного обеспечения, функционирующего на основе этих моделей. Вторая часть компьютерной лингвистики тесно соприкасается с разделом искусственного интеллекта, занимающимся разработкой систем обработки текстов, написанных на естественном языке (NLP, Natural Language Processing).

Наиболее общая схема обработки текстов (рис. 1) инвариантна по отношению к выбору естественного языка – независимо от того, на каком языке написан исходный текст, его анализ будет проходить все указанные стадии. Первые две стадии (разбиение текста на отдельные предложения и слова) практически одинаковы для большинства естественных языков. Единственное, где могут проявляться черты, специфичные для выбранного языка – это обработка сокращений слов и обработка знаков препинания (точнее, определение того, какие из знаков препинания являются концом предложения, а какие нет).

общая схема обработки текста

Рис 1. Общая схема обработки текста

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

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

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

АНАЛИЗ ОТДЕЛЬНЫХ СЛОВ

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

Существует три основных подхода к проведению морфологического анализа. Первый подход часто называется «четкой» морфологией. Для русского языка он основан на словаре А.А. Зализняка [2]. Второй подход основывается на некоторой системе правил, которые по заданному слову определяют его морфологические характеристики. В противоположность первому подходу, его называют «нечеткой» морфологией [3]. Третий, вероятностный подход, основан на сочетаемости слов с конкретными морфологическими характеристиками [4]. Он широко применяется при обработке аналитичных языков со строго фиксированным порядком слов в предложении и практически неприменим при обработке текстов на русском языке. Рассмотрим каждый из указанных способов морфологического анализа более подробно.

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

При таком подходе получается, что для проведения морфологического анализа заданного слова (рис. 2) необходимо просто найти его в словаре, где уже хранятся точные, «окончательно известные» значения всех морфологических характеристик заданного слова. Возможно, что для одного и того же входного слова будут храниться сразу несколько вариантов значений его морфологических характеристик.

Морфологический анализ на основе словаря Зализняка

Рис 2. Морфологический анализ на основе словаря Зализняка

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

Целью морфемного анализа слова является разделение слова на отдельные лексемы: приставки, корни, суффиксы и окончания (рис.3). В словаре морфем русского языка [5, 6] указанно разделение каждого слова на отдельные части, но не указаны типы каждой из получившихся частей (какая из них является приставкой, какая корнем и т.д.). Известно, что множество всех корней слов русского языка открыто, но множество всех возможных приставок, суффиксов и окончаний – ограничено. Кроме того, известно, что в любом слове сначала идут приставки, затем корни, далее суффиксы и окончание. Поэтому на основе словаря морфем русского языка можно построить другой словарь, который будет содержать не только разбиение каждого слова на части, но и тип каждой из них. В таком случае, для проведения морфемного анализа слова необходимо обратится к этому словарю. Подобная задача также решена.

 Морфемный анализ

Рис 3. Морфемный анализ

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

Вернемся к морфологическому анализу слова в той ситуации, когда не удалось определить характеристики слова с помощью методов точной морфологии, но удалось расчленить слово на отдельные части. Наличие тех или иных лексем может определять морфологические характеристики этого слова – можно построить систему правил, которая будет опираться на наличие или отсутствие каких-либо частей и выдавать одно или несколько предположений о морфологических параметрах. Данный набор правил можно построить двумя способами. Первый основан на морфемном анализе слов, содержащихся в словаре всех словоформ, и их морфологических характеристик. Рассмотрим эту задачу более формально: известны пары значений, состоящие из морфемного строения слова и его морфологических характеристик. Это есть не что иное, как «вход» и «выход» системы правил, которая по морфемному строению слова будет определять его морфологические характеристики. Задача построения такой системы правил может быть решена с помощью самообучающейся системы некоторого типа (Рис.4). В данном случае могут быть использованы деревья решений, ILP (Inductive Logic Programming) и прочие алгоритмы.

Неточный морфологический анализ

Рис 4. Неточный морфологический анализ

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

Вероятностный способ [7] проведения морфологического анализа слов заключается в следующем. Одна и та же словоформа может принадлежать сразу к нескольким грамматическим классам. Для каждой словоформы определяются все ее грамматические классы, а также вероятность ее отношения к каждому из этих классов. Это происходит на основе некоторого набора документов, где каждому слову предварительно поставлен в соответствие грамматический класс. После этого вычисляются вероятности сочетаний определенных грамматических классов для слов, стоящих рядом (для двоек, троек, четверок и так далее). На основе этих чисел может проводиться анализ слов, но для него необходимо уже не только само слово, но и стоящие рядом с ним слова.

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

АНАЛИЗ ОТДЕЛЬНЫХ ПРЕДЛОЖЕНИЙ

После того, как произведен анализ каждого слова, начинается анализ отдельных предложений (синтаксический анализ) для определения взаимосвязей между отдельными словами и частями предложения (Рис. 5). Результатом такого анализа является граф, узлами которого выступают слова предложения, при этом, если два слова связаны каким-либо образом, то соответствующие им вершины графа связаны дугой с определенной окраской. Возможные окраски дуг зависят, во-первых, от языка, на котором написано предложение, во-вторых, от выбранного способа представления синтаксической структуры предложения.

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

Пример синтаксического анализа предложения

Рис 5. Пример синтаксического анализа предложения

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

Возможны и другие способы представления зависимостей между словами в одном предложении (например, разбор предложения по частям и выделение подлежащего, сказуемого и так далее). На основе системы этих зависимостей могут быть разработаны несколько иные способы представления синтаксической структуры предложения [8].

Перейдем теперь к методам синтаксического анализа предложений. Их можно разделить на две группы: методы с фиксированным, заранее заданным набором правил и самообучающиеся методы. Заметим, что правила представляются не в виде классических продукций («если …, то …»), а в более удобном виде – в виде грамматик, задающих синтаксис языка. Исторически, первым способом описания синтаксиса языка были формальные грамматики [9]. Они задаются в виде четырех компонентов: множества терминальных символов, множества нетерминальных символов, правил вывода и начального символа. Формальные грамматики хорошо изучены и широко применяются при описании формальных языков (например, языков программирования), но они непригодны для описания синтаксиса естественных языков.

Трансформационные грамматики [9] разрабатывались уже специально для задания синтаксических правил построения предложений, написанных на естественном языке. Эти грамматики задаются в виде ориентированного графа состояний, всем дугам которого поставлены в соответствие определенные части речи. В начале работы алгоритм синтаксического анализа находится в некотором начальном состоянии, которому соответствует некоторая вершина графа. Алгоритм просматривает предложение слева направо, анализирует встречающиеся слова и делает переходы из одного состояния в другое в соответствии с выходящими из текущей вершины дугами и очередным словом предложения. Работа заканчивается либо когда предложение просмотрено полностью, либо когда невозможно сделать переход из текущего состояния (нет выходящей дуги с необходимой пометкой).

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

Вероятностные грамматики [7] являются расширением формальных и отличаются от них в следующем: каждому правилу построения указана некоторая вероятность применения этого правила при построении предложения. После того, как произведен синтаксический анализ предложения известно, на основе каких правил было построено это предложение и на основе сопоставленных с ними вероятностей может быть посчитана «суммарная» вероятность. Очевидно, что одно и то же предложение может быть разобрано несколькими способами. Для каждого из них считается его «суммарная» вероятность и выбирается наиболее вероятный способ построения предложения. Этот метод способен анализировать неправильно построенные предложения, но он, как и два предыдущих способа анализа, включает в себя систему заранее задаваемых правил.
Синтаксический анализ на основе обучающихся систем – это пока еще малоизученный подход. Он заключается в следующем: разрабатывается некоторое множество примеров, каждый из которых содержит пару: исходное предложение и результат его синтаксического анализа. Этот результат вводится человеком, занимающимся обучением системы, в ответ на каждое подаваемое на вход предложение. Затем, при подаче на вход предложения, не входящего в список примеров, система сама генерирует результат. В качестве подхода к реализации такой обучающейся системы используются ряд способов: нейронные сети, деревья вывода, ILP и методы поиска ближайшего соседа.

Это далеко не весь спектр методов синтаксического анализа. Удовлетворительных решений данного вопроса пока еще не найдено, хотя есть методы, дающие неплохие результаты, но работающие только на подмножестве языка [8]. Решение задачи синтаксического анализа текста должно послужить основой, во-первых, для построения более совершенных синтаксических корректировщиков (программных средств, проверяющих правильность построения предложения) и, во-вторых, для построения алгоритмов более качественного семантического анализа текстов.

СЕМАНТИЧЕСКИЙ АНАЛИЗ

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

Большинство методов семантического анализа должны, так или иначе, работать со смыслом слов, а, следовательно, должна быть какая-то общая для всех методов анализа база, позволяющая выявлять семантические отношения между словами. Такой основой является тезаурус языка. На математическом уровне он представляет собой ориентированный граф, узлами которого являются слова (в их основной словоформе). Дуги задают отношения между словами и могут иметь следующие окраски.

  1. Синонимия. Слова, связанные дугой с такой окраской являются синонимами.
  2. Антонимия. Слова, связанные дугой с такой окраской являются антонимами.
  3. Гипонимия. Дуги с такой окраской отражают ситуацию, когда одно слово является частным случаем другого (Например, слова «мебель» и «стол»). Дуги направлены от общего слова к более частному.
  4. Гиперонимия. Это отношение является обратным к гипонимии.
  5. Экванимия. Дугами с такой окраской связаны слова, являющиеся гипонимами одного и того же слова.
  6. Амонимия. Слова, связанные таким отношением, имеют одинаковое написание и произношение, но имеют различный смысл.
  7. Паронимия. Данный тип дуги связывает слова, которые часто путают.
  8. Конверсивы. Слова, связанные такой окраской, имеют «обратный смысл» (Например, «купил» и «продал»).

Таким образом, тезаурус задает набор бинарных отношений на множестве слов некоторого естественного языка. В настоящий момент имеется тезаурус английского языка [10], но для русского языка работа по созданию тезауруса еще не проделана, хотя имеются коммерческие продукты, включающие в себя тезаурус подмножества русского языка [3], а также отдельные словари синонимов [11] и антонимов [12] для подмножества русского языка. К сожалению, эти словари в электронном виде пока не доступны.

Семантический анализ текста включает в себя ряд практически важных задач и, поэтому, будем рассматривать не методы анализа, а актуальные задачи и уже существующие их решения. Одной из наиболее изученных задач является контекстно-свободный поиск текстовой информации [13]. Ее смысл заключается в следующем: имеется большой набор файлов, содержащих тексты на некотором естественном языке, и задана некоторая строка. Необходимо найти все файлы, в которых она или похожая текстовая информация встречается. В подавляющем большинстве случаев необходим именно «неточный» поиск, то есть по смыслу слова с учетом специфики естественного языка. Большинство существующих систем основываются исключительно на морфологическом анализе слов и не задействуют более сложных схем анализа.

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

Имеется семантическая сеть [9], состоящая из узлов и связей. Каждому из узлов соответствуют некоторые атомарные данные, а каждой дуге – некоторая окраска. Если семантическая сеть построена на основе анализа некоторого текста и является формализованным представлением содержащихся в нем знаний, то каждому ее элементу соответствует некоторый фрагмент исходного текста. Узлам, отражающим одинаковые по смыслу данные (например, вес, возраст, дата рождения), соответствуют аналогичные по синтаксическому строению фрагменты исходного текста. Значит, можно ввести некоторые шаблоны. Каждый из них описывает синтаксическую структуру части исходного текста и создаваемые элементы семантической сети. При описании синтаксической структуры указываются не только связи слов в предложении, но и условия, накладываемые на каждое из слов. Эти условия могут проверять как морфологические или семантические (на основе тезауруса) характеристики слова, так и смысловые пометки этого слова, поставленные при поиске других шаблонов. Если какая-то часть текста удовлетворяет всем условиям, указанным в шаблоне, то происходит ее формализация.

Извлечение информации из текстовых данных является основой для решения двух важных задач: во-первых, «раскопки» текста [14], во-вторых, создания систем загрузки текстов в хранилища данных. Такие системы существуют и предназначены для интеграции и очистки данных, помещаемых в хранилища, но они не предоставляют никаких средств ввода данных, содержащихся в текстовом виде.

Наряду с извлечением информации существует и обратная задача генерации правильно построенных текстов [15]. Исходными данными для таких систем является четко формализованные знания. На первый взгляд эта задача может показаться странной, поскольку в большинстве случаев формализованные знания можно представлять в виде бланков, имеющих четкую, заранее определенную систему полей. Но это не всегда так: в случае, когда предметная область имеет сложную и разветвленную структуру, то часто оказывается, что большинство полей бланка оказываются пустыми, что сильно затрудняет восприятие информации, и для конченого пользователя было бы гораздо проще и удобнее иметь дело не с таким бланками, а с неформализованным (но корректно построенным) текстовым описанием тех же самых данных.

С позиции двух указанных задач интересно рассмотреть методы обработки текстовой информации, разработанные Шенком [9]. Они образуют психолингвистический подход к анализу текстовой информации и основываются на двух идеях. Во-первых, для анализа одного предложения не обязательно рассматривать все его слова – смысл предложения можно определить по «ключевым» словам и наличию связей между ними. Вторая идея заключается в представлении результатов анализа текста в виде концептуальной сети, способной формально описать смысл, содержащийся в исходном тексте и являющейся семантической сетью с предопределенным набором типов узлов и дуг.

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

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

ЗАКЛЮЧЕНИЕ

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

За последнее десятилетие ярких результатов в области обработки текстов не было достигнуто, однако развитие новых технологий потребовало удовлетворительного решения некоторых задач обработки текстов. Так, развитие хранилищ данных делает актуальными задачи извлечения информации и формирования корректно построенных текстовых документов. Бурное развитие Интернет повлекло за собой создание и накопление огромных объемов текстовой информации, что требует создания средств полнотекстового поиска и автоматической классификации текстов (в частности, это программное обеспечение для борьбы со спамом), и если первая задача более или менее удовлетворительно решена, то до решения второй пока ещё далеко.

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

Литература

  1. Зализняк А. А. Грамматический словарь русского языка. Словоизменение. М., 1977; 3-е изд. М., 1987.
  2. Тихонов А. Н. Морфемно-орфографический словарь: Русская морфемика. М., 1996
  3. Кузнецова А. И., Ефремова Т. Ф. Словарь морфем русского языка. М., 1986.
  4. C. Manning, H. Schutze. Foundations of Statistical Language processing, The MIT Press, 1999.
  5. Т. А. Грязнухина, Н. П. Дарчук, В. И. Критская, Н. П. Маловица и др. Синтаксический анализ научного текста на ЭВМ, Киев: Научная мысль, 1999.
  6. Хант Э. Искусственный интеллект. М.1978.
  7. Горбачевич К. С. Русский синонимический словарь СПб., 1996.
  8. Меркулова Н. М. Словарь антонимов русского языка: Сложные слова. Около 1800 антонимических пар. М., 1999.
  9. U. Nahm, R. Mooney. Mining soft-matching rules from textual data, WA, 2001.
  10. D. Jurafsky, James H. Martin. Speech and Language Processing: An introduction to natural language processing, computational linguistics, and speech recognition, Prentice-Hall, 2000.

Об авторе

Константин Селезнев – старший инженер-программист ЗАО НПП РЕЛЭКС (Воронеж). К области научных интересов относится построение систем анализа данных, обработка текстов на естественно языке и искусственный интеллект.

Врезка

Представленный в статье материал получен в ходе выработки проектных решений для задач автоматизации сбора данных и их очистки перед укладкой в хранилище, созданное с помощью системы НЕВОД®, служащей для построения информационно-аналитических систем. (Прочитать о ней можно, например, в статье В. Максимова, Л. Козленко, С. Маркина и И. Бойченко «Защищенная реляционная СУБД ЛИНТЕР®», опубликованной в журнале «Открытые системы», 1999, № 11-12.) Основываясь на реальном состоянии дел в области компьютерной лингвистики, проведенное исследование позволяет реализовать в составе хранилища данных:

  • контекстно-свободный поиск текстовой информации (поиск по смыслу);

  • извлечение информации из текстовых данных и представление ее в виде формальной системы знаний;

  • генерацию правильно построенных текстов;

  • автоматическое реферирование и машинный перевод.

Система НЕВОД® и инструментарий быстрой разработки приложений LAB предназначены для создания прикладных систем, работающих с СУБД ЛИНТЕР®. Разработанная в НПП РЕЛЭКС, данная СУБД сертифицирована Гостехкомиссией на второй класс защищенности данных от несанкционированного доступа.


Возврат к списку

ѕрокрутить вверх