Каково современное состояние извлечения HTML-контента?

StackOverflow https://stackoverflow.com/questions/1962389

Вопрос

Существует много научных работ по извлечению HTML-контента, например, Gupta & Kaiser (2005) Извлечение содержимого с доступных веб-страниц, и некоторые признаки, представляющие интерес здесь, например, один, два, и три, но мне не совсем ясно, насколько хорошо практика последнего отражает идеи первого.Какова наилучшая практика?

Указатели на хорошие реализации (в частности, с открытым исходным кодом) и хорошие научные обзоры реализаций были бы тем, что я ищу.

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

Постскриптум второй Чтобы внести ясность, после ответа Питера Роуэлла, с которым я согласился, мы можем видеть, что этот вопрос приводит к двум подвопросам:(i) решенная проблема очистки несоответствующего HTML, для которой Beautiful Soup является наиболее рекомендуемым решением, и (ii) нерешенная проблема отделения мусора (в основном шаблонных и рекламных материалов, добавляемых на сайт) от мяса (контента, который люди, считающие страницу интересной, на самом деле находят релевантным.Чтобы учесть современное состояние, новые ответы должны явно касаться проблемы "крафт из мяса".

Это было полезно?

Решение

Для разных людей извлечение может означать разные вещи.Одно дело — иметь возможность справиться со всем этим искаженным HTML, и Beautiful Soup — явный победитель в этом отношении.Но BS не скажет вам, что такое хлам, а что такое мясо.

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

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

Отделить мякоть от мякоти сложно. И (читать между строк вашего вопроса) даже после удаления хлама без тщательно нанесенной семантической разметки это очень сильно сложно определить «замысел автора» статьи.Вытащить суть из такого сайта, как citeseer (чисто и предсказуемо выложенного, с очень высоким соотношением сигнал/шум) – это 2 или 3 порядка проще, чем иметь дело со случайным веб-контентом.

Кстати, если вы имеете дело с более длинными документами, вас может особенно заинтересовать работа, проделанная Марти Херст (сейчас профессор Калифорнийского университета в Беркли).Ее Кандидатская диссертация и другие статьи о поиске подтем в больших документах дали мне много информации о том, как делать что-то подобное в меньших документах (с которыми, как ни удивительно, может быть сложнее справиться).Но сделать это можно только после того, как избавитесь от мусора.


Для тех немногих, кому это может быть интересно, вот некоторая предыстория (возможно, не по теме, но сегодня вечером у меня такое настроение):

В 80-х и 90-х нашими клиентами были в основном правительственные учреждения, чьи глаза были больше, чем их бюджеты, и чьи мечты затмевали Диснейленд.Они собирали все, что попадалось под руку, а затем начали искать технологию «серебряной пули», которая каким-то образом ( гигантская волна рукой ) извлеките «значение» документа.Верно.Они нашли нас, потому что мы были странной маленькой компанией, занимавшейся «поиском сходства контента» в 1986 году.Мы дали им пару демо (настоящих, а не фальшивых), что их напугало.

Одна из вещей, которые мы уже знали (и им потребовалось много времени, чтобы нам поверить), заключалась в том, что каждая коллекция уникальна и нуждается в своем специальном сканере, чтобы справиться с этими различиями.Например, если все, что вы делаете, это пережевываете откровенные газетные истории, жизнь довольно проста.Заголовок в основном рассказывает вам что-то интересное, а история написана в стиле пирамиды: в первом или двух абзацах рассказывается о том, кто/что/где/когда, а последующие абзацы расширяют это.Как я уже сказал, это легкая вещь.

А как насчет журнальных статей?О Боже, не заставляй меня начинать!Названия почти всегда бессмысленны, а структура варьируется от одного журнала к другому и даже от одного раздела журнала к другому.Возьмите копию Wired и копию Atlantic Monthly.Посмотрите на большую статью и попытайтесь выяснить значимый Краткое содержание статьи в 1 абзаце.Теперь попытайтесь описать, как программа может выполнить то же самое.Применяется ли ко всем статьям один и тот же набор правил?Даже статьи из того же журнала?Нет, они этого не делают.

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

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

/mini-rant-and-trip-down-memory-lane

Другие советы

Одно слово:котловая труба.

Для новостного домена в репрезентативном корпусе точность извлечения сейчас составляет 98 %/99 % (среднее/медиана).

Также совершенно не зависит от языка (сегодня я узнал, что это работает и для непальского языка).

Отказ от ответственности:Я автор этой работы.

Ты видел котловая труба?Нашел это упомянутое в аналогичном вопросе.

Я наткнулся на http://www.keyvan.net/2010/08/php-readability/

В прошлом году я портировал программу Arc90 Readability для использования в проекте Five Filters.Прошло уже больше года, и Читаемость значительно улучшилась — благодаря Крису Дэри и остальным членам команды Arc90.

В рамках обновления полнотекстового сервиса RSS я начал переносить более свежую версию (1.6.2) на PHP, и код теперь доступен онлайн.

Для тех, кто не знаком, Readability был создан для использования в качестве дополнения к браузеру (букмарклет).Одним щелчком мыши он преобразует веб-страницы для удобства чтения и устраняет беспорядок. Apple недавно внедрила его в Safari Reader.

Это также очень удобно для извлечения контента , вот почему я хотел в первую очередь перенести его на PHP.

Существует несколько инструментов с открытым исходным кодом, которые выполняют аналогичные задачи по извлечению статей.https://github.com/jiminoc/goose исходный код которого был открыт Gravity.com.

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

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

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

Чтобы ранжировать статьи даже с помощью простейшего показателя длины статьи, вы должны иметь возможность извлекать контент из разметки.Экзотическая разметка и сценарии, которые доминируют в веб-контенте в наши дни, ломают работу большинства пакетов синтаксического анализа с открытым исходным кодом, таких как Beautiful Soup, когда они применяются к большим объемам, характерным для Google и подобных источников.Я обнаружил, что 30% или более добытых статей нарушают эти пакеты, как правило.Это заставило нас переориентироваться на разработку очень низкоуровневых интеллектуальных синтаксических анализаторов на основе символов, позволяющих отделять необработанный текст от разметки и сценариев.Чем более детальным будет ваш синтаксический анализ (т.разделение контента), тем более интеллектуальными (и сделанными вручную) должны быть ваши инструменты.Чтобы сделать ситуацию еще более интересной, у вас есть движущаяся цель, поскольку веб-разработка продолжает трансформироваться и меняться с развитием новых подходов к написанию сценариев, разметки и языковых расширений.Это имеет тенденцию отдавать предпочтение доставке информации на основе услуг, а не «упакованным» приложениям.

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

Красивый суп — это надежный парсер HTML, написанный на Python.

Он изящно обрабатывает HTML с плохой разметкой, а также хорошо спроектирован как библиотека Python, поддерживая генераторы для итерации и поиска, точечную нотацию для дочернего доступа (например, доступ <foo><bar/></foo>' usingdoc.foo.bar`) и бесшовный юникод.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top