块分割,维特比算法小结

学习总结

在ER中,有一类算法依靠参考结构化数据库的模型实现,以便提高ER的速度。但是这类算法常常在运行中产生了大量重复计算,降低了效率。由此,通过介绍以下方法,来解决这个问题:

块分割

给定的字符串:

 X=x1,...xn;其中既有单词又有标点

子序列:

s1,...,sp;对X进行分割后,生成的包含一个或多个单词的字符串
sp=(tp,up,y);tp起始位置,up为结束位置,y为特征

特征集合:

Y=y1,..,yj;先后有序令y表示X中子序列的特征

例子:
x1x2x3表示一个人名;x5x6x7x8表示一个题目;
人名,题目用yj表示;
子序列s1=x1x2x3。
其中s1的起始位置用t1表示(这里t1=2),结束位置用u1=3表示。
并且
图片描述
最大不超过X的长度,最小不低于1.

图片描述

第二个子串的起始位置在第一个子串结束位置之后的第一个单词,也就是相邻子串之间没有空隙,是连续的。

图片描述
最后一个子串up结束的位置为X序列结束位置,第一个子串s1起始位置为X序列第一个单词。
注意up的下标p,对应子序列sp中的p,下标的计数p跟子串个数S相关,把X分成10个子串,那么P=10,且起始位置tp与结束位置up的下标是一致的,例s1(t1,u1),s2(t2,u2)

特征提取函数:
图片描述

y'表示前一个特征,y表示当前特征,X表示字符串,tj,uj同上描述。
特征提取函数集g1,...gv,每个一个特征函数(就是一种分割方法)都会有一个与其对应的权重wk。
通过使用维特比算法从这些特征函数中找到使得权重和最大的特征提取函数序列,换句话说,权重和最大表示了该特征提取函数序列对X进行了最优化分割。
这一过程是在训练中完成。接下来将介绍最优化分割。

最优化分割:
图片描述

s*表示在所有s1,...,sp中,得分最高的一个si。
由于每个特征提取函数g都会生成一个序列s1,...,sp,所以需要维特比算法找到一条路径,使得改路径上的每一个s都达到最大值。

图片描述表示可能的分割序列的集合,所谓分割序列,意思是由不同的特征提取函数生成不同的分割序列,s1:y---si:y

该算法将形成一条路径,该路径上每一个si:y都是整个Si:y集合中的最大值,用图片描述表示

图片描述

图片描述

y'表示前一个特征,其作用是概率传递,意思是,在计算完第一个特征值后,其值将影响下一个特征值的计算,以此类推,形成一条路径。若没有y',则退化成简单最大值计算问题。

  y1       y2     y3  . . .                   ym  s1       s1max  .   . . .                   s1  s2max    s2          .                      s2  s3       s3                .                s3  .         .               .                 .   .         .                 .               .  .         .     .   . . .  . .              .   si       si     .   . . .  . .   .   .   .  si  

i行m个列,每次计算从m个列中选取一个,计算到下一个列的距离(从第i行的m个节点中挑一个计算到i+1行m个节点的距离),m*m,一共计算i行, 其复杂度为O(IM2)
σ(1,y)表示在序列s2中,y1特征得到了最大值。依据公式(1),在对y2计算时,将选取s2作为起点,将其值传入下一步计算。也就是说y2的最大值受y1影响。
从m个分词中挑选一个分词,计算该分词到下一个分词的值(以前一个分词为起点,把下一个所有特征的分词都计算一遍)。

维特比算法

维特比算法是一个特殊但应用最广的动态规划算法,利用动态规划,可以解决任何一个图中的最短路径问题。其优点是利用动态规划降低复杂度。而维特比算法是针对一个特殊的图——篱笆网络的有向图(Lattice )的最短路径问题而提出的。 它之所以重要,是因为凡是使用隐含马尔可夫模型描述的问题都可以用它来解码。
假设整个篱笆有向图中每一列节点最多有m个(也就是图的宽度为D),并且图一共有N列,那么,每次计算至多计算m*m次(从i列的m个节点中挑一个计算到i+1列m个节点的距离)。至多计算N次。那么复杂度骤减为O(Nm2)m的平方,远远小于穷举O(mN)m的n次方。
马尔科夫链是对多参数条件概率计算的化简,假设某一点的条件概率只和其之前某点相关,与其他点无关。这样就形成了概率传递链。

为了比较算法的优劣,我们设计了一个时间下线,即在最好的情况下的时间消耗。用空间换时间是优化算法的一个常用的方法。存储大量中间生成组件,并重复利用,避免了重新生成部件的过程,减少了时间,但存储空间变大了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于URL编码

一、问题的由来 URL就是网址,只要上网,就一定会用到。 一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。比如,世界上有英文字母的网址 “http://www.abc.com”,但是没有希…

C语言ffmpeg合并多个视频,ffmpeg合并多个视频

