感情分析师?

感情分析师?,第1张

感情分析师,确切的说应该是情感分析师,是一种新的工作。感情,是人类思维中最复杂的领域。因为感情没有标准,也难分对与错,只有爱与不爱。所以,很多只做对事的人,也有可能被所爱之人厌烦离弃;而有些常做错事的人,也照样有可能让人爱得难分难舍。

正是基于感情的复杂性,是不可能三言两语说得清的。所以,我的分析流程与绝大多数的情感分析师不同。对于首次咨询,我要求咨询者必须提供五千字以上的情况综述。综述包括个人成长经历、求学经历、工作经历、恋爱经历、家庭背景、直系亲属关系、婚恋对象情况、完整的感情发展过程、双方的原话对话记录、以及两性生活等各方面的信息。

     信息抽取(information extraction),简称IE,即从自然语言文本中,抽取出特定的事件或事实信息,帮助我们将海量内容自动分类、提取和重构。这些信息通常包括实体(entity)、关系(relation)、事件(event)。 例如从新闻中抽取时间、地点、关键人物,或者从技术文档中抽取产品名称、开发时间、性能指标等。能从自然语言中抽取用户感兴趣的事实信息,无论是在知识图谱、信息检索、问答系统还是在情感分析、文本挖掘中,信息抽取都有广泛应用。

     信息抽取主要包括三个子任务

     关系抽取 :通常我们说的三元组(triple)抽取,主要用于抽取实体间的关系。

     实体抽取与链指 :也就是命名实体识别。

     事件抽取 :相当于一种多元关系的抽取。

     关系抽取(RE)是为了抽取文本中包含的关系,是信息抽取(IE)的重要组成部分 。主要负责从无结构文本中识别出实体,并抽取实体之间的语义关系,被广泛用在信息检索、问答系统中。本文从关系抽取的 基本概念 出发,依据不同的视角对 关系抽取方法进行了类别划分 ;最后分享了基于深度学习的关系抽取方法常用的数据集,并总结出基于深度学习的关系抽取框架。

    完整的关系抽取包括实体抽取和关系分类两个子过程。实体抽取子过程也就是命名实体识别,对句子中的实体进行检测和分类; 关系分类子过程对给定句子中两个实体之间的语义关系进行判断,属于多类别分类问题

    例如,对于句子“青岛坐落于山东省的东部”,实体抽取子过程检测出这句话具有“青岛”和“山东”两个实体。关系分类子过程检测出这句话中“青岛”和“山东”两个实体具有“坐落于”关系而不是“出生于”关系。在关系抽取过程中,多数方法默认实体信息是给定的,那么关系抽取就可以看作是分类问题。

    目前, 常用的关系抽取方法有5类,分别是基于模式匹配、基于词典驱动、基于机器学习、基于本体和混合的方法 。基于模式匹配和词典驱动的方法依靠人工制定规则,耗时耗力,而且可移植性较差,基于本体的方法构造比较复杂,理论尚不成熟。 基于机器学习的方法以自然语言处理技术为基础,结合统计语言模型进行关系抽取,方法相对简单,并具有不错的性能,成为当下关系抽取的主流方法,下文提到的关系抽取方法均为机器学习的方法

    关于信息关系抽取,可以 从训练数据的标记程度 使用的机器学习方法 是否同时进行实体抽取 关系分类子过程以及是否限定关系抽取领域和关系专制 四个角度对机器学习的关系抽取方法进行分类。

    根据训练数据的标记程度可以将关系抽取方法分为 有监督、半监督和无监督三类

     有监督学习 ,处理的基本单位是包含特定实体对的句子,每一个句子都有类别标注。 优点 :取能够有效利用样本的标记信息,准确率和召回率都比较高。 缺点 :需要大量的人工标记训练语料,代价较高。

     半监督学习 ,句子作为训练数据的基本单位,只有部分是有类别标注的。此类方法让学习器不依赖外界交互,自动地利用未标记样本来提升学习性能。

     无监督学习 ,完全不需要对训练数据进行标注,此类方法包含实体对标记、关系聚类和关系词选择三个过程。

    根据使用机器学习方法不同,可以将关系抽取划分为三类: 基于特征向量的方法 基于核函数的方法 以及 基于神经网络的方法

     基于特征向量的方法 ,通过从包含特定实体对的句子中提取出语义特征,构造特征向量,然后通过使用支持向量机、最大熵、条件随机场等模型进行关系抽取。

     基于核函数的方法 ,其重点是巧妙地设计核函数来计算不同关系实例特定表示之间的相似度。 缺点 :而如何设计核函数需要大量的人类工作,不适用于大规模语料上的关系抽取任务。

     基于神经网络的方法 ,通过构造不同的神经网络模型来自动学习句子的特征,减少了复杂的特征工程以及领域专家知识,具有很强的泛化能力。

    根据是否在同一个模型里开展实体抽取和关系分类,可以将关系抽取方法分为 流水线(pipeline)学习 联合(joint)学习两种

     流水线学习 是指先对输入的句子进行实体抽取,将识别出的实体分别组合,然后再进行关系分类,这两个子过程是前后串联的,完全分离。

     联合学习 是指在一个模型中实现实体抽取和关系分类子过程。该方法通过使两个子过程共享网络底层参数以及设计特定的标记策略来解决上述问题,其中使用特定的标记策略可以看作是一种序列标注问题。

    根据是否限定抽取领域和关系类别,关系抽取方法可以划分为 预定义抽取 开放域抽取 两类。

     预定义关系抽取 是指在一个或者多个固定领域内对实体间关系进行抽取,语料结构单一,这些领域内的目标关系类型也是预先定义的。

     开放域关系抽取 不限定领域的范围和关系的类别。现阶段,基于深度学习的关系抽取研究集中于预定义关系抽取。

    基于深度学习的关系抽取方法常用的数据集有 ACE关系抽取任务数据集 SemEval2010 Task 8数据集 NYT2010数据集

     ACE关系抽取任务数据集 :ACE2005关系抽取数据集包含599篇与新闻和邮件相关的文档,其数据集内包含7大类25小类关系。

     SemEval2010 Task 8数据集 :该数据集包含9种关系类型,分别是Compoent-Whole、Instrument-Agency、Member-Collection、Cause-Effect、Entity-Destination、Content-Container、Message-Topic、Product-Producer和Entity-Origin。 考虑到实体之间关系的方向以及不属于前面9种关系的“Other”关系,共生成19类实体关系。其中训练数据 8000个,测试数据2717个。

     NYT2010数据集 是Riedel等人在2010年将Freebase知识库中的知识“三元组”对齐到“纽约时报”新闻中得到的训练数据。该数据集中,数据的单位是句包,一个句包由包含该实体对的若干句子构成。其中,训练数据集从《纽约时报》2005—2006年语料库中获取,测试集从2007年语料库中获取。

    基于深度学习的关系抽取方法模型构建的重点在于利用不同神经网络的特点来抽取样本的特征,以学习样本的向量表示。在学习过程中,根据所用的神经网络基本结构的不同,可将基于深度学习的关系抽取方法分为 基于递归神经网络(recursive neural network,Rec-NN)的方法 基于卷积神经网络的方法 基于循环神经网络(recurrent net neural net-work,RNN)的方法 基于混合网络模型的方法 四类。

     基于递归神经网络的关系抽取方法 首先利用自然语言处理工具对句子进行处理,构建特定的二叉树,然后解析树上所有的相邻子节点,以特定的语义顺序将其组合成一个父节点,如下图3所示。这个过程递归进行,最终计算出整个句子的向量表示。向量计算过程可以看作是将句子进行一个特征抽取过程,该方法对所有的邻接点采用相同的操作。

    由于句子含义跟单词出现的顺序是相关的,因此关系抽取可以看作是一个时序学习任务,可以使用循环神经网络来建模。

     基于循环神经网络的方法 在模型设计上使用不同的循环神经网络来获取句子信息,然后对每个时刻的隐状态输出进行组合,在句子层级学习有效特征。在关系抽取问题中,对每一个输入,关系的标记一般只在序列的最后得到。Zhang等首次使用双向循环神经网络来进行关系抽取,提出了BRNN模型。如下图7 所示,在双向循环神经网络中某一时刻的输出不仅依赖序列中之前的输入,也依赖于后续的输入。

    为了更好地抽取句子中的特征,研究人员 使用递归神经网络、卷积神经网络与循环神经网络3种网络及其他机器学习方法进行组合建模来进行关系抽取

    Vu等提 出 了 基 于 文 本 扩 展 表 示 的ECNN和基于链接的UniBRNN模型 ,将每个神经网络得到的多个结果根据投票机制得到关系的最终抽取结果。

    Xiao等将 注意力机制引入一个多级的循环神经网络 ,该方法使用文本序列作为输入,根据标记实体的位置将句子分为5部分,使用同一个双 向LSTM网络在3个子序列上独立学习,然后引入词层级的注意力机制关注重要的单词表示,分别得到子序列的向量表示;随后,使用双向RNN网络进一步抽取子序列和实体的特征,并再次使用注意力机制将其转换成句子的最终向量表示,并送入到分类器中。

    Nguyen等将 传统基于特征的方法(log-linear模型)、卷积神经网络方法和循环神经网络方法使用集成、投票等机制进行组合

    zhang等提出 在双向LSTM 的基础上叠加注意力机制 ,以及使用卷积神经网络层获取句子的表示,再送入到一个全连接层和softmax层进行分类。

    在联合学习问题上,Zheng等 使用递归神经网络和卷积神经网络组合来进行联合学习 ,也是一种共享底层网络参数的方法。

