Proyek Generasi Judul Berita GPT2 Dengan Anotasi Super Rinci
Jalankan kode
streamlit run app.py
or
streamlit run app.py --server.port your_port
Detailnya ditunjukkan pada gambar di bawah ini:


| data | Data/alamat proyek asli | Alamat unduhan file setelah diproses |
|---|---|---|
| Data Berita Tsinghua | alamat | Baidu Cloud Disk Extraction Code: Vhol |
| Data Berita Sogou | alamat | Kode Ekstraksi Disk Cloud Baidu: Ode6 |
| data ringkasan NLPCC2017 | alamat | Kode Ekstraksi Disk Cloud Baidu: E0ZQ |
| data ringkasan CSL | alamat | Baidu Cloud Disk Extraction Code: 0qot |
| Data Ringkasan Industri Pendidikan dan Pelatihan | alamat | Baidu Cloud Disk Extraction Code: KJZ3 |
| Data Ringkasan LCSS | alamat | Baidu Cloud Disk Extraction Code: BZOV |
| SHENCE CUP 2018 Data Ringkasan | alamat | Baidu Cloud Disk Extraction Code: 6F4F |
| Data ringkasan wanfang | alamat | Baidu Cloud Disk Extraction Code: P69G |
| WeChat Resmi Ringkasan Data | alamat | Baidu Cloud Disk Extraction Code: 5has |
| Data Weibo | alamat | Kode Ekstraksi Disk Cloud Baidu: 85T5 |
| NEWS2016ZH Data Berita | alamat | Baidu Cloud Disk Extraction Code: QSJ1 |
Koleksi Dataset: Baidu Cloud Disk Extraction Code: 7M8
Lihat file persyaratan.txt untuk detailnya
Data berasal dari Sina Weibo, tautan data: https://www.jianshu.com/p/8f52352f0748?tdsourcetag=s_pcqq_aiomsg
| Deskripsi data | Alamat unduhan |
|---|---|
| Data mentah | Baidu Netdisk, Kode Ekstrak: NQZI |
| Data yang diproses | Baidu Netdisk, Kode Ekstrak: Duba |
Data asli adalah data berita yang diunduh langsung dari internet. Setelah diproses, data diproses data menggunakan data_helper.py dan dapat langsung digunakan untuk pelatihan.
Lihat file config/config.json untuk detailnya
| parameter | nilai |
|---|---|
| initializer_range | 0,02 |
| layer_norm_epsilon | 1E-05 |
| n_ctx | 512 |
| n_embd | 768 |
| n_head | 12 |
| n_layer | 6 |
| n_positions | 512 |
| vocab_size | 13317 |
Catatan: Selain representasi vektor dari setiap kata, input model juga mencakup representasi vektor paragraf teks dan representasi vektor posisi. 
| Model | Alamat unduhan |
|---|---|
| Model GPT2 | Baidu Netdisk, Kode Ekstraksi: 165b |
python3 train.py
或
python3 train.py --output_dir output_dir/(自定义保存模型路径)
Parameter pelatihan dapat ditambahkan sendiri, termasuk parameter sebagai berikut:
| parameter | jenis | nilai default | menggambarkan |
|---|---|---|---|
| perangkat | str | "0" | Siapkan kartu grafis yang digunakan untuk pelatihan atau pengujian |
| config_path | str | "config/config.json" | Informasi konfigurasi parameter model |
| vocab_path | str | "Vocab/Vocab.txt" | Daftar kata adalah daftar kata kecil dan telah menambahkan beberapa tanda baru |
| train_file_path | str | "data_dir/train_data.json" | Data pelatihan yang dihasilkan oleh judul berita |
| test_file_path | str | "data_dir/test_data.json" | Data uji yang dihasilkan oleh judul berita |
| pretrained_model_path | str | Tidak ada | Jalur ke model GPT2 pra-terlatih |
| data_dir | str | "data_dir" | Menghasilkan jalur penyimpanan data yang di -cache |
| num_train_epochs | int | 5 | Jumlah putaran untuk pelatihan model |
| train_batch_size | int | 16 | Ukuran setiap batch selama pelatihan |
| test_batch_size | int | 8 | Ukuran setiap batch selama pengujian |
| learning_rate | mengambang | 1E-4 | Tingkat Pembelajaran Selama Pelatihan Model |
| warmup_proporsion | mengambang | 0.1 | Probabilitas pemanasan, yaitu persentase dari total ukuran langkah pelatihan, melakukan operasi pemanasan |
| Adam_epsilon | mengambang | 1E-8 | Nilai Epsilon dari Adam Optimizer |
| LOGGING_STEPS | int | 20 | Jumlah langkah untuk menyimpan log pelatihan |
| eval_steps | int | 4000 | Berapa banyak langkah yang akan dilakukan selama pelatihan? |
| gradient_accumulation_steps | int | 1 | Akumulasi gradien |
| max_grad_norm | mengambang | 1.0 | |
| output_dir | str | "output_dir/" | Jalur output model |
| benih | int | 2020 | Biji acak |
| MAX_LEN | int | 512 | Panjang maksimum model input lebih kecil dari n_ctx di konfigurasi |
Atau memodifikasi konten fungsi set_args dalam file train.py untuk memodifikasi nilai default.
Model yang disediakan oleh proyek ini telah melatih 5 zaman, dan kehilangan pelatihan model dan kehilangan tes adalah sebagai berikut: 