/// ///遍历文件夹获取所有视频路径/// /// private void TraverseFolder(string path,stringfilepath){DirectoryInfo dInfo newDirectoryInfo(path);Dictionary dic new Dictionary();Dictionary dic2 new Dictionary();List list new List();//遍历该文件夹foreach (File…

android应用开发全程实录-实现甩动拨打和挂断电话

今天继续给大家带来《Android应用开发全程实录》中的章节,这部分是讲传感器中的一个实例。 通过上面的例子我们学会了如何获得某种类型的传感器,下面通过一个实例来学习如何使用某一个类型的传感器。我们以加速传感器为例,来实现这样一个功能…

static的应用以及静态与非静态的区别

先前看到一个技术大牛写了一个关于静态成员与非静态成员,静态方法和非静态方法的各自区别,觉得挺好的,在这里写一个小程序来说明这些区别。 package com.liaojianya.chapter5; /*** This program will demonstrate the use of static method.…

Python中抓网页的小陷阱

这边博客已经搬家到这里了。我的个人博客,风格我自己更喜欢,也可以完全控制。当然,会花一点钱,但是基本能承受。 欢迎各位来观光,博客园很棒,但是有一个自己能控制的网站也许会更好。另外,不能发…

C# 打印文件

http://support.microsoft.com/kb/322091转载于:https://www.cnblogs.com/xbgz/p/3431463.html

c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件

枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为x只 母鸡为y只 小鸡为z只 百元买百鸡问题分析 x y z 1005x 3y z 3 100 三重循环 voidmain intx…

装饰模式(Decorator pattern)

装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰…

恶补sql知识(一)

索引的定义 SQL Server的索引值是对数据库中一个或者多个列的值进行排序的结构。 索引几个特性: 1)索引可以提高数据的访问速度 只有在适当的位置建立索引,就能大幅度提高,实际上,您可以把索引理解为一种特殊目录。微软的SQL SERV…

php连接数据库输出的中文几个字就…

我们首先假设数据库中采用的编码为UTF-8 这时我们在PHP页面中应当首先添加 "Content-Type" content"text/html; charsetutf-8" />文件保存时的编码类型也必须是utf-8。 之后在数据库查询前添加 mysql_query("set names utf8");注:…

android开启服务器配置,Android基于XMPP开发(一)【openfire服务器配置】

OpenFireOpenFire 是采用Java开发的基于XMPP(Jabber)协议,开源实时协作(RTC)服务器。Smack 是用 Java编 写的XMPP客户端代码库,是 spark 的核心开源界总是有许多有趣的东东,这三个合起来就是一个完整的XMPP IM 实现。OpenFire ——服务器端Sp…

Python 生成器 迭代器

1.1 生成器通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素&#x…

寻路基本工具类定义 AIDefine.cpp

1 #include "AIDefine.h" 2 3 PointI AI_FindHelpPoint[8] {PointI(-1,0),PointI(0,-1),PointI(1,0),PointI(0,1),PointI(-1,-1),PointI(1,-1),PointI(1,1),PointI(-1,1)}; 转载于:https://www.cnblogs.com/liusijian/p/3438542.html

android相对布局代码,Android基础_3 Activity相对布局(示例代码)

相对布局要比前面讲的线性布局和表格布局要灵活一些,所以平常用得也是比较多的。相对布局控件的位置是与其周围控件的位置相关的,从名字可以看出来,这些位置都是相对的,确定出了其中一个控件的位置就可以确定另一个控件的位置了。…

WSDL文件生成WEB service server端C#程序

一般一个已经实现功能的WEB Server会发布自己的WSDL文件,供客户端生成代理类。 但有时是先有的server与client交互的接口定义(WSDL)文件,然后由server和client端分别写程序,一个提供web服务,一个使用web服…

php二维数组排序 按照指定的key 对数组进行排序

2019独角兽企业重金招聘Python工程师标准>>> /*** desc arraySort php二维数组排序 按照指定的key 对数组进行排序* param array $arr 将要排序的数组* param string $keys 指定排序的key* param string $type 排序类型 asc | desc* return array*/ function arrayS…

剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列

剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 输入:每个测试案例包…

13个代码注释的小技巧

13个代码注释的小技巧 这篇文章是由Jos M. Aguilar在他卓越的博客中以西班牙语的形式首发,其后Timm Martin在获得Aguilar先生的授权下,对该文章进行翻译、修改,并且在DevTopics上发布。 以下13个小技巧可以使得你的代码在长时间内依然能够保…

android webview onconsolemessage,Android WebView一些特殊的使用

在Android5.0之前,webView默认是允许加载混合网络协议内容的;在5.0以上,默认不允许加载http和https的混合内容if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {webView.getSettings().setMixedContentMode(WebSettings.MIXED…

让您的Xcode键字如飞

2019独角兽企业重金招聘Python工程师标准>>> 作者:吴白(微博) 手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷。优秀的程序员总是这么一群人,他们不拘于现状,不固步自封,他们喜欢…