[1]庄传志,靳小龙,基于深度学习的关系抽取研究综述[J]中文信息学报,2019,33(12):1-18

更多自然语言处理相关知识,还请关注 AINLPer公众号 ,极品干货即刻送达。

Programming Libraries 编程库资源

我是一个“学习要敢于冒险和尝试”观念的倡导者。这是我学习编程的方式,我相信很多人也是这样学习程序设计的。先了解你的能力极限,然后去拓展你的能力。如果你了解如何编程,可以将编程经验很快借鉴到深入学习机器学习上。在你实现一个实际的产品系统之前,你必须遵循一些规则、学习相关数学知识。

找到一个库并且仔细阅读相关文档,根据教程,开始尝试实现一些东西。下面列出的是开源的机器学习库中最好的几种。我认为,并不是他们中的每一种都适合用在你的系统中,但是他们是你学习、探索和实验的好材料。

你可以从一个由你熟悉的语言编写的库开始学习,然后再去学习其他功能强大的库。如果你是一个优秀的程序员,你会知道怎样从一种语言,简单合理地迁移到另一种语言。语言的逻辑都是相同的,只是语法和API稍有不同。

R Project for Statistical Computing:这是一个开发环境,采用一种近似于Lisp的脚本语言。在这个库中,所有你想要的与统计相关的功能都通过R语言提供,包括一些复杂的图标。CRAN(你可以认为是机器学弟的第三方包)中的机器学习目录下的代码,是由统计技术方法和其他相关领域中的****编写的。如果你想做实验,或是快速拓展知识,R语言都是必须学习的。但它可能不是你学习的第一站。

