- 博客(165)
- 收藏
- 关注
原创 c# 实现多尺度的模板匹配
看网上很多方法都是通过对比模板与匹配区域图像之间的方差和直方图之类的信息,来选择最终的结果,这是为什么呢?为啥不直接用匹配的分数作为选择依据呢?(以上代码就是依据匹配的分数来选择最好的匹配结果)Cv2.MatchTemplate()方法在模板图像与测试图像分辨率不同的情况下会失效,因为模板匹配的原理是将模板从测试图片中从左到右,从上到下依次滑动来找到匹配度最高的地方;主要思路:循环缩放模板图像的大小再与测试图像进行匹配(很暴力)。因此,为了实现多尺度的模板匹配,需要对其进行改进;
2024-07-22 15:47:47
312
原创 Leetcode274
最开始使用暴力,但是没办法去掉重复的,排序后跳过与上一个值相同的数进行暴力,会超时;看了题解,先确定第一个数,然后第三个数从最后一个位置(也就是最大值) 往前枚举,第二个数从第一个数开始向后枚举,三者之和大于0时,最后一个数向前走,当最后一个数与第二个数相同时,表示当前确定的第一个数字 与最小的两个数的和都大于0,第一个数往后继续枚举;题目有点绕,最开始就想到了对数组进行排序,那就可以通过下标来得到有多少篇论文的引用大于等于当前论文的引用,如果大于了当前论文的引用量则将当前论文的引用量更新为h值。
2024-05-07 20:26:21
327
原创 Leetcode55&&LeetCode45
一看跳跃,自然想到动态规划。去看了题解发现可以将该问题进行转化,记录每个下标能达到的最远距离,要是这个最远距离超过了数组长度则说明能够到达终点。但是最开始自己写,想的是用一个队列来装可到达的下标,有点麻烦,发现是因为循环的边界设置出了问题,当循环条件应该时i<=max 而不是i < len!看了卡尔的视频,思想就是:每次都尽可能走最远,当覆盖范围大于数组时就停止计数。这里每次走最远,需要去遍历当前覆盖范围内的下标,选出能够跳得最远的下标,作为下一次跳的起点。
2024-04-24 20:57:42
312
1
原创 Leetcoed122
最开始写双指针的时候,就是暴力去计算每两个数字的和是多少,提交显示超时;后面优化代码,允许大于target后,r指针往后移动,为了避免死循环,使用一个count来记录当前l指针相加的次数。使用双指针,一个指针记录买入的价格,一个记录卖出的价格;当卖出的价格比买入的低,则选择当天买入,否则就是当前的价格高于买入的价格,可以卖出;最开始获取明天的价格用的是sell++而不是sell+1,出来的结果就不对!要记住sell++会改变sell的值!看了题解,发现人家的双指针比我的优雅多了,r从最后一个数往前遍历!
2024-04-17 20:36:35
242
1
原创 LeetCode 909 && 208
不知道前缀树应该是个什么样子的,去看了题解。主要有两个属性:isEnd用于标记当前字符是否为结束字符;Trie[]用于保存下一个可能出现的所有字符连接;呜呜呜,看了别人的题解。二维数组之字形遍历放在一维数组里面,然后借助队列对数组进行bfs。
2024-04-11 21:13:50
193
原创 LeetCode 530
最开始以为是相邻节点最小差值,结果发现是任意节点最小差值;对二叉树进行遍历(前序),然后将二叉树进行排序后相邻值相减,保留最小差值;看了题解发现对搜索二叉树进行中序遍历就能得到有序的节点值,因此修改遍历顺序,速度提高了;而且题解是用了一个pre去记录前一个节点的值,这样就可以在遍历的过程中计算最小差值;深度优先遍历,设置一个同样大小的数组来记录每个位置是否被访问过,防止再次访问;看了题解,直接将访问过的陆地变成水,就不需要额外的数组了;2)在类中定义了变量,在方法中就不要再次定义变量,直接使用;
2024-04-09 21:31:34
282
原创 LeetCode71
说实话 最开始没看懂题目什么意思,去看了题解根据“遇到..弹出栈顶元素” 思想写出代码,使用栈来装目录名称,最后所有元素出栈时与文件路径顺序是相反的;因此考虑使用双端队列来实现栈,最后从另一端取出元素,就可以得到与文件路径一致的顺序;Tips:双端队列yyds 可以用来实现栈、队列。
2024-04-07 20:53:44
255
原创 Leetcode 228 && 392
用双指针解决,left指向有序区间的起点,right指向有序区间的终点+1,判断right指向的区间是否有序则根据nums[right] = right - left +nums[left];使用双指针分别指向子序列和原序列,只有当原序列与子序列的字符相等时,两个指针往后移;否则值将原序列指针往后移,知道遍历完原序列的所有字符串;字符串的长度是s.length(),判断字符串为空s.isEmpty()
2024-04-03 16:46:49
247
原创 LeetCode 36
去看了题解,使用三个数组分别统计每行、每列、每个3*3子区域中数字出现的次数,只需要遍历一遍,同时更新这三个数组就行了;将字符串转化为数字,使用hashmap记录每个字符的对应的数字;只能想到暴力遍历,然后使用数组来存储每个元素出现的次数;
2024-04-02 19:56:39
259
原创 LeetCode 21
2)题解也很简单,就是将数组进行遍历一遍保存到set中,然后基于set.contains依次进行判断某个数的下一个数是否在数组中。有个小巧思:为了避免对最长子序列子序列的重复判断,先判断每个数字的前一个数字是否在数组中,如果在的话,说明该数字并不是子序列的起点。合并链表和数组有相似之处,都是每次将较小值加入新链表(新数组) ,我疑惑的是不知道怎么选第一个节点,看了题解发现可以使用一个头节点来解决这个问题。1)最开始想的是对他进行排序,然后从第一个元素开始判断,是否是连续的。
2024-03-28 09:20:03
237
原创 LeetCode 3&&125
left = Math.max(map.get(s.charAt(right)) + 1, left)这里卡了很久,不知道为啥要取最大,以为直接将left= map.get(s.charAt(right))+ 1就行了。后面debug发现,字符串为“abba”时,遇到最后一个a,map.get(s.charAt(right))=0,left就会变为1,往后退了一步,所以需要取最大值。这个题目需要处理非数字字母情况,需要使用replaceAll的正则表达进行匹配。// 正则匹配数字字母。
2024-03-27 10:05:54
197
原创 Leetcode 169
2)最近做的题目都是双指针,于是想着将数组进行排序后,相同的元素肯定是连续排列在一起的,使用双指针来判断每个元素出现次数,将大于n/2的元素进行返回。看了题解,发现排完序后,下标在(n/2)的元素就一定是多数元素!1)最容易想到的就是使用一个map来统计每个元素出现的次数,当前元素出现次数>(n/2) 时,就不再遍历并返回当前元素。3)看了题解的那个投票法,可以理解为:当删除两个不同元素的后,剩下的一定是多数元素。1)自己想的也是遍历,但是提交超出时间限制,而且对于循环遍历数组也没有想到取模运算。
2024-03-26 11:06:53
219
原创 LeetCode-88
2)使用双指针,slow指针指向下一个不重复元素所放下标,fast指针指向不重复元素的下标。看了题解,发现可以逆序进行遍历,因为nums1中后面几位是0, 可以进行覆盖,选择两个数组中较大值放入nums1后面,节省了中间数组的空间。1)使用一个List来记录数组中的元素情况(类似一个set 使用.contains()进行处理),然后将这个list中的数据覆盖到原数组中;最开始想到的就是使用一个中间数组来存放合并后的数据,对两个数组使用双指针进行遍历,将两个数组中较小的放入中间数据。
2024-03-25 21:41:37
198
原创 Planarized sentence representation for nested named entity recognition
问题可以通过枚举span的方法来解决嵌套实体,然而目前的模型忽略了span之间的语义依赖关系(23年看见两三篇都是对span之间的关系进行建模的)。IDEA作者提出了一种planarized 句子表征来表示嵌套实体,并使用一个双向二维的递归操作来学习span之间的语义依赖关系。对span之间的语义关系进行建模也算不上太新的idea,而且二维递归网络那里没有很看懂,而且论文的结构我感觉怪怪的,用的符号也怪怪的(是我看太少了?
2024-01-03 17:50:51
1016
1
原创 PromptNER: Prompt Locating and Typing for Named Entity Recognition
问题目前将prompt方法应用在ner中主要有两种方法:对枚举的span类型进行预测,或者通过构建特殊的prompt来对实体进行定位。但作者认为这些方法存在以下问题:1)时间开销和计算成本较高;2)需要精确的设计模板,难以在实际场景中应用。IDEA因此作者提出了一种双插槽的prompt模板来分别进行实体定位和分类,模型可以同时处理多个prompt,通过对每个prompt中的插槽进行预测来提取所有的实体。如下图所示,(a)表示根据实体类别构造prompt的方法;
2023-12-21 20:32:25
1989
1
原创 Nested Named Entity Recognition with Span-level Graphs
问题基于span的方法虽然在解决嵌套实体上存在巨大潜力,但存在以下问题:1)难以充分利用span的丰富语义;2)重叠较多的正负样本会降低模型的性能;3)训练集中的嵌套实体,基本上不会存在于测试集中,即模型需要有较强的泛化能力;IDEA因此作者通过利用基于检索的span图来改进span表征,根据n-gram特征连接训练集中的span与实体。讲得很复杂,模型也很复杂,但是效果不怎么样。消融实验最多只有0.5个点的差距,不好评价。而且作者为什么要跟SpERT这个模型做对比?s_%7Bij%7D。
2023-12-01 12:32:40
290
原创 kNN-NER: Named Entity Recognition with Nearest Neighbor Search
受到增强式检索方法的启发,作者提出了kNN-NER,通过检索训练集中k个邻居的标签分布来提高模型命名实体识别分类的准确性。该框架能够通过充分利用训练信息来解决样本类别不平衡问题。本文提出的框架是在标签分类上进行处理,整体思想很简单,在训练集中选取相似词的标签情况来调整结果,怎么感觉有点作弊一样?作者也提到,能提升模型的性能是因为“开卷考试比闭卷要简单”!而且通过实验可以看到作者选取的K并不小,也意味着计算量大的问题。
2023-11-30 19:29:36
220
原创 Propose-and-Refine: A Two-Stage Set Prediction Network forNested Named Entity Recognition
问题作者认为基于span的模型存在以下问题:1)忽略了span和其他实体短语之间的关系,span的表征往往只有内部的信息,看不见全局的信息,就会导致一些实体被分类错误。(不是很站得住脚哈 因为一般基于span的方法都会加入一些其他信息 比如句子的cls 或者span前后的一些token信息);2)基于span的模型由于存在最长枚举长度的限制,在处理长实体上存在限制。IDEA因此,作者提出了一个用于嵌套实体的两阶段集合预测网络Propose-and-Refine Network(PnRNet),在。
2023-11-11 14:34:30
149
原创 Decomposed Meta-Learning for Few-Shot Named Entity Recognition
问题目前基于span的跨度量学习(metric learning)的方法存在一些问题:1)由于是通过枚举来生成span,因此在解码的时候需要额外处理重叠的span;2)non-entites类别的原型通常都是噪声;3)跨域时,最有用的信息就是当前领域有限的样本,之前的方法只将这些样本用于分类的相似性计算。IDEA作者提出分解元学习(decomposed meta-learning)的方法来解决Few-shot ner任务(实体的边界检测和实体的分类)。
2023-10-26 20:08:54
373
原创 An Embarrassingly Easy but Strong Baseline for Nested Named Entity Recognition
问题基于span来解决嵌套ner任务的范式,大多都是先对span进行枚举,然后对每个span进行分类,实际就是得到一个分数矩阵,矩阵中每个元素表示一个span(比如矩阵中的n行m列,对应着span(token_n, token_m))。作者认为这种方法忽略了span与sapn之间的空间信息。IDEA在矩阵中,每个span与其周围的span在原句中都是比较接近的,存在一定的空间语义信息。因此作者提出使用CNN来对span之间的空间信息进行建模。
2023-10-20 14:15:19
410
2
原创 SpanProto: A Two-stage Span-based Prototypical Network forFew-shot Named Entity Recognition
问题Few-shot ner之前的方法都是基于对token进行分类,忽略了实体边界的信息,同时大量的负样本(non-entity)也会影响模型的性能。IDEA作者提出了一个span-based的two-stage原型网络(SpanProto)来解决Few-shot ner问题;在span提取阶段,将序列tag转化为一个全局的边界矩阵,使得模型能够注意到准确的边界信息。在分类阶段,对每个实体类别计算原型(prototype)embedding,并利用原型学习在语义空间中调整span的表征。
2023-10-14 15:41:37
193
原创 A novel feature integration and entity boundary detection for namedentity recognition in cybersecur
网络安全领域的威胁情报数据大多是非结构化的多源异构文本,难以在短时间内理解。利用知识图谱(KG)能够自动实时的对情报进行分析,其中NER能够识别与网络攻击相关的实体,是KG的关键技术之一。作者认为虽然依存树能够捕获远距离的结构化信息来丰富语义表征,但目前对于这种结构化特征的利用大多都是进行线性堆叠,没有在不同网络之间进行交互;另外,现有的模型对网络安全中复杂实体的边界不敏感。模型的整体结构如下图所示,首先获得word的embedding,使用多个GAT模块充分的在word之间进行交互;
2023-10-12 21:24:45
92
原创 SEE-Few: Seed, Expand and Entail for Few-shot Named Entity Recognition
目前few-shot NER方法侧重于使用目标领域的其他数据集进行充分训练后,迁移到同领域下目标数据集,但当目标领域中没有可用数据时,这种方法就会失效。因此作者提出了一个新型的多任务学习框架SEE-Few(seedexpandentail),用于解决源域没有数据的情况。其中seed和expand模块负责提供准确的spans给entail模块,entail模块将sapn分类任务视为文本蕴含任务对spans进行分类。
2023-10-09 16:15:19
732
原创 Extract-Select: A Span Selection Framework for Nested Named EntityRecognition with Generative Adver
基于span的方法是将NER看作是一个two-stage任务——span的提取和分类,虽然能够很好的解决嵌套实体的问题,但是该方法存在以下问题:1)误差传递;2)长实体识别困难;3)需要大规模标注数据集。因此作者提出Extract-Select的方法,使用了一种span selection 框架,引入了生成对抗训练,来解决以上问题,能够将不同类别的实体分别进行提取,从而避免误差传递。
2023-09-27 21:19:48
140
原创 Deep Span Representations for Named Entity Recognition
问题作者认为,一个好的span表征对于NER任务是非常重要的,而之前的工作都是将第一个或最后一个的表征简单的进行组合后,没有进行充分的交互就送入到实体分类器中进行分类,不利于长实体的识别,并且对于嵌套实体中共享token的情况下,会导致产生的span是相似的。IDEA作者提出了DSpERT模型,该模型包括了一个transformer和一个span transformer(用于span 表征和token表征之间的交互),来获取span的深层表征。
2023-09-26 10:22:18
315
原创 A Span-based Multi-Modal Attention Network for joint entity-relationextraction
作者认为当前基于span的关系提取方法都太关注于span内部的语义,忽略了span与span之间以及span与其他模态之间(比如tokens和labels)的交互。因此作者提出了SMAN结构,该结构使用了cloze mechanism(完型机制)来同时提取上下文和span位置的信息,并在关系提取阶段对span和标签进行建模。
2023-09-21 11:11:49
186
3
原创 对称二叉树(Leetcode 101&&572)
使用层序遍历,遍历当前层的节点时,如该节点的左(右)孩子为空,在list中添加null,否则加入左(右)孩子的值。每遍历完一层则对当前list进行判断,这里判断我用了一个很笨的方法,前面记录下一层节点值时就设置了两个list,其中一个用来翻转,然后判断这两个list是否相等来判断数是否为对称树。去看了解析,有两种方法:递归法、使用双端队列进行迭代。
2023-09-05 20:29:44
415
原创 二叉树的层序遍历&&翻转二叉树
使用队列来进行遍历,当前队列保存的是当前层的所有节点,依次取出队列顶端的节点,将该节点的左右子节点加入到队列尾端。将翻转二叉树划分为翻转每个节点的子问题,对每个节点,都使用一个temp节点来辅助其左右节点进行交换。
2023-09-04 20:05:21
81
原创 Span-based Named Entity Recognitionby Generating and Compressing Information
对于information bottleneck (IB) principle信息瓶颈原理,要么使用生成模型,要么使用信息压缩模型来提高在目标任务上的性能,因此作者将这两种模型进行结合来提高模型在NER任务上的表现。对于其中一种IB模型VAE(其实不太懂这个是啥?),将span重构和同义词生成这两个部分整合到一个span-based的NER模型中,用来更新span representation。对于另一种IB模型VIB。
2023-07-26 19:43:20
375
原创 S-NER: A Concise and Efficient Span-Based Model for NamedEntity Recognition
NER中的序列标注模型使用条件随机场(CRF)来获取标签之间的依赖性,存在误差传播的问题,即错误的分类标签会导致错误的标签依赖。因此作者提出了S-NER,一个基于span的NER模型,并提出随机负样本的方法来代替传统span-based模型枚举span进行计算,提高模型的效率。这篇论文感觉创新点只在随机抽取负样本来训练模型,作者提到该模型不像序列标注模型那样,会受到前面序列中错误分类所带来的词性错误依赖性, 但是这是所有基于span的模型都有的优势。
2023-07-25 16:33:23
379
原创 逆波兰表达式&&滑动窗口最大值(LeetCode 150&&239)
使用Character.isDigit()判断是否为数字,结果这个只能判断正数,负数就会报错!后面使用正则表达,想着匹配+-*/四个运算符,但是不会,老是报错,太多特殊字符了!中使用单调队列进行维护当前最大值。主要是实现寻找滑动窗口中的最大值,
2023-07-21 10:56:44
66
原创 有效的括号&&删除字符串中所有相邻重复项(LeetCode20&&1047)
跟上面那个题很相似,依旧使用栈来解决。遍历字符串,如果栈顶元素与当前需要入栈的元素相等,即存在两个相邻重复项,则将栈顶pop,即删除这个重复项。如果不相等,则将该元素压入栈。最后对栈中的元素进行逆序输出即可。使用一个栈来保存这些括号,当栈顶元素与下一个需要加入栈的元素能够组成一对括号时,则出栈,否则入栈。最后判断栈是否为空就行。
2023-07-18 20:39:54
112
原创 Fusing Heterogeneous Factors with Triaffine Mechanismfor Nested Named Entity Recognition
使用一个预训练好的模型加上一些简单的结构就能达到比较好的结果,但作者认为如果对一些相关特征进行明确的建模(比如:inside tokens、边界、标签和related span)有利于复杂嵌套的span表征和分类。虽然这些因素在之前的工作中可能被研究过,但目前并没有一个统一的结构来融合所有的因素。并且传统的加法、乘法注意力和biaffine transformation不能同时与多个因素进行交互。因此作者提出triaffine机制。
2023-07-18 17:56:39
271
原创 用栈实现队列&&用队列实现栈(LeetCode 232&&225)
使用两个栈,输入一个栈,输出一个栈,输出栈中存放的是输入栈中pop的每个元素。输出栈用于实现队列的pop和peek方法,输入栈用于队列的push方法。如两者中元素都为空时,则表示队列为空。每次保证新加入的数据在队列的第一个位置即可保持与栈一致的顺序(这里有点点巧妙 可用看。
2023-07-17 20:56:38
374
原创 左旋转字符串&&字符串中第一个匹配下标&&重复子字符串(剑指58&&LeetCode 28&&459)
最开始想通过字符出现次数来进行判断,但该逻辑会出现问题:比如 ababba 应该返回false 而该逻辑会返回true。看了题解,也有其他思路:先翻转前n个字符、再翻转后length()-n个字符,最后再将整个字符进行翻转。最开始想到的就是使用字符串的substring方法,进行重新拼接。有三种思路:1)暴力;2)利用substring暴力;
2023-07-17 10:09:07
283
原创 替换空格&&反转字符串中的单词(LeetCode 剑指offer05 && 151)
对字符串按空格进行分割,逆序遍历得到的字符串数组,将不为空格的(由于存在连续空格,按空格分割会保留一个空格)字符串添加到新字符串中,添加完一个字符串就加入一个空格,最后跳出循环后删掉最后一个空格即可。不过看了题解有另一种解法,由于空格转化为%20,设计到原字符存储空间的增加,因此先计算出需要增加的空间后。遍历,使用新的字符串来接原字符串,如为空格,则加入%20,否则加入原字符串。
2023-07-13 21:51:54
232
原创 sodner 论文复现
找到自己设备对应的版本,然后复制命令安装即可。报错中有个网址,点进去寻找自己要用的轮子,论文中要求1.6.1的版本,下载以下文件后在对应虚拟环境中进行安装(也要cd到当前文件夹下再执行命令)。因此这里pytorch的环境是我单独安装的(也就是将torch安装好后,在requestments中删除torch==1.6.1,再执行上诉命令),具体的可以参考其他博客。,这里的解决方法是单独安装jsonnet,但是我又装不上,网上各种教程我都装不上,后面是装的jsonnet-binary,也是可以用的。
2023-07-12 15:24:45
247
原创 Unified Named Entity Recognition as Word-Word Relation Classification
flatoverlap和d。目前效果最好的模型主要是:span-based和seq2seq,但前者注重于边界的识别,后者可能存在exposure bias。作者对entity words之间的相邻关系进行建模,将NER定义为一个word-word之间的关系分类任务,一共定义三种关系NONE作者将NER问题视为词与词之间的关系, 这样就能灵活的解决discontinueNER的问题,最后在discontinue的数据集上表现更为明显。不过感觉作者构建的网格有点复杂的亚子(不能用其他方式简化一下吗?
2023-07-12 10:55:13
1335
2
原创 反转字符串(LeetCode 344)
创建一个新的空字符串s_new,每次向该字符串中加入k个字符,奇数次添加这k个字符的逆序,偶数次添加原序。最后剩余字符串不满足k个时,跳出循环,判断上次添加是奇数还是偶数,如果是偶数,则表示剩余字符串少于k个,逆序加入s_new,反之正序加入。反转字符串,可以理解为将第i个字符与len-i个字符进行交换,只需进行前半部分的交换即可反转整个字符串,数组需要注意下标的问题。
2023-07-08 16:54:09
383
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人