一、什么是 JioNLP?
JioNLP是一个面向NLP开发者的工具包,提供了常见的中文文本预处理、解析等功能,使用简单、高效准确、无需配置,可极大加快NLP项目的开发进度。
主要特点包括:
- 代码开源,使用MIT协议
- 功能丰富,涵盖多个NLP预处理需求
- 使用简单,无需复杂配置即可调用
- 准确高效,算法经过精心设计和性能优化
- 文档完善,提供详细使用说明
二、JioNLP功能
文本预处理
- 关键短语抽取
- 文本摘要
- 停用词过滤
- 分句
- 文本清洗(去除异常字符、HTML标签等)
命名实体识别
- 地址解析(省市县区乡村)
- 新闻地名识别
- 手机号/座机号归属地查询
- 车牌号解析
- 身份证号解析
- 时间语义解析
正则抽取和替换
- 抽取Email/URL/电话号码/IP等
- 替换/删除上述实体字符串
- 抽取括号/金额/QQ等信息
词典加载
- 中国省市县地名词典
- 世界国家城市词典
- 成语/歇后语词典
- 新华字/词典
语料处理
- 按行读写文件
- 分词/命名实体语料处理辅助
- 情感分析词典
数据增强
- 同音字替换
- 实体替换
- 邻近字符换位
- 回译
可见,JioNLP囊括了NLP预处理中常见的需求,且还在不断完善和扩充功能中。
三、使用示例
Python安装
pip install jionlp
地址解析
import jionlp as jio
text = "我现在的位置是四川省成都市武侯区红牌楼街19号"
res = jio.parse_location(text, town_village=True)
print(res)
输出:
{'province': '四川省', 'city': '成都市', 'county': '武侯区', 'town': '红牌楼街道','village': None, 'detail': '红牌楼街道19号','full_location': '四川省成都市武侯区红牌楼街道19号','orig_location': '武侯区红牌楼街19号'}
可以看到,JioNLP准确解析出了文本中的省市区县街道等地址信息,并以字典形式返回,非常方便。
货币金额抽取
import json
import jionlp as jio
text = '张三赔偿李大花人民币车费601,293.11元,工厂费大约一万二千三百四十五元,利息9佰日元,打印费十块钱。'
res = jio.ner.extract_money(text, with_parsing=False)
print(json.dumps(res, ensure_ascii=False, indent=4, separators=(',', ':')))
输出:
[{'text': '601,293.11元', 'offset': [12, 23], 'type': 'money'},
{'text': '大约一万二千三百四十五元', 'offset': [27, 39], 'type': 'money'},
{'text': '9佰日元', 'offset': [42, 46], 'type': 'money'},
{'text': '人民币十块钱', 'offset': [50, 56], 'type': 'money'}]
四、总结
JioNLP为NLP开发者提供了实用的预处理解析工具,有效减轻了开发负担,值得去了解和使用。