Berbagai model dan kode untuk identifikasi parafrase diimplementasikan dalam TensorFlow (1.1.0).
Saya sangat berhati -hati untuk mendokumentasikan kode dan menjelaskan apa yang saya lakukan di berbagai langkah di seluruh model; Semoga ini akan menjadi kode contoh didaktik bagi mereka yang ingin memulai dengan TensorFlow!
Sejauh ini, repo ini telah diimplementasikan:
Baseline LSTM Siam dasar, secara longgar didasarkan pada model di Mueller, Jonas dan Aditya Thyagarajan. "Arsitektur berulang Siam untuk belajar kesamaan kalimat." Aaai (2016).
Model LSTM Siamese dengan "lapisan pencocokan" tambahan, seperti yang dijelaskan dalam Liu, Yang et al. "Mempelajari inferensi bahasa alami menggunakan model LSTM dua arah dan perhatian dalam." CORR ABS/1605.09090 (2016).
Model pencocokan multi-perspektif bilateral yang lebih atau kurang atau kurang dari seni dari Wang, Zhiguo et al. "Pencocokan multi-perspektif bilateral untuk kalimat bahasa alami." CORR ABS/1702.03814 (2017).
PR untuk menambahkan lebih banyak model / mengoptimalkan atau menambal yang ada lebih dari disambut! Sebagian besar kode model berada di duplicate_questions/model
Banyak kode pemrosesan data diambil dari / terinspirasi oleh Allenai / Deep_qa, periksa jika Anda suka bagaimana proyek ini disusun!
Proyek ini dikembangkan dan telah diuji pada Python 3.5 (kemungkinan tidak berfungsi dengan versi Python lainnya), dan persyaratan paket dalam requirements.txt .
Untuk menginstal persyaratan:
pip install -r requirements.txt
Perhatikan bahwa setelah menginstal persyaratan, Anda harus mengunduh data NLTK yang diperlukan dengan menjalankan (di shell Anda):
python -m nltk.downloader punkt
Perhatikan bahwa file requirements.txt Menentukan tensorflow sebagai ketergantungan, yang merupakan versi TensorFlow yang terikat CPU. Jika Anda memiliki GPU, Anda harus menghapus instalan CPU TensorFlow ini dan menginstal versi GPU dengan menjalankan:
pip uninstall tensorflow
pip install tensorflow-gpu
Untuk memulai, jalankan yang berikut untuk menghasilkan direktori tambahan untuk menyimpan data, model terlatih, dan log:
make aux_dirs
Selain itu, jika Anda ingin menggunakan vektor sarung tangan pretrained, jalankan:
make glove
yang akan mengunduh vektor sarung tangan pretrained ke data/external/ . Ekstrak file di direktori yang sama.
Untuk menggunakan data pasangan pertanyaan Quora, unduh dataset dari Kaggle (mungkin memerlukan akun). Tempatkan arsip ZIP yang diunduh dalam data/raw/ , dan ekstrak file ke direktori yang sama.
Lalu, jalankan:
make quora_data
Untuk secara otomatis membersihkan dan memproses data dengan skrip dalam scripts/data/quora .
Untuk melatih model atau memuat + memprediksi dengan model, kemudian jalankan skrip dalam scripts/run_model/ dengan python <script_path> . Anda bisa mendapatkan dokumentasi tambahan tentang parameter yang mereka ambil dengan menjalankan python <script_path> -h
Berikut adalah contoh perintah jalankan untuk bilstm Siam Baseline:
python scripts/run_model/run_siamese.py train --share_encoder_weights --model_name=baseline_siamese --run_id=0
Berikut adalah contoh perintah jalankan untuk bilstm siam dengan lapisan yang cocok:
python scripts/run_model/run_siamese_matching_bilstm.py train --share_encoder_weights --model_name=siamese_matching --run_id=0
Berikut adalah contoh perintah jalankan untuk model BIMPM:
python scripts/run_model/run_bimpm.py train --early_stopping_patience=5 --model_name=biMPM --run_id=0
Perhatikan bahwa default mungkin tidak ideal untuk Anda gunakan, jadi jangan ragu untuk memutar tombol sesuka Anda.
Apakah Anda memiliki ide tentang cara meningkatkan repo ini? Punya permintaan fitur, laporan bug, atau tambalan? Jangan ragu untuk membuka masalah atau PR, karena saya senang mengatasi masalah dan melihat permintaan tarik.
├── LICENSE
├── Makefile <- Makefile with commands like `make data` or `make train`
├── README.md <- The top-level README for developers using this project.
├── data
│ ├── external <- Data from third party sources.
│ ├── interim <- Intermediate data that has been transformed.
│ ├── processed <- The final, canonical data sets for modeling.
│ └── raw <- Original immutable data (e.g. Quora Question Pairs).
|
├── logs <- Logs from training or prediction, including TF model summaries.
│
├── models <- Serialized models.
|
├── requirements.txt <- The requirements file for reproducing the analysis environment
│
├── duplicate_questions<- Module with source code for models and data.
│ ├── data <- Methods and classes for manipulating data.
│ │
│ ├── models <- Methods and classes for training models.
│ │
│ └── util <- Various helper methods and classes for use in models.
│
├── scripts <- Scripts for generating the data
│ ├── data <- Scripts to clean and split data
│ │
│ └── run_model <- Scripts to train and predict with models.
│
└── tests <- Directory with unit tests.