BLCL的博客小馆

标签 · 算法binance币安理财存U年化收益40% !!牛市躺着就是收钱,闲置资金记得放理财!立即注册立享收益!!

首页

关于

归档

loading..
算法

UIE-事件提取

引言此篇文章分析paddlenlp中universal information extraction(UIE)对于事件提取的实现方式。 后续在没有特殊声明的情况下,UIE均代表paddlenlp的实现方式。 在这篇文章产业级信息抽取技术开源,为什么Prompt更有效? 中,作者突出UIE的优势: 多任务统一建模 零样本抽取和少样本快速迁移能力(基于Prompt的信息抽取) 而上述两点,基本也突出了目前深度学习算法的几个问题: 一、多任务统一建模 每个模型的建模方式都不同,希望在decoder(bert外的layers)更有效简单的解决问题。encoder(bert)端更多利用具备更深层次语义表达能力。 目前国内外也在研究这种多任务统一建模,在一个模型中输入不同的schema来得到相应的问题解。..

更多
loading..
算法

讯飞2020年事件提取比赛第一名-主客体提取

引言这是第二篇文章,因为主客体提取需要依赖触发词识别。上一篇是讯飞2020年事件提取比赛第一名-触发词提取。 1. 跑通代码123456789101112131415161718192021args = TrainArgs().get_parser()args.gpu_ids = '0'args.mode = "train"args.raw_data_dir = './data/final/raw_data'args.mid_data_dir = './data/final/mid_data'args.aux_data_dir = "./data/final/preliminary_clean"args.bert_dir = '/home/yuzhang/PycharmProjects/xf_event_..

更多
算法

bert融入外部特征

引言此文不是对预训练模型融入实体信息、知识图谱等类似ERNIE,k-bert这种,而是在拿到bert输出后,突出指定位置信息进去,从而控制判定的结果。 问题比如这句话: 该报还报道,法国达能集团日前宣布将投资1亿欧元,加强在中国市场的奶粉生产和研发,并表示“我们对中国市场的长期增长能力充满信心”。 谁加强和谁表示呢?是法国达能集团,而不是该报。 主体 触发词 客体 法国达能集团 加强 在中国市场的奶粉生产和研发 法国达能集团 表示 “我们对中国市场的长期增长能力充满信心” 那假设,我们在知道触发词和客体的情况下,如何从原句中获取主体呢? 思路1. 引入其他layer和bert进行concat这怕是最容易想到的方法了。比如将句子、触发词和客体分别输入到bert,然后将这三者con..

更多
算法

活到老学到老之index操作

