Fountain เป็นเครื่องมือเสริมข้อมูลภาษาธรรมชาติที่ช่วยให้นักพัฒนาสร้างและขยายชุดข้อมูลการฝึกอบรมแชทบอทเฉพาะโดเมนสำหรับอัลกอริธึมการเรียนรู้ของเครื่อง
ในการสร้างผู้ช่วย AI ที่ดีขึ้น เราจำเป็นต้องมีข้อมูลเพิ่มเติม โมเดลที่ดีกว่านั้นไม่เพียงพอ
ระบบ NLU ส่วนใหญ่กำหนดให้ป้อนข้อความค้นหาที่เป็นไปได้หลายพันรายการซึ่งผู้ใช้ในอนาคตอาจใช้ และใส่คำอธิบายประกอบทุกส่วนของประโยคที่สามารถระบุความตั้งใจของผู้ใช้ได้ โดยทั่วไปจะเป็นกระบวนการที่ต้องดำเนินการด้วยตนเองที่วุ่นวายและน่าเบื่อ Fountain มุ่งหวังที่จะช่วยให้นักพัฒนาดำเนินกระบวนการนี้ได้อย่างราบรื่น และสร้างตัวอย่างการฝึกอบรมจำนวนมากเพื่อให้ง่ายต่อการฝึกอบรมและสร้างระบบแชทบอทที่แข็งแกร่ง
เครื่องมือนี้มีจุดมุ่งหมายเพื่อให้ง่ายต่อการสร้างชุดข้อมูลเดียวกันสำหรับเอ็นจิ้นที่มีจุดประสงค์ต่างกัน (Alexa ของ Amazon, API.ai ของ Google, Wit ของ Facebook, Luis ของ Microsoft) ในขณะนี้ เครื่องมือจะสร้างชุดข้อมูลการฝึกอบรมที่เข้ากันได้กับรูปแบบ RasaNLU
คุณสามารถติดตั้งแพ็คเกจผ่าน:
$ pip install git+git://github.com/tzano/fountain.git
ติดตั้งการพึ่งพา:
$ pip install -r requirements.txt
Fountain ใช้เทมเพลต YAML
ที่มีโครงสร้าง นักพัฒนาสามารถกำหนดขอบเขตความตั้งใจผ่าน template
พร้อมคำจำกัดความไวยากรณ์ เจตนาทุกประการควรมี sample utterances
ที่กระตุ้นให้เกิดการกระทำอย่างน้อย 1 คำ ข้อความค้นหาประกอบด้วยแอตทริบิวต์ที่ระบุความตั้งใจของผู้ใช้ ข้อมูลสำคัญเหล่านี้เรียกว่า slots
เรารวมตัวอย่างที่แตกต่างกันเพื่อให้สามารถสร้างชุดข้อมูลได้
เราใช้การดำเนินการสามประการ:
{slot_name:slot_type}
): ใช้ในการประกาศรูปแบบสล็อต( first_word | second_word )
): ใช้เพื่อจัดเตรียมชุดคำหลัก คำเหล่านี้อาจเป็นคำพ้องความหมาย (เช่น มีความสุข สนุกสนาน) หรือชื่อเดียวกันที่มีการสะกดต่างกัน (เช่น สี|สี)ตัวอย่างง่ายๆ ของเจตนาจะเป็นดังนี้
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
สิ่งนี้จะสร้าง json file
ต่อไปนี้โดยใช้ to_json
[
{
"entities": [
{
"end": 21,
"entity": "location",
"start": 14,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a cab to airport"
},
{
"entities": [
{
"end": 25,
"entity": "location",
"start": 14,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a cab to city center"
},
{
"entities": [
{
"end": 22,
"entity": "location",
"start": 15,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a taxi to airport"
},
{
"entities": [
{
"end": 26,
"entity": "location",
"start": 15,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a taxi to city center"
}
]
ไฟล์เดียวกันจะสร้าง csv file
ต่อไปนี้โดยใช้ to_csv
intent utterance
book_cab book a cab to airport
book_cab book a cab to city center
book_cab book a taxi to airport
book_cab book a taxi to city center
ไลบรารีรองรับประเภทสล็อต (เอนทิตี) ที่กำหนดไว้ล่วงหน้าหลายประเภท เพื่อลดความซับซ้อนและเป็นมาตรฐานในการจดจำข้อมูลในช่อง
เอนทิตีเหล่านี้ได้รับการรวบรวมจากแหล่งข้อมูลโอเพ่นซอร์สที่แตกต่างกัน
วันที่และเวลา
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
ที่ตั้ง
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
ประชากร
FOUNTAIN:FAMOUSPEOPLE
ในการสร้างประเภทข้อมูลบิวท์อิน Fountain's
เราได้ประมวลผลข้อมูลจากแหล่งข้อมูลต่อไปนี้:
คุณสามารถโหลดและแยกวิเคราะห์เทมเพลต DSL และส่งออกชุดข้อมูลที่สร้างขึ้น (รูปแบบ Rasa) ได้อย่างง่ายดาย
คุณสามารถค้นหาตัวอย่างนี้ได้ภายใต้ไดเร็กทอรี labs
# DataGenerator
data_generator = DataGenerator()
# load template
template_fname = '<file>.yaml'
# parse the DSL template
results = data_generator.parse(template_fname)
# export to csv file
data_generator.to_csv('results.csv')
# export to csv file
data_generator.to_json('results.json')
pytest
คุณสามารถดูตัวอย่างเกี่ยวกับวิธีใช้ไลบรารีได้ในโฟลเดอร์ labs
คุณสามารถเพิ่มชุดข้อมูลบิวท์อินได้โดยการเพิ่มไฟล์เพิ่มเติมภายใต้ data/<language>/*files*.csv
ตรวจสอบให้แน่ใจว่าได้สร้างดัชนีไฟล์ที่คุณแทรกใน resources/builtin.py
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแชทบอทและความเข้าใจภาษาธรรมชาติ โปรดไปที่ลิงก์ใดลิงก์หนึ่งต่อไปนี้:
Fountain
เพื่อสร้างตัวอย่างมากกว่า 20,000 ตัวอย่าง ไฟล์ Yaml มีอยู่ที่นี่ หากคุณกำลังประสบปัญหา โปรดแจ้งให้เราทราบหรือส่งคำขอดึงข้อมูล
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT