摘要:隐马尔可夫模型viterbi算法 viterbi算法要解决的问题是:在已知a、b、y的情况下,求可能性最大的x。注意到马尔可夫的性质和一般的动态规划问题中的性质很像,所以这里可以用动态规划来求可能性最大的x: P(t, x)表示t时刻、状态为x得到y的概率,那么: P(t+1, xj) = max{P(t, xi)× aij× bj}其中:aij为状态转移概率;bj为输出概率;注:在DP的过程中把初始值也带上,完成后找到最大的那个即可。基于统计的中文分词 简单的中文分词:正向最大匹配、逆向最大匹配、双向最大匹配、最小词数等简单的匹配规则在大部分情况下能工作的很好,但是在遇到 阅读全文
forward
2013-03-05 21:38 by ggzwtj, 248 阅读, 0 推荐, 收藏, 编辑
摘要:隐马尔可夫模型forward算法 forward要解决的问题是:在已知x、a、b的情况下求一个给定的y序列的概率P。那么forward计算的过程如下:其中:绿色:初始各个状态的概率;红色:状态转移过程中的概率关系;蓝色:输出概率;这个过程还是很暴力的,本来看到红色的部分以为可以用倍增来优化这个过程,显然是自己2了。END 阅读全文
马尔可夫模型
2013-03-05 18:58 by ggzwtj, 858 阅读, 0 推荐, 收藏, 编辑
摘要:马尔可夫性质 马尔可夫性质是概率论中的一个概念:当一个随机过程在给定现在状态及所有的过去状态的情况下,其未来的状态的条件概率分布依赖于当前状态,那么这个随机的过程就具有马尔可夫性质。数学的表示形式:X(t), t > 0是一个随机过程,那么:P[X(t + h) = y | X(s) = x(s), s ≤ t] = P[X(t + h) = y | X(t) = x(t)],h > 0其中:s:过去的时间;t:当前的时间;t + h:未来的时间;马尔可夫链马尔可夫链是满足:马尔可夫性质。从t时刻到t + h时刻的状态与t的值无关,一个马尔可夫链模型可表示为(S,P,Q),其中各元 阅读全文
锁
2013-02-28 16:30 by ggzwtj, 307 阅读, 0 推荐, 收藏, 编辑
摘要:设计良好的锁应该具有的性质:互斥:这个是必须的,否则无法保证操作的正确性。无死锁:有多个线程tryAcquire锁时,保证其中一些会成功。无饥饿:某一个线程不停tryAcquire锁时,总会成功。Lock1: 1 class Lock1: public Lock { 2 private: 3 volatile bool flag[2]; 4 public: 5 void acquire() { 6 int other_threadid = 1 - self_threadid; 7 flag[self_threadid] = true; 8 ... 阅读全文
sun.misc.Unsafe
2013-02-27 21:46 by ggzwtj, 2439 阅读, 2 推荐, 收藏, 编辑
摘要:Java不能直接访问操作系统底层,而是通过本地方法来访问,Unsafe提供了硬件级别的原子操作,提供了以下功能:分配、释放内存操作内存主要依靠下面三个方法:allocateMemory:分配内存;reallocateMemory:扩充内存;freeMemory:释放内存;操作对象的字段 Java对象中字段的定位可以通过staticFieldOffset实现,而读取具体便宜位置的字段的值可以使用getLong(根据不同类型选择不同的函数)来完成,可以使用putLong(根据不同的类型选择不同的函数)来设置值,可以使用arrayBaseOffset(获取数组第一个元素的偏移地址)和arrayIn. 阅读全文
字符串相似度
2013-02-25 19:03 by ggzwtj, 6326 阅读, 8 推荐, 收藏, 编辑
摘要:余弦相似度计算公式为: P(A,B) = sqrt(A × B) / (|A| × |B|)设有两个字符串:ABCDEFGABCHIJK其中共有11个字符,为: A B C D E F G H I J K如果,不考虑他们之间的关联性以及顺序等隐私,那么可以讲这两个字符串转换成两个11维空间中的向量:{1、1、1、1、1、1、1、0、0、0、0}{1、1、1、0、0、0、0、1、1、1、1}那,计算他们之间的相似度为: P = sqrt(3) / (sqrt(7) × sqrt(7)) = 0.2474358297矩阵相似度给定两个长度相等的字符串,在移动的过程中比 阅读全文
Linux使用笔记
2013-02-01 14:07 by ggzwtj, 253 阅读, 0 推荐, 收藏, 编辑
摘要:SSH ssh是一种在不安全的网络上提供安全远程登录及其它安全网络服务的协议。这里的不安全可能的一种情况:本来想发给服务器的内容,结果有个坏人假扮了服务器,他接收到你的内容之后,再转发给真正的服务器。那么在这个过程中,坏人就可以做很多事情了。ssh由三部分组成:传输层协议:提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证(用户认证协议可以设计为在此协议之上)。用户认证协议:向服务器提供客户端用户鉴别功能。连接协议:将多个加密隧道分成逻辑通道,提供了交互式登录话路、远程命令执行、转发TCP/IP连接和转发X11连接。 ssh被设计成工作于自己的.. 阅读全文
Java多线程
2013-01-31 22:28 by ggzwtj, 399 阅读, 0 推荐, 收藏, 编辑
摘要:多线程看一段简单的代码:void func(){ // workA { // do something } // workB { // do something } } 其中workA和workB分别表示用来完成两个任务的代码块。在执行workA的时候使用goto(当然还有很多其他的方法)就可以跳转去执行workB的代码了,在执行一段时间之后可以跳回来。那么这段代码是不是有点像线程之间的切换?所以,在CPU看来,代码跟代码(指令跟指令)之间没有多大区别,我们把内容分给了各个任务,其实在CPU看起来都是一样的:执行指令寄存器位... 阅读全文
常用的一些方法
2013-01-31 15:28 by ggzwtj, 197 阅读, 0 推荐, 收藏, 编辑
摘要:输出浮点数的精度控制这里介绍三种方法,测试一下发现都会四舍五入,如果你不需要四舍五入,则可以减掉一个值就可以了,代码如下: public static void main(String[] args) { // TEST 1 double value = 23.1231290; System.out.println(String.format("%.5f", value)); // TEST 2 System.out.printf("%.5f\n", value); // TEST 3 DecimalFormat format = new Decimal 阅读全文