Каково состояние техники в извлечении HTML-контента?
Существует много научных работ по извлечению содержимого HTML, например, Gupta & Kaiser (2005) извлечение содержимого из доступных веб-страниц , и некоторые признаки интереса здесь, например, Один, два и Три, но мне не совсем ясно, насколько хорошо практика последнего отражает идеи первого. Какова наилучшая практика?
Указатели на хорошие (в частности, с открытым исходным кодом) реализации и хорошие научные обзоры реализаций будь тем, кого я ищу.
Постскриптум первый : если быть точным, то вид исследования, который я ищу, будет представлять собой статью (опубликованную, неопубликованную, какую угодно), в которой обсуждаются как критерии из научной литературы, так и ряд существующих реализаций и анализируется, насколько неудачными являются реализации с точки зрения критериев. И, действительно, сообщение в список рассылки будет работать и для меня.
Постскриптум второй , чтобы быть ясным, после Ответ Питера Роуэлла, который я принял, мы можем видеть, что этот вопрос приводит к двум подзадачам: (i) решенная проблема очистки несоответствующего HTML, для которой красивый суп является наиболее рекомендуемым решением, и (ii) нерешенная проблема или отделение cruft (в основном сайт добавил шаблонный и рекламный материал) от мяса (содержание, которое люди, которые думают, что страница может быть интересной, на самом деле находят релевантным. Чтобы обратиться к состоянию техники, новые ответы должны обратиться крафт-из-мяса пеоблем явно.
8 ответов:
Извлечение может означать разные вещи для разных людей. Одно дело-иметь дело со всем этим искореженным HTML, и прекрасный суп-явный победитель в этом отделе. Но БС не скажет вам, что такое крафт и что такое мясо.
Все выглядит иначе (и некрасиво) при рассмотрении извлечения контента с точки зрения компьютерного лингвиста. При анализе страницы меня интересует только конкретное содержание страницы, за вычетом всех навигация / реклама / etc. хлам. И вы не можете начать делать интересные вещи-анализ совпадений, обнаружение фраз, генерацию вектора взвешенных атрибутов и т. д. -- пока ты не избавишься от крафта.
Первая статья, на которую ссылается ОП, указывает, что это было то, чего они пытались достичь-проанализировать сайт, определить общую структуру, затем вычесть это и вуаля! у вас есть только мясо-но они обнаружили, что это было труднее, чем они думали. Они были подходя к проблеме с улучшенной точки зрения доступности, в то время как я был ранним поисковым эгином, но мы оба пришли к одному и тому же выводу:
Отделить крафт от мяса очень трудно. и (читать Между строк вашего вопроса) даже после того, как крафт удален, без тщательно примененной семантической разметки чрезвычайно трудно определить "авторский замысел" статьи. Получение мяса из сайта, как citeseer (чисто и предсказуемо выложены с очень высокое отношение сигнал / шум) является на 2 или 3 Порядка проще, чем иметь дело со случайным веб-контентом.
Кстати, если вы имеете дело с более длинными документами, вас может особенно заинтересовать работа, выполненная Марти Херстом (ныне профессор Калифорнийского университета в Беркли). Ее Кандидатская диссертация и другие работы, посвященные обнаружению подтем в больших документах, дали мне много информации о том, как делать что-то подобное в небольших документах (что, как ни удивительно, может быть сложнее с). Но вы можете сделать это только после того, как избавитесь от крафта.
Для тех немногих, кто может быть заинтересован, вот предыстория (вероятно, не по теме, но я сегодня в таком настроении):
В 80-х и 90-х годах нашими клиентами были в основном правительственные учреждения, чьи глаза были больше, чем их бюджеты, и чьи мечты делали Диснейленд скучным. Они собирали все, что попадалось им под руку, а потом отправились на поиски технологии серебряной пули, которая каким-то образом могла бы помочь. (гигантский взмах руки ) извлеките "смысл" документа. Правильно. Они нашли нас, потому что мы были этой странной маленькой компанией, занимающейся "поиском сходства контента" в 1986 году. Мы дали им пару демо (настоящих, а не фальшивых), которые их напугали. Одна из вещей, которые мы уже знали (и потребовалось много времени, чтобы они нам поверили), заключалась в том, что каждая коллекция отличается и нуждается в своем собственном специальном сканере, чтобы справиться с этими различиями. Например, если все, что вы делаете, это жуете прямые газетные истории, жизнь довольно проста. Заголовок в основном рассказывает вам что - то интересное, и история написана в пирамидальном стиле-в первом абзаце или двух есть мясо того, кто/что/где/когда, а затем следующие параграфы расширяются на этом. Как я уже сказал,Это самое простое.Как насчет журнальных статей? О Боже, только не начинай! Названия почти всегда бессмысленны, а структура варьируется от одного журнала к другому и даже от одного раздела журнала к другому. Забрать копию проводной и копия Атлантик Мансли. Посмотрите на крупную статью и попытайтесь понять содержательное 1 абзац резюме того, о чем эта статья. Теперь попробуйте описать, как программа могла бы выполнить то же самое. Применяется ли один и тот же набор правил ко всем статьям? Даже статьи из одного журнала? Нет, они этого не делают.
Извините, что это звучит как скупость, но эта проблемадействительно трудна .
Как ни странно, большая причина для успех google (с точки зрения поисковой системы) заключается в том, что он придает большое значение словам, содержащимся и окружающим ссылку с другого сайта. Этот текст ссылки представляет собой своего рода мини-резюме , сделанное человеком сайта/страницы, на которую он ссылается, именно то, что вы хотите при поиске. И он работает почти во всех жанрах / стилях компоновки информации. Это действительно блестящее озарение, и я хотел бы, чтобы оно было у меня самого. Но это не помогло бы мне. клиенты были хороши, потому что не было никаких ссылок из вчерашних московских телепрограмм на какое-то случайное телетайпное сообщение, которое они захватили, или на какую-то плохо распознанную версию египетской газеты.
/ мини-разглагольствования и поездки вниз по полосе памяти
Одно слово: котельная.
Для области Новостей, в репрезентативном корпусе, мы теперь имеем точность извлечения 98% / 99% (среднее значение / медиана)
- демо: http://boilerpipe-web.appspot.com/
- Код: http://code.google.com/p/boilerpipe/
- презентация: http://videolectures.net/wsdm2010_kohlschutter_bdu/
- набор данных и слайды: http://www.l3s.de/~kohlschuetter / boilerplate /
- кандидатская диссертация: http://www.kohlschutter.com/pdf/Dissertation-Kohlschuetter.pdf
Также довольно независимый от языка (сегодня я узнал, что он работает и для непальского языка).
Отказ от ответственности: я являюсь автором этой работы.
Вы видели котельную ? Нашел его упомянутым в аналогичном вопросе.
Я наткнулся на http://www.keyvan.net/2010/08/php-readability/
В прошлом году я портировал читабельность Arc90 для использования в проекте "пять фильтров". Прошло уже больше года и ... Читаемость значительно улучшилась - спасибо Крису Дари и всем остальным. команда в Arc90.
Как часть обновления полного текста RSS сервис я начал портировать еще последняя версия (1.6.2) для PHP и код теперь в сети.
Ни для кого нет знакомо, читабельность был создан для использования в качестве браузерного аддона (букмарклет). Одним щелчком мыши он преобразует веб-страницы для удобного чтения и убирает беспорядок. Яблоко недавно включил его в Safari Читатель.
Это также очень удобно для контента извлечение, вот почему я хотел это сделать. перенесите его на PHP в первую очередь.
Существует несколько инструментов с открытым исходным кодом, которые выполняют аналогичные задачи извлечения статей. https://github.com/jiminoc/goose который был с открытым исходным кодом от Gravity.com
Он содержит информацию о Вики, а также источник, который вы можете просмотреть. Существуют десятки модульных тестов, которые показывают текст, извлеченный из различных статей.
Beautiful Soup - это надежный HTML-парсер, написанный на Python.
Он изящно обрабатывает HTML с плохой разметкой и также хорошо спроектирован как библиотека Python, поддерживая генераторы для итерации и поиска, точечную нотацию для дочернего доступа (например, access
<foo><bar/></foo>' usingdoc.foo.bar`) и бесшовный unicode.
Я работал с Питером Роуэллом на протяжении многих лет над самыми разнообразными проектами по поиску информации, многие из которых включали очень трудное извлечение текста из различных источников разметки.
В настоящее время я сосредоточен на извлечении знаний из "пожарных" источников, таких как Google, включая их RSS-каналы, которые вакуумируют огромное количество местных, региональных, национальных и международных новостных статей. Во многих случаях названия богаты и значимы, но это только "крючки", используемые для рисования трафик на веб-сайт, где фактическая статья является бессмысленным абзацем. Это, по-видимому, своего рода "спам в обратном направлении", предназначенный для повышения рейтингов трафика.Чтобы ранжировать статьи даже с самой простой метрикой длины статьи, вы должны уметь извлекать содержимое из разметки. Экзотическая разметка и сценарии, которые доминируют над веб-контентом в наши дни, ломают большинство пакетов синтаксического анализа с открытым исходным кодом, таких как Beautiful Soup, когда они применяются к большим объемам, характерным для Google и подобных источники. Я обнаружил, что 30% или более добытых предметов разбивают эти пакеты, как правило, на пальцах. Это заставило нас переориентироваться на разработку очень низкоуровневых интеллектуальных парсеров на основе символов, чтобы отделить необработанный текст от разметки и сценариев. Чем более тонким будет ваш синтаксический анализ (то есть разбиение контента), тем более интеллектуальными (и сделанными вручную) должны быть ваши инструменты. Чтобы сделать вещи еще более интересными, у вас есть движущаяся цель, поскольку веб-разработка продолжает трансформироваться и изменяться с течением времени. разработка новых скриптовых подходов, разметки и языковых расширений. Это, как правило, отдает предпочтение сервисной доставке информации, в отличие от" термоусадочных " приложений.
Оглядываясь назад, за эти годы, кажется, было очень мало научных работ, написанных о механике низкого уровня (то есть" практике первого", на которую вы ссылаетесь) такого извлечения, вероятно, потому, что это так специфично для предметной области и содержания.
Если вы хотите извлечь содержимое из страниц, которые активно используют javascript, Selenium remote control может выполнить эту работу. Он работает не только для тестирования. Главным недостатком этого является то, что в конечном итоге вы будете использовать гораздо больше ресурсов. Плюс в том, что вы получите гораздо более точную подачу данных из богатых страниц/приложений.
Comments