Home

Awesome

<p align="center"> <a alt="jionlp logo"> <img src="../../blob/master/image/jionlp_logo.jpg" style="width:300px;height:100px"> </a> </p> <p align="center"> <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-19.3m-orange" /></a> <a alt="Downloads"> <img src="https://pepy.tech/badge/jionlp/month" /></a> <a alt="Version"> <img src="https://img.shields.io/badge/version-1.5.18-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> </p>

   JioNLP:中文 NLP 预处理、解析工具包 A Python Lib for Chinese NLP Preprocessing & Parsing

   安装:pip install jionlp

2023-12-12 Add MELLM

$ git clone https://github.com/dongrixinyu/JioNLP
$ cd JioNLP/test/
$ python test_mellm.py

2023-06-22 添加大语言模型 LLM 评测数据集

>>> import jionlp as jio
>>> llm_test = jio.llm_test_dataset_loader(version='1.1')
>>> print(llm_test[15])
>>> llm_test = jio.llm_test_dataset_loader(field='math')
>>> print(llm_test[5])

安装 Installation

$ git clone https://github.com/dongrixinyu/JioNLP
$ cd ./JioNLP
$ pip install .
$ pip install jionlp

使用 Features

>>> import jionlp as jio
>>> print(jio.__version__)  # 查看 jionlp 的版本
>>> dir(jio)
>>> print(jio.extract_parentheses.__doc__)

1.小工具集 Gadgets

功能函数描述星级
查找帮助help若不知道 JioNLP 有哪些功能,可根据命令行提示键入若干关键词做搜索
车牌号解析parse_motor_vehicle_licence_plate给定一个车牌号,对其进行解析
时间语义解析parse_time给定时间文本,解析其时间语义(时间戳、时长)等
关键短语抽取extract_keyphrase给定一篇文本,抽取其对应关键短语
抽取式文本摘要extract_summary给定一篇文本,抽取其对应文摘
停用词过滤remove_stopwords给定一个文本被分词后的词 list,去除其中的停用词
分句split_sentence对文本按标点分句
地址解析parse_location给定一个包含国内地址字符串,识别其中的省、市、县区、乡镇街道、村社等信息
电话号码归属地<br>运营商解析phone_location<br>cell_phone_location<br>landline_phone_location给定一个电话号码(手机号、座机号)字符串,识别其中的省、市、运营商
新闻地名识别recognize_location给定新闻文本,识别其中的国内省、市、县,国外国家、城市等信息
公历农历日期互转lunar2solar<br>solar2lunar给定某公(农)历日期,将其转换为农(公)历
身份证号解析parse_id_card给定一个身份证号,识别对应的省、市、县、出生年月、<br>性别、校验码等信息
成语接龙idiom_solitaire成语接龙,即前一成语的尾字和后一成语的首字(读音)相同
色情数据过滤--
反动数据过滤--
体转tra2sim繁体转简体,支持逐字转最大匹配两种模式
体转sim2tra简体转繁体,支持逐字转最大匹配两种模式
汉字转拼音pinyin找出中文文本对应的汉语拼音,并可返回声母韵母声调
汉字转偏旁与字形char_radical找出中文文本对应的汉字字形结构信息,<br>包括偏旁部首(“河”氵)、字形结构(“河”左右结构)、<br>四角编码(“河”31120)、汉字拆解(“河”水可)、<br>五笔编码(“河”ISKG)
金额数字转汉字money_num2char给定一条数字金额,返回其汉字大写结果
新词发现new_word_discovery给定一语料文本文件,统计其中高可能成词

2.数据增强

功能函数描述星级
回译BackTranslation给定一篇文本,采用各大厂云平台的机器翻译接口,<br>实现数据增强
邻近汉字换位swap_char_position随机交换相近字符的位置,实现数据增强
同音词替换homophone_substitution相同读音词汇替换,实现数据增强
随机增删字符random_add_delete随机在文本中增加、删除某个字符,对语义不造成影响
NER实体替换replace_entity根据实体词典,随机在文本中替换某个实体,对语义不<br>造成影响,也广泛适用于序列标注、文本分类

3.正则抽取与解析

