【问题标题】:Hidden Markov models package in RR中的隐藏马尔可夫模型包
【发布时间】:2013-07-17 09:50:09
【问题描述】:

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

提前感谢所有帮助!

【问题讨论】:

    标签: r machine-learning hidden-markov-models information-extraction


    【解决方案1】:

    如果你运行以下命令:

    RSiteSearch('hidden markov model')
    

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

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

    【讨论】:

    • 不知道那个命令,因为我说我是 R 的新手,所以有很多我不知道的命令。我会用你说的那个来看看。谢谢!如果它不能解决我的问题,我再问一次。
    • 好吧,我无法理解 HMM 库的工作原理。你能举一个小例子来说明如何将它应用到一个句子中吗?我知道如何阅读不同文件中的所有句子以形成语料库,但是我需要如何处理它们(因为我在第二个文件上有标签)?我如何使用这些数据来训练模型?我所看到的只是使用“X,Y”和“a,b,c”。我希望看到更具体的东西。提前致谢!
    【解决方案2】:

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

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

    【讨论】:

    • 嗨。感谢教程,我去看看。现在我将尝试更好地解释我想要什么。正如我在第一篇文章中所说,我已经标记了一些句子。我想和他们一起训练 HMM 来提取这 3 个实体。在我训练好 HMM 之后,我想在新句子(关于课程外的事件)上使用它来提取事件的名称、位置和日期。当我谈到使用 HMM 时,我是对的,对吗?
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      DepmixS4 正是您所寻找的。​​p>

      首先,您需要确定模型的最佳隐藏状态数。这可以通过对不同的隐藏状态采用具有最小 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) 将为您提供所有模型参数。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2016-12-31
      • 2012-08-15
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多