2016-08-02 53 views
0

我正在做一個臨牀文本分類的項目。在我的語料庫中,數據已經被代碼標記(例如:768.2,V13.02,V13.09,599.0 ...)。我已經分開文本和標籤,然後使用文字嵌入文本。我將把它們送入卷積神經網絡。然而,標籤需要編碼,我讀了情感文本分類和mnist的例子,但他們都使用整數來分類他們的數據,我的標籤以文本形式表明我爲什麼不能使用像他們這樣的熱門編碼。任何人都可以提出任何方式來做到這一點? 謝謝用於文本分類的編碼數據標籤

+0

您可以使用一個熱編碼離散標籤。例如,對於標籤「是」,「否」和「可能」,您可以分配「No = 0」,「Yes = 1」,「Maybe = 2」,然後將其編碼爲多個二進制/連續標籤。 – Mephy

+0

謝謝梅菲,我的文本數據被45個標籤分類。一些文本可能一次有兩個標籤。 – ngoduyvu

回答

1

通過創建枚舉映射,可以將離散文本標籤輕鬆轉換爲離散數字數據。例如,假設標籤「是」,「否」和「也許」:

No -> 0 
Yes -> 1 
Maybe -> 2 

現在你有數字數據,以後可以只要算法把這些離散值,並且轉換回(不要返回0.5或類似的東西)。

在每個實例都可以具有多個標籤的情況下(如您在評論中所說的),您可以通過將每個標籤放在列中(「單熱編碼」)來創建編碼。即使某些軟件沒有實現現成的功能,也不難親自完成。

下面是使用熊貓的get_dummies功能非常簡單的(而不是寫得很好,說實話)例如:

import numpy as np 
import pandas as pd 
labels = np.array(['a', 'b', 'a', 'c', 'ab', 'a', 'ac']) 
df = pd.DataFrame(labels, columns=['label']) 
ndf = pd.get_dummies(df) 
ndf.label_a = ndf.label_a + ndf.label_ab + ndf.label_ac 
ndf.label_b = ndf.label_b + ndf.label_ab 
ndf.label_c = ndf.label_c + ndf.label_ac 
ndf = ndf.drop(['label_ab', 'label_ac'], axis=1) 
ndf 

    label_a label_b label_c 
0 1.0  0.0  0.0 
1 0.0  1.0  0.0 
2 1.0  0.0  0.0 
3 0.0  0.0  1.0 
4 1.0  1.0  0.0 
5 1.0  0.0  0.0 
6 1.0  0.0  1.0 

現在你可以訓練一個多變量模型輸出的label_alabel_blabel_c後的值重建原始標籤,如「ab」。只要確保輸出在[0,1]集中(通過應用softmax-layer或類似的東西)。

+0

謝謝梅菲,我給你理想。 Coud我使用get_dummies將分類標籤轉換爲整數,然後將其用於one_hot編碼? – ngoduyvu

+0

嘿,梅菲,我在Tensorflow中實現了你的理想但我的項目實現。神經網絡只需要Tensor而不是數組,你知道我怎樣才能將這些分類數據轉換成與你在Tensorflow中有類似結果的數值數據? – ngoduyvu

1

關注此4分鐘的視頻(Corsera:ML分類華盛頓(大學) - > Week1 - >編碼分類輸入) https://www.coursera.org/learn/ml-classification/lecture/kCY0D/encoding-categorical-inputs

有編碼的兩種方法:

  1. 一個熱編碼

  2. 一包字(我認爲這是比較適合的方法在這種情況下)

下圖描述了詞袋方法如何工作。文本可以說來自它的10,000個不同的單詞,或更多,更多,數百萬。那麼,「文字袋」就是把這些文字,然後編碼爲計數。

enter image description here

編輯1

Python實現:訪問http://www.python-course.eu/text_classification_python.php

+0

謝謝Sayali,我有你的理想,所以我有46個標籤,我創建了一個46的數組,當文本標籤,我將它設置爲1,如(00100000..0)。我真的不知道如何編寫代碼,你知道python中的任何函數嗎? – ngoduyvu

+0

https://www.kaggle.com/c/word2vec-nlp-tutorial/details/part-1-for-beginners-bag-of-words –

+0

你可以在scikit-learn library中找到該功能 –

相關問題