2012-12-29 47 views
0

我有一個分類任務,它將一個字符串作爲輸入並將其分類到一些標籤。 訓練數據,如:Weka無法使用字符串作爲屬性來分類文本

Text1: label_1 
Text2: label_2 
Text3: label_1 

當我使用秧雞,大量進行分類的給予例外:

weka.core.UnsupportedAttributeTypeException: weka.classifiers.functions.MultilayerPerceptron: Cannot handle string attributes! 
    at weka.core.Capabilities.test(Capabilities.java:979) 
    at weka.core.Capabilities.test(Capabilities.java:868) 
    at weka.core.Capabilities.test(Capabilities.java:1084) 
    at weka.core.Capabilities.test(Capabilities.java:1022) 
    at weka.core.Capabilities.testWithFail(Capabilities.java:1301) 
+0

我不知道你想做什麼,但錯誤信息是非常清楚的。您將字符串傳遞給不接受字符串的函數。 – asheeshr

回答

4

這是很難理解你正在努力實現的到底是什麼,但在機器學習,大多數分類器正在尋找數字/二進制屬性,而不是字符串屬性。

你可以做的一件事是使用某些模型將你的特徵空間轉換爲數字/二進制屬性。 Bag of Words model是一個常見的解決方案。

根據這個模型,你必須做的是:

  1. 遍歷所有的「特徵」,在你的數據庫(串),分配 數/功能對於每個字符串/字
  2. 對於每個分類示例創建一個具有修改過的特徵空間的新實例 - 對於每個單詞/字符串,您現在都有一個編號(來自步驟1),因此請將與此編號匹配的屬性設置爲文本中此單詞的出現次數。標籤保持不變
  3. 運行上的修改實例的學習算法與新(數字)功能空間
  4. 分類過程中,如果遇到無法識別的單詞(你沒有它以前並沒有有一個屬性號分配給它) - 你可以默默地忽略它,或者使用一些啓發式來預測它是否以某種方式連接到你看到的一個單詞。對於初學者,我會忽略它,稍後再回來進行此步驟以便稍後進行優化。