WEKA:这是一个数据挖掘工作平台,为用户提供数一系列据挖掘全过程的API、命令行和图形化用户接口。你可以准备数据、可视化、建立分类、进行回归分析、建立聚类模型,同时可以通过第三方插件执行其他算法。

Mahout是Hadoop中为机器学习提供的一个很好的JAVA框架,你可以自行学习。如果你是机器学习和大数据学习的新手,那么坚持学习WEKA,并且全心全意地学习一个库。

Scikit Learn:这是用Python编写的,基于NumPy和SciPy的机器学习库。如果你是一个Python或者Ruby语言程序员,这是适合你用的。这个库很用户接口友好,功能强大,并且配有详细的文档说明。如果你想试试别的库,你可以选择Orange。

Octave:如果你很熟悉MatLab,或者你是寻求改变的NumPy程序员,你可以考虑 Octave。这是一个数值计算环境,与MatLab像是,借助Octave你可以很方便地解决线性和非线性问题,比如机器学习算法底层涉及的问题。如果你有工程背景,那么你可以由此入手。

BigML:可能你并不想进行编程工作。你完全可以不通过代码,来使用 WEKA那样的工具。你通过使用BigMLS的服务来进行更加深入的工作。BigML通过Web页面,提供了机器学习的接口,因此你可以通过浏览器来建立模型。

