4

我需要一些幫助在R中實現HMM模塊。我是R新手,並沒有太多的知識。 所以我必須實現一個使用HMM的IE,我有兩個文件夾與文件,一個與句子和另一個與我想學習每個句子相應的標籤。隱藏的馬爾可夫模型包在R

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上實現它,我如何初始化模型,我該如何進行培訓?然後,我如何將它應用於隨機句子來提取信息?

在此先感謝您的幫助!

回答

8

如果您運行以下命令:

RSiteSearch('hidden markov model') 

隨後,它發現4次任務,40只小故事,和255層的功能(當我跑了,有可能是通過在運行它的時候更多)。

我會建議看看這些結果(可能從視圖和小插圖開始),看看有沒有適合你的東西。如果沒有,那麼告訴我們你已經嘗試了什麼,以及你沒有提供什麼。

+0

不知道那個命令,就像我說的我是R上的新手,所以有很多命令我不知道。我會用你說的那個來看看。謝謝!如果它不能解決我的問題,我再問一次。 –

+0

好的,我無法理解HMM庫的工作原理。你能舉一個例子說明如何將它應用到一個句子中嗎?我知道如何閱讀不同文件中的所有句子以形成語料庫,但是接下來我需要如何處理它們(導致第二個文件中的標籤)?我如何使用這些數據來訓練模型?我看到的只是使用「X,Y」和「a,b,c」。我很想看到更具體的東西。提前致謝! –

8

我不確定你想要做什麼,但你可能會發現hidden Markov models using R這個優秀的教程很有用。您可以從常規馬爾科夫模型開始,從頭開始構建函數和馬爾可夫模型,然後轉移到隱馬爾可夫模型。瞭解他們如何工作真的很有價值。

還有R包depmixS4指定和擬合隱馬爾可夫模型。它的文檔非常穩定,通過示例代碼可能會對您有所幫助。

+0

嗨。感謝您的教程,我會看看。現在我會盡力解釋一下我想要的東西。我有一些句子已經被標記,正如我在第一篇文章中所說的那樣。有了他們,我想訓練HMM來提取這3個實體。在我接受了HMM訓練之後,我想在新句子(關於課程的事件)上使用它來提取事件的名稱,位置和日期。 當我談論使用HMM的時候,我是正確的嗎? –

2

depmixS4是最通用和最合理的軟件包,只要你能夠處理你的數據。它檢查了我的虛擬數據,但給了實際數據錯誤。 HMM也適用,但前提是你有離散變量而不是連續變量。

0

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被傳遞)。總結(fm)會給你所有的模型參數。

+0

所有模型參數計算的實際代碼。 Viterbi Algo,EM可在[link] https://github.com/koooee/depmixS4找到 –