srilm 阅读文档13
2011-05-16 11:47
405 查看
TextStats.h TextStats.cc
文档作者:jianzhu
创立时间:08.09.11
--------------------------------------
1、概述
--------------------------------------
这两个文件定义了一个TextStats类,该类主要用于计算句子集
的perplexity值。
TextStats类
该类提供了如下函数
a) 构造函数
b) 重置函数
c) 叠加函数
d) 重载的全局输出运算符<<
--------------------------------------
2、函数功能解释
--------------------------------------
a) 构造函数
<src>
0 TextStats() : prob(0.0), zeroProbs(0),
1 numSentences(0), numWords(0), numOOVs(0)
2 {
3 }
</src>
功能:用于初始化刚创建的TextStats对象
细解:第0-1行通过成员初始化列表的方式初始化TextStats对象
的成员变量。
b) 重置函数
<src>
0 void reset()
1 {
2 prob = 0.0, zeroProbs = 0,
3 numSentences = numWords = numOOVs = 0;
4 }
</src>
功能:用于将当前对象的成员变量值置为0。
细解:第2-3行充分利用了','运算符和'='运算符的特性,将各成员
变量值置为0。
c) 叠加函数
<src>
0 TextStats &
1 TextStats::increment(const TextStats &stats)
2 {
3 numSentences += stats.numSentences;
4 numWords += stats.numWords;
5 numOOVs += stats.numOOVs;
6 prob += stats.prob;
7 zeroProbs += stats.zeroProbs;
8
9 return *this;
10 }
</src>
功能:将传入的TextStats对象的成员变量值叠加到当前对象中
细解:第3-7行将stats中的成员变量值叠加到当前对象中。
第8行返回当前对象的引用。
d) 重载的全局输出运算符<<
<src>
0 ostream &
1 operator<< (ostream &stream, const TextStats &stats)
2 {
3
4 stream << stats.numSentences << " sentences, "
5 << stats.numWords << " words, "
6 << stats.numOOVs << " OOVs" << endl;
7 if (stats.numWords + stats.numSentences > 0) {
8 stream << stats.zeroProbs << " zeroprobs, "
9 << "logprob= " << stats.prob;
10
11 int denom = stats.numWords - stats.numOOVs - stats.zeroProbs
12 + stats.numSentences;
13
14 if (denom > 0) {
15 stream << " ppl= " << LogPtoPPL(stats.prob / denom);
16 } else {
17 stream << " ppl= undefined";
18 }
19
20 denom -= stats.numSentences;
21
22 if (denom > 0) {
23 stream << " ppl1= " << LogPtoPPL(stats.prob / denom);
24 } else {
25 stream << " ppl1= undefined";
26 }
27
28 stream << endl;
29 }
30 return stream;
31 }
</src>
功能:用于对当前对象中的成员变量进行perplexity计算,同时输出计算结果
细解:第4-6行首先输出当前对象中的各成员变量值。
第7-29行输出通过对当前对象成员变量调用LogPtoPPL进行perplexity计算的结果。
第30行返回输出流stream的引用。
--------------------------------------
知识点:
--------------------------------------
Perplexity 计算
本类通过调用LogPtoPPL对已经求好P(W1...Wn)^1/N运算的概率计算其倒数来求得
当前分析文本的perplexity。通过运算“stats.prob / denom”可以发现,当前求出的
perplexity是对每个词来说的,如果使用编码的方法来表达该概念,即每个词需要用
几个字节来表示,因此每个词的perplexity越小,其所需的编码位也越少,这样也就
说明了当前的语言模型能比较好地表达该文本。
文档作者:jianzhu
创立时间:08.09.11
--------------------------------------
1、概述
--------------------------------------
这两个文件定义了一个TextStats类,该类主要用于计算句子集
的perplexity值。
TextStats类
该类提供了如下函数
a) 构造函数
b) 重置函数
c) 叠加函数
d) 重载的全局输出运算符<<
--------------------------------------
2、函数功能解释
--------------------------------------
a) 构造函数
<src>
0 TextStats() : prob(0.0), zeroProbs(0),
1 numSentences(0), numWords(0), numOOVs(0)
2 {
3 }
</src>
功能:用于初始化刚创建的TextStats对象
细解:第0-1行通过成员初始化列表的方式初始化TextStats对象
的成员变量。
b) 重置函数
<src>
0 void reset()
1 {
2 prob = 0.0, zeroProbs = 0,
3 numSentences = numWords = numOOVs = 0;
4 }
</src>
功能:用于将当前对象的成员变量值置为0。
细解:第2-3行充分利用了','运算符和'='运算符的特性,将各成员
变量值置为0。
c) 叠加函数
<src>
0 TextStats &
1 TextStats::increment(const TextStats &stats)
2 {
3 numSentences += stats.numSentences;
4 numWords += stats.numWords;
5 numOOVs += stats.numOOVs;
6 prob += stats.prob;
7 zeroProbs += stats.zeroProbs;
8
9 return *this;
10 }
</src>
功能:将传入的TextStats对象的成员变量值叠加到当前对象中
细解:第3-7行将stats中的成员变量值叠加到当前对象中。
第8行返回当前对象的引用。
d) 重载的全局输出运算符<<
<src>
0 ostream &
1 operator<< (ostream &stream, const TextStats &stats)
2 {
3
4 stream << stats.numSentences << " sentences, "
5 << stats.numWords << " words, "
6 << stats.numOOVs << " OOVs" << endl;
7 if (stats.numWords + stats.numSentences > 0) {
8 stream << stats.zeroProbs << " zeroprobs, "
9 << "logprob= " << stats.prob;
10
11 int denom = stats.numWords - stats.numOOVs - stats.zeroProbs
12 + stats.numSentences;
13
14 if (denom > 0) {
15 stream << " ppl= " << LogPtoPPL(stats.prob / denom);
16 } else {
17 stream << " ppl= undefined";
18 }
19
20 denom -= stats.numSentences;
21
22 if (denom > 0) {
23 stream << " ppl1= " << LogPtoPPL(stats.prob / denom);
24 } else {
25 stream << " ppl1= undefined";
26 }
27
28 stream << endl;
29 }
30 return stream;
31 }
</src>
功能:用于对当前对象中的成员变量进行perplexity计算,同时输出计算结果
细解:第4-6行首先输出当前对象中的各成员变量值。
第7-29行输出通过对当前对象成员变量调用LogPtoPPL进行perplexity计算的结果。
第30行返回输出流stream的引用。
--------------------------------------
知识点:
--------------------------------------
Perplexity 计算
本类通过调用LogPtoPPL对已经求好P(W1...Wn)^1/N运算的概率计算其倒数来求得
当前分析文本的perplexity。通过运算“stats.prob / denom”可以发现,当前求出的
perplexity是对每个词来说的,如果使用编码的方法来表达该概念,即每个词需要用
几个字节来表示,因此每个词的perplexity越小,其所需的编码位也越少,这样也就
说明了当前的语言模型能比较好地表达该文本。
相关文章推荐
- SRILM 阅读文档原文地址
- srilm 阅读文档1
- srilm 阅读文档3
- srilm 阅读文档2
- srilm 阅读文档4
- srilm 阅读文档5
- srilm 阅读文档6
- srilm 阅读文档7
- srilm 阅读文档8
- srilm 阅读文档9
- srilm 阅读文档11
- srilm 阅读文档10
- srilm 阅读文档12
- srilm 阅读文档14
- srilm 阅读文档15
- Win10尝鲜体验——初识传说中不一样的Windows 分类: 资源分享 2015-07-24 18:27 13人阅读 评论(0) 收藏
- c++ primer plus阅读笔记13---虚函数 为什么要虚析构函数?
- Yii2 官方文档阅读笔记
- Linux&Ubuntu下chm文档阅读问题
- 如何阅读Oracle数据库官方文档