功能函数描述星级
清洗文本clean_text去除文本中的异常字符、冗余字符、HTML标签、括号信息、<br>URL、E-mail、电话号码,全角字母数字转换为半角
抽取 E-mailextract_email抽取文本中的 E-mail,返回位置域名
解析 货币金额extract_money解析货币金额字符串
抽取微信号extract_wechat_id抽取微信号,返回位置
抽取电话号码extract_phone_number抽取电话号码(含手机号座机号),返回域名类型位置
抽取中国身份证 IDextract_id_card抽取身份证 ID,配合 jio.parse_id_card 返回身份证的<br>详细信息(省市县出生日期性别校验码)
抽取 QQextract_qq抽取 QQ 号,分为严格规则和宽松规则
抽取 URLextract_url抽取 URL 超链接
抽取 IP地址extract_ip_address抽取 IP 地址
抽取括号中的内容extract_parentheses抽取括号内容,包括 {}「」[]【】()()<>《》
抽取车牌号extract_motor_vehicle_licence_plate抽取大陆车牌号信息
删除 E-mailremove_email删除文本中的 E-mail 信息
删除 URLremove_url删除文本中的 URL 信息
删除 电话号码remove_phone_number删除文本中的电话号码
删除 IP地址remove_ip_address删除文本中的 IP 地址
删除 身份证号remove_id_card删除文本中的身份证信息
删除 QQremove_qq删除文本中的 qq 号
删除 HTML标签remove_html_tag删除文本中残留的 HTML 标签
删除括号中的内容remove_parentheses删除括号内容,包括 {}「」[]【】()()<>《》
删除异常字符remove_exception_char删除文本中异常字符,主要保留汉字、常用的标点,<br>单位计算符号,字母数字等
删除冗余字符remove_redundant_char删除文本中冗余重复字符
归一化 E-mailreplace_email归一化文本中的 E-mail 信息为<email>
归一化 URLreplace_url归一化文本中的 URL 信息为<url>
归一化 电话号码replace_phone_number归一化文本中的电话号码为<tel>
归一化 IP地址replace_ip_address归一化文本中的 IP 地址为<ip>
归一化 身份证号replace_id_card归一化文本中的身份证信息为<id>
归一化 QQreplace_qq归一化文本中的 qq 号为<qq>
判断文本是否包含中文字符check_any_chinese_char检查文本中是否包含中文字符,若至少包含一个,则返回 True
判断文本是否全部是中文字符check_all_chinese_char检查文本中是否全部是中文字符,若全部都是,则返回 True
判断文本是否包含阿拉伯数字check_any_arabic_num检查文本中是否包含阿拉伯数字,若至少包含一个,则返回 True
判断文本是否全部是阿拉伯数字check_all_arabic_num检查文本中是否全部是阿拉伯数字,若全部都是,则返回 True

4.文件读写工具

功能函数描述星级
按行读取文件read_file_by_iter以迭代器形式方便按行读取文件,节省内存,<br>支持指定行数跳过空行
按行读取文件read_file_by_line按行读取文件,支持指定行数跳过空行
将 list 中元素按行写入文件write_file_by_line将 list 中元素按行写入文件
计时工具TimeIt统计某一代码段的耗时
日志工具set_logger调整工具包日志输出形式

5.词典加载与使用

功能函数描述星级
大语言模型 LLM 评测数据集jio.llm_test_dataset_loaderLLM 评测数据集
Byte-level BPEjio.bpe.byte_level_bpeByte-level-BPE 算法
停用词词典jio.stopwords_loader()综合了百度、jieba、讯飞等的停用词词典
成语词典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)算法辅助工具集

功能函数描述星级
抽取货币金额实体extract_money从文本中抽取出货币金额实体
抽取时间实体extract_time从文本中抽取出时间实体
基于词典NERLexiconNER依据指定的实体词典,前向最大匹配实体
entity 转 tagentity2tag将 json 格式实体转换为模型处理的 tag 序列
tag 转 entitytag2entity将模型处理的 tag 序列转换为 json 格式实体
token 转 tokenchar2word将字符级别 token 转换为词汇级别 token
token 转 tokenword2char将词汇级别 token 转换为字符级别 token
比较标注与模型预测的实体差异entity_compare针对人工标注的实体,与模型预测出的实体结果<br>,做差异比对
NER模型预测加速TokenSplitSentence<br>TokenBreakLongSentence<br>TokenBatchBucket对 NER 模型预测并行加速的方法
分割数据集analyse_dataset对 NER 标注语料,分为训练集、验证集、测试集,并给出各个子集的实体类型分布统计
实体收集collect_dataset_entities将标注语料中的实体收集起来,形成词典

7.文本分类

功能函数描述星级
朴素贝叶斯分析类别词汇analyse_freq_words对文本分类的标注语料,做朴素贝叶斯词频分析,返回各类<br>文本的高条件概率词汇
分割数据集analyse_dataset对文本分类的标注语料,切分为训练集、验证集、测试集,<br>并给出各个子集的分类分布统计

8.情感分析

功能函数描述星级
基于词典情感分析LexiconSentiment依据人工构建的情感词典,计算文本的情感值,介于0~1之间

9.分词

功能函数描述星级
word 转 tagcws.word2tag将 json 格式分词序列转换为模型处理的 tag 序列
tag 转 wordcws.tag2word将模型处理的 tag 序列转换为 json 格式分词
统计F1值cws.f1比对分词标注标签于模型预测标签的F1值
分词数据矫正-标准词典cws.CWSDCWithStandardWords使用标准词典对分词标注数据进行矫正和修复

文献引用

Chengyu Cui, JioNLP, (2020), GitHub repository, https://github.com/dongrixinyu/JioNLP

初衷

如本工具对您有帮助,请点一下右上角 star ⭐

或者扫码请作者喝杯咖啡 (●'◡'●),开源项目完全用爱发电,谢谢啦!推荐优先使用【支付宝】 ~~

<p align="center"> <a alt="jionlp logo"> <img src="../../blob/master/image/payment_code.jpg" style="width:500px;height:380px"> </a> </p>

做 NLP不易,欢迎加入自然语言处理 Wechat 交流群

请扫以下码,或wx搜索公众号JioNLP”,关注并回复【进群】

<p align="center"> <a alt="jionlp logo"> <img src="../../blob/master/image/qrcode_for_gh.jpg" style="width:200px;height:200px"> </a> </p>