2012-06-06 41 views
0

我正在爲自動包圍包圍編寫一個學習算法。由於該算法從頭開始,所以包圍(嵌入)首先應該是隨機的。然後通過迭代改進。我堅持如何做隨機包圍。你能否在R或Python中建議一個代碼或給出一些編程思想(僞代碼)?我也需要關於如何檢查一個正確的隨機包圍對正確的想法。如何做元素的隨機嵌入包圍

這是我試圖通過學習過程終於到達,從隨機包圍開始。

這是一個句子。 '他'追趕''''狗'。

有語法元素替換的每個元素, N,V,d,N.

包圍(第一階段)(d,N是成分): (N)(V)(DN)

包圍(第2相): (N)((V)(DN))

包圍(第三階段): ((N)((V)(DN)))

請幫助。謝謝。

+0

這是否會像遺傳算法?通常解析器不是以隨機假設開始的。此外,你的第一個包圍階段看起來似乎比隨機更合乎邏輯。 – phg

+0

爲什麼要這樣做?如果你只需要應用一個現成的組件解析器? –

+0

我覺得我有點不清楚,所以讓我澄清。 1)這不是一個解析器,而是解析的學習者。 2)不使用先驗假設(本例)的學習者從隨機假設開始。 3)我不是試圖解析給定的文本,而是分析機器學習如何通過經驗來解析。然後,類比人類對語言的學習。我很關心通過不同階段的學習過程,而不是很多。 @phg這裏的包圍階段不是學習過程,而是學習完成後的實際解析。所以合乎邏輯 – jackson

回答

1

這裏的一切,我可以提供的信息說:

的包圍一個天真的辦法是generate some trees(產生所有可以迅速得到佔用空間非常大),有儘可能多的葉子,因爲有話(或組件),然後選擇合適的一個(隨機或根據適當的分區)並將其應用爲包圍模式。爲了提高效率,尋找一種真正的隨機樹生成算法(目前我找不到)。

此外,我建議閱讀關於genetic algos/evolutionary programming,尤其是fitness fucnctions(這是「檢查正確性的隨機結果」部分)。據我瞭解你,你希望程序檢測解析的方式,然後將它們保存在內存中「學習」。這與遺傳算法與「適合」模式的記憶非常匹配(並且只有突變爲變化因子)。

一個真棒,非常複雜(如果工作),但可能非常困難的方法是使用genetic programming。但這可能與你想要的完全不同。

最後,檢查括號正確性的最簡單方法是使用語法/語法規則對錶進行比較。通過將它們放在樹中並測量與實際圖案((V D) N)到正確圖案(V (D N))的距離,您也可以將其改進爲更好的適應度函數。 (這只是一些隨機的想法,我從來沒有真正做到這一點..)

+0

感謝您的信息。 – jackson