在照搬別人的引數時候,nn.lsmt中有乙個引數,batch_first,對它設定了true,於是分數直接下降了70個點。查閱過之後,發現是nn.lstm中的batch_first是指它接受輸入時,會將第一維的位置,認為是batch。為了驗證寫了乙個小例子。
為了方便觀察,設定了batch為4,句子最長長度為11
file_path="e:/study_series/2020_3_data/data/corpus/"
train_iter, valid_iter, test_iter,text=generate_data(file_path)
a=list(train_iter)
如下圖所示,為讀入的乙個批次樣本
## 定義lstm
hidden_dim=64
lstm=nn.lstm(emb_dim, hidden_dim,batch_first=false)
#lstm=nn.lstm(emb_dim, hidden_dim)
## 資料過一層embedding
embedding_data=embedding(a[0].context.cpu())
print(embedding_data.shape)
## 上一層的輸入再過lstm
lstm_data,_=lstm(embedding_data)
print(lstm_data.shape)
print(lstm_data[:,-1,:])
**除錯發現,batch_first的值會對最後結構有很大的不同。猜測是對資料的結構進行了不同的理解。
文字分類 libsvm
關於 libsvm 的介紹以及相關 網上很多,感興趣可以找找。這是libsvm 這裡主要是針對之前學習過的幾種特徵篩選演算法用 libsvm 進行比較。採用搜狗實驗室的資料,選擇商業類文字 1001 篇,娛樂類文字 1208 篇,測試集 29904 篇。分別採用文件頻次,卡方分布,互資訊,資訊增益來...
文字分類四
下面是使用knn演算法來做的。資料均是由前面的程式生成的。做完這個之後,就是將每一步整合起來。然後再盡可能的優化,使得程式效率更好。然後可以嘗試不同的特徵選擇演算法和分類演算法,當然最後要是能有自己的一些小小改進就好了。不過至少有了乙個還可以的結果了。include include include ...
文字分類概論
通過新增特定規則做分類任務,費時費力,覆蓋的範圍和準確率都非常有限。維護停用詞表 包括高頻的代詞連詞介詞等 特徵提取過程中刪除停用表 現的詞等 1.詞袋模型 one hot編碼 缺點 高緯度 高稀疏 無法編碼上下文的關聯資訊,無法表達語義資訊。2.向量空間模型 通過特徵選擇降低維度,特徵權重計算增加...