亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python基于隱馬爾可夫模型實現中文拼音輸入

2020-01-04 17:34:10
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python基于隱馬爾可夫模型實現中文拼音輸入的相關資料,需要的朋友可以參考下
 

在網上看到一篇關于隱馬爾科夫模型的介紹,覺得簡直不能再神奇,又在網上找到大神的一篇關于如何用隱馬爾可夫模型實現中文拼音輸入的博客,無奈大神沒給可以運行的代碼,只能純手動網上找到了結巴分詞的詞庫,根據此訓練得出隱馬爾科夫模型,用維特比算法實現了一個簡單的拼音輸入法。githuh地址:https://github.com/LiuRoy/Pinyin_Demo

原理簡介隱馬爾科夫模型

抄一段網上的定義:

隱馬爾可夫模型 (Hidden Markov Model) 是一種統計模型,用來描述一個含有隱含未知參數的馬爾可夫過程。其難點是從可觀察的參數中確定該過程的隱含參數,然后利用這些參數來作進一步的分析。

拼音輸入法中可觀察的參數就是拼音,隱含的參數就是對應的漢字。

viterbi算法

參考https://zh.wikipedia.org/wiki/維特比算法,思想是動態規劃,代碼比較簡單就不贅述。

代碼解釋

model定義

代碼見model/table.py文件,針對隱馬爾科夫的三個概率矩陣,分別設計了三個數據表存儲。這樣的好處很明顯,漢字的轉移概率矩陣是一個非常大的稀疏矩陣,直接文件存儲占用空間很大,并且加載的時候也只能一次性讀入內存,不僅內存占用高而且加載速度慢。此外數據庫的join操作非常方便viterbi算法中的概率計算。

數據表定義如下:

class Transition(BaseModel):  __tablename__ = 'transition'  id = Column(Integer, primary_key=True)  previous = Column(String(1), nullable=False)  behind = Column(String(1), nullable=False)  probability = Column(Float, nullable=False)class Emission(BaseModel):  __tablename__ = 'emission'  id = Column(Integer, primary_key=True)  character = Column(String(1), nullable=False)  pinyin = Column(String(7), nullable=False)  probability = Column(Float, nullable=False)class Starting(BaseModel):  __tablename__ = 'starting'  id = Column(Integer, primary_key=True)  character = Column(String(1), nullable=False)  probability = Column(Float, nullable=False)

 

模型生成

代碼見train/main.py文件,里面的initstarting,initemission,init_transition分別對應于生成隱馬爾科夫模型中的初始概率矩陣,發射概率矩陣,轉移概率矩陣,并把生成的結果寫入sqlite文件中。訓練用到的數據集是結巴分詞里的詞庫,因為沒有訓練長句子,最后運行的結果也證明只能適用于短句輸入。

初始概率矩陣

統計初始化概率矩陣,就是找出所有出現在詞首的漢字,并統計它們出現在詞首的次數,最后根據上述數據算出這些漢字出現在詞首的概率,沒統計的漢字就認為出現在詞首的概率是0,不寫入數據庫。有一點注意的是為了防止概率計算的時候因為越算越小導致計算機無法比較,所有的概率都進行了自然對數運算。統計的結果如下:

python,隱馬爾可夫,中文拼音

轉移概率矩陣

此處用到的是最簡單的一階隱馬爾科夫模型,即認為在一個句子里,每個漢字的出現只和它前面的的一個漢字有關,雖然簡單粗暴,但已經可以滿足大部分情況。統計的過程就是找出字典中每個漢字后面出現的漢字集合,并統計概率。因為這個概率矩陣非常的大,逐條數據寫入數據庫過慢,后續可以優化為批量寫入,提高訓練效率。結果如下:

python,隱馬爾可夫,中文拼音

上圖展示的一后面出現概率最高的十個字,也挺符合日常習慣。

發射概率矩陣

通俗點就是統計每個漢字對應的拼音以及在日常情況下的使用概率,已暴舉例,它有兩個讀音:bao和pu,難點就是找bao和pu出現的概率。此處統計用到了pypinyin模塊,把字典中的短語轉換為拼音后進行概率統計,但是某些地方讀音也不完全正確,最后運行的輸入法會出現和拼音不匹配的結果。統計結果如下:

python,隱馬爾可夫,中文拼音

viterbi實現

代碼建input_method/viterbi.py文件,此處會找到最多十個局部最優解,注意是十個局部最優解而不是十個全局最優解,但是這十個解中最優的那個是全局最優解,代碼如下:

def viterbi(pinyin_list):  """  viterbi算法實現輸入法  Aargs:    pinyin_list (list): 拼音列表  """  start_char = Emission.join_starting(pinyin_list[0])  V = {char: prob for char, prob in start_char}  for i in range(1, len(pinyin_list)):    pinyin = pinyin_list[i]    prob_map = {}    for phrase, prob in V.iteritems():      character = phrase[-1]      result = Transition.join_emission(pinyin, character)      if not result:        continue      state, new_prob = result      prob_map[phrase + state] = new_prob + prob    if prob_map:      V = prob_map    else:      return V  return V

結果展示

運行input_method/viterbi.py文件,簡單的展示一下運行結果:

python,隱馬爾可夫,中文拼音

問題統計:

