-
Notifications
You must be signed in to change notification settings - Fork 10.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
隐马尔可夫词性标注概率转移矩阵问题 #434
Comments
的确,我仔细算了一下,发现你说的是对的。当时只想着省点空间,没有专门去统计每个tag出现的频次。以后会修复这个表格的,谢谢! |
@hankcs 感谢回复,最近拜读大神源码,太赞了! |
转移矩阵的频次统计新方法比如对于
仅仅逐行累计的话,A的频次为 |
hankcs你好,你的修改方式好像只对核心词典有用,在实体识别中,地名和机构名的结尾标签是B,这时候计算出来的频次统计是不准确的(虽然和实际频次差距可能不是很大),我想还是需要每个tag出现的频次表格。 |
我赞同简化问题,加一个tag频次表。 |
第二个问题你说得对,初始状态概率的估计应该为N个样本中初始状态为s的频次除以N。这段代码写得太早,当时没有想清楚,应该参考:http://www.hankcs.com/ml/hidden-markov-model.html#h2-13 太感谢了,修复工作加入开发日志。 |
关于上面《转移矩阵的频次统计新方法》,解决的方案是基于句子的结尾标签是专有的,标签为'end',也就是说,‘end’行肯定是为0的,那么当某一行的和为0时,就能断定这是标签'end'的行,要计算end出现次数则要对'end'的列相加。 |
第二个问题,初始状态概率。 |
第一个问题确实如此,当时总想着省,没想清楚。
关于 受限于语料成本,当时地名识别的语料是利用程序自动转换的。 |
嗯。那目前就先这样修正吧,转移频率的问题可能需要在以后的版本中更新语料标签转换的程序吧 |
是的。 |
请问,关于初始概率计算的问题,在目前的版本1.7.3中已经解决了吗? |
刚才修复了。HMM的优雅实现请参考 https://github.com/hankcs/HanLP/blob/master/src/main/java/com/hankcs/hanlp/model/hmm/HMMPOSTagger.java |
你好,博主大人,这里在统计标签出现次数时是不是会重复计算呢?而且也无法保证了概率转移矩阵每行元素之和等于1呢?我感觉 total[j] += matrix[i][j];这句有重复计算的可能。
// 需要统计一下每个标签出现的次数 total = new int[ordinaryMax]; for (int j = 0; j < ordinaryMax; ++j) { total[j] = 0; for (int i = 0; i < ordinaryMax; ++i) { total[j] += matrix[i][j]; total[j] += matrix[j][i]; } }
The text was updated successfully, but these errors were encountered: