Farmer_Training / chatbot.js
rajkhanke's picture
Create chatbot.js (#1)
f0ff02c verified
// Video data structure for recommendations
const videoData = [
{
id: 'XsLIkggkcw4',
title: 'Farming Techniques 101',
description: 'A quick overview of modern farming techniques to boost productivity.',
keywords: ['farming techniques', 'modern farming', 'productivity', 'basics', 'introduction']
},
{
id: 'QxK4YbPrWXk',
title: 'Organic Farming',
description: 'Learn how to switch to organic methods for sustainable agriculture.',
keywords: ['organic', 'sustainable', 'natural farming', 'eco-friendly']
},
{
id: 'Z9HAy9EYKKs',
title: 'Irrigation Systems',
description: 'Explore different irrigation systems and their benefits.',
keywords: ['irrigation', 'water management', 'watering systems', 'farm water']
},
{
id: 'XeNA6XdMoF8',
title: 'Crop Rotation Strategies',
description: 'Understanding the importance of crop rotation for soil health.',
keywords: ['crop rotation', 'soil health', 'farming strategy', 'sustainable farming']
},
{
id: 'L14woJZEJnk',
title: 'Soil Fertility',
description: 'Tips to improve soil fertility using natural and chemical methods.',
keywords: ['soil', 'fertility', 'soil health', 'nutrients', 'fertilizers']
}
];
class ChatBot {
constructor() {
this.chatHistory = [];
}
// Process user input and return relevant recommendations
processInput(userInput) {
const input = userInput.toLowerCase();
const matches = [];
// Search through videos and calculate relevance score
videoData.forEach(video => {
let score = 0;
const searchText = `${video.title} ${video.description} ${video.keywords.join(' ')}`.toLowerCase();
// Check if input terms appear in video metadata
input.split(' ').forEach(term => {
if (searchText.includes(term)) {
score += 1;
}
});
if (score > 0) {
matches.push({
...video,
score
});
}
});
// Sort by relevance score
matches.sort((a, b) => b.score - a.score);
// Generate response
if (matches.length > 0) {
const topMatches = matches.slice(0, 3).map(match => ({
...match,
url: `https://www.youtube.com/watch?v=${match.id}`
}));
return {
message: `Based on your interest, I recommend these videos:`,
recommendations: topMatches
};
} else {
return {
message: "I couldn't find specific videos matching your query. Could you please try rephrasing or ask about specific farming topics like soil, irrigation, or organic farming?",
recommendations: []
};
}
}
// Add message to chat history
addToHistory(message, isUser) {
this.chatHistory.push({
message,
isUser,
timestamp: new Date().toISOString()
});
}
}
// Initialize chatbot
const chatbot = new ChatBot();