TensorFlow와 JavaScript를 사용하여 기본 챗봇을 구축하는 방법

PHPz
풀어 주다: 2024-09-03 21:06:02
원래의
965명이 탐색했습니다.

우리 모두는 다양한 사이트를 방문할 때 챗봇을 접하게 되는데, 그 중 일부는 실제 인간 상호 작용을 기반으로 작동하고 다른 일부는 AI로 구동됩니다.

이 기사에서는 TensorFlow와 JavaScript를 사용하여 간단한 AI 기반 챗봇을 구축하는 방법을 살펴보겠습니다. 챗봇은 사용자 명령을 인식하고 미리 정의된 답변으로 응답합니다.

단계별 안내

프로젝트 설정
먼저 프로젝트를 위한 새 디렉토리를 생성하고 npm으로 초기화합니다. 이 단계를 시작하기 전에 시스템에 Node.js가 설치되어 있는지 확인하세요.

mkdir chatbot
cd chatbot
npm init -y
로그인 후 복사

필요한 패키지 설치

간단한 프로젝트에는 다음 npm 패키지를 사용합니다.

  • tensorflow/tfjs: 기계 학습을 위한 TensorFlow.js 라이브러리입니다.
  • tensorflow-models/universal-sentence-encoder: 의도 인식을 위해 사전 훈련된 Universal Sentence Encoder 모델입니다.
   npm install @tensorflow/tfjs @tensorflow-models/universal sentence-encoder
로그인 후 복사
  1. 인텐트 생성

    intents.js라는 파일을 생성하여 인텐트/명령을 저장합니다. 이는 챗봇이 인식할 사용자 입력 카테고리(예: 인사말, 제품 문의, 주문 상태)입니다.

    // intents.js
    const intents = {
      greeting: ["hello", "hi", "hey", "good morning", "good evening", "howdy"],
      goodbye: ["bye", "goodbye", "see you later", "farewell", "catch you later"],
      thanks: ["thank you", "thanks", "much appreciated", "thank you very much"],
      product_inquiry: ["tell me about your products", "what do you sell?", "product information", "what can I buy?", "show me your products"],
      order_status: ["where is my order?", "order status", "track my order", "order tracking", "order update"],
      shipping_info: ["shipping information", "how do you ship?", "shipping methods", "delivery options", "how long does shipping take?"],
      return_policy: ["return policy", "how to return?", "return process", "can I return?", "returns"],
      payment_methods: ["payment options", "how can I pay?", "payment methods", "available payments"],
      support_contact: ["contact support", "how to contact support?", "customer support contact", "support info", "customer service contact"],
      business_hours: ["business hours", "working hours", "when are you open?", "opening hours", "store hours"]
    };
    
    module.exports = { intents }
    
    로그인 후 복사
  2. 응답 만들기

    response.js라는 이름의 다른 파일을 만들어 미리 정의된 응답을 저장하세요. 이는 인식된 의도에 따라 챗봇이 제공할 사전 정의된 응답입니다.

    // responses.js
    const responses = {
      greeting: "Hello! How can I help you today?",
      goodbye: "Goodbye! Have a great day!",
      thanks: "You're welcome! If you have any other questions, feel free to ask.",
      product_inquiry: "We offer a variety of products including electronics, books, clothing, and more. How can I assist you further?",
      order_status: "Please provide your order ID, and I will check the status for you.",
      shipping_info: "We offer various shipping methods including standard, express, and next-day delivery. Shipping times depend on the method chosen and your location.",
      return_policy: "Our return policy allows you to return products within 30 days of purchase. Please visit our returns page for detailed instructions.",
      payment_methods: "We accept multiple payment methods including credit/debit cards, PayPal, and bank transfers. Please choose the method that suits you best at checkout.",
      support_contact: "You can contact our support team via email at support@example.com or call us at 1-800-123-4567.",
      business_hours: "Our business hours are Monday to Friday, 9 AM to 5 PM. We are closed on weekends and public holidays."
    };
    
    module.exports = { responses };
    
    로그인 후 복사
  3. TensorFlow 및 문장 인코더 로드

    chatbot.js라는 기본 스크립트 파일을 생성하고 필요한 라이브러리와 모델을 로드합니다. 범용 문장 인코더 모델을 비동기식으로 로드하고 모델이 로드되면 챗봇을 시작합니다.

    // chatbot.js
    const tf = require('@tensorflow/tfjs');
    const use = require('@tensorflow-models/universal-sentence-encoder');
    const { intents } = require('./intents');
    const { responses } = require('./responses');
    const readline = require('readline');
    
    // Load the Universal Sentence Encoder model
    let model;
    use.load().then((loadedModel) => {
      model = loadedModel;
      console.log("Model loaded");
      startChatbot();
    });
    
    로그인 후 복사
  4. 의도 인식 구현

    사용자 입력 의도를 인식하는 기능을 추가하고, 범용 인코더를 사용하여 사용자 입력을 고차원 벡터에 삽입한 다음 의도를 기반으로 가장 높은 유사도 점수를 추적합니다.

    async function recognizeIntent(userInput) {
      const userInputEmb = await model.embed([userInput]);
      let maxScore = -1;
      let recognizedIntent = null;
    
      for (const [intent, examples] of Object.entries(intents)) {
        // Embedding the example phrases for each intent & Calculating similarity scores between the user input embedding and the example embeddings
        const examplesEmb = await model.embed(examples);
        const scores = await tf.matMul(userInputEmb, examplesEmb, false, true).data();
        const maxExampleScore = Math.max(...scores);
        if (maxExampleScore > maxScore) {
          maxScore = maxExampleScore;
          recognizedIntent = intent;
        }
      }
      return recognizedIntent;
    }
    
    로그인 후 복사
  5. 응답 생성

    인식된 의도를 기반으로 응답을 생성하는 기능을 추가합니다.

    async function generateResponse(userInput) {
      const intent = await recognizeIntent(userInput);
      if (intent && responses[intent]) {
        return responses[intent];
      } else {
        return "I'm sorry, I don't understand that. Can you please rephrase?";
      }
    }
    
    로그인 후 복사
  6. 챗봇 상호작용 구현

    마지막으로 명령줄에서 사용자 입력을 읽고 사용자에게 입력을 요청하고 그에 따라 응답을 생성하기 위한 인터페이스를 설정하여 챗봇과의 상호 작용 루프를 구현합니다.

    function startChatbot() {
      const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
      });
    
      console.log("Welcome to the customer service chatbot! Type 'quit' to exit.");
      rl.prompt();
    
      rl.on('line', async (line) => {
        const userInput = line.trim();
        if (userInput.toLowerCase() === 'quit') {
          console.log("Chatbot: Goodbye!");
          rl.close();
          return;
        }
    
        const response = await generateResponse(userInput);
        console.log(`Chatbot: ${response}`);
        rl.prompt();
      });
    }
    
    로그인 후 복사

    chatbot.js의 완성된 코드는 다음과 같습니다.

    // chatbot.js
    
    const tf = require('@tensorflow/tfjs');
    const use = require('@tensorflow-models/universal-sentence-encoder');
    const { intents } = require('./intents');
    const { responses } = require('./responses');
    const readline = require('readline');
    
    // Load the Universal Sentence Encoder model
    let model;
    use.load().then((loadedModel) => {
      model = loadedModel;
      console.log("Model loaded");
      startChatbot();
    });
    
    async function recognizeIntent(userInput) {
      const userInputEmb = await model.embed([userInput]);
      let maxScore = -1;
      let recognizedIntent = null;
    
      for (const [intent, examples] of Object.entries(intents)) {
        const examplesEmb = await model.embed(examples);
        const scores = await tf.matMul(userInputEmb, examplesEmb, false, true).data();
        const maxExampleScore = Math.max(...scores);
        if (maxExampleScore > maxScore) {
          maxScore = maxExampleScore;
          recognizedIntent = intent;
        }
      }
    
      return recognizedIntent;
    }
    
    async function generateResponse(userInput) {
      const intent = await recognizeIntent(userInput);
      if (intent && responses[intent]) {
        return responses[intent];
      } else {
        return "I'm sorry, I don't understand that. Can you please rephrase?";
      }
    }
    
    function startChatbot() {
      const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
      });
    
      console.log("Welcome to the customer service chatbot! Type 'quit' to exit.");
      rl.prompt();
    
      rl.on('line', async (line) => {
        const userInput = line.trim();
        if (userInput.toLowerCase() === 'quit') {
          console.log("Chatbot: Goodbye!");
          rl.close();
          return;
        }
    
        const response = await generateResponse(userInput);
        console.log(`Chatbot: ${response}`);
        rl.prompt();
      });
    }
    
    로그인 후 복사
  7. 챗봇을 실행하려면 chatbot.js 파일을 실행하세요:

    node chatbot.js
    
    로그인 후 복사

짜잔! 명령 출력에는 챗봇이 실행되어야 합니다.

How to Build a Basic Chatbot Using TensorFlow and JavaScript

결론

이 기사에서는 TensorFlow와 JavaScript를 사용하여 간단한 고객 서비스 챗봇을 구축했습니다. 이 구현은 기본적이지만 보다 정교한 챗봇을 구축하기 위한 견고한 기반을 제공합니다. AXIOS를 사용하여 API를 통합하거나 더 많은 인텐트와 응답을 추가하거나 웹 플랫폼에 배포하여 이 프로젝트를 확장할 수 있습니다.

즐거운 코딩하세요!

?? 나에 대해 자세히 알아보세요

?? LinkedIn에 연결

?? 내 블로그 구독

위 내용은 TensorFlow와 JavaScript를 사용하여 기본 챗봇을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!