
算法
文章平均质量分 94
吕秀才
静下心来,每一步都踏踏实实。
展开
-
神经网络的参数更新(BP算法)
最近面临换工作的问题,想把以前的算法知识捡一捡,1、向前算法#mermaid-svg-VhyBzTddVryJDIKa .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-VhyBzTddVryJDIKa .label text{fill:#333}#mermaid-svg-VhyBzTddVryJDIKa .n原创 2020-12-04 20:29:04 · 6966 阅读 · 2 评论 -
crf与lstm+crf的简单对比
很早以前就使用crf做过命名实体识别,前一阵子又使用lstm+crf做了命名实体识别这个任务。现在有时间补一个笔记,记一下使用中的一些感受和想法。1)crf这个算法用来做命名实体识别比较容易达到不错的效果。使用2/3的人民日报免费的那两个月的数据,不加任何特征,只使用字的信息,F1也可以跑到0.85左右。结果见下图(使用CRF++5.4版本 ,结果在测试集上计算)。2)lsmt+crf这...原创 2019-10-25 13:23:38 · 2232 阅读 · 1 评论 -
无约束最优化问题
估计有些读者看到这个题目的时候会觉得很数学,和自然语言处理没什么关系,不过如果你听说过最大熵模型、条件随机场,并且知道它们在自然语言处理中被广泛应用,甚至你明白其核心的参数训练算法中有一种叫LBFGS,那么本文就是对这类用于解无约束优化算法的Quasi-Newton Method的初步介绍。 事实上,这个系列的作者是我的师兄jianzhu,他在中文分词、语言模型方面的研究很深入,如果大家对于转载 2012-12-12 17:08:56 · 28666 阅读 · 5 评论 -
基于条件随机场的命名实体抽取
本文地址:http://blog.youkuaiyun.com/nocml/article/details/8496534转载请注明出处先声明,本人是菜鸟,这篇文章中的做法也是我的菜鸟做法,如果有大牛看到还请指点一二。勿喷。首先下载CRF++,这个开源工具还是很好用的,当然内存释放可能存在一些问题。下载地址:http://crfpp.googlecode.com/svn/trunk/doc/i原创 2013-01-12 17:56:41 · 3906 阅读 · 23 评论 -
浅析求素数算法
注意: 如果没有特殊说明, 以下讨论的都是针对n为素数时的时间复杂度1. 根据概念判断:如果一个正整数只有两个因子, 1和p,则称p为素数.代码:bool isPrime(int n){ if(n < 2) return false; for(int i = 2; i < n; ++i) if(n%i == 0) return转载 2013-01-14 16:28:14 · 422 阅读 · 0 评论 -
搜索背后的奥秘——浅谈语义主题计算
摘要:两篇文档是否相关往往不只决定于字面上的词语重复,还取决于文字背后的语义关联。对语义关联的挖掘,可以让我们的搜索更加智能化。本文着重介绍了一个语义挖掘的利器:主题模型。主题模型是对文字隐含主题进行建模的方法。它克服了传统信息检索中文档相似度计算方法的缺点,并且能够在海量互联网数据中自动寻找出文字间的语义主题。近些年来各大互联网公司都开始了这方面的探索和尝试。就让我们看一下究竟吧。转载 2013-01-15 10:10:18 · 547 阅读 · 0 评论 -
主题模型-LDA浅析
上个月参加了在北京举办SIGKDD国际会议,在个性化推荐、社交网络、广告预测等各个领域的workshop上都提到LDA模型,感觉这个模型的应用挺广泛的,会后抽时间了解了一下LDA,做一下总结:(一)LDA作用 传统判断两个文档相似性的方法是通过查看两个文档共同出现的单词的多少,如TF-IDF等,这种方法没有考虑到文字背后的语义关联,可能在两个文档共同出现的单词很少转载 2013-01-15 10:15:04 · 641 阅读 · 0 评论 -
拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
转载须注明出处:http://www.codelast.com/ 在最优化领域,有几个你绝对不能忽略的关键词:拟牛顿、DFP、BFGS。名字很怪,但是非常著名。下面会依次地说明它们分别“是什么”,“有什么用” 以及 “怎么来的”。但是在进入正文之前,还是要先提到一个概念上的区别,否则将影响大家的理解:其实DFP算法、BFGS算法都属于拟牛顿法,即,DFP、BFGS都分别是一转载 2012-12-12 15:24:29 · 4952 阅读 · 2 评论 -
编程之美2.5 寻找最大的K个数
/********************问题描述************************有若干个无序的数(假设数目为N),如何选择其中最大的K个数*****************************************************/#include#include#includeusing namespace std;/*************转载 2013-03-18 15:22:22 · 595 阅读 · 0 评论 -
归并排序
#include #include //将有序的X[s..u]和X[u+1..v]归并为有序的Z[s..v]void merge(int X[], int Z[], int s, int u, int v){ int i, j, q; i = s; j = u + 1; q = s; while( i <= u && j<= v ) {转载 2013-03-19 16:20:45 · 628 阅读 · 0 评论 -
TraClus轨迹聚类算法原理及java版实现
前一阵子我们部门接到了业务那边的一个需求。想通过用户的wifi数据计算出商场内用户最喜爱走的线路。其实说白了就是用户轨迹聚类。根据业务的需求,我们最终采用了traClus聚类算法。traClus算法相比于其它的轨迹聚类算法的一大不同点是,该算法先把一个用户的轨迹分成了若干线段,然后把基于所有用户的轨迹生成的线段放到一个集合中进行聚类。算法本身可以划分为三个部分,分别为:1、用户轨迹分段。...原创 2019-09-19 16:37:07 · 8541 阅读 · 42 评论 -
DAT的算法原理及实现
一、从Trie说起 DAT是Double Array Trie的缩写,说到DAT就必须先说一下trie是什么。Trie树是哈希树的一种,来自英文单词"Retrieval"的简写,可以建立有效的数据检索组织结构,trie中文叫做键树,也叫字典树,从名字就可以看出trie的实质是一个树。trie的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。基本性质:1...原创 2019-09-19 16:54:13 · 3277 阅读 · 0 评论 -
机器学习10大经典算法
1、C4.5C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: 1)用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足; 2)在树构造过程中进行剪枝; 3)能够完成对连续属性的离散化处理; 4)能够对不完整转载 2012-11-19 15:05:32 · 510 阅读 · 0 评论 -
WM多模式字符串匹配
using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace WMCSharp{ //++++++++++++++++++++++++++++++++原创 2012-08-23 18:05:17 · 687 阅读 · 0 评论 -
多模式字符串匹配
//没经过大量测试,不知道是否有BUG #ifndef HASHLIST_H#define HASHLIST_Hstruct Node{ char *data; int Index; Node *next;};class HashList{public: HashList(); int Insert(char *str); int S原创 2011-11-04 13:53:43 · 468 阅读 · 0 评论 -
复合词分离(基于双数组树)
//前三个函数的Sunday算法int Search(wchar *str, wchar nextchar){ int length = wstrlen(str); while(length-- >0) { if(nextchar == str[length - 1]) return length -1; } return -1;}原创 2011-12-12 14:41:54 · 592 阅读 · 0 评论 -
复合词分离
//功能:isword()为判断是否为词库中的词的函数,通过递归判断一个词是否是复合词(词可以拆成若干独立的词)int CutCom(char *str){ wordCount++; // 全局变量,初始值为0 if(str == 0) return 1; if(strlen(str) == 0) return 1; if(strlen(str) int len原创 2011-12-09 16:46:24 · 417 阅读 · 0 评论 -
中科院分词系统概述
中科院分词系统概述这几天看完了中科院分词程序的代码,现在来做一个概述,并对一些关键的数据结构作出解释〇、总体流程考虑输入的一句话,sSentence="张华平欢迎您"总体流程:一、分词 "张/华/平/欢迎/您"二、posTagging "张/q 华/j 平/j 欢迎/v 您/r"三、NE识别:人名识别,音译名识别,地名识别 "张/q 华/j 平/j 欢迎/v 您/r转载 2011-12-13 13:49:13 · 1642 阅读 · 0 评论 -
VSM
// VSM_opp.cpp////////////////////////////////////////////////////////////////////////#include #include #include #include #include #include using namespace std;//定义常量const int DI转载 2012-01-13 17:27:41 · 1061 阅读 · 0 评论 -
隐马尔可夫模型中的Viterbi算法
这篇文章简单描述一下Viterbi算法——一年之前我听过它的名字,直到两周之前才花了一点时间研究了个皮毛,在这里做个简单检讨。先用一句话来简单描述一下:给出一个观测序列o1,o2,o3 …,我们希望找到观测序列背后的隐藏状态序列s1, s2, s3, …;Viterbi以它的发明者名字命名,正是这样一种由动态规划的方法来寻找出现概率最大的隐藏状态序列(被称为Viterbi路径)的算法。这里需要转载 2012-02-01 10:18:21 · 709 阅读 · 0 评论 -
KMP
#include using namespace std; int n, m; void getNext(int next[],char src[],char des[]) { int i, j; i = 0; j = -1; n = strlen( src ); m = strlen( des ); n转载 2012-02-02 13:59:43 · 344 阅读 · 0 评论 -
Sunday
#include using namespace std;int cnt = 0;int sunday() {char src[]="jfkdsahdiojdaigfgthlipjgffg";char des[]="gffg";int next[26];int i, j, pos, sum;int len_s = strlen( src );int le转载 2012-02-02 13:09:03 · 427 阅读 · 0 评论 -
判断回文
bool IsSymmetry(const char* p){assert(p != NULL);const char* q = p;int len = 0;while(*q++!='\0'){len++;} bool bSign = true;q = p+len-1;if (0 {for (int i = 0;i {if(*p++转载 2012-02-03 13:57:29 · 376 阅读 · 0 评论 -
WM算法--多模式匹配
WM算法详解WM算法采用字符块技术,增大了主串和模式串不匹配的可能性,从而增加了直接跳跃的机会。使用散列表选择模式串集合中的一个子集与当前文本进行完全匹配。使用前缀表进一步过滤不匹配的模式串,使算法获得了较高的运行效率。WM算法首先对模式串集合进行预处理。预处理阶段将建立3个表格:SHIFT表,HASH表和PREFIX表。SHIFT表用于在扫描文本串的时候,根据读入字符串决定可以跳过的字符转载 2011-10-28 09:42:46 · 2828 阅读 · 1 评论