crf

基于java的中文分词工具ANSJ

淺唱寂寞╮ 提交于 2021-02-18 16:00:13
ANSJ 这是一个基于n-Gram+CRF+HMM的中文分词的java实现. 分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上 目前实现了.中文分词. 中文姓名识别 . 用户自定义词典,关键字提取,自动摘要,关键字标记等功能 可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目. 分词的目的是创建一个高稳定可用的中文分词工具,可以利用到各种需要文字处理的场景中下面简单介绍一下Ansj中文分词的主要算法及特点. 数据结构 高度优化Trie树 在用户自定义词典以及各种类似于Map的场景中,大量使用的一个工具,众所周知,Trie具有高速的文本扫描能力,和较低的内存占用率,是最好的AC机之一,弦外之音,在我的认知范围内,貌似没有之一.相比其它结构在性能和构造上做到了很好的平衡,但是在java中,大量构建map尤其是hashmap,是一个非常昂贵的操作,通过对于一个map放入大量的key也注定其在自动拆箱装箱,以及解决冲突,大量hash匹配上做了过多的小消耗,虽然多数人认为,这种消耗属于纳秒级别的,但是对于动不动就上GB的文本来说,这个消耗是不可忽略的,所以作者在这里使用了首字母hash次字二分的方式来避免过多的消耗内存,也正应为有了这个机制.可以保证Ansj加载更多的用户自定义词典,有人问我具体的数字.大约500万词,1Gde 内存

我们为什么需要条件随机场CRF?

和自甴很熟 提交于 2021-01-30 09:56:21
点击上方“AI公园”,关注公众号,选择加“星标“或“置顶” 作 者: Prateek Joshi 编译: ronghuaiyang 导读 昨天给大家介绍了CRF的基本概念,今天我们聊一聊为什么需要这么个东西。 这是一个分为两部分的讨论。在这篇博文中,我们将讨论条件随机场的需求。在下一篇文章中,我们将讨论它们到底是什么以及如何使用它们。在计算机视觉、生物信息学、计算语言学和语音识别等诸多领域,都出现了为一组观测序列分配标签的任务。例如,考虑自然语言处理任务,即在句子中使用相应的词性标记标记单词。在这个任务中,每个单词都有一个标记,表示其适当的词性,从而产生带标注的文本。再举一个例子,考虑根据所观察到的行为给一个视频贴上一个人的心理状态标签的任务。你必须分析用户的面部表情,确定用户是否高兴、生气、悲伤等等。我们经常希望预测大量相互依赖的变量以及其他观察到的变量。如何实现这些任务?我们应该使用什么模型? 为什么要用条件随机场? 在许多应用中,我们希望能够预测相互依赖的多个变量。例如,一个运动队的表现取决于该队每个队员的健康状况。每个成员的健康可能会受到团队旅行计划的影响。比赛的结果可能会影响全队的士气。反过来,士气可能会影响健康。正如你所看到的,有多个变量错综复杂地相互依赖。条件随机场(CRFs)对这些问题的建模非常有用。与此类似的应用有很多,比如对图像的区域进行分类

条件随机场(CRF)的理解

╄→гoц情女王★ 提交于 2021-01-30 09:54:07
Motivation 学习CRF的过程中,我发现很多资料,教程上来就给一堆公式,并不知道这些公式是怎么来的。 所以我想以面向问题的形式,分享一下自己对CRF用于序列标注问题的理解 问题定义 给定观测序列$X=(X_1,X_2,X_3,...X_n)$, 应该注意以下几点: 输入$X=(X_1,X_2,X_3,...X_n)$是观测序列,是先验条件 输出$Y=(Y_1,Y_2,Y_3,...Y_n)$是标注序列,也称为状态序列, 与观测序列具有相同的结构 我们举个例子: 设有一标注问题:输入观测序列为$X=(X_1,X_2,X_3,X_3)=(Dog caught the cat)$,输出标记序列为$Y=(Y_1,Y_2,Y_3,Y_3)$,$Y_1,Y_2,Y_3,Y_3$取值于$\gamma={verb, article, noun}$ 我们可以得到以下模型图: 当模型输入句子 ”Dog caught the cat“ 时,我们希望模型能够输出标注序列:“n v a n”的概率最大 那么如何根据这个状态图计算出序列”n v a n“的出现的概率呢? 这里就引出了概率无向图模型:(注:个人认为条件随机场模型是一个概率无向图模型,而线性链条件随机场是一个有向图模型) 条件随机场 这里我们对于上图中的图模型,我们定义两种特征: 状态特征和转移特征 状态特征: 定义在结点上

通俗易懂理解——条件随机场CRF

