45个小众而实用的NLP开源字典和工具

不尽1年前 ⋅ 1814 阅读

随着BERT、ERNIE、XLNet等预训练模型的流行,解决NLP问题时不用上预训练模型似乎总显得自己有点过时。但是这显然是不对的。众所周知,无论训练还是推理,预训练模型都会消耗大量的算力,且高度依赖GPU计算资源。然而,有很多的NLP问题实际上仅仅靠字典+规则就可以做到够用,那么这时候强行上笨重的模型无异于高射炮打蚊子,性价比是非常低的。

1. textfilter: 中英文敏感词过滤

repo: observerss/textfilter

 >>> f = DFAFilter()
>>> f.add("sexy")
>>> f.filter("hello sexy baby")
hello **** baby

敏感词包括政治、脏话等话题词汇。其原理主要是基于词典的查找(项目中的keyword文件),内容很不清真

2. langid:97种语言检测

repo: saffsd/langid.py

pip install langid

>>> import langid>>> langid.classify("This is a test")
('en', -54.41310358047485)

6. ngender 根据名字判断性别:

repo: observerss/ngender

基于朴素贝叶斯计算的概率

pip install ngender

>>> import ngender>>> ngender.guess('赵本山')
('male', 0.9836229687547046)>>> ngender.guess('宋丹丹')
('female', 0.9759486128949907)

7. 抽取email的正则表达式

已集成到 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)

8. 抽取phone_number的正则表达式

已集成到 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)

9. 抽取身份证号的正则表达式

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)

https://mp.weixin.qq.com/s?__biz=MzI1MTQ4MDAyMg==&mid=2247488614&idx=3&sn=551c63bdd55c07bc103a1ab6c3d08525&chksm=e9f306dfde848fc97714c1ce0aa67990bce62285076ac3c172b456161d2ef9ec4e1e70662564

全部评论: 0

    相关推荐