这期内容当中小编将会给大家带来有关NLP开源字典和工具有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
前言
随着BERT、ERNIE、XLNet等预训练模型的流行,解决NLP问题时不用上预训练模型似乎总显得自己有点过时。 但是这显然是不对的。
众所周知,无论训练还是推理,预训练模型都会消耗大量的算力,且高度依赖GPU计算资源。然而,有很多的NLP问题实际上仅仅靠 字典+规则 就可以做到够用,那么这时候强行上笨重的模型无异于高射炮打蚊子,性价比是非常低的。
于是小夕就从一个比较疯狂的github repo里为大家 精挑细选 了 45个 比较实用的开源小工具和字典,让大家在搭建NLP系统、辅助炼丹的过程中少一些模型和算力的依赖,多一些小而美的代码。
repo: observerss/textfilter
>>> f = DFAFilter() >>> f.add("sexy") >>> f.filter("hello sexy baby") hello **** baby
敏感词包括政治、脏话等话题词汇。其原理主要是基于词典的查找(项目中的keyword文件),内容很不清真
repo: saffsd/langid.py pip install langid
>>> import langid>>> langid.classify("This is a test") ('en', -54.41310358047485)
地址:https://code.google.com/archive/p/language-detection
pip install langdetect
from langdetect import detectfrom langdetect import detect_langs s1 = "本篇博客主要介绍两款语言探测工具,用于区分文本到底是什么语言,"s2 = 'We are pleased to introduce today a new technology'print(detect(s1)) print(detect(s2)) print(detect_langs(s3)) # detect_langs()输出探测出的所有语言类型及其所占的比例
输出结果如下:注:语言类型主要参考的是ISO 639-1语言编码标准,详见ISO 639-1百度百科
跟上一个语言检测比较,准确率低,效率高。
repo: ls0f/phone
已集成到 python package cocoNLP中
from phone import Phone p = Phone() p.find(18100065143)#return {'phone': '18100065143', 'province': '上海', 'city': '上海', 'zip_code': '200000', 'area_code': '021', 'phone_type': '电信'}
支持号段: 13 ,15 ,18*,14[5,7],17[0,6,7,8]
记录条数: 360569 (updated:2017年4月)
作者提供了数据phone.dat 方便非python用户Load数据。
repo: AfterShip/phone npm install phone
import phone from 'phone'; phone('+852 6569-8900'); // return ['+85265698900', 'HKG'] phone('(817) 569-8900'); // return ['+18175698900, 'USA']
repo: observerss/ngender
基于朴素贝叶斯计算的概率
pip install ngender
>>> import ngender>>> ngender.guess('赵本山') ('male', 0.9836229687547046)>>> ngender.guess('宋丹丹') ('female', 0.9759486128949907)
已集成到 python package cocoNLP中
email_pattern = '^[*#\u4e00-\u9fa5 a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$'emails = re.findall(email_pattern, text, flags=0)
已集成到 python package cocoNLP中
cellphone_pattern = '^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$'phoneNumbers = re.findall(cellphone_pattern, text, flags=0)
IDCards_pattern = r'^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$'IDs = re.findall(IDCards_pattern, text, flags=0)
repo: wainshine/Chinese-Names-Corpus
人名抽取功能已加入 python package cocoNLP
中文(现代、古代)名字、日文名字、中文的姓和名、称呼(大姨妈、小姨妈等)、英文->中文名字(李约翰)、成语词典
(可用于中文分词、姓名识别)
repo: zhangyics/Chinese-abbreviation-dataset
全国人大: 全国/n 人民/n 代表大会/n 中国: 中华人民共和国/ns 女网赛: 女子/n 网球/n 比赛/vn
repo: kfcd/chaizi
漢字 拆法 (一) 拆法 (二) 拆法 (三) 拆 手 斥 扌 斥 才 斥
repo: rainarch/SentiBridge
山泉水 充沛 0.400704566541 0.370067395878视野 宽广 0.305762728932 0.325320747491大峡谷 惊险 0.312137906517 0.378594957281
repo: dongxiexidian/Chinese
此package的敏感词库分类更细:
反动词库, 敏感词库表统计, 暴恐词库, 民生词库, 色情词库
repo: mozillazg/python-pinyin
文本纠错会用到
repo: skydark/nstools
repo: tinyfool/ChineseWithEnglish
say wo i ni#说:我爱你
相当于用英文音标,模拟中文发音。
repo: guotong1988/chinese_dictionary
repo: skishore/makemeahanzi
简/繁体汉字笔顺
矢量笔画
repo: keredson/wordninja
>>> import wordninja>>> wordninja.split('derekanderson') ['derek', 'anderson']>>> wordninja.split('imateapot') ['im', 'a', 'teapot']
(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)
[1-9]([0-9]{5,11})
[0-9-()()]{7,18}
[A-Za-z0-9_\-\u4e00-\u9fa5]+
repo: Kyubyong/g2pC
已集成到 python package cocoNLP中
在2016年6月7日9:44执行測試,结果如下Hi,all。下周一下午三点开会 >> 2016-06-13 15:00:00-false周一开会 >> 2016-06-13 00:00:00-true下下周一开会 >> 2016-06-20 00:00:00-true
java version:
https://github.com/shinyke/Time-NLP
python version:
https://github.com/zhanzecheng/Time_NLP
repo: HaveTwoBrush/cn2an
中文、阿拉伯数字互转
中文与阿拉伯数字混合的情况,在开发中
repo: wainshine/Company-Names-Corpus
repo: panhaiqi/AncientPoetry
更全的古诗词库:
https://github.com/chinese-poetry/chinese-poetry
repo: http://thuocl.thunlp.org/
已整理到本repo的data文件夹中.
IT词库、财经词库、成语词库、地名词库、历史名人词库、诗词词库、医学词库、饮食词库、法律词库、汽车词库、动物词库
repo: camelot-dev/camelot
repo: VincentSit/ChinaMobilePhoneNumberRegex
repo: marteinn/The-Big-Username-Blacklist
包含了用户名禁用列表,比如:
administratoradministration autoconfig autodiscover broadcasthost domain editor guest host hostmasterinfokeybase.txt localdomain localhost master mail mail0 mail
repo: Microsoft/Recognizers-Text
repo: pwxcoo/chinese-xinhua
repo: liuhuanyong/TextGrapher
TextGrapher - Text Content Grapher based on keyinfo extraction by NLP method。输入一篇文档,将文档进行关键信息提取,进行结构化,并最终组织成图谱组织形式,形成对文章语义信息的图谱化展示
repo: google/UniNum
repo: berniey/hanziconv
repo: howl-anderson/hanzi_char_featurizer
repo: zhangyics/Chinese-abbreviation-dataset
repo: ChestnutHeng/Wudao-dict
repo: Wall-ee/chinese2digits
repo: tofunlp/lineflow
repo: jaidevd/numerizer
repo: zacanger/profane-words
上述就是小编为大家分享的NLP开源字典和工具有哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。