青春壹個敷衍的年華 提交于 2021-01-30 08:30:35
https://mp.weixin.qq.com/s?__biz=MzIyNzE5NjExMA==&mid=2651342812&idx=1&sn=2f74c852200d6868f68a2f05ba561ac8&chksm=f3980a7dc4ef836b764c7ad2bab7c92e696074af43efa2a6be03d686fcec0a4a91a05a116b38&scene=178&cur_album_id=1381650339941761024&exportkey=AaZpj6rbOKQmUg2WIvFt0k0%3D&pass_ticket=lXzBpkoZ2YPJsUPAT3fbhToQqpCP%2BpcjC24v76SUrC6t0zqXhUNtg4RI8W8iC6It&wx_header=0#rd 前言 CRF是一个概率无向图模型,在NLP领域应用广泛,目前大部分的序列标注问题(分词、实体识别等)都会采用Neural Network+CRF作为baseline,本文将会对CRF做一个基本的介绍,并讲解其推导过程。 CRF解决的是什么问题 假设你有许多小明同学一天内不同时段的照片,从小明起床到睡觉各个时间段都有。现在的任务是对这些照片进行分类。比如有的照片是吃饭,那就给它打上吃饭的标签;有的照片是跑步时拍的,那就打上跑步的标签;有的照片是开会时拍的

JSIS3D:具有多任务点向网络和多值条件随机场的3D点云联合语义-实例分割

无人久伴 提交于 2021-01-12 04:22:29
点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 标题: JSIS3D: Joint Semantic-Instance Segmentation of 3D Point Clouds with Multi-Task Pointwise Networks and Multi-Value Conditional Random Fields (Oral) 作者:Quang-Hieu Pham, Duc Thanh Nguyen, Binh-Son Hua, Gemma Roig, Sai-Kit Yeung 来源:CVPR2019 编译:于振洋 审核:王志勇 摘要 深度学习技术已成为2D图像上大多数与视觉相关的任务的通用模型,然而它的力量尚未在3D空间的任务中得到充分体现,例如3D场景理解。在这项工作中,作者将3D点云的语义和实例分割问题结合起来进行同时处理。 具体来说,作者开发了同时执行的多任务逐点网络两项任务:预测3D点的语义类别,以及将点嵌入到高维向量中同一对象实例的点由相似的嵌入表示。然后,作者提出一个多值条件随机字段模型,用于合并语义和实例标签,并在共同优化标签时制定语义和实例分割问题模型。对提出的方法进行了全面评估和与不同室内场景下现有方法的比较数据集,包括S3DIS和SceneNN。实验结果表明,提出的联合语义-实例分割方案在其单个组件上具有鲁棒性

万字综述:行业知识图谱构建最新进展

限于喜欢 提交于 2021-01-09 17:15:46
作者|李晶阳[1],牛广林[2],唐呈光[1],余海洋[1],李杨[1],付彬[1],孙健[1] 单位|阿里巴巴-达摩院-小蜜Conversational AI团队[1],北京航空航天大学计算机学院[2] 摘要 行业知识图谱是行业认知智能化应用的基石。目前在大部分细分垂直领域中,行业知识图谱的 schema 构建依赖领域专家的重度参与,该模式人力投入成本高,建设周期长,同时在缺乏大规模有监督数据的情形下的信息抽取效果欠佳,这限制了行业知识图谱的落地且降低了图谱的接受度。 本文对与上述 schema 构建和低资源抽取困难相关的最新技术进展进行了整理和分析,其中包含我们在半自动 schema 构建方面的实践,同时给出了 Document AI 和长结构化语言模型在文档级信息抽取上的前沿技术分析和讨论,期望能给同行的研究工作带来一定的启发和帮助。 引言 从计算到感知再到认知的人工智能技术发展路径已经成为大多人工智能研究和应用专家的共识。机器具备认知智能,进而实现推理、归纳、决策甚至创作,在一定程度上需要一个充满知识的大脑。知识图谱 [4, 18, 19],作为互联网时代越来越普及的语义知识形式化描述框架,已成为推动人工智能从感知能力向认知能力发展的重要途径。 知识图谱的应用现在非常广泛:在通用领域,Google、百度等搜索公司利用其提供智能搜索服务,IBM Waston 问答机器人

清华大学王晓智:大规模通用域事件检测数据集MAVEN

久未见 提交于 2020-12-28 09:41:13
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 事件检测任务是事件抽取的第一步,对事件语义建模有重要意义。然而现有事件检测数据集存在两个严重的问题: (1)数据稀缺,现有小规模数据集不足以充分训练和稳定评测复杂的神经网络模型; (2)覆盖率低,现有数据集关心的有限数据类型不足以覆盖通用域中的广泛事件语义,也限制了事件检测模型的应用范围。 为了缓解这些问题带来的影响,本文构建了一个大规模通用域事件检测数据集MAVEN,它包含4480篇文章和118732个事件实例,覆盖了168种事件类型。同时也在MAVEN数据集上复现了一系列当前最佳的模型并进行了全面的实验。实验结果显示在传统数据集上表现极好的模型并不能在MAVEN上也取得理想的表现,这表明事件检测仍是一个具有挑战性的方向。本文也通过一些实证分析讨论了事件检测任务后续的发展方向。 本期AI TIME PhD直播间,我们有幸邀请到了清华大学计算机系的博士一年级研究生王晓智,为大家分享这项研究工作! 王晓智: 清华大学计算机系博士一年级研究生,导师李涓子教授。主要研究方向为事件抽取和预训练语言模型。已在EMNLP、NAACL、COLING等会议发表多篇文章。 一、 背景 一、 事件检测的定义 事件检测任务旨在从文本中识别事件触发词并正确分类事件类型。触发词指的是最能清晰明显表达事件出现的核心词语或短语

