quick-nlp:基于FastAI的Pytorch NLP库

Song • 293 次浏览 • 0 个回复 • 2018年11月11日

一、Quick NLP简介

Quick NLP是一个深受学习的nlp库,受到fast.ai库的启发。他所有的apifastai相同并且可以快速运行nlp模型。

二、特征

安装

需要安装fast.ai库。请使用此处的说明进行安装。注意是使用最新版本的fast.ai而不是最新版本的pip版本。

根据fasta.ai说明设置环境后,克隆quick-nlp repo并使用pip install安装软件包,如下所示:

git clone https://github.com/outcastofmusic/quick-nlp
cd quick-nlp
pip install .

1、Docker镜像

使用docker镜像安装最新版本:

docker run --runtime nvidia -it -p 8888:8888 --mount type=bind,source="$(pwd)",target=/workspace agispof/quicknlp:latest

这会将您当前的目录挂载到/workspace并在该目录中启动一个jupyter会话

用法示例

quick-nlp的主要目标是为seq2seq模型提供fast.ai库的简单界面。

例如,假设我们有一个dataset_path,其中包含用于培训,验证文件的文件夹。每个文件都是一个tsv文件,其中每行是由选项卡分隔的两个句子。例如,train文件夹中的文件可以是eng_to_fr.tsv文件,其中包含以下前几行:

Go. Va !
Run!        Cours !
Run!        Courez !
Wow!        Ça alors !
Fire!       Au feu !
Help!       À l'aide !
Jump.       Saute.
Stop!       Ça suffit !
Stop!       Stop !
Stop!       Arrête-toi !
Wait!       Attends !
Wait!       Attendez !
I see.      Je comprends.

从目录中加载数据非常简单:

from fastai.plots import *
from torchtext.data import Field
from fastai.core import SGD_Momentum
from fastai.lm_rnn import seq2seq_reg
from quicknlp import SpacyTokenizer, print_batch, S2SModelData
INIT_TOKEN = "<sos>"
EOS_TOKEN = "<eos>"
DATAPATH = "dataset_path"
fields = [
    ("english", Field(init_token=INIT_TOKEN, eos_token=EOS_TOKEN, tokenize=SpacyTokenizer('en'), lower=True)),
    ("french", Field(init_token=INIT_TOKEN, eos_token=EOS_TOKEN, tokenize=SpacyTokenizer('fr'), lower=True))

]
batch_size = 64
data = S2SModelData.from_text_files(path=DATAPATH, fields=fields,
                                    train="train",
                                    validation="validation",
                                    source_names=["english", "french"],
                                    target_names=["french"],
                                    bs= batch_size
                                   )

最后,使用使用如下方法执行训练seq2seq模型:

emb_size = 300
nh = 1024
nl = 3
learner = data.get_model(opt_fn=SGD_Momentum(0.7), emb_sz=emb_size,
                         nhid=nh,
                         nlayers=nl,
                         bidir=True,
                        )
clip = 0.3
learner.reg_fn = reg_fn
learner.clip = clip
learner.fit(2.0, wds=1e-6)

原创文章,转载请注明 :quick-nlp:基于FastAI的Pytorch NLP库 - pytorch中文网
原文出处: https://ptorch.com/news/216.html
问题交流群 :168117787
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
Pytorch是什么?关于Pytorch! pytorch使用google UIS-RNN算法识别出每个人的声音(以92%的准确率 google/uis-rnn)