text = data.field(sequential=true, tokenize=tokenizer,fix_length=1000,stop_words=stop_words)
label = data.field(sequential=false,use_vocab=false)
torchtext 的元件
field:主要包含以下資料預處理的配置資訊,比如指定分詞方法,是否轉成小寫,起始字元,結束字元,補全字元以及詞典等等
dataset:繼承自pytorch的dataset,用於載入資料,提供了tabulardataset可以指點路徑,格式,field資訊就可以方便的完成資料載入。同時torchtext還提供預先構建的常用資料集的dataset物件,可以直接載入使用,splits方法可以同時載入訓練集,驗證集和測試集。
iterator: 主要是資料輸出的模型的迭代器,可以支援batch定製。
text = data.field(tokenize=data.get_tokenizer('spacy'), init_token='', eos_token='',lower=true)
lable = data.field(squential = false,use_vocab = false)
2.dataset
splits方法可以同時讀取訓練集,驗證集,測試集
tabulardataset可以很方便的讀取csv, tsv, or json格式的檔案,例子如下:
train, val, test = data.tabulardataset.splits( path='./data/',
train='train.tsv', validation='val.tsv', test='test.tsv',
format='tsv', fields=[('text', text), ('label', label)])
載入資料後可以建立詞典,建立詞典的時候可以使用與訓練的word vector
text.build_vocab(train, vectors="glove.6b.100d")
3. iterator完成了分batch的問題
iterator是torchtext到模型的輸出,它提供了我們對資料的一般處理方式,比如打亂,排序,等等,可以動態修改batch大小,這裡也有splits方法 可以同時輸出訓練集,驗證集,測試集,類似dataloader
引數如下:
dataset: 載入的資料集
batch_size: batch 大小.
batch_size_fn: 產生動態的batch大小 的函式
sort_key: 排序的key
train: 是否是乙個訓練集
repeat: 是否在不同epoch中重複迭代
shuffle: 是否打亂資料
sort: 是否對資料進行排序
sort_within_batch: batch內部是否排序
device: 建立batch的裝置 -1:cpu ;0,1 ...:對應的gpu
train_iter, val_iter, test_iter = data.iterator.splits( (train, val, test),
sort_key=lambda x: len(x.text), batch_sizes=(32, 256, 256), device=-1)
4.其他
torchtext提供常用文字資料集,並可以直接載入使用:
train,val,test = datasets.wikitext2.splits(text_field=text)
現在包含的資料集包括: 情感分析資料預處理過程
訓練資料預處理 import numpy as np from sklearn.utils import shuffle import osimport matplotlib.pyplot as plt hotel feedbacks dir hotel feedbacks sentiment al...
情感分析之資料獲取與預處理
資料集資訊 清洗準則索引 清洗類別 資料例項 1含有使用者名稱 資料例項 2小於4字元 你說呢?情感標籤 情感類別 情感細分 1正向情感 建議 感動 支援 緬懷 祝願 同情 開心 慶幸 讚美 反思 0負向情感 質疑 無奈 憤怒 調侃 批判 悲哀 憤慨 惋惜 抱怨 謾罵 憂慮 情感標註完畢後,需要通過...
NLP 中文文字預處理
jieba是乙個專門處理中文分詞的分詞庫,但其實功能比單純的分詞強大許多。中文不同於英文可以通過空格分開每個有意義的詞,對於中文需要乙個工具將完整的文字分割成更細緻的詞語,類似於英文分詞中使用的nltk工具,中文中需要使用jieba。pip install jieba 4.詞性標註 5.tokeni...