1. 程式人生 > >語言模型訓練工具:SRILM的使用

語言模型訓練工具:SRILM的使用

一、小資料

假設有去除特殊符號的訓練文字trainfile.txt,以及測試文字testfile.txt,那麼訓練一個語言模型以及對其進行評測的步驟如下:

1:詞頻統計

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

      其中-order 3為3-gram,trainfile.count為統計詞頻的文字

2:模型訓練

      ngram-count -read trainfile.count -order 3 -lm trainfile.lm  -interpolate -kndiscount

      其中trainfile.lm為生成的語言模型,-interpolate和-kndiscount為插值與折回引數

3:測試(困惑度計算)

     ngram -ppl testfile.txt -order 3 -lm trainfile.lm -debug 2 > file.ppl

     其中testfile.txt為測試文字,-debug 2為對每一行進行困惑度計算,類似還有-debug 0 , -debug 1, -debug 3等,最後  將困惑度的結果輸出到file.ppl。

二、大資料(BigLM)

對於大文字的語言模型訓練不能使用上面的方法,主要思想是將文字切分,分別計算,然後合併。步驟如下:

1:切分資料

      split -l 10000 trainfile.txt filedir/

      即每10000行資料為一個新文字存到filedir目錄下。

2:對每個文字統計詞頻

      make-bath-counts filepath.txt 1 cat ./counts -order 3

      其中filepath.txt為切分檔案的全路徑,可以用命令實現:ls $(echo $PWD)/* > filepath.txt,將統計的詞頻結果存放在counts目錄下

3:合併counts文字並壓縮

      merge-batch-counts ./counts

      不解釋

4:訓練語言模型

      make-big-lm -read ../counts/*.ngrams.gz -lm ../split.lm -order 3

     用法同ngram-counts

5: 測評(計算困惑度)

    ngram -ppl filepath.txt -order 3 -lm split.lm -debug 2 > file.ppl

相關推薦

語言模型訓練工具SRILM的使用

一、小資料 假設有去除特殊符號的訓練文字trainfile.txt,以及測試文字testfile.txt,那麼訓練一個語言模型以及對其進行評測的步驟如下: 1:詞頻統計       ngram-count -text trainfile.txt -order 3 -writ

語言模型訓練工具SRILM

                     SRILM是著名的約翰霍普金斯夏季研討會(Johns Hopkins Summer Workshop)的產物,誕生於1995年,由SRI實驗室的Andreas Stolcke負責開發維護。  關於SRILM的安裝,我已經在前面關於moses平臺搭建的文章(參見:《Mo

Mac OSX下安裝配置SRILM語言模型訓練工具

1.安裝依賴軟體包 C/C++ compiler:編譯器gcc 3.4.3及以上版本; Tcl toolkit: 可嵌入式指令碼語言。用於指令碼程式設計和測試,這裡是為了SRILM的測試。此處需要7.3及以上版本,本例用的是tcl8.5(貌似是系統自帶的,安

語言模型訓練工具SRILM詳解

SRILM是著名的約翰霍普金斯夏季研討會(Johns Hopkins Summer Workshop)的產物,誕生於1995年,由SRI實驗室的Andreas Stolcke負責開發維護。關於SRILM的安裝,我已經在前面關於moses平臺搭建的文章(參見:《Moses相關

概率語言模型 Probabilistic Language Modeling (三) --- 訓練工具彙總

傳統演算法 1) BerkeleyLM 是用java寫的,號稱跟KenLM差不多,記憶體比srilm小 https://github.com/adampauls/berkeleylm 2)MITLM (The MIT Language Modeling toolkit) 引

SRILM使用之訓練無平滑語言模型

【語料準備】 訓練語料 wget http://idiom.ucsd.edu/~rlevy/teaching/2015winter/lign165/lectures/lecture13/toy-example/corpus.txt 測試語料 wg

SRILM語言模型格式解讀

highlight use ref ron 概率 出現 5.1 srilm tag 先看一下語言模型的輸出格式 [html] view plain copy \data\ ngram 1=64000 ngram 2=522530 ngram 3

C語言編程的兩個工具valgrind和core

mit 編程 崩潰 文件 gdb 程序 程序崩潰 檢查內存泄漏 ted 檢查內存泄漏: valgrind --leak-check=full ./ecox_rws_helper 來檢查內存泄漏 程序崩潰看錯誤: ulimit -c unlimited 然後執行程序,會在

Familia百度NLP開源的中文主題模型應用工具

ica 用戶 font 文本內容分析 adb 文本相似度 表示 2.0 wiki 參考:Familia的Github項目地址、百度NLP專欄介紹 Familia 開源項目包含文檔主題推斷工具、語義匹配計算工具以及基於工業級語料訓練的三種主題模型:Latent Dir

TensorFlow之tf.nn.dropout()防止模型訓練過程中的過擬合問題

AC -- 輸出 array 全連接 spa () 激活 odin 一:適用範圍:   tf.nn.dropout是TensorFlow裏面為了防止或減輕過擬合而使用的函數,它一般用在全連接層 二:原理:   dropout就是在不同的訓練過程中隨機扔掉一部分神經元。也就是

自然語言處理中的語言模型訓練方法

16px 預測 網絡語言 緩解 lang 大數 一中 標準 小數 自然語言處理中的語言模型預訓練方法 最近,在自然語言處理(NLP)領域中,使用語言模型預訓練方法在多項NLP任務上都獲得了不錯的提升,廣泛受到了各界的關註。就此,我將最近看的一些相關論文進行總結,選取了幾

DL之Attention-ED基於TF NMT利用帶有Attention的 ED模型訓練、測試(中英文平行語料庫)實現將英文翻譯為中文的LSTM翻譯模型過程全記錄

DL之Attention-ED:基於TF NMT利用帶有Attention的 ED模型訓練(中英文平行語料庫)實現將英文翻譯為中文的LSTM翻譯模型過程全記錄 測試輸出結果     模型監控 1、SCALARS clipp

語音識別系統語言模型訓練和聲學模型的改進

10個 ext 個數 靜音 介紹 準備 上下 詞匯表 數據 一、訓練語言模型 詞與詞之間存在著合乎句法與否的約束,語言模型就是用來表示這些約束的,它可以提供字與字之間的上下文信息和語義信息。N-gram模型,即對訓練音頻文件所對應的文本文件進行統計,提取不同字

為什麼使用神經網路訓練得到的語言模型不需要做資料平滑

我們都知道,在自然語言處理的語言模型裡面,最核心的就是計算得到一個句子的概率,為了得到這個概率,我們需要計算得到一系列的條件概率。這些條件概率就是整個語言模型的引數。 為了得到條件概率,我們可以有兩種不同的方法。 第一種就是使用統計概率方法,通過統計的方法得到不同的詞對的條件概率。這種方

實戰利用Python sklearn庫裡的邏輯迴歸模型訓練資料---建立模型

本案例主要是通過對不均衡的28萬組資料建立模型,分析預測欺詐使用者,採用sigmod函式作為損失函式,採用交叉驗證的方法 和l1正交法則,比對了不同懲罰函式下的模型的召回率,也通過預測值和實際值做出混淆矩陣更加直觀看到各種預測結果。 也比較了sigmod函式下的不同閾值下的模型預測的精度和召

【Language model】使用RNN LSTM訓練語言模型 寫出45°角仰望星空的文章

開篇 這篇文章主要是實戰內容,不涉及一些原理介紹,原理介紹為大家提供一些比較好的連結:   1. Understanding LSTM Networks : RNN與LSTM最為著名的文章,貼圖和內容都恰到好處,為研究人員提供很好的參考價值。 中文漢化版:(譯

Bert-一種基於深度雙向Transform的語言模型訓練策略

今天的部落格主要參考了論文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》。這篇paper是Google公司下幾個研究員發表的,而且在NLP領域引起了很大的轟動(在多個NLP任

自然語言(NLP)處理流程—IF-IDF統計—jieba分詞—Word2Vec模型訓練使用

開發環境 jupyter notebook 一、資料感知—訓練與測試資料 import numpy as np import pandas as pd # 建立輸出目錄 output_dir =

What-If 工具無需寫程式碼,即可測試機器學習模型

文 / Google AI 軟體工程師 James Wexler 來源 | TensorFlow 公眾號 構建有效的機器學習 (ML) 系統需要提出許多問題。僅僅訓練一個模型,然後放任不管,是遠遠不夠的。而優秀的開發者就像偵探一樣,總是不斷探索,試圖更好地理解自

NLP中語言模型訓練方法

最近,在自然語言處理(NLP)領域中,使用語言模型預訓練方法在多項NLP任務上都獲得了不錯的提升,廣泛受到了各界的關注。就此,我將最近看的一些相關論文進行總結,選取了幾個代表性模型(包括ELMo [1],OpenAI GPT [2]和BERT [3])和大家一起學習分享。