Резюме статьи в Википедии

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

Я начал с того, что взял статью из Википедии о PDF и извлек первые 100 предложений. Каждому предложению я присвоил балл в зависимости от того, насколько ценным я его считал. В итоге я создал файл в следующем формате:

<sentence>
<value>
<sentence>
<value>
etc.

Затем я проанализировал этот файл и попытался найти различные функции, которые соотносили бы каждое предложение с заданным им значением. Я только начал изучать машинное обучение, статистику и еще много чего, поэтому я много возился здесь. Это моя последняя попытка: https://github.com/JesseAldridge/Wikipedia-Summarizer/blob/master/plot_sentences.py.

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

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

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


person Jesse Aldridge    schedule 01.01.2012    source источник
comment
Далее вы хотите, чтобы мы использовали новояз, чтобы сделать отсканированную статью еще короче ;)   -  person tylerthemiler    schedule 01.01.2012
comment
Вы явно слишком стары. Оставьте такие вещи 16-летним wired.com/gadgetlab/ 2011/12/summly-app-summarization   -  person ColinE    schedule 01.01.2012
comment
:) Выглядит круто. Я не могу запустить его на моем iPod, но я могу читать обзоры. Они были довольно смешанные. У меня сложилось впечатление, что это не очень хорошо работает.   -  person Jesse Aldridge    schedule 01.01.2012
comment
Я ошибаюсь, но мне кажется, что 16-летний старше использует нейронную сеть с генетическим алгоритмом? Просто и эффективно.   -  person oaxacamatt    schedule 02.01.2012


Ответы (2)


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

Обобщение одного документа на основе коэффициента кластеризации и анализа транзитивности

Обобщение нескольких документов для системы электронного обучения ответов на запросы

Умная электронная почта: помощь пользователям с помощью ИИ

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

person ColinE    schedule 01.01.2012
comment
Итак, я просто должен создать граф зависимостей на основе синтаксического анализа отношения зависимости и использовать коэффициент кластеризации для измерения соединений узлов. Затем достаточно просто выделить треугольники узлов и использовать их для извлечения ключевых предложений. ffs ... так много для быстрого и грязного. А если серьезно, спасибо за документы. Это, наверное, лучшая информация, которую я смогу получить. - person Jesse Aldridge; 01.01.2012
comment
Эй... вы только что успешно обобщили ключевые слова для этой статьи. Возможно, это работа для механического турка! - person ColinE; 01.01.2012

Просто мои два цента...

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

Если бы мне пришлось разрабатывать интерфейс для «обобщателя» Википедии, я бы

  1. Всегда печатайте весь вводный абзац.

  2. Для остальной части статьи напечатайте любое предложение, в котором есть ссылка.

    2а. Печатайте любые списки ссылок, разделенных запятыми, в виде маркированного списка.

  3. Если ссылка на статью «раскрыта», напечатайте первый абзац этой статьи.

  4. Если этот вводный абзац расширен, повторите список предложений со ссылками.

Этот процесс может повторяться бесконечно.

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

person Droogans    schedule 01.01.2012