Webページ上の物理アドレスを認識するアルゴリズム
-
20-08-2019 - |
質問
HTMLページ上の構造化データを認識するための最適なアルゴリズムは何ですか?
たとえば、Googleはメールで自宅/会社の住所を認識し、この住所への地図を提供します。
解決
GATE などの名前付きエンティティ抽出フレームワークは、少なくとも場所の情報抽出の問題。一般的な問題の解決に役立つ既知の場所の地名辞典の支援を受けています。ページが共通のソースから生成されたマシンでない限り、ジョブには少し弱い正規表現が見つかります。
他のヒント
適切なマークアップがある場合<!>#8212;ページのテキストだけでなく<!>#8212; 2番目の上記の美しいスープの提案。特に、アドレスタグは、最も低いハングアップフルーツを提供する必要があります。 adr microformat もご覧ください。最初の2つで十分な情報が得られなかった場合、または最初の2つを検索するために必要なデータがなかった場合にのみ、正規表現にフォールバックします。
国際アドレスも処理する必要がある場合は、頭痛の種になります。 国際住所形式は驚くほど多様です。
Googleは問題に対して2段階のアプローチを取っていると思います(少なくとも私はそうします)。まず、かなり一般的な検索パターンを使用して住所になる可能性のあるすべてのものを選択し、次にマップデータベースを使用してその文字列を検索し、一致するものがあるかどうかを確認します。彼らがそうするなら、おそらくアドレスではないでしょう。コードでマップデータベースを使用できれば、おそらく作業が楽になります。
住所の地理的位置を制限できない限り、単に世界中で使用されている住所形式の大きなバリエーションのために、文字列を解析するだけで住所として識別することはほとんど不可能だと推測しています。
正規表現を使用しないでください。既存のHTMLパーサーを使用します(Pythonなど)。 BeautifulSoup を強くお勧めします。正規表現を使用してHTML要素を解析する場合でも、BeautifulSoupは取得します。
独自の正規表現でそれを行う場合、必要なデータを見つけることだけでなく、無効なHTMLなど、つまずくであろうその他の非常に明白でない問題を心配する必要があります。 。
あなたが求めていることは、完璧にしたいのであれば本当に難しい問題です。単純な正規表現はほとんどの場合それをほとんど正しくしますが、毎回正確に正しいものを作成するのは非常に困難です。奇妙なコーナーケースがたくさんあり、いくつかのケースでは明確な答えはありません。私が見たほとんどのWebサイトは、最も単純なURL以外のすべてを処理するのはかなり悪い仕事です。
正規表現のルートをたどる場合は、おそらくソースコードをチェックアウトすることをお勧めします http://metacpan.org/pod/Regexp::Common::URI :: http
繰り返しますが、正規表現でうまくいくはずです。
さまざまな住所があるため、<!> quot;(number)、(name)Street | Boulevard | Main <!> quot;などの式によって、文字列が住所であるかどうかしか推測できません。など
テキストで見つかったアドレスをマップしてそれらがどのように機能するかを確認することを目的とするいくつかのFirefox拡張機能を検討することを検討できます
- 要件によって異なります。
メールおよび連絡先の詳細については、正規表現で十分です。 アドレスについては、正規表現だけでは役に立ちません。 NLP(NER)<!> ampについて考えてください。 POSタグ付け。 人に関連する情報を見つけるには、NERなしでは何もできません。
- 段落などの情報が必要な場合は、タグを使用してコンテンツを取得します。