以下文章来源于尘世美小茶馆,作者尘世美
俗话说:工欲善其事,必先利其器。在学习和工作中,选择一套合适的工具、框架能够事半功倍。这里收集了NLP、KG领域目前常用的软件、工具和一些资源,方便大家按照需求选用。
NLP相关软件、工具、资源
中文
nlpir:主要功能包括中文分词;英文分词;词性标注;命名实体识别;新词识别;关键词提取;支持用户专业词典与微博分析。
https://github.com/NLPIR-team/NLPIRgithub.comltp: 由哈工大团队开源,其提供了一系列中文自然语言处理工具,用户可以使用这些工具对于中文文本进行分词、词性标注、句法分析等等工作。新版LTP采用原生Python实现,仅需运行 pip install ltp 即可安装使用。
https://github.com/HIT-SCIR/ltpgithub.comhanlp:面向生产环境的多语种自然语言处理工具包,基于 TensorFlow 2.0,目标是普及落地最前沿的NLP技术。功能包括:中文分词、词性标注、命名实体识别、依存句法分析、语义依存分析、新词发现、关键词短语提取、自动摘要、文本分类聚类、拼音简繁转换等。
https://github.com/hankcs/HanLPgithub.comjieba:应该是应用最广泛的一个中文分词工具了。还支持自定义词典,关键词提取,词性标注。
https://github.com/fxsjy/jiebagithub.comUER-py:基于pytorch的一个预训练模型框架(在你自己的语料上训练语言模型或者finetune下游任务),也包含了一些即开即用的中文预训练模型。
https://github.com/dbiir/UER-pygithub.comfastNLP:复旦大学开源的一个NLP模型训练框架,基于torch。当做一个wrapper用,和后文将提到的AllenNLP类似。
https://github.com/fastnlp/fastNLPgithub.comfastHan : fastHan是基于fastNLP与pytorch实现的中文自然语言处理工具,像spacy一样调用方便。其内核为基于BERT的联合模型,其在13个语料库中进行训练,可处理中文分词、词性标注、依存分析、命名实体识别四项任务。
https://github.com/fastnlp/fastHangithub.com更大规模中文语料训练得到的语言模型:由追一科技有限公司推出的一个预训练模型合集,包含RoBERTa Tiny Small,SimBERT Base。
https://github.com/ZhuiyiTechnology/pretrained-modelsgithub.comSynonyms:中文近义词工具包。
https://github.com/huyingxi/Synonymsgithub.com上百种预训练中文词向量:提供分别在百度百科、中文维基百科、人民日报、搜狗新闻、金融新闻、知乎问答、微博、文学作品、四库全书及综合语料上训练的词向量(300维)。
https://github.com/Embedding/Chinese-Word-Vectorsgithub.com外语或多语
NTLK :NLTK是用于构建处理自然语言数据Python程序的平台。它为超过50个语料库和词汇资源(如WordNet)提供了易于使用的接口,还提供了一套用于分类、分词、词根分析、序列标注、文本解析和语义推理的文本处理库。NLTK主要还是英文文本的处理。里面也集成了斯坦福的分词器,可用于中文分词。
https://github.com/nltk/nltkgithub.comTextBlob:基于NLTK和pattern构建的文本处理库,可以处理词性标注、名词短语抽取、情感分析、文本分类、翻译等任务。
https://github.com/sloria/TextBlobgithub.comSpaCy:工业级的NLP工具包,同时集成了预训练模型,词向量,目前支持60多种语言的分词任务。支持TF、Pytorch、scikit-learn、Gensim等框架。其他支持的任务和功能还包括:命名实体识别、词性标注、依存分析、基于语法的分句、内置的语法和NER结果可视化模块等。
https://github.com/explosion/spaCygithub.comstanza:斯坦福大学NLP组开源的一个python NLP处理包,也提供了接口访问Stanford CoreNLP(基于java的)。支持60多种语言的处理,包含了预训练模型。下面是其处理的流程图:
https://github.com/stanfordnlp/stanza/github.comGenSim:主题建模工具,或者说是一个无监督语义建模工具。常见的用途是在一个语料上训练词向量。也支持语义相似度的计算和基于相似度的检索(需要annoy来建索引)。
https://github.com/RaRe-Technologies/gensimgithub.comfastText:facebook开源的一个用于训练学习文本表示或者文本分类器的轻量级库,对硬件要求不高。提供157种语言的词向量。
facebookresearch/fastTextgithub.comAllenNLP:基于Pytorch框架的NLP包,就是提出Elmo的那个团队做的。方便快速搭建你自己的NLP模型及训练。可以当做一个wrapper用。
https://github.com/allenai/allennlpgithub.comTransformers:Hugging Face的明星级开源项目,主要集成了各类主流的预训练模型资源,BERT,GPT,GPT2,XLM,XLNET,RoBERTa,DistilBERT,CTRL,ALBERT,T5,ELECTRA等。Fine-tune利器。
https://github.com/huggingface/transformersgithub.comtokenizers:Hugging Face开源的分词工具(基于BPE和WordPiece)
https://github.com/huggingface/tokenizersgithub.comfairseq:Facebook开源的一个s2s模型训练框架。其实这个框架对性能优化做得很好(各种训练trick),对性能有很高要求的朋友推荐使用这个框架(我会告诉你用单卡1080Ti能训练36层的GPT-2么)。这个repo的star没有huggingface的高,个人觉得有两个原因,一是没有怎么做PR;二是这个框架代码太解耦了,刚入门,想要在上面进行扩展,学习成本比较高。
https://github.com/pytorch/fairseqgithub.comKG相关工具资源
OpenKE-PyTorch:基于pytorch开发的knowledge graph embedding训练框架,实现了RESCAL,DistMult,ComplEx,Analogy,TransE, TransH, TransR, TransD,SimplE和RotatE编码算法。
https://github.com/thunlp/OpenKEgithub.comLibKGE:用于复现knowledge graph embedding的一个包,基于pytorch。目前提供了RESCAL,TransE,DistMult,ComplEx,ConvE等算法的实现。
https://github.com/uma-pi1/kgegithub.comProtege:斯坦福大学开源的本体编辑框架,自带可视化界面。
https://protege.stanford.edu/protege.stanford.edu(下载地址:https://pan.baidu.com/s/1J_5eP_RKFv9qZrYPeBKUow 提取码:8bz6)
Apache Jena :基于java的开源语义网框架。集成了存储(TDB),推理和网络访问服务(Fuseki)。
Apache Jena -jena.apache.org(下载地址:https://pan.baidu.com/s/1wgJ1EmUCx1sf-WzBDdOP8A 提取码:yp8c)