Preprocessing tool for Chinese NLP
Project description
<a alt="jionlp logo">
<img src="https://github.com/dongrixinyu/JioNLP/blob/master/jionlp_logo.jpg" / style="width:100px;height:100px">
</a>
<a alt="License">
<img src="https://img.shields.io/github/license/dongrixinyu/JioNLP?color=crimson" /></a>
<a alt="Size">
<img src="https://img.shields.io/badge/size-36.4m-orange" /></a>
<a alt="Downloads">
<img src="https://img.shields.io/badge/downloads-4k-yellow" /></a>
<a alt="Version">
<img src="https://img.shields.io/badge/version-1.3.14-green" /></a>
<a href="https://github.com/dongrixinyu/JioNLP/pulse" alt="Activity">
<img src="https://img.shields.io/github/commit-activity/m/dongrixinyu/JioNLP?color=blue" /></a>
——JioNLP:中文 NLP 预处理工具包 A Python Library for Chinese NLP Preprocessing
pip install -i https://test.pypi.org/simple/ jionlp
-
做 NLP 任务,需要清洗、过滤语料?用 JioNLP
-
做 NLP 任务,需要做信息抽取?用 JioNLP
-
做 NLP 任务,需要做数据增强?用 JioNLP
-
做 NLP 任务,需要给模型添加偏旁、拼音、词典、繁体转换信息?用 JioNLP
总之,JioNLP 提供 NLP 任务预处理功能,准确、高效、零使用门槛,并提供一步到位的查阅入口。
功能主要包括:文本清洗,去除HTML标签、异常字符、冗余字符,转换全角字母、数字、空格为半角,抽取及删除E-mail及域名、电话号码、QQ号、括号内容、身份证号、IP地址、URL超链接、货币金额与单位,金额数字转大写汉字,解析身份证号信息、手机号码归属地、座机区号归属地、手机号码运营商,按行快速读写文件,(多功能)停用词过滤,(优化的)分句,地址解析,新闻地域识别,繁简体转换,汉字转拼音,汉字偏旁、字形、四角编码拆解,基于词典的情感分析,色情数据过滤,反动数据过滤,关键短语抽取,抽取式文本摘要,成语接龙,成语词典、歇后语词典、新华字典、新华词典、停用词典、中国地名词典、中国县级地名变更词典、世界地名词典,基于词典的NER,NER的字、词级别转换,NER的entity和tag格式转换,NER模型的预测阶段加速并行工具集,NER标注和模型预测的结果差异对比,NER标注数据集分割与统计,文本分类标注数据集的分割与统计,回译数据增强,相邻近汉字换位数据增强,同音词替换数据增强,随机增删字符数据增强。
Update 2021-02-09
新增 多个数据增强工具
邻近汉字换位、同音词替换、随机增删字符
>>> import jionlp as jio
>>> text = '人口危机如果无法得到及时解决,80后、90后们将受到巨大的冲击。'
>>> res1 = jio.swap_char_position(text) # 邻近汉字换位
>>> res2 = jio.homophone_substitution(text) # 同音词替换
>>> res3 = jio.random_add_delete(text) # 随机增删字符
>>> print(res1[0] + '\n' + res2[0] + '\n' + res3[0])
# 人口危机如果无法得时及到解决,80后、90后们将受到巨大的冲击。
# 人口危机如果无法得到即时解决,80后、90后们将受到巨大的冲击。
# 人D口危机如果无法得到及时解决,80后90后们将到巨大的冲击。
安装 Installation
- python>=3.6 优先使用
$ git clone https://github.com/dongrixinyu/JioNLP
$ cd ./JioNLP
$ pip install .
- pip 安装 有时存在版本滞后
$ pip install -i https://test.pypi.org/simple/ jionlp
使用 Features
- 导入工具包,查看工具包的主要功能与函数注释
>>> import jionlp as jio
>>> jio.help() # 输入关键词搜索工具包是否包含某功能,如输入“回译”
>>> dir(jio)
>>> print(jio.extract_parentheses.__doc__)
- 在 Linux 系统,可使用以下命令做搜索:
$ jio_help
1.小工具集 Gadgets
| 功能 | 函数 |描述 |
|--------|--------|-------|
|查找帮助 |help|若不知道 JioNLP 有哪些功能,可根据命令行提示键入若干关键词做搜索 |
|关键短语抽取 |extract_keyphrase|给定一篇文本,抽取其对应关键短语 |
|抽取式文本摘要 |extract_summary|给定一篇文本,抽取其对应文摘 |
|停用词过滤 |remove_stopwords|给定一个文本被分词后的词 list,去除其中的停用词 |
|分句 |split_sentence |对文本按标点分句。 |
|地址解析 |parse_location |给定一个包含国内地址字符串,识别其中的省、市、县区、乡镇街道、村社等信息 |
|电话号码归属地、
运营商解析 |phone_location
cell_phone_location
landline_phone_location |给定一个电话号码字符串,识别其中的省、市、运营商 |
|新闻地名识别 |recognize_location|给定新闻文本,识别其中的国内省、市、县,国外国家、城市等信息 |
|身份证号解析 |parse_id_card |给定一个身份证号,识别对应的省、市、县、出生年月、
性别、校验码等信息 |
|成语接龙 |idiom_solitaire|成语接龙,即前一成语的尾字和后一成语的首字(读音)相同 |
|色情数据过滤 |
|反动数据过滤 |
|繁体转简体 |tra2sim |繁体转简体,支持逐字转与最大匹配两种模式 |
|简体转繁体 |sim2tra |简体转繁体,支持逐字转与最大匹配两种模式 |
|汉字转拼音 | pinyin | 找出中文文本对应的汉语拼音,并可返回声母、韵母、声调 |
|汉字转偏旁与字形 | char_radical | 找出中文文本对应的汉字字形结构信息,
包括偏旁部首(“河”氵)、字形结构(“河”左右结构)、
四角编码(“河”31120)、汉字拆解(“河”水可) |
|金额数字转汉字 |money_num2char| 给定一条数字金额,返回其汉字大写结果 |
2.数据增强
| 功能 | 函数 |描述 |
|--------|--------|-------|
|回译 |BackTranslation|给定一篇文本,采用各大厂云平台的机器翻译接口,实现数据增强 |
|邻近汉字换位 |swap_char_position |随机交换相近字符的位置,实现数据增强 |
|同音词替换|homophone_substitution|相同读音词汇替换,实现数据增强 |
|随机增删字符|random_add_delete |随机在文本中增加、删除某个字符,对语义不造成影响|
3.正则抽取与解析
| 功能 | 函数 |描述 |
|--------|--------|-------|
|清洗文本 |clean_text |去除文本中的异常字符、冗余字符、HTML标签、括号信息、
URL、E-mail、电话号码,全角字母数字转换为半角|
|抽取 E-mail|extract_email |抽取文本中的 E-mail,返回位置与域名 |
|抽取 金额|extract_money |抽取文本中的金额,并将其以数字 + 单位标准形式输出 |
|抽取电话号码 | extract_phone_number | 抽取电话号码(含手机、座机),返回域名、类型与位置
|抽取中国身份证 ID|extract_id_card |抽取身份证 ID,配合 jio.parse_id_card 返回身份证的
详细信息(省市县、出生日期、性别、校验码) |
|抽取 QQ 号 |extract_qq |抽取 QQ 号,分为严格规则和宽松规则 |
|抽取 URL |extract_url |抽取 URL 超链接 |
|抽取 IP地址 |extract_ip_address |抽取 IP 地址|
|抽取括号中的内容 |extract_parentheses |抽取括号内容,包括 {}「」[]【】()()<>《》 |
|删除 E-mail |remove_email |删除文本中的 E-mail 信息 |
|删除 URL |remove_url |删除文本中的 URL 信息|
|删除 电话号码 |remove_phone_number |删除文本中的电话号码 |
|删除 IP地址|remove_ip_address |删除文本中的 IP 地址 |
|删除 身份证号|remove_id_card |删除文本中的身份证信息 |
|删除 QQ |remove_qq |删除文本中的 qq 号|
|删除 HTML标签 |remove_html_tag |删除文本中残留的 HTML 标签 |
|删除括号中的内容 |remove_parentheses |删除括号内容,包括 {}「」[]【】()()<>《》 |
|删除异常字符 |remove_exception_char |删除文本中异常字符,主要保留汉字、常用的标点,
单位计算符号,字母数字等。 |
4.文件读写工具
| 功能 | 函数 |描述 |
|--------|--------|-------|
|按行读取文件 |read_file_by_iter |以迭代器形式方便按行读取文件,节省内存,
支持指定行数,跳过空行 |
|按行读取文件 |read_file_by_line |按行读取文件,支持指定行数,跳过空行 |
|将 list 中元素按行写入文件 | write_file_by_line | 将 list 中元素按行写入文件 |
|计时工具 |TimeIt | 统计某一代码段的耗时 |
5.词典加载与使用
| 功能 | 函数 |描述 |
|--------|--------|-------|
|成语词典 | chinese_idiom_loader |加载成语词典 |
|歇后语词典 | xiehouyu_loader |加载歇后语词典 |
|中国地名词典 | china_location_loader |加载中国省、市、县三级词典 |
|中国区划调整词典 | china_location_change_loader |加载 2018 年以来中国县级以上区划调整更名记录 |
|世界地名词典 | world_location_loader |加载世界大洲、国家、城市词典 |
|新华字典 | chinese_char_dictionary_loader |加载新华字典 |
|新华词典 | chinese_word_dictionary_loader |加载新华词典 |
6.实体识别(NER)算法辅助工具集
| 功能 | 函数 |描述 |
|--------|--------|-------|
|基于词典NER | LexiconNER |依据指定的实体词典,前向最大匹配实体 |
|entity 转 tag | entity2tag |将 json 格式实体转换为模型处理的 tag 序列 |
|tag 转 entity | tag2entity |将模型处理的 tag 序列转换为 json 格式实体 |
|字 token 转词 token | char2word |将字符级别 token 转换为词汇级别 token |
|词 token 转字 token | word2char |将词汇级别 token 转换为字符级别 token |
|比较标注与模型预测的实体差异 | entity_compare |针对人工标注的实体,与模型预测出的实体结果
,做差异比对 |
|NER模型预测加速 |TokenSplitSentence
TokenBreakLongSentence
TokenBatchBucket |对 NER 模型预测并行加速的方法 |
|分割数据集 | analyse_dataset |对 NER 标注语料,分为训练集、验证集、测试集,并给出各个子集的实体类型分布统计 |
7.文本分类
| 功能 | 函数 |描述 |
|--------|--------|-------|
|朴素贝叶斯分析类别词汇 | analyse_freq_words |对文本分类的标注语料,做朴素贝叶斯词频分析,返回各类
文本的高条件概率词汇 |
|分割数据集 | analyse_dataset |对文本分类的标注语料,切分为训练集、验证集、测试集,
并给出各个子集的分类分布统计 |
8.情感分析
| 功能 | 函数 |描述 |
|--------|--------|-------|
|基于词典情感分析 | LexiconSentiment | 依据人工构建的情感词典,计算文本的情感值,介于0~1之间 |
初衷
-
开发 NLP 模型,预处理至关重要且非常耗时。本工具包能快速辅助工程师完成各种琐碎的预处理操作,加速开发进度,把有限的精力用在思考而非 code 上。
-
如有功能建议、bug,可通过 issue 按模板提出。
-
如感兴趣合作完善本工具包,请参考 TODO.txt 文件进行功能添加。
做NLP不易,欢迎加入自然语言处理交流群 (#^.^#)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for jionlp-1.3.14-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79cfd8424812447b4eeadd2ac0d1e575d761ccb35abcd2d00f2b1b8b182fd79e |
|
MD5 | 3acf0acdc011958a476a8f3341175461 |
|
BLAKE2b-256 | 968a30af418f8e246ca542aea4134382c741d1461e75c4da5a7034a91f10dec9 |