Интеллектуальное извлечение тегов из блогов и других веб-страниц - PullRequest
2 голосов
/ 04 сентября 2010

Я говорю не о тегах HTML, а о тегах, используемых для описания сообщений в блогах, видео на YouTube или вопросов на этом сайте.

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

Я могу представить себе использование простой эвристики, такой как поиск всех элементов HTML с идентификатором или классом 'tag 'и т. д. Однако, это довольно хрупко и, вероятно, потерпит неудачу для огромного количества веб-страниц.Какой подход вы, ребята, рекомендуете для этой проблемы?

Кроме того, мне известны Zemanta и Open Calais, у которых есть способы угадать теги для фрагмента текста, но на самом деле это не то же самое, что извлечениеТэги настоящие люди уже выбрали.Но я все равно хотел бы услышать о любых других сервисах / API, чтобы угадать теги в документе.

РЕДАКТИРОВАТЬ: Просто чтобы быть ясно, решение, которое уже работает для этого, было бы здорово.Но я предполагаю, что нет программного обеспечения с открытым исходным кодом, которое уже делает это, поэтому я просто хочу услышать от людей о возможных подходах, которые могут работать в большинстве случаев.Это не обязательно должно быть идеально.

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

Ответы [ 9 ]

2 голосов
/ 17 сентября 2010

Такие системы, как пример arc90, вы даете работу, рассматривая такие вещи, как соотношения тег / текст и другие эвристики.Существует достаточное различие между текстовым содержимым страниц и окружающими рекламными объявлениями / меню и т. Д. Другие примеры включают инструменты, которые очищают электронные письма или адреса.Здесь есть шаблоны, которые можно обнаружить, места, которые можно распознать.В случае с тэгами, хотя вам нечем помочь, чтобы отличить тэг от обычного текста, это просто слово или фраза, как и любой другой фрагмент текста.Список тегов в боковой панели очень трудно отличить от меню навигации.

В некоторых блогах, таких как tumblr, есть теги, в URL которых есть слово «tagged», которое вы можете использовать.Wordpress также имеет URL-адреса типа "... / tag / ..." для тегов.Подобные решения будут работать для большого количества блогов независимо от их индивидуального макета страницы, но они не будут работать везде.

1 голос
/ 06 сентября 2010

Если источники предоставляют свои данные в виде канала (RSS / Atom), вы можете получить теги (или ярлыки / категории / темы и т. Д.) Из этих структурированных данных.

Другим вариантом является анализ каждой веб-страницы и поиск тегов, отформатированных в соответствии с микроформатом rel = tag .

0 голосов
/ 20 февраля 2013

в Drupal есть модуль извлечения терминов.(http://drupal.org/project/extractor) но это только для Drupal 6.

0 голосов
/ 03 апреля 2011

Глядя на arc90, кажется, что они также просят издателей использовать семантически значимую разметку [см. https://www.readability.com/publishers/guidelines/#view-exampleGuidelines], чтобы они могли довольно легко ее проанализировать, но, вероятно, они либо разработали общие правила, такие как @dunelmtech Предлагаемый тег / Соотношения текста, которые могут работать с обнаружением статьи или могут использоваться с комбинацией некоторых алгоритмов сегментации текста (из поля Обработка естественного языка), таких как TextTiler и C99, которые могут быть весьма полезны для обнаружения статьи - см. http://morphadorner.northwestern.edu/morphadorner/textsegmenter/ и Google для получения дополнительной информации об обоих [опубликовано в академической литературе - Google ученый].

Однако, похоже, что найти «теги», как вам нужно, - трудная проблема (по уже упомянутым причинам в комментариях выше). Один из подходов, который я бы попробовал, состоит в том, чтобы использовать один из алгоритмов сегментации текста (C99 или TextTiler) для определения начала / конца статьи, а затем искать DIV's / SPAN's / UL с атрибутами CLASS & ID, содержащими в себе ..tag .. Так как с точки зрения тегов макета страницы, как правило, они находятся под статьей и чуть выше ленты комментариев, это может работать на удивление хорошо.

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

РЕДАКТИРОВАТЬ: Я только что нашел что-то действительно полезное. Алгоритм называется VIPS [см .: http://www.zjucadcg.cn/dengcai/VIPS/VIPS.html] и расшифровывается как сегментация страниц на основе видения. Он основан на идее, что содержимое страницы можно визуально разбить на разделы. По сравнению с методами, основанными на DOM, сегменты, полученные с помощью VIPS, гораздо более семантически агрегированы. Шумную информацию, такую ​​как навигация, реклама и оформление, можно легко удалить, поскольку они часто размещаются в определенных положениях страницы. Это может помочь вам определить блок тегов довольно точно!

0 голосов
/ 16 сентября 2010

Попробуйте создать Yahoo Pipe и запустить исходные страницы через модуль Term Extractor. Это может или не может дать отличные результаты, но стоит попробовать. Примечание - включить двигатель V2.

0 голосов
/ 16 сентября 2010

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

Если вы действительно хотите сделать что-то подобное, вам следуетЗнайте, что это будет длительный и продолжительный проект: вы создадите библиотеку, которая определяет, какой «движок» используется на странице, и проанализируете ее.Если по какой-то причине вы не можете обнаружить страницу, вы создаете новые правила для анализа и продвижения.

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

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

Я думаю, что ваш единственный вариант - написать собственные сценарии для каждого сайта.Чтобы сделать вещи проще, хотя вы можете посмотреть на AlchemyApi.У них есть возможности извлечения сущностей, аналогичных OpenCalais, но у них также есть продукт " Структурированный контент ", который значительно упрощает написание xpath с помощью простых визуальных ограничений для идентификации частей веб-страницы.

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

Если вы найдете общее решение, сообщите нам. Я протестировал множество инструментов (KapowTech, iMacros и т. Д. Pp), и для каждого из них требуется настроить свой «скрипт» для каждого веб-сайта, с которым вам нужно работать.

0 голосов
/ 04 сентября 2010

Блин, просто собирался предложить Open Calais.Там не будет "отличный" способ сделать это.Если у вас есть какие-то целевые платформы, вы можете найти Wordpress, затем посмотреть их структуру ссылок и снова Flickr ...

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