0

我試圖用knime-labs深度學習插件對knime進行分類。如何使用Knime對文本進行分類

我在我的數據庫中有大約16.000個產品,但是我有大約700個我知道它的類別。

我試圖儘可能使用一些DM(數據挖掘)技術進行分類。我已經下載了一些插件,現在我有一些深度學習工具作爲一些文本工具。

這是我的工作流程,我會用它來解釋我在做什麼:

Basic Workflow

我改造產品名稱爲載體,不是運用進去。 我培訓了DL4J學習者DeepMLP。 (我不是很瞭解這一切,這是我認爲我得到最好結果的那個)。比我嘗試在相同的數據集中應用模型。

我想我會得到預測類的結果。但是我得到一個帶有output_activations的列,它看起來有一對雙打。當對這個列進行排序時,我會得到一些相關的日期。但我期待着上課。

下面是結果表格的打印結果,在這裏您可以看到帶有輸入的輸出。

Output table

在列選擇它變得只是converted_document和選擇des_categoria作爲標籤列(學習節點配置)。在Predictor節點中,我檢查了「Append SoftMax Predicted Label?」

nom_produto是,我試圖用它來預測des_categoria列,它的產品類別中的文本列。

我真的很關於DM和DL的新手。如果你能幫我解決一下我想要做的事情會很棒。 PS:我也嘗試將它應用到未分類的數據(17,000個產品)中,但我得到了相同的結果。

回答

2

我不會用這個工作流的回答,因爲它不會是一個簡單的工作流。但是,一定要在KNIME服務器上找到文本挖掘示例,即使用文字包的方法。

任務

產品映射到類別應該是一個直接的數據挖掘的任務,因爲這解釋了目標變量的信息是準窮盡的方式提供。根據要訓練的類別數量,可能需要超過700個實例才能學習。

一些資源

這裏有一些資源,只有第一個是真正專門從事文本挖掘:

  1. Introduction on Information Retrieval,尤其是第13章;
  2. Data Science for Business是對數據挖掘的一個很好的介紹,包括文本挖掘(第10章),也不要忘記關於相似性的章節(第6章);
  3. Machine Learning with R具有足夠可訪問的優勢(第4章提供了使用R代碼進行文本分類的示例)。

預處理

首先,你將不得不預處理你的產品標籤了一下。使用KNIME的文本分析預處理節點爲目的,那就是你已經改變了產品標籤後Strings to Document

  • Case ConvertPunctuation ErasureSnowball Stemmer;
  • 您可能不需要Stop Word Filter,但是,可能會有類似「產品」的準停止詞,您可能需要使用Dictionary Filter手動刪除該詞;
  • 要小心不要使用以下任何一項而不先測試它們的影響:N Chars Filterg可能是一個有用的詞),Number Filter(數字可能指示數量,這可能對分類有用)。

如果您遇到有關節點的任何故障(例如Punctuation Erasure可能會非常棘手驚人的感謝標記生成器),你可以用正則表達式轉換Strings to Document之前總是適用String Manipulation

保持簡短而簡單:查找表

你可以根據700個訓練實例建立一個查找表。本書Data mining techniques以及資​​源(2)詳細介紹了這種方法。如果任何模型執行比查找表更糟糕的情況,則應放棄該模型。

最近的鄰居

神經網絡可能是矯枉過正的這項任務。

K Nearest Neighbor節點開始(應用字符串距離,如Cosine,Levensthein或Jaro-Winkler)。這種方法需要的數據量最少。至少它會提供一個很好的基準模型,所以它絕對值得一試。

您需要調整參數k並嘗試使用距離類型。 Parameter Optimization Loop對將幫助您優化k,您可以在所述循環內部包含一個Cross-Validation元節點,以獲得給定k的預期性能的估計值,而不是每個k值只有一個點估計值。使用Cohen's Kappa作爲優化標準,如資源編號(3)所建議的並且可通過Scorer節點獲得。

參數調整後,你必須評估模型的使用又Cross-Validation元節點的相關性,然後跟進環路對包括Scorer來計算每次迭代的性能指標(S)的描述內容,最後使用Statistics。 Kappa是此任務的便利指標,因爲目標變量包含許多產品類別。

不要忘記根據查找表來測試其性能。

下一步是什麼?

查找表或k-nn應該適合你,那麼沒有別的東西可以添加。

如果其中任何一種方法失敗,您可能需要分析失敗的具體情況。另外,訓練集大小可能太低,因此您可以手動分類另外幾百或幾千個實例。

如果在增加訓練集大小之後,仍然在處理不好的模型,那麼可以使用分類器(請參閱信息檢索參考的第13章)一起嘗試一攬子文字處理方法。這裏沒有空間詳細說明單詞方法和樸素貝葉斯包,但是您會發現上面的資源對此有用。

最後一個註釋。就我個人而言,我發現KNIME的Naive Bayes節點表現不佳,可能是因爲它沒有實現拉普拉斯平滑。但是,KNIME的R LearnerR Predictor節點將允許您使用R的e1071包,如資源(3)所示。

相關問題