✅ วิธีที่ 1: ใช้ Natural.js (Naïve Bayes Classifier)
📌 1 ติดตั้งแพ็กเกจที่ต้องใช้
npm install express natural cors
📌 2 สร้างและบันทึกโมเดล (trainNatural.js)
const natural = require('natural');
const fs = require('fs');
const classifier = new natural.BayesClassifier();
// 🔥 เพิ่มข้อมูล Train
classifier.addDocument("จ่ายเงินต้องไปตึกไหน", "ไปจ่ายเงินที่ตึก ร");
classifier.addDocument("ต้องไปจ่ายเงินที่ไหน", "ไปจ่ายเงินที่ตึก ร");
classifier.addDocument("เปิดทำการวันไหน", "เปิดทำการจันทร์-ศุกร์ 8.00-17.00 น.");
classifier.addDocument("เปิดกี่โมง", "เปิดทำการจันทร์-ศุกร์ 8.00-17.00 น.");
classifier.train();
// ✅ บันทึก Model ไว้ใช้งาน
classifier.save('natural_model.json', function(err) {
if (!err) console.log("✅ โมเดลถูกบันทึกแล้ว: natural_model.json");
});
📌 3 สร้าง API ให้เรียกใช้งาน (serverNatural.js)
const express = require('express');
const cors = require('cors');
const natural = require('natural');
const fs = require('fs');
const app = express();
app.use(cors());
app.use(express.json());
let classifier = new natural.BayesClassifier();
// ✅ โหลด Model ที่บันทึกไว้
fs.readFile('natural_model.json', (err, data) => {
if (!err) {
classifier = natural.BayesClassifier.restore(JSON.parse(data));
console.log("✅ โหลดโมเดลสำเร็จ!");
}
});
// 🔥 สร้าง API ให้เรียกใช้
app.post('/ask', (req, res) => {
const question = req.body.question;
const answer = classifier.classify(question) || "ขออภัย ไม่พบคำตอบ";
res.json({ question, answer });
});
app.listen(3000, () => console.log("🚀 Natural.js API ทำงานที่ http://localhost:3000"));
📌 4 ทดสอบ API
curl -X POST http://localhost:3000/ask -H "Content-Type: application/json" -d '{"question":"จ่ายเงิน"}'
✅ วิธีที่ 2: ใช้ TensorFlow.js (Deep Neural Network)
📌 1 ติดตั้งแพ็กเกจที่ต้องใช้
npm install express @tensorflow/tfjs-node @nlpjs/lang-thai cors
📌 2 สร้างและบันทึกโมเดล (trainTensor.js)
const tf = require('@tensorflow/tfjs-node');
const { Language } = require('@nlpjs/lang-thai');
const fs = require('fs');
// 🔥 สร้าง Tokenizer ภาษาไทย
const tokenizer = new Language();
const trainingData = [
{ question: "จ่ายเงินต้องไปตึกไหน", answer: "ไปจ่ายเงินที่ตึก ร" },
{ question: "ต้องไปจ่ายเงินที่ไหน", answer: "ไปจ่ายเงินที่ตึก ร" },
{ question: "เปิดทำการวันไหน", answer: "เปิดทำการจันทร์-ศุกร์ 8.00-17.00 น." },
{ question: "เปิดกี่โมง", answer: "เปิดทำการจันทร์-ศุกร์ 8.00-17.00 น." },
];
const words = [];
const labels = [];
trainingData.forEach((data) => {
words.push(...tokenizer.tokenize(data.question));
labels.push(data.answer);
});
const model = tf.sequential();
model.add(tf.layers.dense({ units: 8, inputShape: [words.length], activation: 'relu' }));
model.add(tf.layers.dense({ units: 8, activation: 'relu' }));
model.add(tf.layers.dense({ units: labels.length, activation: 'softmax' }));
model.compile({ optimizer: 'adam', loss: 'categoricalCrossentropy', metrics: ['accuracy'] });
const trainModel = async () => {
await model.fit(tf.tensor2d([0, 1, 1, 0]), tf.tensor2d([1, 0, 0, 1]), { epochs: 100 });
await model.save('file://./tensorflow_model');
console.log("✅ โมเดล TensorFlow.js ถูกบันทึกแล้ว!");
};
trainModel();
📌 3 ทดสอบ API
curl -X POST http://localhost:3001/ask -H "Content-Type: application/json" -d '{"question":"เปิดกี่โมง"}'
📌 สรุป
วิธี | การบันทึกโมเดล | เรียกใช้งาน | เหมาะสำหรับ |
---|---|---|---|
Natural.js | บันทึกเป็น natural_model.json | ใช้ natural.BayesClassifier.restore() โหลดโมเดล | ระบบ FAQ ที่ต้องการให้เรียนรู้แบบง่ายๆ |
TensorFlow.js | บันทึกเป็น tensorflow_model/ | ใช้ tf.loadLayersModel() โหลดโมเดล | ระบบที่ต้องการ AI ที่แม่นยำขึ้นและรองรับข้อมูลที่ซับซ้อน |