Question

Quels sont les meilleurs algorithmes pour reconnaître des données structurées sur une page HTML?

Par exemple, Google reconnaît l'adresse de domicile / entreprise dans un courrier électronique et propose une carte à cette adresse.

Était-ce utile?

La solution

Un cadre d’extraction d’entités nommées, tel que GATE , a au moins abordé le problème d'extraction d'informations pour les emplacements, assisté par un répertoire toponymique d'endroits connus permettant de résoudre les problèmes courants. À moins que les pages n'aient été générées par une machine à partir d'une source commune, vous allez trouver des expressions régulières un peu faibles pour le travail.

Autres conseils

Si vous avez le balisage correct & # 8212; et pas seulement le texte de la page & # 8212; j'appuie la suggestion de Beautiful Soup ci-dessus. En particulier, la étiquette d'adresse doit fournir le résultat le plus bas. Consultez également le microformat adr . Je ne retomberais que dans les expressions rationnelles si les deux premiers ne tiraient pas assez d'informations ou si je n'avais pas les données nécessaires pour rechercher les deux premiers.

Si vous devez également gérer des adresses internationales, vous vous retrouverez dans un monde de maux de tête. Les formats d'adresse internationaux sont extrêmement variés.

Je suppose que Google adopte une approche en deux étapes pour résoudre le problème (du moins c'est ce que je ferais). Tout d'abord, ils utilisent un modèle de recherche assez général pour sélectionner tout ce qui pourrait être une adresse, puis ils utilisent leur base de données de cartes pour rechercher cette chaîne et voir s'ils obtiennent des correspondances. S'ils le font, c'est probablement une adresse s'ils ne le font pas. Si vous pouvez utiliser une base de données de cartes dans votre code, cela vous facilitera probablement la vie.

À moins que vous ne puissiez limiter l'emplacement géographique des adresses, j'imagine qu'il est pratiquement impossible d'identifier une chaîne en tant qu'adresse simplement en l'analysant, tout simplement en raison de la grande diversité de formats d'adresses utilisés dans le monde.

N'utilisez pas d'expressions régulières. Utilisez un analyseur HTML existant, par exemple en Python, je vous recommande vivement BeautifulSoup . Même si vous utilisez une expression régulière pour analyser les éléments HTML capturés par BeautifulSoup.

Si vous le faites avec vos propres expressions rationnelles, vous devez non seulement vous soucier de la recherche des données dont vous avez besoin, mais également du code HTML non valide et de nombreux autres problèmes très évidents que vous allez trébucher. .

Ce que vous demandez est vraiment un problème assez difficile si vous voulez que tout soit parfait. Bien qu'une simple expression rationnelle la comprenne bien la plupart du temps, en écrire une qui la réalisera exactement à chaque fois est terriblement difficile. Il y a beaucoup de cas étranges et dans plusieurs cas, il n'y a pas de réponse unique et sans ambiguïté. La plupart des sites Web que j'ai vus ont un très mauvais travail en gérant toutes les URL, sauf les plus simples.

Si vous voulez suivre la route des expressions rationnelles, le mieux est probablement de vérifier le code source de http://metacpan.org/pod/Regexp::Common::URI :: http

Encore une fois, les expressions régulières devraient faire l'affaire.

En raison de la diversité des adresses, vous ne pouvez deviner si une chaîne est une adresse ou non à l'aide d'une expression comme "(nombre), (nom) Street | Boulevard | Main", etc.

Vous pouvez envisager de consulter certaines extensions firefox qui visent à mapper les adresses trouvées dans le texte pour voir comment elles fonctionnent

Vous pouvez consulter cet exemple d'extraction aux États-Unis http://code.google.com. / p / graph-expression / wiki / USAAddressExtraction

  1. Cela dépend de vos besoins.

pour l'email et les détails de contact regex est plus que suffisant. Pour les adresses, seules les expressions rationnelles ne vont pas aider. Pensez à la PNL (NER) & amp; Marquage POS. Pour trouver des informations relatives aux personnes, vous ne pouvez rien faire sans NER.

  • Si vous avez besoin d'informations telles que des paragraphes, obtenez le contenu à l'aide de balises.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top