統計字典生成轉移矩陣寫入數據庫的速度太慢,運行一次要將近十分鐘。發射概率矩陣數據不準確,總有一些漢字的拼音不匹配。訓練集太小,實現的輸入法不適用于長句子。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美丝袜第一区| 日韩视频免费在线观看| 欧美综合一区第一页| 国产精品久久视频| 久久久国产精品亚洲一区| 国产精品99久久久久久www| 欧美国产第一页| 精品呦交小u女在线| 国产69精品久久久久99| 91免费版网站入口| 成人免费观看49www在线观看| 国产精品扒开腿做爽爽爽的视频| 欧洲成人性视频| 国产一区二区三区在线看| 中文字幕免费精品一区高清| 国产精品美女主播在线观看纯欲| 亚洲91精品在线| 亚洲精品v天堂中文字幕| 97香蕉久久夜色精品国产| 91av在线免费观看| 亚洲区中文字幕| 亚洲专区在线视频| 亚洲a成v人在线观看| 日韩大片免费观看视频播放| 亚洲国产成人精品久久久国产成人一区| 欧美日韩黄色大片| 国模精品系列视频| 成人精品一区二区三区| 亚洲第一级黄色片| 最新亚洲国产精品| 精品亚洲一区二区| 国产精品美女主播| 7777kkkk成人观看| 日韩av在线网页| 成人福利免费观看| 中日韩美女免费视频网址在线观看| 日韩在线视频导航| 久久久久www| 美女撒尿一区二区三区| 亚洲福利视频在线| 亚洲石原莉奈一区二区在线观看| 欧美xxxx18性欧美| 97国产精品视频| 大荫蒂欧美视频另类xxxx| 成人福利在线视频| 久久99久久99精品中文字幕| 亚洲欧美国产精品久久久久久久| 亚洲国产精品成人精品| 国产成人精品视| 91社影院在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 韩国三级电影久久久久久| 久久久免费精品视频| 亚洲欧美国产精品久久久久久久| 国产日韩精品在线播放| 国产一区二区三区欧美| 亚洲男人第一网站| 日韩电影中文字幕在线观看| 不卡在线观看电视剧完整版| 国语自产精品视频在线看一大j8| 成人欧美一区二区三区在线| 日韩美女av在线免费观看| 欧美午夜片欧美片在线观看| 日韩视频免费大全中文字幕| 91极品女神在线| 91免费观看网站| 亚洲成av人片在线观看香蕉| 中文字幕免费精品一区| 51午夜精品视频| 色综合男人天堂| 91香蕉国产在线观看| 久久久中文字幕| 九九热精品在线| 日韩有码在线视频| 国产丝袜一区视频在线观看| 国产精品一区二区女厕厕| 国产一区二区黑人欧美xxxx| 97免费中文视频在线观看| 欧美与欧洲交xxxx免费观看| 日韩免费视频在线观看| 亚洲日韩中文字幕在线播放| 北条麻妃一区二区三区中文字幕| 精品久久久一区二区| 色午夜这里只有精品| 中文字幕亚洲激情| 欧美裸身视频免费观看| 午夜精品福利电影| 91精品国产91久久久久久久久| 久久天天躁夜夜躁狠狠躁2022| 成人免费视频在线观看超级碰| 亚洲电影第1页| www日韩中文字幕在线看| 色综合男人天堂| 一区二区三区四区视频| 国产日韩精品在线观看| 国产精品久久久久影院日本| zzjj国产精品一区二区| 亚洲最新av在线网站| 成人免费网站在线观看| 国产91成人video| 久久精品99久久久久久久久| 国产精品成人av性教育| 国产不卡av在线| 成人激情视频网| 色999日韩欧美国产| 亚洲欧美日韩国产中文| 欧美激情一区二区三级高清视频| 69视频在线播放| 亚洲精品电影在线| 国内精品小视频| 欧美性在线视频| 日韩亚洲精品视频| 97视频网站入口| 国产精品亚洲激情| 中文字幕欧美精品日韩中文字幕| 国产成人精品999| 91精品视频一区| 亚洲一二三在线| 国模精品一区二区三区色天香| 亚洲成人精品久久| 久久人人爽人人爽人人片亚洲| 韩国日本不卡在线| 成人激情视频网| 日韩欧美国产骚| 亚洲精品国产精品国自产观看浪潮| 欧美在线一级va免费观看| 国产精品免费一区豆花| 久久久久久国产精品美女| 亚洲精品国产精品国自产在线| 国产色综合天天综合网| 国产精品美女免费看| 久久久久久久电影一区| 国内精品视频一区| 色播久久人人爽人人爽人人片视av| 欧美一级视频一区二区| 日韩中文字幕视频在线观看| 韩国精品久久久999| 国产精品久久久久77777| 夜夜躁日日躁狠狠久久88av| 亚洲free性xxxx护士白浆| 国产日韩在线一区| 色久欧美在线视频观看| 欧美日韩综合视频网址| 中文字幕国产精品| 欧洲成人性视频| 中文字幕亚洲精品| 精品国产户外野外| 欧美成人精品xxx| 亚州成人av在线| 亚洲国产精品va在线看黑人动漫| 国模视频一区二区| 亚洲在线www| 欧美不卡视频一区发布| 国产欧美日韩免费| 97在线观看免费| 国产精品美女久久久免费| 精品亚洲国产视频| 亚洲精品美女在线观看| 欧美高清电影在线看| 在线亚洲男人天堂| 综合网日日天干夜夜久久| 欧美电影免费观看高清| 成人国产精品免费视频| 国产精品视频网|