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许可发布。