DQinYuan / chinese_province_city_area_mapper

一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块
MIT License
1.65k stars 392 forks source link

关于道路地址中含省市名导致识别错误问题的简单解决方法 #70

Open aoiy opened 3 years ago

aoiy commented 3 years ago

问题如issue67、69,当前版本中 ../cpca/init.py的253行添加一个条件即可,请 @DQinYuan 参考

for word in jieba.cut(addr):
    # 优先提取低级别行政区 (主要是为直辖市和特别行政区考虑)
    if word in area_map:
        _set_pca('area', word, area_map.get_full_name(word))
    elif word in city_map:
        if word in province_map:
            _set_pca('province', word, province_map[word])
        _set_pca('city', word, city_map.get_full_name(word))
    elif word in province_map:
        _set_pca('province', word, province_map[word])
alexlausz commented 3 years ago

@aoiy 你上面的代码是针对使用jieba分词的情况,请问如果不使用jieba(cut=False)而使用全文解析(_full_text_extract),要怎么修改?

例如: addr_str = ‘黑龙江省安达市朝阳街168号’ df = cpca.transform([addr_str], pos_sensitive=True, cut=False, lookahead=8, open_warning=False) da = df.to_dict(orient='records') print('cpca: {}'.format(da))

[{'省': '黑龙江省', '市': '朝阳市', '区': '安达市', '地址': '街168号', '省_pos': 0, '市_pos': 7, '区_pos': 4}]

DQinYuan commented 3 years ago

@alexlausz 这个问题已经解决了,使用 pip install -U cpca 将 cpca 更新到最新版本就行了 。

>>> import cpca
>>> cpca.transform(["黑龙江省安达市朝阳街168号"])
      省    市    区       地址  adcode
0  黑龙江省  绥化市  安达市  朝阳街168号  231281
alexlausz commented 3 years ago

@alexlausz 这个问题已经解决了,使用 pip install -U cpca 将 cpca 更新到最新版本就行了 。

>>> import cpca
>>> cpca.transform(["黑龙江省安达市朝阳街168号"])
      省    市    区       地址  adcode
0  黑龙江省  绥化市  安达市  朝阳街168号  231281

@DQinYuan 更新后果然可以了,非常感谢。