生成語言模型

2021-08-19 21:14:41 字數 3207 閱讀 8767

這裡主要介紹我使用過的兩種根據文字生成語言模型的兩種方法

1.  通過**: sphinx 上傳檔案,生成對應的語言模型,需要注意的是檔案最好不要太大,**容易報504錯誤,貼下圖吧,傻瓜式的操作方式:

2. 使用srilm 訓練語言模型

1、從語料庫中生成n-gram計數檔案:

1

ngram-count -text train.txt -order 3 -write train.txt.count

-text指向輸入檔案

-order指向生成幾元的n-gram,即n

-write指向輸出檔案

2、從上一步生成的計數檔案中訓練語言模型:

1

ngram-count -read train.txt.count -order 3 -lm lm -interpolate -kndiscount

-read指向輸入檔案,為上一步的輸出檔案

-order與上同

-lm指向訓練好的語言模型輸出檔案

最後兩個引數為所採用的平滑方法,-interpolate為插值平滑,-kndiscount為 modified kneser-ney 打折法,這兩個是聯合使用的

3、利用上一步生成的語言模型計算測試集的困惑度:

1

ngram -ppl test.txt -order 3 -lm lm > result

-ppl為對測試集句子進行評分(logp(t),其中p(t)為所有句子的概率乘積)和計算測試集困惑度的引數

result為輸出結果檔案

其他引數同上。

如果想要每條句子單獨打分,則使用以下命令:

1

ngram -ppl test.txt -order 3 -lm lm -debug 1 > result

首先安裝tcl

安裝srilm

2、解壓到/home/user/srilm/

3、修改makefile檔案:

1

2

3

4

# srilm = /home/wm/srilm

srilm = /home/wm/srilm

#machine_type := $(shell $(srilm)/sbin/machine-type)

machine_type := i686-m64

4、修改srilm/common/makefile.i686-m64

找到:gawk = /usr/bin/awk

修改為:gawk = /usr/bin/gawk

5、srilm目錄下面執行:make world

6、繼續執行make test

7、新增環境變數:

1

export path=

"$path:/home/user/srilm/bin/i686-m64:/home/user/srilm/bin"

新增之後執行ngram-count還是找不到命令,解決方法:i686-m6目錄下建立新目錄test,建立鏈結,把命令鏈結到test下面

1、需要訓練好的語料資料

訓練的語料和訓練結果是相關的,假如語料是言情**那麼訓練的language model也是言情風格的。接下來要對語料進行分詞,英文不需要分詞,處理標點符號。

2、訓練

先從語料庫生成n-gram計數檔案

1

ngram-count -text test.pos -order 3 -write train.txt.count

生成的train.text.count第一列為n元詞,第二列為相應的頻率統計,結果如下:

3、接著從上一步的結果計數檔案中訓練語言模型

1

ngram-count -read train.txt.count -order 3 -lm lm -interpolate -kndiscount

看看結果,一元詞有14081個,二元詞有63891個,三元詞有6644個

以第乙個為例:-0.3054161 ! -0.4752966

-0.3054161 :log(概率),以10為底

-0.4752966 :log(回退權重),以10為底

4、利用上一步生成的語言模型計算測試集的困惑度:

1

ngram -ppl test.txt -order 3 -lm lm -debug 1 > result

ppl為對測試集句子進行評分(logp(t),其中p(t)為所有句子的概率乘積)和計算測試集困惑度的引數,結果如下:

0 zeroprobs, logprob= -61.72443 ppl= 58.01698 ppl1= 65.37691分別表示:

無0概率;logp(t)=-105980,ppl==90.6875, ppl1= 107.805,均為困惑度。

但公式稍有不同,如下:

ppl=10^/}; ppl1=10^/word}

其中sen和word分別代表句子和單詞數

第二種方法是copy過來的, 原位址是:srilm 訓練語言模型

好的語言模型可以得到更好的解碼結果!!!

用srilm生成語言模型

srilm的主要目標是支援語言模型的估計和評測。估計是從訓練資料 訓練集 中得到乙個模型,包括最大似然估計及相應的平滑演算法 而評測則是從測試集中計算其困惑度。其最基礎和最核心的模組是n gram模組,這也是最早實現的模組,包括兩個工 具 ngram count和ngram,相應的被用來估計語言模型...

AWR ASH和Statspack的生成語句

awr ash和statspack的生成語句 2010 08 24 14 03 statspack初始化方法 必須擁有dba許可權 oracle home rdbms admin spcreate.sql statspack刪除方法 oracle home rdbms admin spdrop.sq...

喬姆斯基生成語法 喬姆斯基的轉換生成語法理論

無論是分析哲學還是歐洲大陸哲學,都重視研究語言,這是當代西方哲學的乙個重要特徵,語言不能脫離世界,語言只有表現世界才有它正真的存在。當代美國語言大師喬姆斯基首創了轉換生成語法理論,正是這種轉換生成語法在語言中挑起了一場革命。它標誌著西方語言學的研究,尤其是美國的語言學界研究進入了乙個嶄新的時代,即喬...