浅谈分词算法(1)分词中的基本问题

耗尽温柔 提交于 2020-12-27 00:24:44
[TOC] #前言 分词或说切词是自然语言处理中一个经典且基础的问题,在平时的工作中也反复的接触到分词问题,用到了不同的模型,不同的方法应用在各个领域中,所以想对分词问题做一个系统的梳理。大多数分词问题主要是针对类似汉语、韩语、日语等,词语之间并没有天然的分割,而像英语等,句子中是带有天然的分割的。但是英语也会涉及到分词问题,比如实体识别、词性标注等内容。而本系列文章更多的是讨论汉语中的分词问题,首先我们从分词问题的基本出发,之后从传统的词典分词到将分词转为序列标注问题的分词,以及最新的结合深度学习的分词,基本按照时间顺序对分词模型可能用到的算法模型进行一步步尝试与介绍,所有代码我会放在自己的github上: xlturing 。 #目录 浅谈分词算法(1)分词中的基本问题 浅谈分词算法(2)基于词典的分词方法 浅谈分词算法(3)基于字的分词方法(HMM) 浅谈分词算法(4)基于字的分词方法(CRF) 浅谈分词算法(5)基于字的分词方法(LSTM) #分词中的基本问题 简单的讲,汉语自动分词就是让计算机在汉语文本中的词与词之间自动加上空格或其他边界标记。分词中涉及到三个基本问题:分词规范、歧义切分和未登录词的识别。 ##分词规范 我们从小学习汉语开始,基本顺序就是汉字->词语->句子->段落->篇章,而其中词是什么,什么是词语,这个问题看似有些莫名其妙

综述 | 知识图谱技术综述(下)

孤街浪徒 提交于 2020-12-06 05:59:05
题目:知识图谱技术综述 作者:徐增林,盛泳潘,贺丽荣,王雅芳 摘 要 知识图谱技术 是人工智能技术的重要组成部分,其建立的具有 语义处理 能力与 开放互联 能力的 知识库 ,可在 智能搜索、智能问答、个性化推荐 等智能信息服务中产生应用价值。 该文在全面阐述知识图谱定义、架构的基础上,综述知识图谱中的 知识抽取、知识表示、知识融合、知识推理 四大核心技术 的研究进展以及一些典型应用。该文还将评论当前研究存在的挑战。 关 键 词: 知识融合; 知识图谱技术; 知识表示; 开放互联; 语义处理 目录 0 导 读 1 知识图谱的定义与架构 1.1 知识图谱的定义 1.2 知识图谱的架构 2 大规模知识库 2.1 开放链接知识库 2.2 垂直行业知识库 3 知识图谱的关键技术 3.1 知识抽取 3.2 知识 表示 3.3 知识融合 3.4 知识推理 4 知识图谱的典型应用 4.1 智能搜索 4.2 深度问答 4.3 社交网络 4.4 垂直行业应用 5 知识图谱的挑战 5.1 知识获取 5.2 知识表示 5.3 知识融合 5.4 知识应用 6 结束语 7 参考文献 3.知识图谱的关键技术 前文回顾 3.1 知识抽取 3.1.1 实体抽取 1) 基于规则与词典的实体抽取方法 2) 基于统计机器学习的实体抽取方法 3) 面向开放域的实体抽取方法 3.1.2 关系抽取 1) 开放式实体关系抽取 2

【NLP实战系列】Tensorflow命名实体识别实战

余生长醉 提交于 2020-12-01 00:31:35
实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式。因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试。 本篇介绍自然语言处理中一种非常重要的任务:命名实体识别。因为最常见的是Bilstm+CRF模型进行实体识别,本文介绍介绍另外一种有效的模型,Dilated-CNN+CRF模型,但是两种模型的代码都会给出。 作者&编辑 | 小Dream哥 1 命名实体识别任务介绍 笔者在这篇文章中,曾经系统的介绍过命名实体识别任务的相关 概念 和 语料 标注方式 ,不了解的同学可以先阅读这篇文章: 【NLP-NER】什么是命名实体识别? 关于Bilstm和Dilated-CNN两个模型 理论 方面的内容,笔者在这篇文章中做了详细的介绍,不了解的同学可以先阅读这篇文章: 【NLP-NER】命名实体识别中最常用的两种深度学习模型 话不多说,既然是实战篇,我们就赶紧开始吧。 2 数据预处理 1) 查看数据格式 先了解一下数据格式,方便后面进行处理。如下图所示,语料为标准的BIO标注方式, 每个字和标记之间用空格隔开,语料之间用一个空行隔开 。 2)读取训练数据 def load_sentences(path, lower, zeros): """ 加载训练,测试,验证数据的函数 """ sentences = [] sentence = [] num = 0