自然语言处理本身是为了让计算机能够处理、理解以及运用人类语言,从而达到人与计算机之间的有效通讯,为了研究信息检索、情感分析、文本分类、智能问答、摘要提取、文本挖掘,舆情分析、知识图谱等方面的问题,解决在词态、句法、语义上的歧义性,这里主要是介绍我个人在使用相关算法学习时使用的开源标注工具和标注平台,以供参考。
文本研究领域:
1. 知识图谱:知识图谱技术既涉及自然语言处理中的各项技术,在资源内容的表示上可以使用从浅层的文本向量表示、到句法和语义结构表示,从自然语言处理技术上会使用到分词和词性标注、命名实体识别、句法语义结构分析、指代分析等。信息抽取和语义集成是知识图谱构建的核心技术问题。
2. 信息抽取:是指从非结构化/半结构化文本(如网页、新闻、论文文献、微博等)中提取指定类型的信息(如实体、属性、关系、事件、商品记录等),并通过信息归并、冗余消除和冲突消解等手段将非结构化文本转换为结构化信息的一项综合技术。目前信息抽取的核心研究内容可以划分为命名实体识别(Named Entity Recognition, NER)、关系抽取(RelationExtraction)、事件抽取和信息集成(Information Integration)。
3. 文本挖掘:文本挖掘是指从这些非结构或半结构化的文本数据中获取高质量的结构化信息的过程。换言之, 文本挖掘的目的是从未经处理的文本数据中获取有用知识或信息。典型的文本挖掘任务包括 文本分类、文本聚类、概念/实体抽取、情感分析、文档摘要等。
4. 情感分析:情感分析研究的目标是建立一个有效的分析方法、模型和系统,对输入信息中某个对象分析其持有的情感信息,例如观点倾向、态度、主观观点或喜怒哀乐等情绪表达。主要的情感分析任务包括:情感资源构建、情感信息的质量分析、情感分类、情感信息抽取。比较新兴的也有情感解释,反讽分析、立场分析。
5. 摘要提取:摘要提取是指通过自动分析给定的一篇文档或多篇文档,提炼、总结其中的要点信息,最终输出一篇长度较短、可读性良好的摘要(通常包含几句话或数百字),该摘要中的句子可直接出自原文,也可重新撰写所得。其主要的任务包括要点筛选、文摘合成。
6. 信息检索:检索用户、信息资源和检索系统三个主要环节组成了信息检索应用环境下知识获取与信息传递的完整结构,而当前影响信息获取效率的因素也主要体现在这几个环节,即:检索用户的意图表达、信息资源(尤其是网络信息资源)的质量度量、结果匹配排序、信息检索评价。
从几大领域中不难从中看出NLP是围绕着四个模块展开的:分类、序列标注、文本匹配、文本生成。
NLP分类/聚类:
NLP分类的算法总结:
深度学习文本分类:基于深度学习的文本分类方法,显然模型的结构和模型的参数将会对分类效果起到至关作用。在模型结构上常用的神经网络模型有CNN,RNN,GRU,Attention机制,Dropout等。
基础模型如CNN/RNN/GRU的各种组合模型,这里推荐原版:https://www.ahmedbesbes.com/blog/benchmarking-sentiment-analysis-models ,中文翻译版:https://zhuanlan.zhihu.com/p/39054002 ,这篇文章主要是做了在嵌入预训练模型前后和传统机器学习分类与深度学习文本模型的对比,并包含这些相关模型的代码。如果对N vs N,N vs 1、1 vs N、N vs M四种经典的RNN模型有所疑问的话,https://zhuanlan.zhihu.com/p/28054589 会是个很好的选择,基本上全部公式和推理过程都是用图像来表示,且对每个模型的应用领域,适合处理的情况都有说明。其他模型:Dropout、attention机制:注意力模型通常是应用在经典的 Encoder-Decoder 框架下的,也就是 RNN 中著名的 N vs M 模型,seq2seq 模型正是一种典型的 Encoder-Decoder 框架,关于这个模型着力推荐https://www.jianshu.com/p/004869fce12c 探索 Seq2Seq 模型及 Attention 机制,这篇文章对其计算步骤和概念讲解清楚,难得的是有个小任务且有详细的解决思路,非常值得推荐,注意的是其小任务的代码不在全文中,而在https://blog.csdn.net/qq_18603599/article/details/80581115,
当然除此之外,在模型参数的调节上,一方面需要设定好模型的参数学习率,另一位方面需要根据模型的使用特点和要分析的文本内容进行调节。
NLP分类相关数据集:THUCNews中文文本分类,74万篇新闻文档(2.19 GB)http://thuctc.thunlp.org/message 数据量大
Kesci平台短文本分类:https://www.kesci.com/home/dataset/5dd645fca0cb22002c94e65d/files
复旦大学计算机信息与技术系国际数据库中心自然语言处理小组:只找到一个百度云链接,未下载
剩下的算法模型和数据集后续会进行整理,说一下NLP文本标注工具吧
NLP的前期处理,特别是实体标注的前期处理,固然是有相关的训练包做为支持,但有些时候遇到的文本一段时间调研后发现定的方向没有公开数据集,所以必要的基于规则方法的训练也不可或缺。
文本标注工具和标注平台:
1.prodigy:演示在线演示demo 看着挺好的,比较坑的在于收费啊,而且不便宜,有一说一,我没找到中文版的地方(简直是一顿操作猛如虎,最后只能捂脸的代表)
2.YEDDA:只支持python2.7,比较吸引人的点是可以直接导入txt且开源,而且标注员界面用于给句子做标注,管理员界面提供针对同一文件的不同人员标注结果的对比等功能。作为一个开源工具还是很不错的,不过快捷键设置有点麻烦,没有情感类别或分类类别的标记功能,可标记种类数只有7种,对于不需要以上功能的来说,是非常好的选择。下载地址:https://github.com/jiesutd/YEDDA
3.BRAT在安装配置和情感方向可以参考https://blog.csdn.net/owengbs/article/details/49780225 ,可以自定义标注特殊区域,不过仅支持Linux系统,该工具只能生成.ann后缀的标注文件,还需要转换。
其他工具的话:https://blog.csdn.net/m0epNwstYk4/article/details/79083806 ,https://zhuanlan.zhihu.com/p/64745990 ,两篇文章推荐,第一篇文章介绍市面上的标注工具,有工具截图和一些基本功能,比较节省选择时间,第二篇文章比较了诸多工具的优劣,只不过第二篇知乎我只找到了二、三,没找到一。
现在主流的是yedda和brat,各有优劣,不过我这次文本量比较多,有些好友没有linux,有些不愿意安python,而且YEDDA的快捷键确实有点难设,没有办法,看了http://www.mamicode.com/info-detail-2502570.html 推荐京东众智,试了试,实体方面做的还是不错的,可以设置多级标签、支持预打标,导出和YADDA一样各个格式都支持,不过没有分词,操作也很简单,而且非常便宜,网址:https://biao.jd.com/wise