日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

维特比算法 python_维特比算法实现分词

發布時間:2023/12/20 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 维特比算法 python_维特比算法实现分词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

維特比算法原理可以參考以下文章,講解的非常詳細,那么接下來將講解維特比算法如何應用到分詞算法中,并如何用python代碼實現。如何通俗地講解 viterbi 算法??www.zhihu.com

一、過程分析

句子:經常有意見分歧

詞典:「“經常”,“經”,“有”,“有意見”,“意見”,“分歧”,“見”,“意”,“見分歧”,“分”」

概率:「0.1,0.05,0.1,0.1,0.2,0.2,0.05,0.05,0.05,0.1」

-log(x):「2.3,3,2.3,2.3,1.6,1.6,3,3,3,2.3」

解決方案:

有的字在列表中沒有概率值,那么我們就賦予一個很小很小的概率,比如

那么取-log之后呢是一個很大的數,我們暫且假設為20。

首先構造有向圖:根據詞典和-log(x)畫出有向圖

圖中的每條路徑都可以成為一個分詞結果,那么哪個是最優路徑呢?

比較 分詞結果 經常,有,意見,分歧 和 經常,有意見,分歧誰更優

就是比較P(經常,有,意見,分歧)和 P(經常,有意見,分歧)的大小,我們選擇概率值大的分詞結果為最優分詞結果。

對概率值取-log是因為概率值本來就很小,如果相乘的話會下溢出,所以取了一個log,負數是因為算法中解決最小值問題更為方便,所以取負號:-logP(經常,有,意見,分歧)和 -logP(經常,有意見,分歧)那么就選擇結果值最小的為最優分詞結果

-logP(經常,有,意見,分歧)= -(logP(經常) + logP(有) + logP(意見) + logP(分歧))

那么就轉化為一個數值相加的問題了,就是路徑上值之和最小的路徑為最優路徑。

那么轉化為尋找最短路徑問題,有很多算法可以解決這個問題,那么在這個地方我們用維特比算法可以很方便的計算出來。

我們計算從1到8的最短路徑,那么首先假定一個函數:

f(8): 從節點1到8的最短路徑的值

f(7): 從節點1到7的最短路徑的值

往下依次相同的定義

f(8) = f(7) + 20

= f(6) + 1.6

= f(5) + 3

以上3個路徑中選擇一個最小的作為從1到8的最優路徑

f(7)= f(6) + 2.3

f(6) = f(5) + 2

= f(4)+1.6

= f(3) + 2.3

從上面3個路徑中選擇最小的作為從1到6的最優路徑

如果用遞歸算法計算的話,有的節點會重復計算很多次,所以可以用動態規劃算法來實現。

我們維護兩個個數組:

一個數組中每個節點里面存放從節點1到當前節點的最短路徑值

另一個數組中每個節點存放到當前節點的最短路徑值的直接前驅節點

由圖可以找到從1到8的最短路徑:

到達8的最短路徑是從6過來的

到達6的最短路徑是從3過來的

到達3的最短路徑是從1過來的

節點:1,3,6,8

所以最終的分詞結果是:[經常,有意見,分歧]

二、python代碼實現

總結

以上是生活随笔為你收集整理的维特比算法 python_维特比算法实现分词的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。