USADDRESS是使用高級NLP方法將非結構化的美國地址字符串解析為地址組件的Python庫。
這可以做到的:使用概率模型,它在識別地址組件的情況下(非常受過教育的)猜測,即使在基於規則的解析器通常會分解的棘手情況下。
這無法做到的事情:它無法以完美的準確性識別地址組件,也無法驗證給定的地址正確/有效。
它也不使地址歸一化。但是,該庫構建在Usaddress之上。
一個不使用Python的程序員在USADDRESS上建立的寧靜API。需要一個API鍵,前1,000個分析是免費的。
解析器:解析和拆分地址使您可以輕鬆地將地址劃分為街道,城市,州,Zipcode以及更多在Google表格中的單獨列。
在碼頭中,
pip install usaddress請注意, parse和tag是不同的方法:
import usaddress
addr = '123 Main St. Suite 100 Chicago, IL'
# The parse method will split your address string into components, and label each component.
# expected output: [(u'123', 'AddressNumber'), (u'Main', 'StreetName'), (u'St.', 'StreetNamePostType'), (u'Suite', 'OccupancyType'), (u'100', 'OccupancyIdentifier'), (u'Chicago,', 'PlaceName'), (u'IL', 'StateName')]
usaddress . parse ( addr )
# The tag method will try to be a little smarter
# it will merge consecutive components, strip commas, & return an address type
# expected output: (OrderedDict([('AddressNumber', u'123'), ('StreetName', u'Main'), ('StreetNamePostType', u'St.'), ('OccupancyType', u'Suite'), ('OccupancyIdentifier', u'100'), ('PlaceName', u'Chicago'), ('StateName', u'IL')]), 'Street Address')
usaddress . tag ( addr )USADDRESS使用Parserator,這是一個用於製作和改進概率解析器的庫 - 特別是使用Python -Crfsuite實現條件隨機字段的解析器。解析器允許您在標記的培訓數據上訓練USADDRESS解析器的模型(.crfsuite設置文件),並提供用於添加新標記的培訓數據的工具。
要在計算機上構建USADDRESS的開發版本,請在命令行中運行以下代碼:
git clone https://github.com/datamade/usaddress.git
cd usaddress
pip install -r requirements.txt
python setup.py develop
parserator train training/labeled.xml usaddress
然後運行測試套件以確認一切正常工作:
nosetests .
構建代碼時遇到困難?打開一個問題,我們很樂意幫助您進行故障排除。
如果USADDRESS在特定的地址模式上始終失敗,則可以通過向模型添加新的培訓數據來調整解析器的行為。遵循我們的指南在培訓目錄中,並確保提出拉動請求,以便我們可以將您的貢獻納入下一個版本!
在問題跟踪器中報告問題
如果地址被錯誤解析,請告訴我們!您可以打開問題,也可以(如果您冒險)添加新的培訓數據以改善解析器的模型。如果可能,請發送一些相似地址模式的現實世界示例,以及有關數據源的一些信息 - 這將有助於我們訓練解析器並提高其性能。
如果圖書館中的某些內容沒有直觀地行為,那是一個錯誤,應報告。
版權(C)2014年亞特蘭大雜誌憲法。根據MIT許可發布。