补充:

NLTK NLTK is a leading platform for building Python programs to work with human language data It provides easy-to-use interfaces to over 50 corpora and lexical resources such as WordNet, along with a suite of text processing libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoningLingPipe: 是一个自然语言处理的Java开源工具包。LingPipe目前已有很丰富的功能,包括主题分类(Top Classification)、命名实体识别(Named Entity Recognition)、词性标注(Part-of Speech Tagging)、句题检测(Sentence Detection)、查询拼写检查(Query Spell Checking)、兴趣短语检测(Interseting Phrase Detection)、聚类(Clustering)、字符语言建模(Character Language Modeling)、医学文献下载/解析/索引(MEDLINE Download, Parsing and Indexing)、数据库文本挖掘(Database Text Mining)、中文分词(Chinese Word Segmentation)、情感分析(Sentiment Analysis)、语言辨别(Language Identification)等API。

挑选出一个平台,并且在你实际学习机器学习的时候使用它。不要纸上谈兵,要去实践!

Video Courses视频课程

很多人都是通过视频资源开始接触机器学习的。我在YouTube和VideoLectures上看了很多于机器学习相关的视频资源。这样做的问题是,你可能只是观看视频而并不实际去做。我的建议是,你在观看视频的时候,应该多记笔记,及时后来你会抛弃你的笔记。同时,我建议你将学到的东西付诸实践。

坦白讲,我没有看见特别合适初学者的视频资源。视频资源都需要你掌握一定的线性代数、概率论等知识。Andrew Ng在斯坦福的讲解可能是最适合初学者的,下面是我推荐的一些视频资源。

Stanford Machine Learning斯坦福的机器学习课程:可以在Coursera上观看,这门课是由 Andrew Ng讲解的。只要注册,你可以随时观看所有的课程视频,从Stanford CS229 course下载讲义和笔记。这门课包括了家庭作业和小测试,课程主要讲解了线性代数的知识,使用Octave库。

Caltech Learning from Data加利福尼亚理工学院的数据分析课程:你可以在edX上学习这门课程,课程是由Yaser Abu-Mostafa讲解的。所有的课程视频和资料都在加利福尼亚理工学院的网站上。与斯坦福的课程类似,你可以根据自己的情况安排学习进度,完成家庭作业和小论文。它与斯坦福的课程主题相似,关注更多的细节和数学知识。对于初学者来说,家庭作业可能稍有难度。

Machine Learning Category on VideoLecturesNet网站中的机器学习目录:这是个很容易令人眼花缭乱的资源库。你可以找出比较感兴趣的资源,并且深入学习。不要纠结于不适合你的视频,或者对于感兴趣的内容你可以做笔记。我自己会一直重复深入学习一些问题,同时发现新的话题进行学习。此外,在这个网站上你可以发现是这个领域的大师是什么样的。

“Getting In Shape For The Sport Of Data Science” – 由Jeremy Howard讲授:这是与机器学习竞赛者的对话,他们是一些实践中的R语言用户。这是非常珍贵的资源,因为很少有人会讨论研究一个问题的完整过程和究竟怎样做。我曾经幻想过在网上找到一个TV秀,记录机器学习竞赛的全过程。这就是我开始学习机器学习的经历!

Overview Papers综述论文

如果你并不习惯阅读科研论文,你会发现论文的语言非常晦涩难懂。一篇论文就像是一本教科书的片段,但是论文会介绍一个实验或者是领域中其他的前沿知识。然而,如果你准备从阅读论文开始学习机器学习的话,你还是可以找到一些很有意思的文章的。

