lmstats.h lmstats.cc
--------------------------------------
1、概述
--------------------------------------
這兩個檔案主要定義了語言模型中用於對句子,文字
和詞的統計分析的介面。
lmstats類
該類提供了如下函式
a) 建構函式
b) 析構函式
c) 基於詞的countsentence純虛函式
d) 基於詞索引的countsentence純虛函式
e) 基於句子countstring統計函式
f) 基於檔案的countfile統計函式
g) 讀檔案read純虛函式
h) 寫檔案write純虛函式
--------------------------------------
2、函式功能解釋
--------------------------------------
a) 建構函式
0 lmstats::lmstats(vocab &vocab)
1 : vocab(vocab), openvocab(true)
2 功能:建構函式,初始化成員變數值
細解:第1行通過成員初始化列表的方式,對成員變數vocab和openvocab初始化
第3-4行分別將addsentstart和addsentend成員初始化為true。
e) 基於句子countstring統計函式
0 unsigned int
1 lmstats::countstring(char *sentence)
2 else
13 }
細解:第3行在堆上分配了乙個金泰的字串指標buffer,用於儲存分析出的詞
第6行呼叫vocab物件的成員函式parsewords分析出sentence中的每乙個詞並將其
儲存到words中。(注:由於parsewords內部是通過呼叫strtok來分析句子的,
而strtok本身並不會分配記憶體,只是修改了句子中分隔符的內容,同時進行了指標
偏移操作,因此這裡不存在記憶體洩漏問題)
第8-10行判斷howmany是否達到了每一句詞的上限,如果達到了該上限,則返回0。
否則執行第11行。
第11行通過呼叫基於詞的countsentence函式更新相關詞的統計量。
f) 基於檔案的countfile統計函式
0 unsigned int
1 lmstats::countfile(file &file)
2 else
18 }
19 if (debug(debug_print_textstats))
22 return numwords;
23 }
細解:第6-18行迴圈處理檔案中每一句,並更新分析出的詞的相應統計量
第6行呼叫file物件的成員函式getline從檔案中讀出每一行。
第7行呼叫基於句子的countstring函式分析每一句中的詞,同時更新相應
詞的統計量,並儲存分析出的詞數。
第16行記錄當前檔案中的詞數。
第19-21行根據分析結果輸出當前檔案的狀態資訊,主要是perpelxity值。
--------------------------------------
知識點:
-------------------------------------- 基類
本類是乙個基類,宣告了一些純虛函式,這些純虛函式的實際實現由子
類來定義,同時定義了一些子類公用的函式。該方法很好地體現了物件導向
的程式設計思想。
lmstats基類中定義了vocab成員物件,該物件主要用於後面ngram統計時
的字串到索引的對映。
srilm 閱讀文件13
textstats.h textstats.cc 1 概述 這兩個檔案定義了乙個textstats類,該類主要用於計算句子集 的perplexity值。textstats類 該類提供了如下函式 a 建構函式 b 重置函式 c 疊加函式 d 過載的全域性輸出運算子 2 函式功能解釋 a 建構函式 0 ...
fedora chm 文件 閱讀
感冒了,疼痛的要命,沒法正常幹活,只能看看文件.沒辦法,裝乙個 1.yum 搜尋一下,看看fedora倉庫中有什麼是跟chm相關的 yum search chm 結果挺多,有幾項看著是 kchmviewer qt.x86 64 qt4 based chm viewer chm2pdf.noarch ...
閱讀英文文件
我對這個是沒什麼了解的,而且重要的是,決定採用乙個很新的技術,這意味著,使用者很少,文件不齊全。我了解的渠道就是官方文件,在此期間,我碰到了很多意想不到的問題,在此積累,希望能夠突破。英文單詞積累不足 猜詞能力弱 英語的理解力 想象力 弱 讀的不夠多 不僅如此,不能夠理解問題或bug後面隱藏的問題,...