乙個NLP入門級的完整實驗(一)

2021-10-18 19:02:40 字數 1500 閱讀 1407

nlp發展已經很長一段時間了,相比cv,nlp入門要難一些,我相信很多人都像我當初一樣,看了很多的演算法,公式,模型,一頭霧水,看懂了又好似沒看懂,模型原理背的滾瓜爛熟,但是做不出來東西,看了別人的原始碼感覺好像就那麼回事,但是復現不出來。

因此,我決定從乙個具體的實驗角度一步一步的循序漸進,像是寫日記一樣記錄一下我的第乙個nlp實驗。

實驗目的:

任務是nlp中最基本的文字分類任務,這個任務比較成熟,坑也比較少,比較容易實現。目標呢,是做一系列對比實驗,**不同因素之間的影響。

第一組:cnn, lstm,gru之間的對比。

第二組:maxpooling,meanpooling,attention之間的對比。

第三組:dropout概率0.5,0.25,0之間的對比。

第四組:是否使用glove預訓練詞向量之間的對比。

你可能一下子就能說出對比的結果,肯定是gru+attention,dropout在0.5,並且用glove詞向量的效果最好,但是這個實驗的目的不在於結果,重點是nlp中的各種思想,乙個入門級的實驗,目的是為了加深nlp的理解。

首先做文字分類的資料集使用yelp2013的資料集,根據評分做5分類任務。

baseline選2023年《neural sentiment classification with user and product attention》裡邊的結果圖:

框架使用pytorch框架

需要用到的模組有:torch,torchtext,time,numpy,matplotlib,collections

大家可以預先準備好。

按照我的習慣,我喜歡把乙個nlp任務分成4個檔案,分別是

test.py,data.py,model.py,train.py

很多初學者可能不習慣這種分法,但是我認為,良好的**結構和程式設計習慣很多時候決定了乙個**的上限,層次分明的結構在後續修改,和復用的過程,能提供很大的幫助。

在我的結構裡:

test.py可以當做是任務的main函式,**的執行就是在test.py中執行的,用於控制整個流程。

data.py用於存放文字預處理工作的內容,在nlp中,預處理工作佔了相當大的一部分,有時候預處理的好壞甚至能直接影響結果,這點和cv有所不同。

model.py顧名思義,是用來存放模型的,這次實驗的模型簡單,只需要存放gru,attention,cnn即可完成全部工作。

train.py是用於存放訓練過程的,其實不僅僅是訓練過程,還包括**,結果計算,batch等一系列操作。

——————還有後續,待更新,更新後會發在同名專欄裡邊————————

go 入門級 乙個http服務

servemux 是go自帶的http請求處理器,是乙個路由表,存放key value。根據請求路徑 key 在路由表中查詢,按照最長匹配原則 並將請求交給對應的處理函式 value 匯入http包,介紹幾個方法 http.listenandserve addr string,handler han...

乙個簡單的入門級Python爬蟲

乙個簡易爬蟲,主要功能是爬取全國各地空氣質素資料,輸出到乙個csv檔案,後續加入相關資料處理得出實時空氣質素排名前10和後10的城市及其空氣質素 aqi 使用的是beautifulsoup庫,具體用法參照 import requests from bs4 import beautifulsoup i...

乙個入門級python爬蟲教程詳解

爬蟲的定義 定向抓取網際網路內容 大部分為網頁 並進行自動化資料處理的程式。主要用於對鬆散的海量資訊進行收集和結構化處理,為資料分析和挖掘提供原材料。今日t條就是乙隻巨大的 爬蟲 爬蟲由url庫 採集器 解析器組成。如果待爬取的url庫不為空,採集器會自動爬取相關內容,並將結果給到解析器,解析器提取...