Семантическая сеть

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

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

История

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

В истории вычислительной техники «семантические сети» для пропозиционального исчисления впервые реализовал Ричард Х. Риченс (англ. Richard H. Richens) из Кембриджского языкового исследовательского подразделения в 1956 году, использовав их в качестве интерлингвы для машинного перевода естественных языков[3]. Значимость этих работ была осознана лишь позднее.

Независимое внедрение семантических сетей произвели Роберт Ф. Симмонс[4] и Шелдон Кляйн, опираясь на предикатное исчисление первого порядка и под влиянием демонстрации Виктора Юнге. Как отмечал Симмонс, направление возникло после публикаций Юнге (1960), посвящённых генерации синтаксически правильных, но бессмысленных предложений по фразовой грамматике. В 1962–1964 Кляйн и Симмонс адаптировали метод для управления смыслом через учёт семантических связей[5]. Также значительный вклад внесли М. Росс Квиллиан[6] и сотрудники System Development Corporation (SDC) в начале 1960-х годов в рамках проекта SYNTHEX. Именно публикации SDC стали отправной точкой для большинства современных интерпретаций понятия «семантическая сеть».

Позднее ключевые работы выполнили Аллан М. Коллинз и М. Росс Квиллиан (например, Коллинз и Квиллиан[7][8], Коллинз и Лофтус[9]). Начиная с 2006 года, Герман Хельбиг подробно разработал модель MultiNet[10].

В конце 1980-х Университеты Гронингена и Твенте (Нидерланды) совместно запустили проект Knowledge Graphs — разновидность семантической сети, где рёбра ограничены набором возможных типов связей, чтобы упростить алгебраические операции над графом[11]. В последующие десятилетия различия между понятиями «семантическая сеть» и «граф знаний» стали размываться[12]. В 2012 году Google официально использовала термин «Граф Знаний» (англ. Knowledge Graph).

Метод семантической связной сети (Semantic Link Network) был систематизирован для задач социальной семантики. Модель включает узлы, семантические связи и пространство, определяющее смысл узлов и связей, а также правила вывода. Теоретические основы опубликованы в 2004 году[13]. Исследования ведутся с 1998 года[14] и охватывают вопросы наследования, активных документов[15] и социальных сетей[16]. Целями таких исследований считаются поддержка многомерного анализа, автоматическое обнаружение неявных связей и формирование инфраструктуры для кибер-физико-социального интеллекта[17].

Узкоспециализированные варианты семантических сетей были созданы для решения прикладных задач. Например, диссертация Фосви Бендекка (2008) формализовала понятие сети семантического сходства (Semantic Similarity Network, SSN), содержащей специализированные отношения и процедуры распространения для упрощения вычислений семантической близости[18].

Основы семантических сетей

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

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

Примеры

На языке Lisp

Ниже приведён пример семантической сети на языке программирования Lisp с использованием ассоциативного списка:

(setq *database*
'((canary  (is-a bird)
           (color yellow)
           (size small))
  (penguin (is-a bird)
           (movement swim))
  (bird    (is-a vertebrate)
           (has-part wings)
           (reproduction egg-laying))))

Для извлечения всей информации о типе «canary» используется функция assoc с ключом «canary»[19].

WordNet

Примером семантической сети является WordNet — лексическая база данных английского языка. Она группирует английские слова в синонимические множества (synset), предоставляет их краткие определения и фиксирует различные типы семантических отношений между ними. Наиболее распространённые типы связей: меронимия (A — часть B), холонимия (B включает A), гипонимия (A — подтип B), гиперонимия (A — надтип B), синонимия (A и B обозначают одно и то же) и антонимия (A — противоположное B).

Свойства WordNet анализировались с точки зрения теории графов в сравнении с другими семантическими сетями (например, словарь Роже и задания ассоциаций). Все они имеют структуру малого мира[20].

Прочие примеры

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

Другие примеры — модели Gellish. Gellish English с Gellish English dictionary — формальный язык, определённый в виде сети отношений между понятиями и их именами. Каждая связь — это выражение определённого факта, классифицированное по типу из словаря Gellish. Сеть может быть сохранена в базе данных и обработана компьютером.

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

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

В социальных науках термин «семантическая сеть» иногда применяется к сетям совместной встречаемости[21].

Программные инструменты

Существуют развитые типы семантических сетей вместе с программными инструментами для лексической инженерии знаний, например Semantic Network Processing System (SNePS) Стюарта С. Шапиро[22] или парадигма MultiNet Германа Хельбига[23]. Они ориентированы прежде всего на представление смысла естественноязыковых фраз и применяются в задачах обработки естественного языка.

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

Граф знаний Google (Google Knowledge Graph), объявленный в 2012 году, представляет собой прикладную реализацию семантической сети для поисковых систем.

Моделирование многореляционных данных, таких как семантические сети, в пространствах малого числа измерений средствами эмбеддингов позволяет компактно выражать связи между сущностями и извлекать отношения из текстов. Среди подходов к обучению таких встраиваний выделяются байесовские и энергетические методы, а также TransE (2013 г.)[24]. Применения такого моделирования включают анализ социальных сетей и извлечение отношений.

См. также

Примечания

Литература