The Discipline of Machine Learning机器学习中的规则:这是由Tom Mitchell编著的白皮书,其中定义了机器学习的规则。Mitchell在说服CMU总裁为一个百年内都存在的问题建立一个独立的机器学习部门时,也用到了这本书中的观点。

A Few Useful Things to Know about Machine Learning:这是一篇很好的论文,因为它以详细的算法为基础,又提出了一些很重要的问题,比如:选择特征的一般化,模型简化等。

我只是列出了两篇重要的论文,因为阅读论文会让你陷入困境。

Beginner Machine Learning Books给机器学习初学者的书

关于机器学习的书有很多,但是几乎没有为初学者量身定做的。什么样的人才是初学者呢?最有可能的情况是,你从另外一个完全不同的领域比如:计算机科学、程序设计或者是统计学,来到机器学习领域。那么,大部分的书籍要求你有一定的线性代数和概率论的基础。

但是,还有一些书通过讲解最少的算法来鼓励程序员学习机器学习,书中会介绍一些可以使用工具、编程函数库来让程序员尝试。其中最有代表性的书是:《Programming Collective Intelligence》,《Machine Learning for Hackers》,《Hackersand Data Mining: Practical Machine Learning Tools and Techniques》(Python版, R版, 以及Java版)。如果感到迷惑的话,你可以选择其中一本开始学习。

Programming Collective Intelligence: Building Smart Web 20 Applications:这本书是为程序员写的。书中简略介绍相关理论,重点以程序为例,介绍web中的实际问题和解决办法。你可以买来这本书,阅读,并且做一些练习。

Machine Learning for Hackers (中文版:机器学习:实用案例解析 ):我建议你在阅读了《Programming Collective Intelligence》一书之后,再阅读这本书。这本书中也提供了很多实践练习,但是涉及更多的数据分析,并且使用R语言。我个人很喜欢这本书!

Machine Learning: An Algorithmic Perspective:这本书是《Programming Collective Intelligence》的高级版本。它们目的相同(让程序员开始了解机器学习),但是这本书包括一些数学知识,参考样例和phython程序片段。如果你有兴趣的话,我建议你在看完《Programming Collective Intelligence》之后来阅读这本书。

数据挖掘:实用机器学习工具与技术(英文版·第3版) :我自己是从这本书开始了解机器学习的,那时是2000年这本书还是第一版。我那时是Java程序员,这本书和WEKA库为我的学习和实践提供了一个很好的环境。我通过这样的平台和一些插件,实现我的算法,并且真正开始实践机器学习和数据挖掘的过程。我强烈推荐这本书,和这样的学习过程。

Machine Learning(中文版:计算机科学丛书:机器学习 ):这是一本很老的书,包括了一些规则和很多参考资料。这是一本教科书,为每个算法提供了相关讲解。

有一些人认为那些经典的机器学习教科书很了不起。 我也赞同,那些书的确非常好。但是,我认为,对于初学者来说,这些书可能并不合适。

Further Reading 继续阅读

在写这篇文章时,我认真思考了相关问题,同时也参考了其他人推荐的资料,以确保我没有遗漏任何重要参考资料。为了确保文章的完整性,下面也列出了一些网上流行的,可以供初学者使用的材料。

A List of Data Science and Machine Learning Resources:这是一份仔细整理的列表。你可以花一些时间,点击链接,仔细阅读作者的建议。值得一读!

What are some good resources for learning about machine learning Why:这个问题的第一个答案令人吃惊。每次我阅读这篇文章的时候,都会做好笔记,并且插入新的书签。答案中对我最有启发的部分是机器学习课程列表,以及相应的课程笔记和问答网站。

Overwhelmed by Machine Learning: is there an ML101 book:这是StackOverflow上的问题。并且提供了一系列机器学习推荐书籍。Jeff Moser提供的第一个答案是很有用的,其中有课程视频和讲座的链接。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/qinggan/1112794.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-13
下一篇2023-07-13

发表评论

登录后才能评论

评论列表(0条)

    保存