5

在HTML頁面上識別結構化數據的最佳算法是什麼?識別網頁物理地址的算法

例如Google會在電子郵件中識別住宅/公司的地址,並提供該地址的地圖。

+1

有人編輯這個地址或物理地址,因爲這仍然很模糊。 – 2008-12-08 12:00:30

+1

謝謝,我現在意識到問題是模棱兩可的。 – gyurisc 2008-12-09 08:07:44

+0

啊,非常好,謝謝:-) – 2008-12-09 12:53:31

回答

10

一個命名實體提取框架,如GATE,至少已經解決了位置的information extraction problem,由已知地方的地名錄幫助解決常見問題。除非這些頁面是由一個通用源代碼生成的機器,否則你會發現正則表達式對於這項工作有點弱。

0

再次,正則表達式應該做的伎倆。

由於各種各樣的地址,你只能一個字符串是否是一個地址,或不喜歡的表情猜「(號),(名稱)街|大道|主要」等

你可以考慮尋找一些Firefox的擴展,旨在映射在文本中找到的地址,看看它們是如何工作的

1

如果你想要完美的話,你所要求的確實是一個很難的問題。雖然簡單的正則表達式大部分時間都會使用正確的正則表達式,但編寫一個每次都能正確完成的正則表達式很難。有很多奇怪的角落案例,有幾個案例中沒有明確的答案。我見過的大多數網站都處理了一個糟糕的工作,只處理最簡單的URL。

如果你想往下走的正則表達式的路由你最好的選擇可能是檢查出的 http://metacpan.org/pod/Regexp::Common::URI::http

2

的源代碼,不要使用正則表達式。使用現有的HTML解析器,例如在Python中,我強烈建議使用BeautifulSoup。即使您使用正則表達式來解析BeautifulSoup抓取的HTML元素。

如果你用你自己的正則表達式來做,你不僅需要擔心找到你需要的數據,你必須擔心諸如無效HTML之類的東西,以及許多其他非常明顯的問題,你會偶然發現..

3

我猜測Google對這個問題採取了兩步辦法(至少我會這麼做)。首先,他們使用一些相當普遍的搜索模式來挑選出可能是地址的所有東西,然後他們使用他們的地圖數據庫查找該字符串並查看它們是否得到任何匹配。如果他們這樣做可能是一個地址,如果他們不這可能不是。如果您可以在代碼中使用地圖數據庫,那可能會讓您的生活更輕鬆。

除非您可以限制地址的地理位置,否則僅僅因爲世界各地使用的地址格式的巨大差異,我猜測幾乎不可能通過解析它來識別字符串作爲地址。

4

如果你有適當的標記 - 而不僅僅是來自頁面的文本 - 我第二次上面的美麗湯建議。特別是,address tag應該提供最低的低懸果。也請看adr microformat。如果前兩項沒有足夠的信息,或者我沒有必要的數據來尋找前兩項,我只會回到正則表達式。

0
  1. 這取決於您的要求。

對於電子郵件和聯繫方式正則表達式是綽綽有餘。 對於地址正則表達式無濟於事。想想NLP(NER)& POS標記。 爲了找到與您相關的信息,您無法在沒有NER的情況下執行任何操作。

  • 如果您需要像段落這樣的信息,請使用標籤獲取內容。