Какую модель данных можно использовать для «значения» страницы или текста - PullRequest
4 голосов
/ 03 сентября 2011

Я много раз читал в Интернете по этому вопросу:

Как извлечь смысл страницы.

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

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

Воображение привело человечество через темные века к его нынешнему состоянию цивилизации. Воображение привело Колумба к открытию Америки. Воображение привело Франклина к открытию электричества.

и мой мощный скрипт извлекает значение и говорит следующее:

Способность людей мыслить заставляет их открывать новые вещи.

Для целей этого примера я использовал «String» для объяснения значения текста. Но если бы мне пришлось хранить это в базе данных, массиве или другом хранилище, какой тип данных я буду использовать?

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

Воображение помогает человечеству прогрессировать.

Теперь я могу ввести поисковый запрос о важности воображения, и появятся эти 2 результата. Но как они будут сопоставлены? Будет ли это сравнение строк? Некоторые целые числа с плавающей точкой? Может быть, даже двоичный?

В чем будет сохранен смысл? Я хотел бы услышать от вас.

Обновление: Позвольте мне переформулировать вопрос просто.

Как вы представляете значение в данных?

Ответы [ 7 ]

6 голосов
/ 14 сентября 2011

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

Если вы хотитепредставлять значение лексических сущностей (например, концепций, действий), вы можете использовать распределенные модели, такие как модели векторного пространства .В этих моделях значение обычно имеет геометрическую составляющую.Каждое понятие представлено в виде вектора, и вы помещаете понятия в пространство таким образом, чтобы похожие понятия были ближе друг к другу.Очень распространенный способ построить такое пространство - это выбрать набор часто используемых слов (базовых слов) в качестве измерений пространства и просто подсчитать, сколько раз целевой концепт наблюдается вместе в речи / тексте с этими базовыми словами.Подобные понятия будут использоваться в сходных контекстах;таким образом, их векторы будут указывать аналогичные направления.Кроме того, вы можете выполнить ряд методов взвешивания, нормализации, уменьшения размерности и рекомбинации (например, tf-idf , http://en.wikipedia.org/wiki/Pointwise_mutual_information, SVD ).Немного связанный, но вероятностный, а не геометрический подход - это скрытое распределение Дирихле и другие порождающие / байесовские модели, которые уже упоминались в другом ответе.

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

Грамматические формализмы могут помочь включить синтаксис и привести структуру к значению и отношениям между понятиями (например, грамматика структуры фраз, управляемая головой ).Если вы создадите двух агентов, которые имеют общий словарный запас и грамматику и заставляют их общаться (т.е. передавать информацию от одного к другому) с помощью этих механизмов, вы можете сказать, что они представляют значение.Это скорее философский вопрос, где и как представляется значение, когда робот говорит другому выбрать «красный кружок над черным ящиком» с помощью встроенной или появившейся грамматики и словаря, а другой успешно выбирает предполагаемый объект (см.это очень интересный эксперимент по заземлению словарного запаса: Talking Heads ).

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

Говоря о здравом смысле, Cyc - еще один амбициозный пример проекта, который пытается овладеть знаниями здравого смысла, но делает это совсем не так, как Concept Net. Cyc использует четко определенный символьный язык для представления атрибутов объектов и отношений между объектами недвусмысленным образом. Используя очень большой набор правил и концепций, а также механизм логического вывода, можно придумать выводы о мире, ответить на вопросы типа «Могут ли лошади болеть?», «Принесите мне картину грустного человека».

1 голос
/ 15 сентября 2011

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

Мы использовали два разных алгоритма, PLSA (вероятностный патентСемантический анализ) и PSVM (вероятностные опорные векторные машины).Оба извлекают темы, которые значительно более распространены в анализируемом документе, чем в других документах коллекции.

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

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

0 голосов
/ 15 сентября 2011

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

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

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

Значение может толькосуществуют в отношениях с предметом.Это значение предмета.Чтобы этот предмет имел значение, мы должны что-то о нем знать.Чтобы субъект имел уникальное значение, он должен быть однозначно представлен наблюдателю (это алгоритм).Например, утверждение «2 = 3» будет иметь значение false из-за стандартизации математических символов.Но текст, написанный на иностранном языке, не будет иметь для нас значения.Ни то, что мы не можем понять.Например "в чем смысл жизни?"

В заключение, чтобы построить алгоритм, который может извлечь абсолютный смысл из любого случайного текста, мы, как люди, должны сначала знать абсолютный смысл чего-либо.:)

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

0 голосов
/ 14 сентября 2011

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

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

RDF - это абстрактная модель с несколькими форматами сериализации (т. е. форматами файлов) и, таким образом, конкретным способом кодирования ресурса или тройки.варьируется от формата к формату

и

Однако на практике данные RDF часто сохраняются в реляционной базе данных или собственных представлениях, также называемых хранилищами триплетов или хранилищами Quad, если контекст (т.е. именованный граф) также сохраняется для каждой тройки RDF.

Содержимое RDF можно получить с помощью RDF Queries .


ТемаКарты еще одна модель хранения и представления данных знаний.

Тема Карты - это стандарт представления иобмен знаниями с акцентом на поиск информации.

и

В 2000 году тематические карты были определены в синтаксисе XML XTM.В настоящее время это широко известно как «XTM 1.0» и все еще используется довольно широко.

Из официальной модели данных тематических карт :

Единственными атомарными фундаментальными типами, определенными в этой части ISO / IEC13250 (в 4.3), являются строки и нуль.Благодаря концепции типов данных в этой модели могут быть представлены данные любого типа.Все используемые типы данных должны иметь строковое представление пространства значений, и это строковое представление хранится в карте темы.Информация о том, к какому типу данных относится значение, хранится отдельно в виде локатора, идентифицирующего тип данных.

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

Я также хочу связать вас с недавним ответом Я писал о похожей теме с большим количеством полезных ссылок.


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

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

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

Пример N3

@prefix dc: <http://purl.org/dc/elements/1.1/>.

<http://en.wikipedia.org/wiki/Tony_Benn>
  dc:title "Tony Benn";
  dc:publisher "Wikipedia".

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

0 голосов
/ 08 сентября 2011

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

Если вы используете векторВ пространственной модели значение / семантика может быть представлена ​​набором векторов, которые представляют конкретные темы.Один из способов извлечь такие шаблоны - http://en.wikipedia.org/wiki/Latent_semantic_analysis или http://en.wikipedia.org/wiki/Nonnegative_matrix_factorization. Но существуют более сложные статистические модели, которые представляют семантику параметрами определенных распределений вероятностей.Недавний метод http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation.

0 голосов
/ 03 сентября 2011

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

0 голосов
/ 03 сентября 2011

попробуйте превратить его в символ * (строка в стиле c), он легко сохраняется в базах данных и прост в использовании, его длина 50 (10 слов) или 75 (15 слов)

РЕДАКТИРОВАТЬ: поместите оба слова в одно и то же слово (воображение), затем проверьте одинаковые индексы и присвойте им одно и то же слово

использование

SELECT * FROM Dictionary WHERE Index = "Imagination"

извините, я не слишком опытен с SQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...