0.當前最火熱的項目之一就是機器學習了,而機器學習中有一座大山,就是NLP(天然語言處理)天然語言處理處理的是非結構化的數據,並且是字符串git
,咱們知道計算機擅長處理的是數字,最好是0 1,十六進制什麼的,實在不行10進制也湊合用,因此,要進行NLP第一關就是數據預處理。在此我只講解過github
程和簡要代碼,具體代碼能夠去https://github.com/Ericgoodboy/NLP查看,這個庫持續更新,有興趣的給個星星。話很少說開整。網絡
1.處理標點符號,這個標點其實很搞的,有一個庫叫zhon裏面有中文的符號,但中文符號太多了,那個庫好像處理不太乾淨,能夠嘗試用正則的方式斷定機器學習
中文字符的範圍,由於中文字符的unicode範圍是必定的。能夠嘗試以下正則:學習
deleteChar = re.compile(u"[^a-zA-Z0-9\u4e00-\u9fa5]")
2.分詞。英文直接用空格符等分詞就好了,但中文比較複雜,在中文分詞上,結巴分詞作的仍是挺好的,用了隱馬爾可夫,很方便。用起來也很簡單。代碼以下:spa
import jieba jieba.cut(sentence)
3.統計詞頻,由於咱們不可能吧全部的詞都用上。由於有些詞的頻率真的很小。對模型的影響很小,還會被當作噪聲。因此咱們只統計頻率比較大的詞代碼也很簡單code
以下:blog
resDic = {} for line in data: for word in line: if word in resDic: resDic[word]+=1 else: resDic[word]=1
4.給每個單詞一個id,並將原來的句子替換成id的表現形式,方法很簡單,就不貼代碼了直接去github裏面有詳細代碼,在文件/src/preprocess/dataprocess.py中unicode
-1.作完以上4步,預處理算是完成了,但這種數據仍是不能放到神經網絡中訓練,還要選擇相應的模型,如one-hot,或者word2vec之類的,將每個詞轉化爲id纔算能夠用的數據字符串