快速想一想,你能想到torch有哪些常见的index操作?? 1. gather12345>>> a = torch.tensor([[1, 2, 3], [4, 5, 6]])>>> a.gather(dim=1, index=torch.tensor([[0,1], [1,2]]))tensor([[1, 2], [5, 6]]) 2. index_select123456>>> atensor([[1, 2, 3], [4, 5, 6]])>>> a.index_select(dim=1, index=torch.tensor([1,2]))tensor(..

更多
算法数据结构

最大堆的原理与实现

基本原理最大堆是一个二叉树,要求这个二叉树的父节点大于它的子节点,同时这个二叉树是一个完全二叉树,也就是说这个二叉树除了最底层之外的其它节点都应该被填满,最底层应该从左到右被填满。显然,最大堆的顶部节点的值是整个二叉树中最大的。我们使用数组来构建一个最大堆,使用数组构建一个二叉树最大堆存在如下性质。假设二叉树某节点在数组中的下标索引为index,则它的父节点在数组中的下标索引为parent = (index - 1) // 2,它的左子节点的下标索引为child_left = index * 2 + 1,右子节点的下标索引为child_right = index * 2 + 2。如果计算出来parent小于0或者child大于了数组最大值,就说明没有父节点或者子节点。代码实现接下来我们创建最大堆类,存储一..

更多
loading..
算法数学

简单了解一下动态规划

动态规划是一种求最优解的方式,个人了解也不是很深,胡乱写写,算是一点点自己的理解,有不对的地方欢迎批评。动态规划是一种在多个状态间进行转移时,由上一个最优状态推导出下一个最优状态的方式,而上一个最优状态又是由上上个最优状态推导得到的,如此不断向前推进,最后我们只需要知道初始最优状态即可。通过初始最优状态和状态间转移的逻辑和方式,我们就能获得全局最优状态。(是不是感觉有点像数学归纳法?)举一个斐波拉契数列的例子,最简单的解法自然是使用递归实现123456def fab(n): if n == 0: return 0 if n == 1: return 1 return fab(n - 1) + fab(n - 2)简单分析就可以发现,以上例子中,很多的数字被重复..

更多
算法数据结构

常见排序算法的原理和实现

冒泡排序冒泡排序的原理很简单,就是每次都把当前无序序列中最大(或者最小)的元素移动到序列的开头(或者结尾),之后再对除该元素之外的剩余序列做同样的操作。当所有的元素都冒泡完毕之后,整个序列就会变得有序。冒泡排序的过程正如它的名字一般,每次都把序列中最大的元素移动到末尾(假设我们选择了这种规则),这种操作就好像水中的泡泡不断地从水中浮到水面一般。冒泡排序的实现如下,简单观察就可以知道它的时间复杂度为O(n2)123456def bubble_sort(arr): length = len(arr) for i in range(length - 1): for j in range(length - 1 - i): if arr[j] > arr[j +..

更多
loading..
算法

弄懂难缠的DFS算法和相关变种(Python实现)

前言这次不废话,直接接上次的BFS,直接来看DFS。 什么是DFS算法DFS,全名深度优先搜索 用大白话来说,其实就是 一条路走到黑,走不通再回来,直到无路可走 举个简单的例子,现在我们有一个树,就像下面这样 12345 A / \ B C / \ / \D E F G 假设我们要用DFS算法来进行遍历/搜索 它的步骤如下 从初始节点A出发,并且将A标记为已访问 查找A的一个临接顶点B。 如果B存在,继续执行访问,否则回退到上一步,继续查找临接顶点 将B标记为可访问,继续执行查找临界点D的操作 重复操作,直到所有的值都访问完了,无值可以访问为止。 那么,遍历树的顺序应该是 A -> B -> ..

更多
loading..
算法

弄懂难缠的BFS算法和相关变种(Python实现)

前言这段时间频繁刷题,leetcode真的好难啊!!每次都他娘的做不出来,除了刷题,最近还在复习各种架构,或者是完成公司的开发。这些占据了我过多时间,所以blog其实一直想写,但是实在腾不出时间,今天在针对性刷leetcode的时候,对BFS/DFS有了一点别的感悟,所以就写一篇博客,作为自己的笔记,在记录的同时,也帮助其他兄弟少走弯路,希望,能够帮到大家。 什么是BFS算法?这些百度谷歌都搜的到,不过这里还是简单说一下吧 首先,BFS的全名,叫做广度优先搜索算法 搜索,顾名思义,是找寻某个东西,所以叫搜索,在写代码的时候,搜索,其实等同遍历,只是这个遍历是有条件的。 相对于BFS,它的条件是什么呢? 举个例子,有个迷宫,有两个点,你要从A 移动到..

更多
Python算法随笔

用堆找出最小的 N 个数

不知道为啥,突然想水一篇很水的算法文章。 今天整理 MySQL 的笔记,看到了这样一句话: MySQL 在执行 ORDER BY x LIMIT n 这类语句,且 LIMIT 的数量有限时(比如只需要 3 条数据),MySQL 会尽量通过堆来构建优先队列,减少排序所需的时间。 这是堆的一个经典应用:从海量数据中找出最大(小)的 n 个数。 之前只用堆写过堆排,没有用堆处理过在线算法,所以就写了写。 用一句话概括这个算法:要找最小的数,就要构建大顶堆。 在处理数据时,我们会构建一个大顶堆 H,那么 H[0] 的值也就是当前数据中最小的 N 个数中的最大值,也就是第 N 小的数。 当处理新的数时,如果这个数小于堆顶的数,那么就把它变成堆顶,然后再对堆进行维护,以保证有序。 此算法的时间复杂度为 O(Ml..

更多
13456