{"id":19862767,"url":"https://github.com/pyunits/pyunit-address","last_synced_at":"2025-05-02T04:30:53.835Z","repository":{"id":40631374,"uuid":"242957473","full_name":"pyunits/pyunit-address","owner":"pyunits","description":"字符串地址查询,支持自定义地址词库,解析地址,地址识别,地址抽取,中文地址.","archived":false,"fork":false,"pushed_at":"2021-03-31T09:55:25.000Z","size":3598,"stargazers_count":96,"open_issues_count":0,"forks_count":18,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T22:37:37.030Z","etag":null,"topics":["address","python3","word"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyunits.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-25T09:14:31.000Z","updated_at":"2025-02-24T03:25:25.000Z","dependencies_parsed_at":"2022-07-14T23:00:33.177Z","dependency_job_id":null,"html_url":"https://github.com/pyunits/pyunit-address","commit_stats":null,"previous_names":["pyunit/pyunit-address"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyunits%2Fpyunit-address","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyunits%2Fpyunit-address/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyunits%2Fpyunit-address/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyunits%2Fpyunit-address/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyunits","download_url":"https://codeload.github.com/pyunits/pyunit-address/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251986735,"owners_count":21675950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["address","python3","word"],"created_at":"2024-11-12T15:12:38.144Z","updated_at":"2025-05-02T04:30:51.389Z","avatar_url":"https://github.com/pyunits.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **PyUnit-Address** [![](https://gitee.com/tyoui/logo/raw/master/logo/photolog.png)][1]\n\n## 字符串地址查询,支持自定义地址词库\n\n[![](https://img.shields.io/badge/Python-3.7-green.svg)](https://pypi.org/project/pyunit-address/)\n\n## 安装\n\n    pip install pyunit-address\n\n## 说明\n\n    该算法有两个词库，一个是全国五级地址，统计时间是2019年。这个地址库是默认加载。不能删除也不能替换。\n    如果需要提取非规则的地址，则实用深度模型：  https://github.com/PyUnit/pyunit-ner\n    建议两者一起使用，互相补足。\n\n## 测试\n\n```python\nfrom pyunit_address import *\nimport time\n\naddress = Address(is_max_address=True)\naddress.add_vague_text(['红花岗', '花溪'])  # 加入地址名称\naddress.add_vague_text('贵州省-遵义市-遵义县-虾子镇-乐安村-乐石台')  # 加入一串有顺序的地址\naddress.add_vague_text('自定义词库.txt')  # 加载词库文件,词库文件中的每一行，可以是一串顺序地址，也可以是一个地址\n\n\ndef all_test():\n    string_ = '我家在红花岗，你家在贵州贵阳花溪区,他家在贵州省遵义市花溪区'\n    finds = find_address(address, string_)\n    for find in finds:\n        print()\n        print('地址', find)\n        print('补全地址', supplement_address(address, find))\n        print('纠错地址', correct_address(address, find))\n        print('--------------------------')\n\n\n# 地址 红花岗\n# 补全地址 ['贵州省-遵义市-红花岗区']\n# 纠错地址 贵州省-遵义市-红花岗区\n# --------------------------\n# \n# 地址 贵州贵阳花溪区\n# 补全地址 ['贵州省-贵阳市-花溪区']\n# 纠错地址 贵州省-贵阳市-花溪区\n# --------------------------\n# \n# 地址 贵州省遵义市花溪区            注：这个地址是错误的\n# 补全地址 []                      注：错误的地址无法补全\n# 纠错地址 贵州省-贵阳市-花溪区      注：错误的地址被纠正为对的地址\n# --------------------------\n\n\nif __name__ == '__main__':\n    start = time.time()\n    all_test()\n    print(time.time() - start)  # 0.0002001047134399414秒\n\n```\n\n## 查询地址\n\n```python\nfrom pyunit_address import Address, find_address\n\n\ndef test():\n    address = Address(is_max_address=True)\n\n    # 添加词库，可以是一个字符串、可以是列表字符串、可以是词库文件，一个词语占一行\n    address.add_vague_text('红花岗')  # 在默认词库上追加地址词库\n    address.add_vague_text('贵州省-遵义市-遵义县-虾子镇-乐安村')  # 添加补全地址\n    address.add_vague_text(['花溪', '贵州省-遵义市-遵义县-虾子镇-乐安村'])  # 加载词库列表，替换默认词库\n    address.add_vague_text('自定义词库.txt')  # 加载词库文件，替换默认词库\n    af = find_address(address, '我家在贵州遵义红花岗区')\n    print(af)\n\n\nif __name__ == '__main__':\n    test()\n```\n\n### 自动补全地址:输入一句话\n\n```python\nfrom pyunit_address import Address, supplement_address\n\n\ndef test_supplement_address():\n    address = Address(is_max_address=True)\n    asu = supplement_address(address, '我家在遵义县')  # [贵州省-遵义市-遵义县]\n    print(asu)\n\n\nif __name__ == '__main__':\n    test_supplement_address()\n```\n\n### 自动纠正地址\n\n```python\nfrom pyunit_address import Address, correct_address\n\n\ndef correct_address_test():\n    address = Address(is_max_address=True)\n    print(correct_address(address, '贵州省遵义市花溪区'))  # 贵州省-贵阳市-花溪区\n\n\nif __name__ == '__main__':\n    correct_address_test()\n```\n\n## Docker部署\n\n    docker pull jtyoui/pyunit-address\n    docker run -d -P pyunit-time\n\n## Swagger在线api文档\n\n    http://localhost:xxx/docs\n\n### 寻找地址的请求参数\n\n|**参数名**|**类型**|**是否可以为空**|**说明**|\n|------|------|-------|--------|\n|data|string|YES|输入一句带有地址的句子|\n\n### 请求示例\n\n\u003e #### Python3 Requests测试\n\n```python\nimport requests\n\nurl = \"http://127.0.0.1:2312/pyunit/address/find\"\ndata = {\n    'data': '我家在贵州龙里'\n}\nresponse = requests.get(url, params=data).json()\nprint(response)\n``` \n\n\u003e #### 返回结果\n\n```json\n{\n  \"code\": 200,\n  \"result\": [\n    {\n      \"address\": \"龙里\",\n      \"correct_address\": \"贵州省-黔南布依族苗族自治州-龙里县\",\n      \"supplement_address\": [\n        {\n          \"key\": \"贵州省-黔南布依族苗族自治州-龙里县\"\n        }\n      ],\n      \"type\": \"区县\"\n    }\n  ]\n}\n```\n\n### 增加地址词库请求参数\n\n|**参数名**|**类型**|**是否可以为空**|**说明**|\n|------|------|-------|--------|\n|data|string|YES|输入一句带有地址的句子|\n\n### 请求示例\n\n\u003e #### Python3 Requests测试\n\n```python\nimport json\nimport requests\n\nurl = \"http://127.0.0.1:2312/pyunit/address/add\"\ndata = {\n    'data': json.dumps(['贵州省-贵阳市-观山湖区-观山湖公园', '金融大街', '小吃城'])\n}\nresponse = requests.get(url, params=data).json()\nprint(response)\n``` \n\n### 删除地址词库请求参数\n\n|**参数名**|**类型**|**是否可以为空**|**说明**|\n|------|------|-------|--------|\n|data|string|YES|输入一句带有地址的句子|\n\n### 请求示例\n\n\u003e #### Python3 Requests测试\n\n```python\nimport json\n\nimport requests\n\nurl = \"http://127.0.0.1:2312/pyunit/address/del\"\ndata = {\n    'data': json.dumps(['金融大街', '小吃城']),\n}\nresponse = requests.get(url, params=data).json()\nprint(response)\n``` \n\n\u003e #### 返回结果\n\n```json\n{\n  \"code\": 200,\n  \"result\": \"del success\"\n}\n```\n\n## TODO\n\n- [x] 自动寻找最长地址长度\n- [x] 全国五级地址新词库\n- [x] 支持自定义地址词库\n- [x] 不支持非规则地址\n- [x] 支持地址自动补全\n- [x] 支持快速高效搜索\n- [x] 支持纠错地址\n\n***\n\n[1]: https://blog.jtyoui.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyunits%2Fpyunit-address","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyunits%2Fpyunit-address","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyunits%2Fpyunit-address/lists"}