塊分割,維特比算法小結

學習總結

在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.pswp.cn/news/261051.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/261051.shtml
英文地址,請注明出處:http://en.pswp.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工程師標準>>> 作者:吳白(微博) 手指在鍵盤上飛速跳躍,終端上的代碼也隨著飛舞,是的這確實很酷。優秀的程序員總是這么一群人,他們不拘于現狀,不固步自封,他們喜歡…