2017-04-09 57 views
0

我成功實現了SVM分類器。我沒有使用scikit方法。我目前正在用不同類型的數據進行培訓。現在,我想測試它的單個文本輸入。 我嘗試使用熊貓,但後來我不得不改變我的方法,所以我決定不使用它。 分類器正在用於情感分析與正面,負面和中性標籤。提供給分類器的數據集由來自twitter的推文組成。 這裏是我的分類:https://pastebin.com/JZ5LVLW7如何爲分類器創建二進制特徵向量

所以,我需要在設計Python中的函數,將一個字符串輸入幫助,我的功能列表進行比較,並生成一個二元矢量。或者如果有其他選擇,請提出建議。 示例:如果我的文本輸入是「足球是歐洲流行的運動」 因此,建議的功能將掃描功能列表(已經藉助測試數據生成),並且如果特徵詞像「足球」,「流行「,」運動「,」歐洲「出現在要附加1或0的特徵列表中。因此,在通過該功能掃描之後,輸出應該像[...,1,0,1,1 ,0,0,0,...]。

+0

什麼是分類器和什麼是特徵什麼是目標? – aisensiy

+0

抱歉跳過一些細節。分類器用於具有正面,負面和中性標籤的情感分析,它包含從推文數據集中提取的功能。 – Monty

+0

所以你的意思是爲文本輸入生成一個熱門的功能? scikit爲此提供了一些文本功能工具。 – aisensiy

回答

0

使用您感興趣的字詞和相同尺寸的熱門編碼器創建詞彙表。閱讀文本文件,並更新熱門編碼器,以防在詞彙表中找到單詞。此代碼應該可以工作。

vocabulary = ['Football', 'Europe'] # Put your targer words in here 
hot_encoder = [0] * len(vocabulary) 
binary_bag = dict(zip(vocabulary, hot_encoder)) 
with open('text.txt', 'r') as f: #Put your text sample in here 
    words = [word for line in f for word in line.split()] 
    for word in words: 
     if word in vocabulary and binary_bag[word] == 0: 
      binary_bag[word] = 1 
+0

感謝您的回答!如果只有我可以隱藏輸出中的標籤。例如:而不是['Football':1,'Europe':0 ..]它可能只是[1,0,0 ..]? – Monty

+0

在這一步中要小心。由於您正在使用字典,因此您應該記住,字典不會維持順序。因此,您應該使用最初的列表來幫助您實現此目標。這個代碼應該可以工作:'對於idx,鍵入枚舉(詞彙表): hot_encoder [idx] = binary_bag [key]' – Arthur

+0

只需要清楚,這是附加代碼:) – Arthur