DeepQa สร้างขึ้นบน Keras เราได้ตัดสินใจแล้วว่า Pytorch เป็นแพลตฟอร์มที่ดีกว่าสำหรับการวิจัย NLP เราเขียนใหม่ DeepQa เป็นห้องสมุด Pytorch ที่เรียกว่า Allennlp จะไม่มีการพัฒนาของ DeepQa อีกต่อไป แต่เราค่อนข้างตื่นเต้นกับ Allennlp - หากคุณกำลังเรียนรู้อย่างลึกซึ้งสำหรับการประมวลผลภาษาธรรมชาติคุณควรตรวจสอบ!
DeepQa เป็นห้องสมุดสำหรับการทำงาน NLP ระดับสูงด้วยการเรียนรู้อย่างลึกซึ้งโดยเฉพาะอย่างยิ่งมุ่งเน้นไปที่การตอบคำถามประเภทต่าง ๆ DeepQa สร้างขึ้นบน Keras และ Tensorflow และสามารถคิดว่าเป็นส่วนต่อประสานกับระบบเหล่านี้ที่ทำให้ NLP ง่ายขึ้น
โดยเฉพาะห้องสมุดนี้ให้ประโยชน์ต่อไปนี้มากกว่า keras / tensorflow ธรรมดา:
DeepQa ถูกสร้างขึ้นโดยใช้ Python 3 วิธีที่ง่ายที่สุดในการตั้งค่าสภาพแวดล้อมที่เข้ากันได้คือการใช้ Conda สิ่งนี้จะตั้งค่าสภาพแวดล้อมเสมือนจริงด้วย Python รุ่นที่แน่นอนที่ใช้สำหรับการพัฒนาพร้อมกับการพึ่งพาทั้งหมดที่จำเป็นในการเรียกใช้ DeepQa
ดาวน์โหลดและติดตั้ง Conda
สร้างสภาพแวดล้อม conda ด้วย Python 3
conda create -n deep_qa python=3.5
ตอนนี้เปิดใช้งานสภาพแวดล้อม Conda
source activate deep_qa
ติดตั้งการพึ่งพาที่ต้องการ
./scripts/install_requirements.sh
ตั้ง PYTHONHASHSEED สำหรับการทดลองที่ทำซ้ำได้
export PYTHONHASHSEED=2157
ตอนนี้คุณควรทดสอบการติดตั้งด้วย pytest -v ยินดีด้วย! ตอนนี้คุณมีสภาพแวดล้อมการพัฒนาสำหรับ Deep_Qa ที่ใช้ tensorflow กับการสนับสนุน CPU (สำหรับการสนับสนุน GPU โปรดดูที่ข้อกำหนด TXT สำหรับข้อมูลเกี่ยวกับวิธีการติดตั้ง tensorflow-gpu )
ในการฝึกอบรมหรือประเมินแบบจำลองโดยใช้โคลนของที่เก็บ DeepQA จุดเริ่มต้นที่แนะนำคือใช้สคริปต์ run_model.py อาร์กิวเมนต์แรกของสคริปต์นั้นคือไฟล์พารามิเตอร์ที่อธิบายเพิ่มเติมด้านล่าง อาร์กิวเมนต์ที่สองกำหนดพฤติกรรมไม่ว่าจะเป็นการฝึกอบรมแบบจำลองหรือประเมินแบบจำลองที่ผ่านการฝึกอบรมกับชุดข้อมูลทดสอบ ตัวเลือกที่ถูกต้องในปัจจุบันสำหรับอาร์กิวเมนต์ที่สองคือ train และ test (การละเว้นการโต้แย้งเหมือนกับ train ผ่าน)
ไฟล์พารามิเตอร์ระบุคลาสโมเดลที่คุณใช้โมเดลไฮเปอร์พารามิเตอร์รายละเอียดการฝึกอบรมไฟล์ข้อมูลรายละเอียดตัวสร้างข้อมูลและสิ่งอื่น ๆ อีกมากมาย คุณสามารถดูไฟล์พารามิเตอร์ตัวอย่างในไดเรกทอรีตัวอย่าง คุณสามารถรับความคิดบางอย่างเกี่ยวกับพารามิเตอร์ที่มีอยู่โดยดูเอกสาร
การฝึกอบรมแบบจำลองจะต้องใช้ไฟล์อินพุตซึ่งคุณต้องให้ เรามีไลบรารีสหาย DeepQA Experiments ซึ่งเดิมออกแบบมาเพื่อสร้างไฟล์อินพุตและเรียกใช้การทดลองและสามารถใช้เพื่อสร้างไฟล์ข้อมูลที่ต้องการสำหรับงานส่วนใหญ่ที่เรามีโมเดลสำหรับ เรากำลังก้าวไปสู่การวางรหัสการประมวลผลข้อมูลลงใน DeepQA โดยตรงดังนั้นการทดลอง DEEPQA นั้นไม่จำเป็น แต่ตอนนี้การได้รับไฟล์ข้อมูลการฝึกอบรมในรูปแบบที่เหมาะสมทำได้ง่ายที่สุดด้วยการทดลอง DeepQA
หากคุณใช้ DeepQa เป็นห้องสมุดในรหัสของคุณเองมันก็ยังคงตรงไปตรงมาในการเรียกใช้โมเดลของคุณ แทนที่จะใช้สคริปต์ run_model.py เพื่อทำการฝึกอบรม/ประเมินผลคุณสามารถทำได้ด้วยตัวเองดังนี้:
from deep_qa import run_model, evaluate_model, load_model, score_dataset
# Train a model given a json specification
run_model("/path/to/json/parameter/file")
# Load a model given a json specification
loaded_model = load_model("/path/to/json/parameter/file")
# Do some more exciting things with your model here!
# Get predictions from a pre-trained model on some test data specified in the json parameters.
predictions = score_dataset("/path/to/json/parameter/file")
# Compute your own metrics, or do beam search, or whatever you want with the predictions here.
# Compute Keras' metrics on a test dataset, using a pre-trained model.
evaluate_model("/path/to/json/parameter/file", ["/path/to/data/file"])
ส่วนที่เหลือของแนวทางการใช้งานตัวอย่าง ฯลฯ นั้นเหมือนกับเมื่อทำงานในโคลนของที่เก็บ
ในการใช้โมเดลใหม่ใน DeepQA คุณต้องใช้ Subclass TextTrainer มีเอกสารเกี่ยวกับสิ่งที่จำเป็นสำหรับเรื่องนี้ ดูโดยเฉพาะอย่างยิ่งส่วนวิธีนามธรรม สำหรับตัวอย่างง่ายๆของโมเดลที่ใช้งานได้อย่างสมบูรณ์ให้ดู Simple Sequence Tagger ซึ่งมีรหัสการใช้งานจริงประมาณ 20 บรรทัด
ในการฝึกอบรมโหลดและประเมินโมเดลที่คุณเขียนด้วยตัวเองเพียงแค่ส่งอาร์กิวเมนต์เพิ่มเติมไปยังฟังก์ชั่นด้านบนและลบพารามิเตอร์ model_class ออกจากข้อกำหนด JSON ของคุณ ตัวอย่างเช่น:
from deep_qa import run_model
from .local_project import MyGreatModel
# Train a model given a json specification (without a "model_class" attribute).
run_model("/path/to/json/parameter/file", model_class=MyGreatModel)
หากคุณทำงานใหม่หรือตัวแปรใหม่ของงานที่มีข้อมูลจำเพาะอินพุต/เอาต์พุตที่แตกต่างกันคุณอาจต้องใช้ประเภท Instance Instance จัดการการอ่านข้อมูลจากไฟล์และแปลงเป็นอาร์เรย์ NumPy ที่สามารถใช้สำหรับการฝึกอบรมและการประเมินผล สิ่งนี้จะต้องเกิดขึ้นเพียงครั้งเดียวสำหรับข้อมูลจำเพาะอินพุต/เอาต์พุตแต่ละรายการ
DeepQA มีการใช้วิธีการที่ทันสมัยสำหรับงานที่หลากหลาย นี่คือบางส่วนของพวกเขา:
รหัสนี้ช่วยให้สามารถทดลองใช้ชุดข้อมูลต่อไปนี้ได้อย่างง่ายดาย:
โปรดทราบว่ารหัสการประมวลผลข้อมูลสำหรับส่วนใหญ่ในปัจจุบันมีชีวิตอยู่ในการทดลอง DEEPQA
หากคุณใช้รหัสนี้และคิดว่าบางสิ่งบางอย่างสามารถปรับปรุงได้การร้องขอการดึงยินดีต้อนรับ การเปิดปัญหาก็โอเคเช่นกัน แต่เราสามารถตอบกลับได้เร็วขึ้นเพื่อดึงคำขอ
รหัสนี้ถูกเผยแพร่ภายใต้ข้อกำหนดของใบอนุญาต Apache 2