将准备好的训练数据传递到NLP模型。
chariot的Python项目详细描述
战车
将准备好的训练数据传送到NLP模型。
- 准备数据集
- 您可以通过chazutsu准备典型的nlp数据集。
- 生成并运行预处理
- 您可以像scikit-learn Pipeline那样构建预处理管道。
- 每个数据集列的预处理由Joblib并行执行。
- spaCy支持多语言文本标记化。
- 格式化批处理
- 从预处理的数据集中对批进行采样并格式化以训练模型(填充等)。
- 您可以通过chakin使用预先训练的词向量。
cariot使您能够集中精力训练您的模型!
安装
pip install chariot
准备数据集
您可以使用chazutsu下载各种数据集。
importchazutsufromchariot.storageimportStoragestorage=Storage("your/data/root")r=chazutsu.datasets.MovieReview.polarity().download(storage.data_path("raw"))df=storage.chazutsu(r.root).data()df.head(5)
然后
polarity review
0 0 synopsis : an aging master art thief , his sup...
1 0 plot : a separated , glamorous , hollywood cou...
2 0 a friend invites you to a movie . this film wo...
Storage
类管理cookie-cutter datascience之后的目录结构。
Project root
└── data
├── external <- Data from third party sources (ex. word vectors).
├── interim <- Intermediate data that has been transformed.
├── processed <- The final, canonical datasets for modeling.
└── raw <- The original, immutable data dump.
生成并运行预处理
构建预处理管道
所有预处理器都在chariot.transformer
定义。
变压器通过扩展scikit-learn ^{
因此,transformer的api对您很熟悉。你可以混合scikit-learn's preprocessors。
importchariot.transformerasctfromchariot.preprocessorimportPreprocessorpreprocessor=Preprocessor()preprocessor\ .stack(ct.text.UnicodeNormalizer())\ .stack(ct.Tokenizer("en"))\ .stack(ct.token.StopwordFilter("en"))\ .stack(ct.Vocabulary(min_df=5,max_df=0.5))\ .fit(train_data)preprocessor.save("my_preprocessor.pkl")loaded=Preprocessor.load("my_preprocessor.pkl")
战车内备有6种变形金刚。
- 文本预处理器
- 在标记化之前预处理文本。
TextNormalizer
:规范文本(替换某些字符等)。TextFilter
:过滤文本(删除文本stc中的一些跨距)。
- 标记器
- 令牌预处理器
- 标记化后规范化/过滤标记。
TokenNormalizer
:规范化标记(降低、原始形式等)。TokenFilter
:过滤标记(仅提取名词等)。
- 词汇
- 制作词汇表并将标记转换为索引。
- 格式化程序
- 格式化(预处理)数据以训练模型。
- 发电机
- 生成目标数据以训练(语言)模型。
为数据集构建预处理
当您想对每个数据集列进行预处理时,可以使用DatasetPreprocessor
。
fromchariot.dataset_preprocessorimportDatasetPreprocessorfromchariot.transformer.formatterimportPaddingdp=DatasetPreprocessor()dp.process("review")\ .by(ct.text.UnicodeNormalizer())\ .by(ct.Tokenizer("en"))\ .by(ct.token.StopwordFilter("en"))\ .by(ct.Vocabulary(min_df=5,max_df=0.5))\ .by(Padding(length=pad_length))\ .fit(train_data["review"])dp.process("polarity")\ .by(ct.formatter.CategoricalLabel(num_class=3))preprocessed=dp.preprocess(data)# DatasetPreprocessor has multiple preprocessor.# Because of this, save file format is `tar.gz`.dp.save("my_dataset_preprocessor.tar.gz")loaded=DatasetPreprocessor.load("my_dataset_preprocessor.tar.gz")
用战车训练您的模特
chariot
具有训练模型的功能。
formatted=dp(train_data).preprocess().format().processedmodel.fit(formatted["review"],formatted["polarity"],batch_size=32,validation_split=0.2,epochs=15,verbose=2)
forbatchindp(train_data.preprocess().iterate(batch_size=32,epoch=10):model.train_on_batch(batch["review"],batch["polarity"])
您可以通过chakin使用预先训练的词向量。
fromchariot.storageimportStoragefromchariot.transformer.vocabularyimportVocabulary# Download word vectorstorage=Storage("your/data/root")storage.chakin(name="GloVe.6B.50d")# Make embedding matrixvocab=Vocabulary()vocab.set(["you","loaded","word","vector","now"])embed=vocab.make_embedding(storage.data_path("external/glove.6B.50d.txt"))print(embed.shape)# (len(vocab.count), 50)