Question

Il y a beaucoup de travail de recherche sur l'extraction de contenu HTML, par exemple, Gupta et Kaiser (2005) contenu de pages Extraction Web accessibles , et quelques signes d'intérêt ici, par exemple, une , deux et trois , mais je ne suis pas vraiment clair sur la façon dont la pratique de ce dernier reflète les idées de l'ancien. Quelle est la meilleure pratique?

Pointeurs bon (en particulier, open source) et les mises en œuvre de bonnes études scientifiques de mises en œuvre seraient le genre de chose que je cherche.

Postscript la première : Pour être précis, le genre d'enquête que je suis après serait un document (publié, non publié, peu importe) qui traite les critères de la littérature scientifique, et un certain nombre de implémentations existantes et analyse la façon dont les mises en œuvre sans succès sont du point de vue des critères. Et, vraiment, un poste à une liste de diffusion travaillerait pour moi aussi.

Postscript la seconde Pour être clair, après la réponse de Peter Rowell, que je l'ai accepté, nous pouvons voir que cette question conduit à deux sous-questions: (i) le problème résolu de nettoyage non conforme HTML, pour lequel Beautiful Soup est la solution la plus recommandée, et (ii) le problème non résolu ou la séparation cochonneries (boilerplate principalement ajouté site et matériel promotionnel) de la viande (le contentthat le genre de personnes qui pensent la page pourrait être intéressant, en fait, trouver pertinentes. pour faire face à l'état de l'art, de nouvelles réponses doivent répondre à la peoblem cruft-de-viande explicitement.

Était-ce utile?

La solution

L'extraction peut signifier différentes choses pour différentes personnes. Il est une chose d'être en mesure de traiter tous les mutilée HTML là-bas, et Beautiful Soup est un gagnant clair dans ce département. Mais BS ne vous dira pas ce qui est cochonneries et quelle est la viande.

Les choses semblent différentes (et laid) lorsque l'on considère l'extraction de contenu à partir du point de vue d'un linguiste de calcul. Lors de l'analyse d'une page que je suis intéressé que dans contenu spécifique de la page, moins tous les navigation / publicité / etc. cochonneries. Et vous ne pouvez pas commencer à faire les choses intéressantes - analyse cooccurrence, la découverte de phrase, attribut pondérée génération de vecteurs, etc. -. Jusqu'à ce que vous avez exterminé la cruft

Le premier document référencé par l'OP indique que c'était ce qu'ils essayaient d'atteindre - analyser un site, déterminer la structure globale, puis soustraire cela et voilà! vous avez juste la viande - mais ils ont trouvé qu'il était plus difficile que ce qu'ils pensaient. Ils se rapprochaient le problème d'un angle d'amélioration de l'accessibilité, alors que je suis un gars recherche egine tôt, mais nous avons tous deux arrivés à la même conclusion:

La séparation cochonneries de la viande est dure. (à lire entre les lignes de votre question), même une fois que la croute est retirée, sans précaution appliqué le balisage sémantique est très difficile de déterminer « l'intention de l'auteur » de l'article. Obtenir la viande sur un site comme citeseer (proprement et on pouvait s'y attendre aménagé avec un très haut rapport signal-bruit) est 2 ou 3 ordres de grandeur plus facile que de traiter le contenu Web aléatoire.

BTW, si vous avez affaire à des documents plus longs que vous pourriez être intéressé particulièrement au travail effectué par Marti Hearst (maintenant un prof à l'UC Berkely). Sa thèse de doctorat et d'autres documents à faire la découverte de sous-thème dans les grands documents ont moi beaucoup de perspicacité en faire quelque chose de semblable dans les petits documents (qui, de façon surprenante, peut être plus difficile à traiter). Mais vous ne pouvez le faire une fois que vous vous débarrasser de la croute.


Pour les rares qui pourraient être intéressés, voici quelques trame de fond (probablement hors sujet, mais je suis dans ce genre d'humeur ce soir):

Dans les années 80 et nos clients de 90 étaient pour la plupart des organismes gouvernementaux dont les yeux étaient plus grandes que leurs budgets et dont les rêves fait Disneyland regard terne. Ils ramassaient tout ce qu'ils pouvaient mettre la main sur et ensuite à la recherche d'une technologie de balle d'argent qui serait en quelque sorte ( vague main géante ) extraire le « sens » du document. Droite. Ils nous ont trouvé parce que nous étions cette petite entreprise bizarre de faire « similitude contenu recherche » en 1986. Nous leur avons donné quelques démos (réel, pas truqué) qui les a paniqué.

L'une des choses que nous savions déjà (et il a fallu beaucoup de temps pour qu'ils nous croient) était que chaque collection est différent et a besoin de son propre scanner spécial pour faire face à ces différences. Par exemple, si tout ce que vous faites est grignotant des histoires de journaux droites, la vie est assez facile. Le titre vous dit quelque chose d'intéressant la plupart du temps, et l'histoire est écrite dans le style de la pyramide - le premier paragraphe ou deux a la viande qui / quoi / où / quand, puis les paragraphes suivants traitent de ce sujet. Comme je l'ai dit, c'est ce qui est facile.

Que diriez-vous des articles de magazine? Oh mon Dieu, ne me suis pas commencé! Les titres sont presque toujours dénuée de sens et la structure varie d'un mag à l'autre, et même d'une section d'un mag à l'autre. Procurez-vous une copie de Wired et une copie de l'Atlantic Monthly. Regardez un article important et essayer de trouver un significative 1 paragraphe résumé de ce que l'article est au sujet. Maintenant, essayez de décrire comment un programme pourrait faire la même chose. Le même ensemble de règles appliquent à tous les articles? Même les articles de la mêmemagazine? Non, ils ne le font pas.

Désolé de sonner comme un rabat-joie à ce sujet, mais ce problème est vraiment dur .

Etrangement, une grande raison pour Google d'être autant de succès qu'il est (à partir d'un moteur de recherche perspective) est qu'ils placent beaucoup de poids sur les mots et entourant un lien d'un autre site . Ce lien texte représente une sorte de mini-résumé fait par un humain du site / page, il est un lien vers, exactement ce que vous voulez quand vous êtes à la recherche. Et cela fonctionne dans presque tous les styles genre / mise en page d'information. Il est une idée positive brillante et je souhaite que je l'avais eu moi-même. Mais il n'aurait pas fait mes clients tout bon parce qu'il étaient pas de liens de les annonces de dernière nuit TV Moscou à certains télétype au hasard, ils avaient capturé, ou une version mal d'une reconnaissance optique d'un journal égyptien .

/ mini-diatribe-et trip-down-mémoire voies

Autres conseils

Un mot:. Boilerpipe

Pour le domaine des nouvelles, sur un corpus représentatif, nous sommes maintenant à 98% / 99% de précision d'extraction (moyenne / médiane)

indépendant langue aussi tout à fait (aujourd'hui, je l'ai appris cela fonctionne pour le népalais, aussi).

Disclaimer:. Je suis l'auteur de ce travail

Avez-vous vu boilerpipe ? Trouvé il mentionné dans une question similaire.

Je suis venu à travers http://www.keyvan.net/2010/08 / php-lisibilité /

  

L'année dernière, j'ai porté la Lisibilité de Arc90   à utiliser dans le projet Cinq filtres.   Il a été plus d'un an et   Lisibilité a beaucoup amélioré -   grâce à Chris Dary et le reste   l'équipe Arc90.

     

Dans le cadre d'une mise à jour du Full-Text   service RSS Je commencé à porter un plus   version récente (1.6.2) pour PHP et   le code est maintenant en ligne.

     

Pour ceux qui ne connaissent pas, Lisibilité   a été créé pour être utilisé comme un addon de navigateur   (A bookmarklet). En un clic, il   transforme les pages web pour une lecture facile   et l'encombrement bandes loin. Apple   récemment intégré dans Safari   Reader.

     

Il est également très pratique pour le contenu   extraction, ce qui est la raison pour laquelle je voulais   le port à PHP en premier lieu.

il y a quelques outils open source disponibles qui font des tâches d'extraction d'article similaire. https://github.com/jiminoc/goose qui était open source par Gravity.com

Il a des infos sur le wiki, ainsi que la source que vous pouvez voir. Il y a des dizaines de tests unitaires qui montrent le texte extrait de divers articles.

J'ai travaillé avec Peter Rowell au fil des ans sur une grande variété de projets de recherche d'information, dont beaucoup impliqués extraction de texte très difficile à partir d'une diversité de sources de balisage.

Actuellement, je suis concentré sur l'extraction de connaissances à partir de sources « firehose » tels que Google, y compris leurs tuyaux RSS qui Aspirer d'énormes quantités d'articles de presse locaux, régionaux, nationaux et internationaux. Dans de nombreux cas, les titres sont riches et significatifs, mais ne sont que des « crochets » utilisés pour attirer du trafic vers un site Web où l'article réel est un paragraphe vide de sens. Cela semble être une sorte de « spam dans le sens inverse » conçu pour stimuler la circulation de cotes.

Pour classer les articles, même avec la longueur la plus simple métrique de l'article, vous devez être en mesure d'extraire le contenu de la balise. Le balisage exotiques et les scripts qui domine le contenu Web ces jours-ci casse les paquets d'analyse syntaxique de source ouverte comme la soupe Belle lorsqu'elle est appliquée à de grands volumes caractéristiques de Google et de sources similaires. J'ai trouvé que 30% des articles minées briser ces paquets en règle générale. Cela nous a amené à se recentrer sur le développement de très faible niveau, parseurs intelligent, caractère basé à séparer le texte brut du balisage et de script. Plus à grains fins de votre analyse syntaxique (à savoir la séparation du contenu) du (et de main) plus intelligent vos outils doivent être. Pour rendre les choses encore plus intéressantes, vous avez une cible en mouvement comme la création Web continue à se transformer et changer avec le développement de nouvelles approches de script, le balisage et les extensions de langage. Ceci tend à favoriser la diffusion des informations sur la base de services, par opposition aux applications « sous film plastique rétractable ».

Rétrospectivement au fil des années, il semble y avoir eu très peu d'articles scientifiques écrits sur la mécanique de bas niveau (la « pratique de l'ancien » vous faites référence à) de cette extraction, probablement parce qu'il est si domaine et contenu spécifique.

Belle La soupe est un analyseur syntaxique HTML robuste écrit en Python.

Il gère avec élégance HTML avec un mauvais balisage et est aussi bien conçu comme une bibliothèque Python, supportant des générateurs pour l'itération et la recherche, point notation pour l'accès des enfants (par exemple, l'accès <foo><bar/></foo>' usingdoc.foo.bar`) et unicode transparente.

Si vous êtes hors d'extraire le contenu des pages qui utilisent beaucoup javascript, sélénium de contrôle à distance peut faire le travail. Il travaille pour plus que simplement tester. Le principal inconvénient de le faire est que vous finirez par utiliser beaucoup plus de ressources. L'avantage est que vous obtiendrez un flux de données beaucoup plus précises de pages riches / apps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top