您的位置:首页 > 编程语言

中文分词笔记之三:示例代码及测试结果

2015-01-31 13:46 330 查看
示例代码:

/**
*g为邻接表
*i为当前节点
*/
Iterator<CnToken> it1 = g.getPrev(i);//得到一级前驱词集合
double maxProb = Double.NEGATIVE_INFINITY;
int maxPrev1 = -1;
int maxPrev2 = -1;

while(it1.hasNext()) {
CnToken t1 = it1.next();
Iterator<CnToken> it2 = g.getPrev(t1.start);//得到一级前驱词对应的二级前驱词集合
while(it2.hasNext()){
CnToken t2 = it1.next();

int bigramFreq=getBigramFreq(t1,t2);//从二元词典找二元频率
double biProb = lambda1*t1.freq + lambda2*(bigramFreq/t2.freq);//平滑后的二元概率
double nodeProb = prob[t2.start]+(Math.log(biProb));//二元模型

if (nodeProb > maxProb)//概率最大的算作最佳前趋
{
maxPrev1 = t1.start;
maxPrev2 = t2.start;
maxProb = nodeProb;
}
}
}
prob[i] = maxProb;

示例结果:

text:end start:8 end:9 cost:0.0

data = 天:WordId:Freq[28:502][19:84]

data = 天下:WordId:Freq[25:0][11:0][19:21]

data = 下:WordId:Freq[20:1][11:951][19:0][29:0][28:16][40:332]

data = 的:WordId:Freq[36:54477]

data = 事:WordId:Freq[19:233][42:1][40:0]

data = 事情:WordId:Freq[19:95]

data = 情:WordId:Freq[20:7][19:101]

data = 天:WordId:Freq[28:502][19:84]

data = 天下:WordId:Freq[25:0][11:0][19:21]

data = 下:WordId:Freq[20:1][11:951][19:0][29:0][28:16][40:332]

data = 管:WordId:Freq[21:0][7:0][20:5][40:87][28:0][27:0][42:0]

天下 的 事情 天下 管


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: