知识图谱2-知识表示
- 知识表示的重要性
- ER模型+Sql与RDF模型+SPARQL对比
- 关系模型
- 关系显式定义(RDF)
- 关系隐式定义(ER)(理解后写出来的表
- 数据变更时
- RDF--数据变更可以很容易实现
- ER--要加表了,sql语句也要更改
- 数据智能性如何体系那?
- 典型知识项目的知识表示
- 总结
- DBPedia
- 本体层使得知识图谱的描述更规范且可推理
- 数据层使得抽取和构建更方便
- 对于专业领域知识图谱,会先定义本体层,然后依据约束来提升数据质量
- YAGO2
- Freebase
- 有CVT--可以多元关系
- Wikidata
- 多元关系
- ConceptNet5
- 允许自然语言(句子模板+三元关系)
- 多元关系
- NELL
- 实用的知识表示:
- 同时为人和机器设计
- 表达能力够用就好,不苛求逻辑的完备性
- 易于扩展,能够非常方便的增加新的类、实体和关系
- 是数据模型:不少商业化的知识图谱未采用RDF/OWL--还是用关系数据库实现,但可与RDF/OWL做对应
- Protege使用(知识图谱的实例)
- 用于本体构建的软件
- https://protege.stanford.edu/products.php
- https://webprotege.stanford.edu/#projects/dfa2f55b-84c3-4f7b-a256-3a6639f57b9f/edit/Changes%20by%20Entity?selection=Class(%3Chttp://www.semanticweb.org/ontologies/2017/9/untitled-ontology-2%23%E5%A5%B3%E4%BA%BA%3E)
- 知识的特性
- 知识表示
- 定义
- 对事物本身的替代---可以通过思考,不用行动,确定事物的来龙去脉前因后果
- 是本体约定(ontological commitment)的集合
- 方法
- 自然语言(最广泛,对人友好
- 符号表示方法 @符号知识表示
- 谓词逻辑(一阶谓词逻辑
https://blog.csdn.net/weixin_40485502/article/details/103874579https://blog.csdn.net/weixin_40485502/article/details/103872864
- 谓词:
- 命题
- 谓词--用于其一个term元祖
- 表示:一个属性或objects之间的关系
- Brother(John,Fred)
- Left-of(Square1,Square2)
- 语义:在特定场景(interpretation中的真假值
- 复杂命题:通过逻辑连词构建
- 量词:全称量词和存在量词--
- 目标:无需枚举
- TBox:内涵知识
- ABox:外延知识又称断言知识,描述论域中特定个体
- 语义网(semantic net
- 启发idea
- 是通过语义关系连接的概念网络(语义关联)
- 表示为:相互连接的:节点-弧-节点
- 节点---实体、属性、事件、值
- 边---关系
- Is-A属于一类
- instance-Of实例
- part-Of 部分
- Modifiles: on /down/up/bottom/moveto……
- 领域特定关系
- 医疗:症状、治疗、病因……
- 金融:收购、持有、母公司……
- 示例
- 框架
- 思想:以框架记忆,新事物=框架+补充
- 表示
- Frame:一个典型知识---
- slot的集合---》
- 表名其与框架相关的对象
- 可以是其他frame/Procedure/slot
- 槽名(slot names
- 槽值(slot fillers
- 两类Frame
- 类Frame--面向对象中的Class-----subclass_of->Class Frame(父类)---可继承默认属性
- 实例--Object---instance_of->Class Frame
- Slots---variables/methods
- 分类
- 静态的
- 动态的
- 过程性的
- 脚本--剧本/函数
- 与框架类似
- 是描述特定上下文中原型事件的序列的结构化表示
- 一组槽---特定领域内一组事件的发生序列
- 组成元素
- 进入条件
- 变量
- 代码--场景
- 事件发生的顺序
- 一个时间--多个场景
- 每个场景--可以使其他脚本
- 输出--结局
- 示例
- 逻辑程序
- 缺省逻辑
- 模态逻辑
- 语义网(semantic web--语义外
- 数据万维网
- 目标-使万维网变成全球开放知识共享平台
- 技术:语义网
- 目标
- 在web上发布结构化数据
- 在不同数据源的数据之间建立链接
- 提供了一套描述数据而设计的表示语言和工具,---用于形式化地描述一个知识领域的概念、术语和关系
- HTML--文档间关系
- 描述事物间关系
1.用URI统一资源标识符--事物的名字2.查看URI时,提供有用的信息,用RDF、SPARQL标准
- RDF
- 代表含义
- R-页面图片视频等任何具有urI标识符
- D:属性特性和资源之间的关系
- F:模型语言和这些描述的语法
- 表述对象(web sources)间关系的简单语言
- 三元组:(subject,predicate,object)主谓宾---陈述对象的知识、对象间带类别的关系
- 是通用模型,可有多种格式
XML.T-Triples,N3,Json-LD……
- 空白节点
- 为了描述多元关系,复杂关系
- 允许空白节点
- 一个资源可以是匿名的 ,即不被URI标识,并标记为_:xyz
- eg:Haofen是某一次KG讲座的讲者
- 一个边:一跳,两个边二跳的关系
- 并不关心是哪一次讲座,只是一个桥梁而已
- RDF是数据模型,不是序列化格式
- 假设:开放世界假设
- 封闭世界假设 :只有一个关系就意味着只有一个讲者 ,不在系统里的就是没有
- 缺失并不等于没有
- 只有一个关系,不意味着只有一位讲者
- RDF允许分布式的定义知识
- 分布式定义的知识可以自动合并--(合并,知识融合)
- 扩展:
- 带标注的RDF(S)--annotated RDF
- 时间,不确定性,空间,信任等
- YAGO2使用带标注的rdf
- 语法:(s,p,o):\lambda
- \lambda是个标志
- eg:(特朗普 ,就职,总统):2017年1月
- 缺点:
- 可以表示一些简单的语义,但在更复杂的场景下,rdf语义表达能力显得太弱,还缺少诸多常用的特性
- 值域只定义了全局值域,无局部值域
- 类,属性,个体的等价性:无法声明
- 不相交集的定义:RDF只能声明子类关系,如男人和女人都是人的子集,但无法说明这两个类是不相交的 。
- RDFS(S-Schema
- RDF的扩展
- 为RDF定义许多小的词汇集,如:Class,subClassOf,type,Property,subPropertyOf,Domain,Range
- 多了术语表--描述RDF资源的属性和类别(做了规范)
- 结构:层次体系结构
- 类别子类别--Class,subClassOf,type
- 属性层次体系结构---Property,subPropertyOf
- 定义新术语---domain,range
- 实例:
- OWL--web Ontology Language本体语言
- 定义一些新的预定义的语言,而这些语言会跟一阶谓词逻辑的可判定子集做关联,这样的话,在增加表示能力的同时,推理的复杂度就会提升
- 进一步提供了更多的术语来描述属性和类别
- 类别之间的关系5--disjointness
- 基数cardinality--exactly one
- equality
- richer typing of properties
- characteristics of properties---symmetry
- 枚举类
- ……
-
- owl的三个子语言
- 区分
- 关系
- 等价性
- owl:equivalentClass
- owl词汇
- 声明属性的传递性owl:TramsitiveProperty
- 声明两个属性互反owl:inverseOf
- 声明属性的函数性 ---唯一的(一对一或多对一)owl:FunctionalProperty
- 对称性owl:SymmetricProperty
- 局部约束
- 声明相交性
- 其他
- OWL2
- 加限制来提升效率
- owl2 QL-->加约束后,效率提升到多项式时间复杂度
- owl2 EL:适用于医疗
- XML:
- SPARQL(SPARQLProtocol and RDF Query Language)
- RDF的查询语言(基于RDF数据模型)
- 可以对不同的数据集撰写复杂的连接
- 由所有主流图数据库支持
- 查询结构
- 基本构成
- 变量:RDF中的资源,以?or $
- 三元组模板:在where子句中列示关联的 三元组模板,之所以称之为魔蛋,因为三人组中允许变量
- select:子句中只需要查询的目标变量
- optianal(=left join
- filter
- 可能没有填写年龄,但是不代表他没有年龄 ---开放假设
- union
- from
- 允许嵌套
- 可跨库查询
- 例子
- 查询结果
- 查询图
- 另一个例子
- 1
- 查询关联交易
- sparql有啥用?---跨知识库的查询实例
- 阿尔海默病--用于新药发现的案例
- RDF很灵活,单查询可能会成为噩梦
- 实例
- 怎么办?
- 本体:可以填充只是和查询之间的语义间隙---这是需要本体层的原因
- JSON-LD:数据交换格式
- JSON for Linking Data:适用于作为程序之间做数据交换,在网页中嵌入语义数据和Restful Web Service
- 知识图谱的分布式表示 --KG Embedding
- 在保留语义的同时,将知识图谱中的实体和关系映射到连续的稠密的低维向量空间
- 简单的例子
- 原来
- 转化为Json-LD
- 呈现出语义网技术的风格,他们有着类似的目标,围绕某类知识提供共享的术语
- 实现更容易大家接受,更轻便:---能解析json的工具,就能解析json-ld
- RDFa
- 通过引入名字空间的方法,在已有的标签中加入 RDFa相应的属性,来使得支持 RDFa技术的浏览器或搜索引擎可以解析到,从而达到优化的目的
- HTML5 Microdata
- Microdata微数据,是在网页标记标记语言嵌入机器可读的属性数据
- 微数据使用可以来自自定义词汇表、带作用域的键/值对给DOM做标记
- 用户可以自定义微数据词汇表,在自己的网页中嵌入自定义的属性
- 微数据是给那些已经在页面上可见的数据施加额外的语义。当HTML的够用时,使用微数据可以取得较好的效
- 分布式方法
- 1、张量分解
- 张量:多维的矩阵
- 主要用于刻画实体和关系之间的表示
- 2、神经网络
- 3、距离模型
- 缺点:本身面向互联网--复杂
- 体系
- 特征
- 每个事物有唯一的URI
- 事物间--链接关联
- 事物之间链接显式存在并拥有类型
- web上的数据的结构--显式存在
- 知识图谱---万物皆有关 @知识图谱
- 本质:语义网络(Semantic Net--
- 节点---实体、概念
- 边--实体/概念间的予以关系
- 知识图谱把不同来源、不同类型的信息链接在一起形成关系网络--提供了从关系角度去分析问题的能力
- 知识表示
- 三元组Triple(head,relation,tail)
是个概念,实际可以存在关系型数据库中--表的一行
- 实体/概念:头head,尾tail
- 关系/属性:relation
- 概念
- Node
- 概念(concept
- 实体/实例entity/object/instance
- 值value
- 实体entity
- 字符串string
- 数字number
- 时间date
- 枚举(Enumerate
- 高阶三元组--嵌套
- 与时间地点相关
((美国,总统,特朗普),开始时间,2017)
- 事件
- Compound Value Type (CVT)--符合值类型
- CVT是Freebase中的一种类型,用于表示每个条目由多个字段组成的数据。
A CVT is a type within Freebase, which is used to represent data where each entry consists of multiple fields.
- cvt在Freebase中用于表示复杂的数据。
CVTs are used in Freebase to represent complex data.
- 边:关系
- 是什么
- subcalss
- type
- relation
- property/attribute
- 分类
- Taxonomic relation--分类关系,用以分类
- Non-taxonomic relation
- 缺点
- 领域限制
- 一些侧重于语言:wordNet,babeInet
- 侧重于schema:Cyc,UMBEL
- 侧重于fact:DBPedia,Yago
- 对时空属性的建模
- 对动态性的实体,如Event建模不足
- Yago3在一定程度上考虑时间和地理属性
- 完全自动构建
- 展望
- 新的知识表示模型--本体引擎用来15年了
- 新类型的知识图
- 自动构建技术
- Freebase中,71%没有出生日期
- 新技术Distant Supervision,KG embedding,知识集成,(如google的Knowledge Vault
- 知识表示研究怎样用计算机符号来表示人脑中的知识,以及怎样通过符号之间的运算来模拟人脑的推理过程
- 知识建模--建立本体ontolog
- 建什么
- 要求:可靠性
- 方法
- 自顶向下--专家手工形成数据模式
- 自底向上--实体--类
- 利用现有的标准转换
- 从现有的高质量数据源中进行映射:
- 用知识图谱--抽象建模--来自不同数据源
- 实体抽取与合并---实体/概念
- 属性映射与归并--属性--不同数据源中对实体的描述
- 关系抽取---关系---数据间的关联关系
- 文本----人类知识的重要载体
- 文本分析--将结构化的原始文本转化为计算机可识别处理的结构化信息的过程。
- 6.1文本表达
是将文本符号数字化的方法
- 单词的表示
单词-----语言的基本单元-----其表示学习(文本处理领域的核心问题)
- 局域性表示
单词---向量每个单词--独有且相邻的维度相互独立
- 独热表示
仅用一个维度向量维度=词表大小,仅有一个维度为1,其余皆0
- 缺点:
- 优点:相互独立,正交-》强判别能力
配合最大熵、SVM、CRF
- 分布式表示
可以表示不同单词之间的语义关联低维向量(多于一个维度非0,稠密)在特征空间的向量---每个单词由其多个特征来高效表示基于:分布语义假设——依据上下文利用某种上下文来学习单词的分布式表示
- 横向组合表示——矩阵分解模型
上下文:文档两个词在同一文中,可以组合,担任不同语法作用。
- 基础——低秩逼近
原:矩阵C(M*N),寻找一个Ck,rank(Ck)<=k,且X=C-Ck的F范数最小(两个矩阵差异小)。当k==rank(C)=r时,差异为0当k<
- F-范数(福洛宾尼奇范数)
矩阵所有项的平方和
- LSI----隐性语义索引(主题模型)
词-文档矩阵C:cij为第i词在第j篇文章中出现的次数
- 1.SVD分解
- 2.特征值排序,取前k个奇异值(其余置0),U、V不变
- 3.得到低秩逼近Ck
- 说明:
对于term-doc 矩阵作SVD分解后的意义,在于截取top k个奇异值后(所得对角矩阵记为E_k),可以得到row、col的压缩向量表示。E_K*V_k 所得矩阵就是doc向量矩阵,每个doc对应一列;U_k*E_k 所得矩阵就是term向量矩阵, 每个doc同样对应一行。这些压缩表示还满足 cosine 距离近的,其语义也更有相关性(所以说是潜在语义)。
- Ck(仍为M*N,但剔除了有些不重要的信息(解决多词一义、语义关联问题)
- U:词*主题(取k列,k个特征向量,就是k维坐标),方向向量,U[:,:k]sigma[:k]的一个行表示一个词向量
- V:主题*文档sigma[:k]VT[:k,:]的一列一个文档矩阵
- sigma:主题相关性?重要性?,剔除后只保留重要信息,一个主题一个维度,主题占比
- 缺点:不可解释性
- PLSI----概率隐性语义索引
LSI引入概率图模型得到概率化解释对其使用的变量,及其对应的概率分布和条件概率分布给出了明确的解释
- M篇文章、N个词项--k个隐藏主题
- 解释:
来自https://www.jianshu.com/p/40fbe2bdffd3文档:d主题:z词:w
- 以P(dm)选一篇文档dm属于D,
- P(zk|dm):在Dm下主题zk属于Z的概率分布
- P(wn|zk):在主题zk下,词项wn属于W的概率分布
- 联合概率P(dm,wn)=P(dm)P(wn|dm)
- 其中(带上隐藏的主题)
- 最终
- 其似然函数——Em求解
因为Z是隐变量n(dm,wn)是dm和wn共同出现的次数
- EM算法
来自https://blog.csdn.net/yangliuy/article/details/8330640课件中没有
- 估计的参数
- E:以当前参数--求后验概率
- M:最大化似然函数的期望得到参数的新的值
- 其中,P(zk|di,wj)从E步中已知
- 约束条件
- 所以可以写出拉格朗日函数
- 对其求偏导
- 联立求解结果
- LDA-----隐性狄利克雷分析
一种应用更广泛的主题模型
- 其文档生成过程:
- 1.假设要生成的文档dm属于D,长Nm,为其选定一个主题分布sita(m)(服从dirichelet分布)狄利克雷分布(https://www.zhihu.com/question/26751755)
ta分布是假设变量服从二项分布时对那个p引入的分布。它特别好的一点在于使用贝叶斯公式时在学习过程中后验分布和先验分布形式一致,只是参数不断得到修正。这样先验分布和后验分布形式相同时,我们称他们为共轭分布(only a term,不用管它)。(|)=(|)()/(),这里(|)就是二项分布公式,()就是分布,下面就是归一化常数P(p|x)=P(x|p)P(p)/P(x),这里P(x|p)就是二项分布公式,P(p)就是beta分布,下面就是归一化常数最后的结果P(p|x)和P(p)都是beta分布,只不过对初始参数进行了修正。这就是一个bayes学习过程。狄利克雷分布只不过把二项分布推广成多项式分布,即每次取值集合扩大了。@史泊琛
- 2.生成dm的第n个词dmn时,首先在sita(m)下生成主题zn,zn服从mutinomial(sita(m))多项式分布
- 3.词项beta(zn)服从狄利克雷分布,此时依靠多项式分布P(dmn|beta(zn))=P(dmn|zn,beta)生成dmn,得到联合概率分布:
- 为求得生成dm的概率,在上式中对连续变量sita(m)求积分,对zn(离散)求和
- 生成整个语料库的概率(各文章的乘积)
- 解释@史泊琛@《大数据分析》https://blog.csdn.net/Yellow_python/article/details/83097994代码
https://www.jiqizhixin.com/articles/2019-06-12-8
- 主题——多项式分布(参数sita未知)
- 让sita服从狄利克雷先验
- 主题在所有单词上的分布~狄利克雷(稀疏)--beta
少部分与主题相关的词出现的多,而其他少
- 纵向组合表示
纵向可替换关系上下文:使用其周边单词
- NPLM-----神经网络概率语言模型(只考虑上文)
训练一个语言模型--》得到单词表示(n-gram)DNN
- NPLM
- 1.输入层:输入x
- 2.隐藏层:tanh(d+Hx)
- 3.输出层:y=b+Qx+tanh(d+Hx)
- 只考虑上文,前n个词
- 核心思想:相似的输出需要相似的输入(避免了n-gram的复杂的平滑算法)
- 缺点:受此表影响大,耗时
-
- C&W——排序学习模型
- 改进:
- 1.同时使用了单词的上下文
- 2.对单词序列打分使用了排序损失函数,而非基于概率的吉大似然估计。loss= s
- 该loss的目标:尽量使正确的比随机替换后的得分高于1
- Word2Vec——上下文预测模型
与NLPM相比,去除了非线性隐层
- CBOW
对CBOW来说,输入是中心词上下文window_size*2大小的词向量,第一层:有词汇表大小的神经元,使用softmax计算每个神经元的输出,即对应中心词的产生概率。第二层:用argmax找最大的概率的索引对应的单词作为中心词预测输出。这个公式就是softmax
- skip-gram
skip-gram只不过是反过来,输入是一个词向量,(第二层)输出层有词汇表大小的神经元,softamx计算前2*window_size大小个单词作为上下文预测输出。
- 优化
- 问题
- 层次化softmax
V-词汇表
- 负采样
- google的层次化softmax
https://www.cnblogs.com/pinard/p/7243513.html
- 改进
- 首先,对于从输入层到隐藏层的映射,没有采取神经网络的线性变换加激活函数的方法,而是采用简单的对所有输入词向量求和并取平均的方法。
- huffman树层次softmax:计算量:V-》log2V
word2vec采样了霍夫曼树来代替从隐藏层到输出softmax层的映射———》只要沿着树形结构计算即可
- 操作
- 往哪里走--二元逻辑回归
在word2vec中,我们采用了二元逻辑回归的方法,即规定沿着左子树走,那么就是负类(霍夫曼树编码1),沿着右子树走,那么就是正类(霍夫曼树编码0)。判别正类和负类的方法是使用sigmoid函数sita-要训练的参数xw词向量
- 对于上图中的w2w2,如果它是一个训练样本的输出,那么我们期望对于里面的隐藏节点
- n(w2,1)的P(−)概率大,
- n(w2,2)的P(−)概率大,
- n(w2,3)的P(+)概率大。
- 最大化似然
- 梯度
- CBOW的实现
- 输入到隐层——平均即可
- 梯度更新sita和xw
- SG
- 输入-隐层:xw=输入
- 更新:使得P(xw|xi)
P(xi|xw)也可,但word2vec用的是上面南哥
- 不是对xw更新,而是对2c个输出迭代更新
- Glove——全局上下文模型
- 对比
- 符号
- Xi:单词wi出现次数
- Xik:单词wi与wk共现的次数
- P(wk|wi)
- 比率与相关性
- 每个单词的软约束:
- 目标函数
- 评价方法
- 相似度评价
- 方法
- 数据集
- wordsim353
- rareword
- simlex-999
- 单词类比
- 特征
- 句子的表示
- 传统表示方法
- 词集模型set of words
- 向量长:单词表表长
- 向量内容:1-该单词出现过,0-未出现
- 不记录语序、语法
- 词袋模型(bag of words
- 向量长:单词表长
- 内容:0-未出现,n>0出现次数
- 不记录语序、语法
- 比词集多了频度
- TF-IDF模型
- 思想:如果某个词或者短语在一篇文章中出现的频率TF高,并且在其他文章出出现少,则有高的类别区分能力--适合分类
- TF-词频
- 出现次数/所有单词数
- IDF-逆文档频率
- 词语普遍重要性的度量
- log(总文档数/出现的文档数)
- TF-IDF
- TF*IDF
某一特定文档的高频词,以及其在所有文档中低文档频率,则高
- 趋于过滤常见词,保留重要的词语
- 分布式表示方法
- 主题模型
- 将句子/文档表示为主体分部
- 文档相关性
- 对文字后所隐含的主题建模
能够自动找到语义主题
- 结果
- 文档和单词的分布式表示
- 若把单个句子按文档处理---句子的分布式表示
- 基于单词分布式表示组合的表示方法
- 句子基于单词的分布式表示
- 思想:对单词的分布式表示-----组合/选择---》句子的分布式表示
特征组合、提取
- 方法
- CNN
第i句n个k维词向量h??步长??句子长度?
- RNN
5种策略
- h(t):最后一个做橘子特征
- 输出的均值或拼接:双向RNN
- 所有RNN输出的mean-pooling或max-pooling
- RNN+Attention:时间点不同,权重不同
- RCNN:每层RNN的输出向量经过一层CNN和max-pooling得到句子表示
- RecNN递归
- 像语法树:自底向上,遵循语法规则
- 结果:Zn(最终的)
- 实现效果依赖于输入文本的语法树--需要更多时间
- DAN(Deep Averaging Networks)
- av-最简单的无序模型
- 增加隐藏层:进行特征提取--得到更深层次的具体表示
- 也可理解为--词向量的平均
- 采用多层网络来进行具体的分类任务
- 原始语料直接学习的表示方法
- 直接生成会更直接
- 基于单词的依赖于单词表示
- paragrah2vec无监督
https://blog.csdn.net/lihaitao000/article/details/52298922依据:句子本身语义推断上下文以上下文推断句子语义
- PV-DM(段落向量的分布记忆模型)
- 近似于分类任务
- 思想:
- 入:句子id+前k个单词
- 目标:预测下一个单词
- 每次预测时都考虑了整个句子的语义
- 训练:SGD最大化文档D的似然函数
- 结果:输出矩阵W和D得到单词和句子的分布式表示
- pS:
- 句子的标识(Token)被当做另外一个“词”看待。它扮演一个“Memory”的角色,用来记忆当前文本或文章主题中漏掉了什么。因此,我们把这个模型称为“句向量的分布记忆模型”(PV-DM: Distributed Memory Model of Paragraph Vectors)。
- 我们可以把这些特征直接用于传统的机器学习技术,比如逻辑回归、支持向量机或者K-means聚类。
- 无监督
- 考虑词序
- 慢
- PV-DBOW句向量的分布词袋----无词序句向量---类似Skip-gram
- 输入:句向量
- 输出:该句中随机采样的词
- 有点
- 需要存储的数据少
- 只存输出层参数 softmax 权重
- 不用保存但词向量
- PV-DM & PV-DBOW 结合
- 可以把每一个句向量当作两个向量的组合:一个通过 PV-DM 训练,另一个通过 PV-DBOW 训练。PV-DM 能够很好地执行多种任务,但是它结合 PV-DBOW 后,常常能够更加出色完成任务。
- 6.2文本匹配
基于规则的文本匹配、基于学习的文本匹配
- 文本处理——抽象为——>文本匹配问题
- 信息检索:查询项《——》文档
- 问答系统:问题《——》答案
- 对话问题:前文《——》回复
- 机器翻译:中文《——》英文
- 复述问题:原句《——》改写
- 挑战
- 词语多元:一词多义
- 短语结构性:机器学习——学习机器
- 文本匹配的层次性:词-短语-句子-段落-篇章
- 方法
- 基于规则的文本匹配---用于大规模的信息初次筛选任务
- 启发式规则
- 建模:对两段文本共现词的分布
- 模型:
- BM25
- 基于词袋
- 检索排序函数
- 目标:评价查询项与文本的相关性
- 特点:
- 1.分割查询项-->查询词;
- 2。只考虑查询词出现的文档
- 排序依据:结合词频和逆文档频率IDF的打分函数
0.5-避免出现0
- 查询似然模型(query likelihood model)
- 用于信息检索
- 目标:衡量查询项与文档的相关程度
- 定义:似然概率--给定查询项Q的情况下产生文档D的概率
- 对于同样的查询项:P(Q)相等
- P(D):每个文档等概率产生-相等
- 所以推出:
- 最终
K(Q)常数q查询词给定文档D后查询词q的产生概率P(q|D)
- 频率--估计概率:因为不知道文档的真是语言模型,因此通过查询词在文档中出现的频率
- 基于学习--用于精细排序任务
有监督学习--准确性高
- 基于人工特征的排序学习模型
- 人工特征-->拼接为特征向量表示文本
人对数据的理解--设计抽象的特征表示(如BM25、TF-IDF
- 分类
- 基于文本内容
- 如关键词、文本类型、文本长度……
- 当前文本与其他文本够早的关系图上的PageRank重要度特征
- 基于文本交互
- 关键词匹配的数量、BM25、查询似然模型得到的匹配度得分
- 设计出来的邻近度特征
- 排序学习
- 输入:特征向量
- 输出:匹配度
- 分类
- 基于单样本的PointWise排序算法
- 输入:以单个<查询项-文档>样本的特征向量
- 输出:实数-匹配度
- 假设:学习一个打分函数(特征向量->匹配度),以此排序
- loss:建模成分类问题或回归问题--这两种loss都可以用
- 回归问题
- 分类问题
https://www.cnblogs.com/massquantity/p/8964029.html
- 预测:得分大于阈值相关,否则无关
- 基于样本对的PairWise
- 输入:一对<查询项-文档>样本的特征向量,查询项同,文档不同,标注的匹配度有差异
- 输出:-1,+1.匹配度的比较结果
- 假设:一对特征向量-->偏序的映射函数
- loss:
- 分类问题
- 铰链损失(hinge loss)
Hinge Loss 是机器学习领域中的一种损失函数,可用于“最大间隔(max-margin)”分类,其最著名的应用是作为SVM的目标函数。 在二分类情况下,公式如下: L(y) = max(0 , 1 – t⋅y)其中,y是预测值(-1到1之间),t为目标值(1或 -1)。其含义为,y的值在 -1到1之间即可,并不鼓励 |y|>1,即让某个样本能够正确分类就可以了,不鼓励分类器过度自信,当样本与分割线的距离超过1时并不会有任何奖励。目的在于使分类器更专注于整体的分类误差。
- 关键在于顺序关系
- 基于样本列表的Listwise
- 输入:一个<查询项-文档>集合的特征向量,查询项同(每一个查询项对应的所有搜索结果作为一个实例)
- 输出:集合的列表--排序结果
- 假设:一对特征向量-->样本排序方式的映射函数
- loss:
- KL距离:两个分布概率的距离--度量相似度
- 1.与评价指标相关的loss
- 2.与评价指标无关的loss
- 训练
通过标注的结果来训练模型参数
- 表达学习(端到端)
- 人工特征:费力,不通用
- 表达学习--自动学习特征
- 输入:文本内容
- 输出:匹配度
- Siamese框架
- 第一步:计算文档表达向量
- 第二步:相似度函数度量--匹配度
- 全连接神经网络
- cos
- 点积
- 全连接网络
- 神经张量网络
- 评价方法
- 分类准确率:文本匹配--2分类:匹配1,不0.
- P@k:前k个文档的排序准确率
- 按预测结果排序后前k个文档中相关文档有Yk个(标注的)
- Yk/k
- R@k:前k个文档的排序召回率
- 按标注相关性排序后,的前k个文档中相关文档数为Gk(预测的)
- Gk/k
- MAP(mean average precision(按预测结果排序)
- 综合考虑了所有相关文档的排序
(1/r1+2/r2+3/r3)/3
- MRR(按预测结果排序)
- nDCG(normalized Discounted Cumulative Gain)归一化折扣累计收益
- 用于标注含有匹配度而不只是0/1(这时更有效)
- 计算公式
- 按标注相关度排序--->相关度加权和IDCG--折损收益
- 按预测相关度排序-->相关度加权和DCG
- 结果DCG/IDCG--->相关度加权和的比
- 越大越好?-->趋近于1
- 折损的目的:就是为了让排名越靠前的结果越能影响最后的结果。
https://www.cnblogs.com/by-dream/p/9403984.html
- 归一化目的:
- NDCG, Normalized 的DCG,由于搜索结果随着检索词的不同,返回的数量是不一致的,而DCG是一个累加的值,没法针对两个不同的搜索结果进行比较,因此需要归一化处理,这里是处以IDCG
- IDCG为理想情况下最大的DCG值。
- 6.3文本生成
文本生成任务、方法与评价方式
- 文本生成简介
- 文本生成,亦称为自然语言生成(Natural LanguageGeneration, NLG)
- 数据--->文本的:通过图片或者视频等数据,生成图片的摘要或者视频的描述等,典型的应用就是视频评论生成、图片标题生成等
- 文本--->文本:从文本生成语言句子,典型的应用就是自动摘要、翻译模型、人机对话等
- 输出:文本
- 代表:
- 任务组成
- 1. 内容确定:决定在文本中包含哪些信息
- 要什么内容,不要什么内容--内容筛选
- 取决于:目标受众/系统意图---想做什么
- 2. 文本顺序:确定呈现句子的文本顺序
- 3. 文本归并(合并):决定每个句子中呈现哪些信息,进行句子合并
- 去除语义一样的句子,(冗余的)合并为一
- 早期:依赖于应用领域,手工定义
- 现在:数据驱动--由相似性找到要合并的
- 4. 词汇化:找到正确的词汇和短语来表达信息
- 选择词汇--依赖于上下文/情感/有效性---还有一词多意,同义词/一意多词
- 简单:原文--不灵活
- 5. 引用表达式生成:选择领域对象需要识别的单词和短语
- eg:篮球比赛的得分等具体准确的实体---专有名词
- 6. 语言实现:将所有的单词和短语组合成句子
- 输入:任意
- 文本生成方法---数据导向的
- 基于马尔科夫语言模型的生成方法(无记忆特性)
- 构建P(W|S),输入状态S下,生成语言W的条件概率,具体用隐藏变量来描述w和s的关系
- 缺点:局部性,无多轮对话的长距离依赖
- 基于深度学习的Seq2Seq模型
- 输入:对
机器翻译:X是源语言句子,Y是目标语言句;对话:X是上一句话,Y是回复
- 输出:X--生成-->Y
- 结构:多层LSTM(encoder)--->深层LSTM(decoder)
- ??
- 增加attention--增强对齐
- 文本生成任务
- 人机对话生成
- 由D和之前生成的词预测下一个词---积为条件概率
- 核心问题
- 对话一致性
- 通用回复:我不知道,那是什么,有趣
- 其他
- Li:Seq2seq+簇搜索-->多个候选回复-->选互信息大的
- Li:强化学习训练,奖励:互信息、无聊回复程度、话题一致性等
- 对话多样性
- 对同一句:回不同但合理的回复
- 方法
- 1.簇分组+惩罚机制-->使组间相似度低,保证候选回复差异大
- 2,。f(原句向量,风格向量)线性变换--》生成不同风格的句子
- 多轮对话长距离依赖
- 利用好上下文
- 方法:层次化RNN
- 1层的-RNN:得到句子的隐层表达
- 2-RNN:再编码,得到句子级别的向量表示
- 对该向量进行回复和生成的扩展---可获得整个上下文的语义
- 图片标题生成
- 输入:静态、无序的图像
- 输出:连续的文字(标题
- 形式化表示
- 过程
- 图像分析
- 1.检测
- 2.场景分析
- 分析整体
- 物体间空间关系
- 使用场景更全面的表征:
RGB直方图,尺度不变的特征变换、低纬度的空间表示
- 3,特征提取
- 标题生成或检索(方法)
- 基于模板或树结构
- 将检测的特征--映射-->输出的语言结构
- 缺点:缺乏可变性
- 基于语言模型
- 有点:促进<图像,语言>对的联合训练,有创造性、表达力
- LSTM/RNN:问题:标题生成--》预测下一个单词
- 基于检索和重组
- 检索训练数据-->标题
- 优点:语言完整流畅
- eg:Hodosh:通过查询图像的标题和解析的图像,基于WordNet找最相似的标题
- 生成文本的评价方法
- 内在评价方法
- 衡量系统性能,与文本质量相关
- 基于语料库的仿人工评价
- 人的主观评价
- 外在评价方法
- 系统实现了任务目标否
- 取决于:具体的应用领域、和具体目的
- 缺点:
- 应用: