【⼩⽩总结】NLP算法:⽂本研究领域与NLP⽂本标注⼯具
(⼀)
⾃然语⾔处理本⾝是为了让计算机能够处理、理解以及运⽤⼈类语⾔,从⽽达到⼈与计算机之间的有效通讯,为了研究信息检索、情感分析、⽂本分类、智能问答、摘要提取、⽂本挖掘,舆情分析、知识图谱等⽅⾯的问题,解决在词态、句法、语义上的歧义性,这⾥主要是介绍我个⼈在使⽤相关算法学习时使⽤的开源标注⼯具和标注平台,以供参考。
⽂本研究领域:
1. 知识图谱:知识图谱技术既涉及⾃然语⾔处理中的各项技术,在资源内容的表⽰上可以使⽤从浅层的⽂本向量表⽰、到句法和语义结
构表⽰,从⾃然语⾔处理技术上会使⽤到分词和词性标注、命名实体识别、句法语义结构分析、指代分析等。信息抽取和语义集成是知识图谱构建的核⼼技术问题。
2. 信息抽取:是指从⾮结构化/半结构化⽂本(如⽹页、新闻、论⽂⽂献、微博等)中提取指定类型的信息(如实体、属性、关系、事
件、商品记录等),并通过信息归并、冗余消除和冲突消解等⼿段将⾮结构化⽂本转换为结构化信息的⼀项综合技术。⽬前信息抽取的核⼼研究内容可以划分为命名实体识别(Named Entity Recognition, NER)、关系抽取(RelationExtraction)、事件抽取和信息集成(Information Integration)。
3. ⽂本挖掘:⽂本挖掘是指从这些⾮结构或半结构化的⽂本数据中获取⾼质量的结构化信息的过程。换⾔之, ⽂本挖掘的⽬的是从未经
处理的⽂本数据中获取有⽤知识或信息。典型的⽂本挖掘任务包括 ⽂本分类、⽂本聚类、概念/实体抽取、情感分析、⽂档摘要等。
4. 情感分析:情感分析研究的⽬标是建⽴⼀个有效的分析⽅法、模型和系统,对输⼊信息中某个对象分析其持有的情感信息,例如观点
倾向、态度、主观观点或喜怒哀乐等情绪表达。主要的情感分析任务包括:情感资源构建、情感信息的质量分析、情感分类、情感信息抽取。⽐较新兴的也有情感解释,反讽分析、⽴场分析。
5. 摘要提取:摘要提取是指通过⾃动分析给定的⼀篇⽂档或多篇⽂档,提炼、总结其中的要点信息,最终输出⼀篇长度较短、可读性良
好的摘要(通常包含⼏句话或数百字),该摘要中的句⼦可直接出⾃原⽂,也可重新撰写所得。其主
要的任务包括要点筛选、⽂摘合成。
6. 信息检索:检索⽤户、信息资源和检索系统三个主要环节组成了信息检索应⽤环境下知识获取与信息传递的完整结构,⽽当前影响信
息获取效率的因素也主要体现在这⼏个环节,即:检索⽤户的意图表达、信息资源(尤其是⽹络信息资源)的质量度量、结果匹配排序、信息检索评价。
从⼏⼤领域中不难从中看出NLP是围绕着四个模块展开的:分类、序列标注、⽂本匹配、⽂本⽣成。
NLP分类/聚类:
NLP分类的算法总结:
1.基于规则的⽅法(常⽤于未有规则设定过的特殊场景)
⼀般来说,使⽤规则的场景特殊,很难扩展到其他场景们,需要⼀些专业知识来形成规则,维护成本较⾼,需要⼈⼯在由于训练导致的规则变化或者更新时重新总结规则,但⾯对⾮规范性的特殊场景,还是需要有选择的⼈⼯标注⼀定规模的数据,⽤于模型的评价和训练。
2.传统的机器学习⽂本分类:主要是获得基于词级层⾯的TF-IDF特征,n-gram特征,放⼊分类器训练,在⽂本的特征提取上,基于词级层⾯的TF-IDF特征,n-gram特征,主题词和关键词特征。基于句⼦级别的有句式,句⼦长度等特征。基于语义层⾯的特征也可以使⽤
python官方文档中文版word2vec/GloVe/ELMo预训练语料库得到词向量,使⽤词向量合理的构造出⽂本的词向量作为⽂本的语义特征。
传统的机器学习分类优点在于其在训练速度快,易于理解中占据优势。TF-IDF的主要思想是:如果某⼀个词或短语在⼀篇⽂章中出现的频率⾼,并且在其他⽂章中很少出现,则认为此词或短语具有很好的类别区分能⼒,适合⽤于分类。TF-IDF=TF*IDF,ngram 主要思想是将可在源⽂本中到的长度为 n 的相邻词的所有组合。所以传统机器学习分类的思路是要利⽤⾃然语⾔处理中的n-gram概念对⽂本进⾏特征提取,并且使⽤TFIDF对n-gram特征权重进⾏调整,然后将提取到的⽂本特征输⼊到Logistics回归、SVM等分类器中进⾏训练。但是,上述的特征提取⽅法存在数据稀疏和维度爆炸等问题,这对分类器来说是灾难性的,并且使得训练的模型泛化能⼒有限。因此,往往需要采取⼀些策略进⾏降维:停⽤词过滤,低频n-gram过滤,LDA等,fastText 是 facebook 于 2016 年开源出来的进⾏词与序列分类的模型. 就契合了传统机器学习分类的相关内容,⾮常适合做⽂本分类的机器学习处
理,github/facebookresearch/fastText/blob/master/tutorials/supervised-learning.md 中有
关于 fastText 项⽬的使⽤例程. 处理使⽤官⽅⼯具外, 还可以使⽤ keras 实现 fastText 模型.如果想从前往后做⼀遍的话,推荐
这篇⽂章主要是讲解了从⽂本预处理的如何噪⾳消除、词汇规范化、对象标准化的概念和相关代码,并对如何在从句法分析中的语法进⾏解析、实体提取,并对常⽤模型TF-IDF,ngram,LDA,word2vec有相关的解析,后续分类使⽤的是textblob的朴素贝叶斯分类器和SVM。
3.深度学习⽂本分类:基于深度学习的⽂本分类⽅法,显然模型的结构和模型的参数将会对分类效果起到⾄关作⽤。在模型结构上常⽤的神经⽹络模型有CNN,RNN,GRU,Attention机制,Dropout等。
基础模型如CNN/RNN/GRU的各种组合模型,这⾥推荐原版:中⽂翻译版:这篇⽂章主要是做了在嵌⼊预训练模型前后和传统机器学习分类与深度学习⽂本模型的对⽐,并包含这些相关模型的代码。如果对N vs N,N vs 1、1 vs N、N vs M四种经典的RNN模型有所疑问的话,会是个很好的选择,基本上全部公式和推理过程都是⽤图像来表⽰,且对每个模型的应⽤领域,适合处理的情况都有说明。其他模型:Dropout、attention机制:注意⼒模型通常是应⽤在经典的 Encoder-Decoder 框架下的,也就是 RNN 中著名的 N vs M 模
型,seq2seq 模型正是⼀种典型的 Encoder-Decoder 框架,关于这个模型着⼒推荐 探索 Seq2Seq
模型及 Attention 机制,这篇⽂章对其计算步骤和概念讲解清楚,难得的是有个⼩任务且有详细的解决思路,⾮常值得推荐,注意的是其⼩任务的代码不在全⽂中,⽽在,
当然除此之外,在模型参数的调节上,⼀⽅⾯需要设定好模型的参数学习率,另⼀位⽅⾯需要根据模型的使⽤特点和要分析的⽂本内容进⾏调节。
NLP分类相关数据集:THUCNews中⽂⽂本分类,74万篇新闻⽂档(2.19 GB) 数据量⼤
Kesci平台短⽂本分类:
复旦⼤学计算机信息与技术系国际数据库中⼼⾃然语⾔处理⼩组:只到⼀个百度云链接,未下
剩下的算法模型和数据集会在⼆的时候整理,说⼀下NLP⽂本标注⼯具吧
NLP的前期处理,特别是实体标注的前期处理,固然是有相关的训练包做为⽀持,但有些时候遇到的⽂本⼀段时间调研后发现定的⽅向没有公开数据集,所以必要的基于规则⽅法的训练也不可或缺。
⽂本标注⼯具和标注平台:
1.prodigy:演⽰ 看着挺好的,⽐较坑的在于收费啊,⽽且不便宜,有⼀说⼀,我没到中⽂版的地⽅(简直是⼀顿操作猛如虎,最后只能捂脸的代表)
2.YEDDA:只⽀持python2.7,⽐较吸引⼈的点是可以直接导⼊txt且开源,⽽且标注员界⾯⽤于给句⼦做标注,管理员界⾯提供针对同⼀⽂件的不同⼈员标注结果的对⽐等功能。作为⼀个开源⼯具还是很不错的,不过快捷键设置有点⿇烦,没有情感类别或分类类别的标记功能,可标记种类数只有7种,对于不需要以上功能的来说,是⾮常好的选择。下载地址:
3.BRAT在安装配置和情感⽅向可以参考,可以⾃定义标注特殊区域,不过仅⽀持Linux系统,该⼯具只能⽣成.ann后缀的标注⽂件,还需要转换。
其他⼯具的话:两篇⽂章推荐,第⼀篇⽂章介绍市⾯上的标注⼯具,有⼯具截图和⼀些基本功能,⽐较节省选择时间,第⼆篇⽂章⽐较了诸多⼯具的优劣,只不过第⼆篇知乎我只到了⼆、三,没到⼀。
现在主流的是yedda和brat,各有优劣,不过我这次⽂本量⽐较多,有些好友没有linux,有些不愿意安python,⽽且YEDDA的快捷键确实有点难设,没有办法,看了推荐京东众智,试了试,实体⽅⾯做的还是不错的,可以设置多级标签、⽀持预打标,导出和YADDA⼀样各个格式都⽀持,不过没有分词,操作也很简单,⽽且⾮常便宜,⽹址:
样例图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论