Model belum sepenuhnya dilatih. Menurut tren kerugian, Anda dapat terus berlatih.
python3 generate_title.py
或
python3 generate_title.py --top_k 3 --top_p 0.9999 --generate_max_len 32
Parameter dapat ditambahkan sendiri, termasuk parameter sebagai berikut:
| parameter | jenis | nilai default | menggambarkan |
|---|---|---|---|
| perangkat | str | "0" | Siapkan kartu grafis yang digunakan untuk pelatihan atau pengujian |
| model_path | str | "output_dir/checkpoint-139805" | Path File Model |
| vocab_path | str | "Vocab/Vocab.txt" | Daftar kata adalah daftar kata kecil dan telah menambahkan beberapa tanda baru |
| Batch_Size | int | 3 | Jumlah judul yang dihasilkan |
| generate_max_len | int | 32 | Panjang maksimum judul yang dihasilkan |
| Repetition_penalty | mengambang | 1.2 | Tingkat penalti berulang |
| top_k | int | 5 | Berapa banyak tag dengan probabilitas tertinggi untuk mempertahankan selama decoding |
| top_p | mengambang | 0.95 | Penanda yang probabilitas retensi yang lebih besar dari apa yang akumulasi probabilitas retensi selama decoding |
| MAX_LEN | int | 512 | Panjang maksimum model input lebih kecil dari n_ctx di konfigurasi |
Hasil tes adalah sebagai berikut:
从测试集中抽一篇
content:
今日,中国三条重要高铁干线——兰新高铁、贵广铁路和南广铁路将开通运营。其中兰新高铁是中国首条高原高铁,全长1776公里,最高票价658元。贵广铁路最贵车票320元,南广铁路最贵车票206.5元,这两条线路大大缩短西南与各地的时空距离。出行更方便了!中国“高铁版图”再扩容 三条重要高铁今日开通
title:
生成的第1个标题为:中国“高铁版图”再扩容 三条重要高铁今日开通
生成的第2个标题为:贵广铁路最高铁版图
生成的第3个标题为:出行更方便了!中国“高铁版图”再扩容三条重要高铁今日开通
从网上随便找一篇新闻
content:
值岁末,一年一度的中央经济工作会议牵动全球目光。今年的会议,背景特殊、节点关键、意义重大。12月16日至18日。北京,京西宾馆。站在“两个一百年”奋斗目标的历史交汇点上,2020年中央经济工作会议谋划着中国经济发展大计。习近平总书记在会上发表了重要讲话,深刻分析国内外经济形势,提出2021年经济工作总体要求和政策取向,部署重点任务,为开局“十四五”、开启全面建设社会主义现代化国家新征程定向领航。
title:
生成的第1个标题为:习近平总书记在京会上发表重大计划 提出2025年经济工作总体要求和政策
生成的第2个标题为:习近平总书记在会上发表重要讲话
生成的第3个标题为:习近平总书记在会上发表重要讲话,深刻分析国内外经济形势
Decoding mengadopsi strategi decoding top_k dan top_p, yang memiliki keacakan tertentu dan dapat dihasilkan berulang kali.
python3 http_server.py
或
python3 http_server.py --http_id "0.0.0.0" --port 5555
Tes lokal menggunakan "127.0.0.1:5555/news-title-generate". Jika Anda memberikan akses orang lain, Anda hanya perlu mengganti "127.0.0.1" dengan alamat IP komputer.
Detailnya ditunjukkan pada gambar di bawah ini:


@misc{GPT2-NewsTitle,
author = {Cong Liu},
title = {Chinese NewsTitle Generation Project by GPT2},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
url="https://github.com/liucongg/GPT2-NewsTitle",
}
E-mail: [email protected]
Zhihu: Liu Cong NLP
Akun Resmi: NLP Workstation
