nlp小白教程:word2vec之数据预处理
生活随笔
收集整理的這篇文章主要介紹了
nlp小白教程:word2vec之数据预处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 數據預處理
首先說的就是分詞,對英語來說每個詞與詞之間是通過空格辨別的,例如I love natural language processing,每個詞之間都是有空格的,所以很容劃分為[i, love, natural, language, processing]但是中文的詞并沒有分開,而是全部連在一起的,例如我愛自然語言處理,我們可以通過分詞工具進行切分,我這里使用的jieba分詞
import jiebares = jieba.cut("我愛自然語言處理",cut_all=False) print(list(res)) # ['我', '愛', '自然語言', '處理']首先我們需要準備一段預料,一般情況下通常是一個非常大的語料庫,這樣才能覆蓋更多的詞語,訓練的詞向量也會更加準確,但是這里只是為了演示,所以隨便搞一點就行。正好最近在看仙逆,截取前兩章節作為訓練語料。我們將其保存到一個txt中
首先我們需要對去除每一行的換行符,然后將每一行拼接在一起,送到jieba分詞中
import jiebadef read_text_and_cut_word(cropus_path):data = []with open(cropus_path, 'r', encoding='utf-8') as f:lines = f.readlines()for line in lines:line = line.strip()if line != '': # 過濾掉空白行data.append(line)sentences = "\n".join(data) # 將文本拼接成一個字符串words = jieba.cut(sentences,cut_all=False) with open("p_input.txt", "w") as f: # 將分詞的結果保存到txt中f.write(' '.join(words))read_text_and_cut_word('news.txt')原始的文本已經分好詞保存下來了,可以看到分的詞里面有很多中文的停用詞和標點符號,。?、\n等等,通常情況下,分詞的時候需要加載我們自定義的停用詞,例如啊,的,是等等,不過為了簡單,這里只去除標點和數字,
def handle_stopwords_and_whitesapce():# 標點符號集stopwords = '''~!@#$%^&*()_+`1234567890-={}[]::";'<>,.?/|\、·!()¥“”‘’《》,。?/—-【】….'''stopwords_set = set([i for i in stopwords])stopwords_set.add("br") # 異常詞也加入此集,方便去除with open("temp.txt", "r", encoding="utf-8") as f:lines = f.readlines()data = []for line in lines:line = line.strip()for s in stopwords_set:line = line.strip().replace(s, "")line = line.replace(" "," ").replace(" "," ")if line != "" and line != " ":data.append(line)all_text = " ".join(data)with open("train.txt", "w") as f:f.write(all_text)handle_stopwords_and_whitesapce()
很好,語聊基本就處理好了,現在每個詞之間使用空格進行分割,我們就可以將切好的詞輸入到我們的網絡中訓練了。但是由于計算機只認識01,所以我們需要對詞進行編碼。
總結
以上是生活随笔為你收集整理的nlp小白教程:word2vec之数据预处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机二级办公室应用题目,干货|计算机二
- 下一篇: 自动排版布局-Layout GAN