俗话说:工欲善其事,必先利其器。在学习和工作中,选择一套合适的工具、框架能够事半功倍。这里收集了NLP、KG领域目前常用的软件、工具和一些资源,方便大家按照需求选用。
NLP相关软件、工具、资源
nlpir(https://github.com/NLPIR-team/NLPIR):主要功能包括中文分词;英文分词;词性标注;命名实体识别;新词识别;关键词提取;支持用户专业词典与微博分析。
ltp(https://github.com/HIT-SCIR/ltp): 由哈工大团队开源,其提供了一系列中文自然语言处理工具,用户可以使用这些工具对于中文文本进行分词、词性标注、句法分析等等工作。新版LTP采用原生Python实现,仅需运行 pip install ltp 即可安装使用。
hanlp(https://github.com/hankcs/HanLP):面向生产环境的多语种自然语言处理工具包,基于 TensorFlow 2.0,目标是普及落地最前沿的NLP技术。功能包括:中文分词、词性标注、命名实体识别、依存句法分析、语义依存分析、新词发现、关键词短语提取、自动摘要、文本分类聚类、拼音简繁转换等
jieba(https://github.com/fxsjy/jieba):应该是应用最广泛的一个中文分词工具了。还支持自定义词典,关键词提取,词性标注。
UER-py (https://github.com/dbiir/UER-py):基于pytorch的一个预训练模型框架(在你自己的语料上训练语言模型或者finetune下游任务),也包含了一些即开即用的中文预训练模型。
fastNLP(https://github.com/fastnlp/fastNLP):复旦大学开源的一个NLP模型训练框架,基于torch。当做一个wrapper用,和后文将提到的AllenNLP类似。
fastHan (https://github.com/fastnlp/fastHan): fastHan是基于fastNLP与pytorch实现的中文自然语言处理工具,像spacy一样调用方便。其内核为基于BERT的联合模型,其在13个语料库中进行训练,可处理中文分词、词性标注、依存分析、命名实体识别四项任务。
更大规模中文语料训练得到的语言模型(https://github.com/ZhuiyiTechnology/pretrained-models):由追一科技有限公司推出的一个预训练模型合集,包含RoBERTa Tiny Small,SimBERT Base。
Synonyms(https://github.com/huyingxi/Synonyms):中文近义词工具包。
上百种预训练中文词向量(https://github.com/Embedding/Chinese-Word-Vectors):提供分别在百度百科、中文维基百科、人民日报、搜狗新闻、金融新闻、知乎问答、微博、文学作品、四库全书及综合语料上训练的词向量(300维)。
NTLK (Natural Language Toolkit,https://github.com/nltk/nltk):NLTK是用于构建处理自然语言数据Python程序的平台。它为超过50个语料库和词汇资源(如WordNet)提供了易于使用的接口,还提供了一套用于分类、分词、词根分析、序列标注、文本解析和语义推理的文本处理库。NLTK主要还是英文文本的处理。里面也集成了斯坦福的分词器,可用于中文分词。
TextBlob(https://github.com/sloria/TextBlob)基于NLTK和pattern构建的文本处理库,可以处理词性标注、名词短语抽取、情感分析、文本分类、翻译等任务。
SpaCy(https://github.com/explosion/spaCy):工业级的NLP工具包,同时集成了预训练模型,词向量,目前支持60多种语言的分词任务。支持TF、Pytorch、scikit-learn、Gensim等框架。其他支持的任务和功能还包括:命名实体识别、词性标注、依存分析、基于语法的分句、内置的语法和NER结果可视化模块等。
stanza(https://github.com/stanfordnlp/stanza/):斯坦福大学NLP组开源的一个python NLP处理包,也提供了接口访问Stanford CoreNLP(基于java的)。支持60多种语言的处理,包含了预训练模型。下面是其处理的流程图:
GenSim(https://github.com/RaRe-Technologies/gensim):主题建模工具,或者说是一个无监督语义建模工具。常见的用途是在一个语料上训练词向量。也支持语义相似度的计算和基于相似度的检索(需要annoy来建索引)。
fastText(https://github.com/facebookresearch/fastText/):facebook开源的一个用于训练学习文本表示或者文本分类器的轻量级库,对硬件要求不高。提供157种语言的词向量。
AllenNLP(https://github.com/allenai/allennlp,就是提出Elmo的那个团队做的):基于Pytorch框架的NLP包。方便快速搭建你自己的NLP模型及训练。可以当做一个wrapper用。
Transformers(https://github.com/huggingface/transformers):Hugging Face的明星级开源项目,主要集成了各类主流的预训练模型资源,BERT,GPT,GPT2,XLM,XLNET,RoBERTa,DistilBERT,CTRL,ALBERT,T5,ELECTRA等。Fine-tune利器。
tokenizers(https://github.com/huggingface/tokenizers):Hugging Face开源的分词工具(基于BPE和WordPiece)
fairseq(https://github.com/pytorch/fairseq):Facebook开源的一个s2s模型训练框架。其实这个框架对性能优化做得很好(各种训练trick),对性能有很高要求的朋友推荐使用这个框架(我会告诉你用单卡1080Ti能训练36层的GPT-2么)。这个repo的star没有huggingface的高,个人觉得有两个原因,一是没有怎么做PR;二是这个框架代码太解耦了,刚入门,想要在上面进行扩展,学习成本比较高。
KG相关软件、工具、资源
OpenKE-PyTorch(https://github.com/thunlp/OpenKE):基于pytorch开发的knowledge graph embedding训练框架,实现了RESCAL,DistMult,ComplEx,Analogy,TransE, TransH, TransR, TransD,SimplE和RotatE编码算法。
LibKGE(https://github.com/uma-pi1/kge):用于复现knowledge graph embedding的一个包,基于pytorch。目前提供了RESCAL,TransE,DistMult,ComplEx,ConvE等算法的实现。
Protege(https://protege.stanford.edu/):斯坦福大学开源的本体编辑框架,自带可视化界面。(windows 5.5.0 下载地址https://pan.baidu.com/s/1J_5eP_RKFv9qZrYPeBKUow
提取码:8bz6)
Apache Jena (https://jena.apache.org/):基于java的开源语义网框架。集成了存储(TDB),推理和网络访问服务(Fuseki)。(3.15.0下载地址
链接:https://pan.baidu.com/s/1wgJ1EmUCx1sf-WzBDdOP8A 提取码:yp8c)
目前就整理了这么多,如果各位还有什么比较推荐的工具,也可以联系我,不定期更新。希望对大家有一定帮助。
推荐阅读
征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)
文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