基於統計語言模型的拼音輸入法

5,191 views
5,099 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,191
On SlideShare
0
From Embeds
0
Number of Embeds
3,898
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

基於統計語言模型的拼音輸入法

  1. 1. 基於統計語言模型的拼音輸入法<br />清華大學 計算機科學與技術系 02班 郭家寶<br />byvoid.kcp@gmail.com<br />
  2. 2. 拼音輸入法<br />拼音輸入法是最大衆化的輸入法,因為絕大多數用戶熟悉拼音,無須另外學習。<br />相較於五筆等形碼輸入法,其最大的劣勢就是重碼過多。例如拼音為yi的Unicode BMP內漢字有近四百個,即使是常用字也有接近四十個。<br />一直以來選字是制約拼音輸入法快速輸入的瓶頸。各種智能組詞組句算法應運而生。<br />
  3. 3. 拼音輸入法<br />智能解決重碼原理<br />基於系統句法分析的手段<br />系統句法分析是人工智能領域的前沿問題,尚未有較好的可以應用的算法。<br />中文是分析語,句法結構更難分析。<br />基於統計語言模型的手段<br />統計語言模型是一個概率模型,使得較優詞序列的概率值大於較差詞序列的概率值。<br />N元語法(n-gram)<br />
  4. 4. 統計語言模型<br />n-gram基本假設<br />齊次性假設:當前詞的條件概率與當前詞在詞序列中的位置無關。<br />有限歷史假設:當前詞的條件概率祗與前面的n-1個詞相關。<br />概率函數<br />
  5. 5. 統計語言模型<br />Unigram<br />在一個樣本總體中,詞w(i)出現了c(i)次,定義:<br />Bigram<br />詞w(i)和w(j)連續出現了c(i,j)次,定義:<br />
  6. 6. 拼音輸入法的實現<br />音節解析<br />fangan“方案”還是“反感”<br />fanan“發難”還是“翻案”<br />xingai“信概”還是“性愛”<br />計算能夠表示的所有音節<br />圖論模型<br />建立音節圖<br />
  7. 7. 音節解析<br />例如拼音串 xiantian<br />有效音節<br />xi, xia, xian, a, an, ti, tian<br />x i a n t i a n<br />0<br />1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />
  8. 8. 音節解析<br />x i a n t i a n<br />收縮以後<br />1<br />xi<br />an<br />0<br />1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />tian<br />xian<br />0<br />2<br />4<br />ti<br />an<br />3<br />
  9. 9. 1<br />希<br />安恬<br />按<br />西<br />現<br />天<br />詞彙解析<br />詞彙解析<br />在建立好的音節圖的基礎上,將每一條路徑解析為字詞,加入圖中。<br />0<br />2<br />4<br />西安<br />提案<br />1<br />xi<br />an<br />體<br />按<br />腺體<br />tian<br />xian<br />3<br />0<br />2<br />4<br />先天<br />ti<br />an<br />3<br />
  10. 10. 語言模型<br />我們要求的是組詞可能性最大的路徑,即路徑上相鄰邊所代表的單詞組合到一起的概率的乘積最大。<br />把圖中每條邊變成一個頂點,邊權為原圖中邊之間的概率,則祗需求一條乘積最大的路徑。<br />再將邊的權值取自然對數,即可轉換為求一條長度最大的路徑,可用動態規劃在O(N)的時間內解決。<br />
  11. 11. 語言模型<br />如下圖所示的轉換<br />先天<br />1<br />西安<br />提案<br />希<br />安恬<br />按<br />西<br />S<br />西<br />按<br />體<br />按<br />T<br />0<br />2<br />4<br />現<br />天<br />西安<br />提案<br />現<br />天<br />體<br />按<br />腺體<br />3<br />腺體<br />安恬<br />先天<br />
  12. 12. 語言模型<br />應用bigram語言模型,為每條邊邊賦權,求最長路徑即可。<br />前幾優解可能是:<br />先天<br />西安天<br />現提案<br />腺體胺<br />……<br />先天<br />西安<br />提案<br />S<br />西<br />按<br />體<br />按<br />T<br />現<br />天<br />腺體<br />安恬<br />
  13. 13. 其他細節<br />語言模型的訓練<br />open-gram<br />sunpinyin<br />數據平滑<br />可能會有概率為0的邊,即兩個詞的組合在統計語言模型中沒有出現,此時整個路徑求積則為0。<br />需要用到擬合等高級方法,簡單方法為將兩個詞的unigram值線性組合。<br />
  14. 14. 程序實現<br />使用C#語言,在Mono Develop環境下編碼,可用VS編譯,生成的代碼跨平臺。<br />支持Windows, Linux, Mac。<br />使用多線程技術,加速求解。<br />源碼以Apache License 2.0發佈。<br />
  15. 15. 界面演示<br />
  16. 16. 謝謝<br />2010.12.25<br />

×