44
55```
66├── data #样例数据
7- ├── train
8- ├── train.txt #训练数据样例
9- ├── test
10- ├── test.txt #测试数据样例
11- ├── preprocess.py #数据处理程序
7+ ├── train
8+ ├── train.txt #训练数据样例
9+ ├── test
10+ ├── test.txt #测试数据样例
11+ ├── preprocess.py #数据处理程序
12+ ├── data_process #数据一键处理脚本
1213├── __init__.py
1314├── README.md #文档
1415├── model.py #模型文件
@@ -46,13 +47,19 @@ Query 和 Doc 的语义相似性可以用这两个向量的 cosine 距离表示
4647<p >
4748
4849## 数据准备
49- 我们公开了自建的测试集,包括百度知道、ECOM、QQSIM、UNICOM 四个数据集。这里我们选取百度知道数据集来进行训练 。执行以下命令可以获取上述数据集。
50+ BQ是一个智能客服中文问句匹配数据集,该数据集是自动问答系统语料,共有120,000对句子对,并标注了句子对相似度值。数据中存在错别字、语法不规范等问题,但更加贴近工业场景 。执行以下命令可以获取上述数据集。
5051```
51- wget --no-check-certificate https://baidu-nlp.bj.bcebos.com/simnet_dataset-1.0.0.tar.gz
52- tar xzf simnet_dataset-1.0.0.tar.gz
53- rm simnet_dataset-1.0.0.tar.gz
52+ wget https://paddlerec.bj.bcebos.com/dssm%2Fbq.tar.gz
53+ tar xzf dssm%2Fbq.tar.gz
54+ rm -f dssm%2Fbq.tar.gz
55+ ```
56+ 数据集样例:
57+ ```
58+ 请问一天是否都是限定只能转入或转出都是五万。 微众多少可以赎回短期理财 0
59+ 微粒咨询电话号码多少 你们的人工客服电话是多少 1
60+ 已经在银行换了新预留号码。 我现在换了电话号码,这个需要更换吗 1
61+ 每个字段以tab键分隔,第1,2列表示两个文本。第3列表示类别(0或1,0表示两个文本不相似,1表示两个文本相似)。
5462```
55-
5663## 运行环境
5764PaddlePaddle>=1.7.2
5865
@@ -120,21 +127,24 @@ PaddleRec Finish
1201272 . 在data目录下载并解压数据集,命令如下:
121128```
122129cd data
123- wget --no-check-certificate https://baidu-nlp .bj.bcebos.com/simnet_dataset-1.0.0 .tar.gz
124- tar xzf simnet_dataset-1.0.0 .tar.gz
125- rm simnet_dataset-1.0.0 .tar.gz
130+ wget https://paddlerec .bj.bcebos.com/dssm%2Fbq .tar.gz
131+ tar xzf dssm%2Fbq .tar.gz
132+ rm -f dssm%2Fbq .tar.gz
126133```
127- 3 . 本文提供了快速将数据集中的汉字数据处理为可训练格式数据的脚本,您在解压数据集后,可以看见目录中存在一个名为zhidao的文件。然后能可以在python3环境下运行我们提供的preprocess. py文件。即可生成可以直接用于训练的数据目录test.txt,train.txt和label.txt。将其放入train和test目录下以备训练时调用。命令如下:
134+ 3 . 本文提供了快速将数据集中的汉字数据处理为可训练格式数据的脚本,您在解压数据集后,可以看见目录中存在一个名为bq的目录。将其中的train.txt文件移动到data目录下,然后可以在python3环境下运行我们提供的preprocess. py文件。即可生成可以直接用于训练的数据目录test.txt,train.txt和label.txt。将其放入train和test目录下以备训练时调用。生成时间较长,请耐心等待 。命令如下:
128135```
129- mv data/zhidao ./
130- rm -rf data
136+ mv bq/train.txt ./raw_data.txt
131137python3 preprocess.py
132- rm -f ./train/train.txt
133- mv train.txt ./train
134- rm -f ./test/test.txt
135- mv test.txt test
138+ mkdir big_train
139+ mv train.txt ./big_train
140+ mkdir big_test
141+ mv test.txt ./big_test
136142cd ..
137143```
144+ 也可以使用我们提供的一键数据处理脚本data_process.sh
145+ ```
146+ sh data_process.sh
147+ ```
138148经过预处理的格式:
139149训练集为三个稀疏的BOW方式的向量:query,pos,neg
140150测试集为两个稀疏的BOW方式的向量:query,pos
@@ -144,8 +154,9 @@ label.txt中对应的测试集中的标签
144154
145155将workspace改为您当前的绝对路径。(可用pwd命令获取绝对路径)
146156将dataset_train中的batch_size从8改为128
147- 将文件model.py中的 hit_prob = fluid.layers.slice(prob, axes=[ 0, 1] , starts=[ 0, 0] , ends=[ 8, 1] )
148- 改为hit_prob = fluid.layers.slice(prob, axes=[ 0, 1] , starts=[ 0, 0] , ends=[ 128, 1] ).当您需要改变batchsize的时候,end中第一个参数也需要随之变化
157+ 将hyper_parameters中的slice_end从8改为128.当您需要改变batchsize的时候,这个参数也需要随之变化
158+ 将dataset_train中的data_path改为{workspace}/data/big_train
159+ 将dataset_infer中的data_path改为{workspace}/data/big_test
149160
1501615 . 执行脚本,开始训练.脚本会运行python -m paddlerec.run -m ./config.yaml启动训练,并将结果输出到result文件中。然后启动transform.py整合数据,最后计算出正逆序指标:
151162```
@@ -155,26 +166,14 @@ sh run.sh
155166输出结果示例:
156167```
157168................run.................
158- !!! The CPU_NUM is not specified, you should set CPU_NUM in the environment variable list.
159- CPU_NUM indicates that how many CPUPlace are used in the current task.
160- And if this parameter are set as N (equal to the number of physical CPU core) the program may be faster.
161-
162- export CPU_NUM=32 # for example, set CPU_NUM as number of physical CPU core which is 32.
163-
164- !!! The default number of CPU_NUM=1.
165- I0821 07:16:04.512531 32200 parallel_executor.cc:440] The Program will be executed on CPU using ParallelExecutor, 1 cards are used, so 1 programs are executed in parallel.
166- I0821 07:16:04.515708 32200 build_strategy.cc:365] SeqOnlyAllReduceOps:0, num_trainers:1
167- I0821 07:16:04.518872 32200 parallel_executor.cc:307] Inplace strategy is enabled, when build_strategy.enable_inplace = True
168- I0821 07:16:04.520995 32200 parallel_executor.cc:375] Garbage collection strategy is enabled, when FLAGS_eager_delete_tensor_gb = 0
169- 75
170- pnr: 2.25581395349
171- query_num: 11
172- pair_num: 184 184
173- equal_num: 44
174- 正序率: 0.692857142857
175- 97 43
176- ```
177- 6 . 提醒:因为采取较小的数据集进行训练和测试,得到指标的浮动程度会比较大。如果得到的指标不合预期,可以多次执行步骤5,即可获得合理的指标。
169+ 8989
170+ pnr:2.75621659307
171+ query_num:1369
172+ pair_num:16240 , 16240
173+ equal_num:77
174+ 正序率: 0.733774670544
175+ pos_num: 11860 , neg_num: 4303
176+ ```
178177
179178## 进阶使用
180179
0 commit comments