2012-08-09 38 views
2

我想使用監督機器學習算法根據句子中單詞的存在或不存在來預測一組句子的二元函數(真或假)。機器從文本中找到的單詞學習

理想情況下,我想避免硬編碼用於決定輸出的單詞集,以便算法自動學習哪些單詞(一起?)最有可能觸發特定輸出。

http://shop.oreilly.com/product/9780596529321.do(編程集體智慧)在標題爲「學習從點擊次數」,它描述瞭如何通過在神經網絡中使用1層隱伏節點與一個新的隱藏節點的每一個新的組合,以做到這一點第4章一個很好的部輸入單詞。

同樣,可以爲訓練數據集中的每個單詞創建一個特徵,並訓練幾乎所有使用這些特徵的經典機器學習算法。添加新的訓練數據將產生新的功能,這將需要我從頭開始重新訓練算法。

這讓我想起了我的問題:

  • 它實際上是一個問題,如果我重新培訓一切從頭開始,每當訓練數據集被擴展?
  • 什麼樣的算法會比較經驗機器學習的用戶推薦用於這類問題?
  • 我應該在選擇算法時使用哪種標準? (除了實際嘗試它們,並且看到哪些性能在精度/召回指標方面表現更好)
  • 如果您已經研究過類似問題,那麼使用2-grams擴展功能如何(1如果存在特定的2-gram,則爲0如果不) ? 3克?

回答

1

如果您想查找通常一起找到的單詞,您可以查看主題建模的一般區域。

最簡單的方法是使用潛在語義分析(http://en.wikipedia.org/wiki/Latent_semantic_analysis),它只是將SVD應用於術語文檔矩陣。然後您需要做一些額外的事後分​​析,以適應您的特定結果。

一個更復雜的,和更復雜的方法是使用隱含狄利克雷分配(http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation

在短短增加新的功能(字)是罰款,只要你要重新培訓方面。您還可以使用TF/IDF在表示矩陣時爲其指定一個值(而不僅僅是1或0)。

我不知道你在嘗試做什麼編程語言,但我知道在Java和Pythont帽子中有這樣的庫可以完成上述所有操作。

+0

我可以看到我可以如何使用LSA來獲得對我的訓練數據的兩個類別中每一個發生在一起的單詞的洞察,但是使用這些單詞對新輸入進行分類並不明顯。即可能會出現在兩個類別中的詞...... – mathieu 2012-08-09 10:15:31

+0

對不起,我打算基於使用LSA的簡化矩陣的關係來構建主題。在主題檢測中,您將返回的是主題X以及與該特定主題相關的單詞。一般來說LDA就是用來做這件事的,LSA是LDA的基礎,然後LDA會納入我個人發現的非常技術性的統計方法。但是你的最終結果是一堆有很大可能性一起出現的詞。總是有可能有些東西可能與兩個主題相似,但最終會贏得勝利(也許只是勉強)。 – Steve 2012-08-09 12:17:10