我需要一些帮助在R中实现HMM模块。我是R的新手并且对它没有太多的了解。 所以我必须使用HMM实现一个IE,我有2个文件夹,一个带有句子,另一个带有我希望从每个句子中学习的相应标签。
folder1 > event1.txt: "2013 2nd International Conference on Information and Knowledge Management (ICIKM 2013) will be held in Chengdu, China during July 20-21, 2013."
folder2 > event1.txt:
"N: 2nd International Conference on Information and Knowledge Management (ICIKM 2013)
D: July 20-21, 2013
L: Chengdu, China"
N -> Name; D -> Date; L -> Location
我的问题是如何在R上实现它,我如何初始化模型以及如何训练它?然后我如何将它应用于随机句子来提取信息?
提前感谢所有帮助!
答案 0 :(得分:10)
如果您运行以下命令:
RSiteSearch('hidden markov model')
然后它找到4个任务视图,40个Vignettes和255个函数(当我运行它时,运行它时可能会有更多)。
我建议查看这些结果(可能从视图和小插图开始),看看是否有适合你的东西。如果没有,请告诉我们您尝试过的内容以及您需要的内容。
答案 1 :(得分:8)
我不确定你想要做什么,但你可能会发现这个关于hidden Markov models using R的优秀教程很有用。您可以从常规马尔可夫模型开始构建函数和Markov模型,然后转移到隐藏的Markov模型。了解它们的工作方式非常有价值。
还有R包depmixS4用于指定和拟合隐马尔可夫模型。它的文档非常可靠,通过示例代码可能会对您有所帮助。
答案 2 :(得分:2)
depmixS4
是最通用且相当不错的软件包,如果您可以使用它来处理您的数据。它为我检查了虚拟数据,但在实际数据上给出了错误。 HMM
也有效,但前提是你有离散变量且不连续。
答案 3 :(得分:0)
DepmixS4就是你要找的。 p>
首先,您需要为模型确定最佳隐藏状态数。这可以通过针对不同的隐藏状态采用具有最小值AIC的模型来完成。
我创建了一个函数HMM_model_execution,它将返回模型变量和模型的状态数。
library(depmixS4)
第一列应为doc_data
中的可见状态和剩余外部变量HMM_model_execution<-function( doc_data, k)
要比较的总隐藏状态的数量
{
aic_values <- vector(mode="numeric", length=k-1) # to store AIC values
for( i in 2:k)
{
print(paste("loop counter",i))
mod <- depmix(response = doc_data$numpresc ~ 1, data = doc_data, nstates = i)
fm <- fit(mod, verbose = FALSE)
aic_values[i-1]<- AIC(fm)
#print(paste("Aic value at this index",aic_values[i-1]))
#writeLines("\n")
}
min_index<-which.min(aic_values)
没有最佳模型的隐藏状态
#print(paste("index of minimum AIC",min_index))
mod <- depmix(response = doc_data$numpresc ~ 1, data = doc_data, nstates = (min_index+1))
fm <- fit(mod, verbose = FALSE)
最佳模型执行
print(paste("best model with number of hidden states", min_index+1))
return(c(fm, min_index+1))
writeLines("\n")
writeLines("\n")
外部变量(co-variates可以在函数depmix中传递)。 summary(fm)将为您提供所有模型参数。