แบบจำลองและรหัสต่าง ๆ สำหรับการระบุตัวตนของการถอดความที่ใช้ใน TensorFlow (1.1.0)
ฉันใช้ความระมัดระวังเป็นอย่างยิ่งในการจัดทำเอกสารรหัสและอธิบายสิ่งที่ฉันทำในหลายขั้นตอนตลอดทั้งรุ่น หวังว่ามันจะเป็นรหัสตัวอย่างการสอนสำหรับผู้ที่กำลังมองหา TensorFlow!
จนถึงตอนนี้ repo นี้ได้ดำเนินการ:
พื้นฐานพื้นฐาน LSTM ของสยามซึ่งขึ้นอยู่กับแบบจำลองใน Mueller, Jonas และ Aditya Thyagarajan "สถาปัตยกรรมกำเริบของสยามสำหรับการเรียนรู้ประโยคที่คล้ายคลึงกัน" Aaai (2016)
แบบจำลอง Siamese LSTM ที่มี "เลเยอร์การจับคู่" เพิ่มเติมดังที่อธิบายไว้ใน Liu, Yang และคณะ "การเรียนรู้การอนุมานภาษาธรรมชาติโดยใช้แบบจำลอง LSTM แบบสองทิศทางและความสนใจภายใน" Corr ABS/1605.09090 (2016)
รูปแบบการจับคู่แบบหลายมุมมองแบบทวิภาคีมากขึ้นหรือน้อยกว่าจาก Wang, Zhiguo และคณะ "การจับคู่แบบหลายมุมมองแบบทวิภาคีสำหรับประโยคภาษาธรรมชาติ" Corr ABS/1702.03814 (2017)
PR เพื่อเพิ่มโมเดล / การเพิ่มประสิทธิภาพหรือแพตช์ที่มีอยู่นั้นเป็นมากกว่าการต้อนรับ! ส่วนใหญ่ของรหัสโมเดลอยู่ใน duplicate_questions/models
รหัสการประมวลผลข้อมูลจำนวนมากมาจาก / แรงบันดาลใจจาก Allenai / Deep_Qa ลองตรวจสอบว่าคุณชอบวิธีการที่โครงการนี้มีโครงสร้าง!
โครงการนี้ได้รับการพัฒนาในและได้รับการทดสอบใน Python 3.5 (น่าจะใช้งานได้กับ Python รุ่นอื่น ๆ ) และข้อกำหนดของแพ็คเกจอยู่ใน requirements.txt
เพื่อติดตั้งข้อกำหนด:
pip install -r requirements.txt
โปรดทราบว่าหลังจากติดตั้งข้อกำหนดคุณต้องดาวน์โหลดข้อมูล NLTK ที่จำเป็นโดยเรียกใช้ (ในเชลล์ของคุณ):
python -m nltk.downloader punkt
โปรดทราบว่าไฟล์ requirements.txt ระบุ tensorflow เป็นการพึ่งพาซึ่งเป็นรุ่น CPU-bound ของ TensorFlow หากคุณมี GPU คุณควรถอนการติดตั้ง CPU TensorFlow นี้และติดตั้ง GPU เวอร์ชันโดยการรัน:
pip uninstall tensorflow
pip install tensorflow-gpu
ในการเริ่มต้นให้เรียกใช้สิ่งต่อไปนี้เพื่อสร้างไดเรกทอรีเสริมสำหรับการจัดเก็บข้อมูลโมเดลที่ผ่านการฝึกอบรมและบันทึก:
make aux_dirs
นอกจากนี้หากคุณต้องการใช้เวกเตอร์ถุงมือ pretrain
make glove
ซึ่งจะดาวน์โหลดเวกเตอร์ถุงมือ pretrained ไปยัง data/external/ แยกไฟล์ในไดเรกทอรีเดียวกันนั้น
หากต้องการใช้ข้อมูลคู่คำถาม Quora ดาวน์โหลดชุดข้อมูลจาก Kaggle (อาจต้องใช้บัญชี) วางคลังเก็บซิปที่ดาวน์โหลดไว้ใน data/raw/ และแยกไฟล์ไปยังไดเรกทอรีเดียวกันนั้น
จากนั้นเรียกใช้:
make quora_data
เพื่อทำความสะอาดโดยอัตโนมัติและประมวลผลข้อมูลด้วยสคริปต์ใน scripts/data/quora
ในการฝึกอบรมโมเดลหรือโหลด + ทำนายด้วยโมเดลจากนั้นเรียกใช้สคริปต์ใน scripts/run_model/ ด้วย python <script_path> คุณสามารถรับเอกสารเพิ่มเติมเกี่ยวกับพารามิเตอร์ที่ใช้โดยใช้ python <script_path> -h
นี่คือตัวอย่างคำสั่งเรียกใช้สำหรับพื้นฐานสยาม Bilstm:
python scripts/run_model/run_siamese.py train --share_encoder_weights --model_name=baseline_siamese --run_id=0
นี่คือตัวอย่างคำสั่งเรียกใช้สำหรับ Siamese Bilstm พร้อมเลเยอร์การจับคู่:
python scripts/run_model/run_siamese_matching_bilstm.py train --share_encoder_weights --model_name=siamese_matching --run_id=0
นี่คือตัวอย่างคำสั่งเรียกใช้สำหรับรุ่น bimpm:
python scripts/run_model/run_bimpm.py train --early_stopping_patience=5 --model_name=biMPM --run_id=0
โปรดทราบว่าค่าเริ่มต้นอาจไม่เหมาะสำหรับการใช้งานของคุณดังนั้นอย่าลังเลที่จะหมุนลูกบิดตามที่คุณต้องการ
คุณมีแนวคิดเกี่ยวกับวิธีการปรับปรุง repo นี้หรือไม่? มีคำขอคุณสมบัติรายงานข้อผิดพลาดหรือแพตช์หรือไม่? อย่าลังเลที่จะเปิดปัญหาหรือประชาสัมพันธ์เนื่องจากฉันยินดีที่จะแก้ไขปัญหาและดูคำขอดึง
├── 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.