5

我需要一些帮助在 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 上实现它,如何初始化模型以及如何训练它?然后我如何将它应用于随机句子以提取信息?

提前感谢所有帮助!

4

4 回答 4

10

如果您运行以下命令:

RSiteSearch('hidden markov model')

然后它会找到 4 个任务视图、40 个小插图和 255 个函数(当我运行它时,运行它时可能会有更多)。

我建议查看这些结果(可能从视图和小插曲开始),看看是否有任何适合你的东西。如果没有,请告诉我们您尝试过的内容以及那里未提供的您需要的内容。

于 2013-07-17T14:48:29.787 回答
8

我不确定你到底想做什么,但你可能会发现这个关于使用 R 的隐藏马尔可夫模型的优秀教程很有用。您从常规马尔可夫模型开始从头开始构建函数和马尔可夫模型,然后转向隐藏马尔可夫模型。了解它们的工作原理真的很有价值。

还有用于指定和拟合隐藏马尔可夫模型的 R 包depmixS4 。它的文档非常扎实,通过示例代码可能会对您有所帮助。

于 2013-07-29T18:15:00.867 回答
3

depmixS4如果你让它在你的数据上工作,它是最通用和相当好的包。它为我检查了虚拟数据,但在真实数据上给出了错误。HMM也适用,但前提是您有离散变量而不是连续变量。

于 2015-05-06T10:19:04.267 回答
1

DepmixS4 是您正在寻找的。

首先,您需要确定模型的最佳隐藏状态数。这可以通过对不同的隐藏状态采用具有最小 AIC 值的模型来完成。

我创建了一个函数 HMM_model_execution,它将返回模型变量和模型的状态数。

  library(depmixS4)
  • 第一列应该是可见状态和 doc_data 中的剩余外部变量

    HMM_model_execution<-function( doc_data, k) 
    
  • 要比较的总隐藏状态的 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")
    

外部变量(协变量可以在函数 depmix 中传递)。summary (fm) 将为您提供所有模型参数。

于 2017-02-08T15:53:30.603 回答