통신 부문에서는 음성 통화가 문자와 영상으로 단계적으로 폐지되고 있습니다. Facebook 설문 조사에 따르면 구매자의 절반 이상이 대화가 가능한 회사에서 구매하는 것을 선호합니다. 채팅은 사회적으로 수용 가능한 새로운 커뮤니케이션 방식이 되었습니다.
이를 통해 기업은 언제 어디서나 고객과 통신할 수 있습니다. 챗봇은 사용 편의성과 대기 시간 감소로 인해 기업과 고객 사이에서 점점 인기를 얻고 있습니다.
챗봇 또는 자동화된 대화 프로그램은 고객에게 텍스트 기반 인터페이스를 통해 서비스에 액세스할 수 있는 보다 맞춤화된 방법을 제공합니다. 최신 AI 기반 챗봇은 특정 환경에서 사람(또는 다른 봇, 시작)이 한 쿼리(질문, 명령, 명령 등)를 인식하고 적절하게 응답(답변, 행동 등)할 수 있다.
이 게시물에서는 챗봇이 무엇인지, 그 이점, 사용 사례 및 자신만의 챗봇을 만드는 방법에 대해 알아보겠습니다. 깊은 학습 무엇보다도 Python의 챗봇.
시작하자.
그렇다면 챗봇은 무엇일까요?
챗봇은 인간-기계 상호 작용의 가장 진보되고 유망한 형태 중 하나로 자주 언급됩니다. 이러한 디지털 비서는 사람과 서비스 간의 상호 작용을 간소화하여 고객 경험을 개선합니다.
동시에 효율성을 위해 고객 연락 프로세스를 최적화할 수 있는 새로운 옵션을 기업에 제공하여 기존 지원 비용을 절감할 수 있습니다.
간단히 말해서 AI 기반 소프트웨어는 자연어로 인간과 의사 소통하기 위한 것입니다. 이러한 챗봇은 종종 오디오 또는 서면 기술을 통해 상호 작용하며 인간과 같은 방식으로 인간과 연결하기 위해 인간 언어를 쉽게 모방할 수 있습니다.
챗봇은 사용자와의 상호 작용을 통해 학습하여 시간이 지남에 따라 더욱 현실적이고 효율적이 됩니다. 그들은 지출 승인, 온라인 소비자 참여, 리드 생성과 같은 광범위한 비즈니스 활동을 처리할 수 있습니다.
파이썬으로 나만의 딥러닝 챗봇 만들기
챗봇의 종류는 다양합니다. 기계 학습 그리고 AI. 일부 챗봇은 가상 비서인 반면 다른 챗봇은 대화를 위해 존재하는 반면 다른 챗봇은 고객 서비스 에이전트입니다.
기업에서 질문에 답하기 위해 고용한 사람을 본 적이 있을 것입니다. 이 튜토리얼에서는 자주 요청하는 질문에 답하기 위해 작은 챗봇을 만들 것입니다.
1. 패키지 설치
첫 번째 단계는 다음 패키지를 설치하는 것입니다.
2. 훈련 데이터
이제 챗봇에 어떤 유형의 정보를 제공해야 하는지 알아낼 때입니다. 이것은 간단한 챗봇이기 때문에 큰 데이터 세트를 다운로드할 필요가 없습니다.
우리는 우리 자신이 만든 정보만 활용할 것입니다. 수업을 효과적으로 따르려면 아래에 표시된 것과 동일한 형식으로 .JSON 파일을 생성해야 합니다. 내 파일의 이름은 "intents.json"입니다.
JSON 파일은 사용자가 입력할 가능성이 높은 메시지 세트를 생성하고 관련 답변 세트에 매핑하는 데 사용됩니다. 파일의 각 사전에는 각 메시지가 속한 그룹을 식별하는 태그가 있습니다.
이 정보를 사용하여 신경망 파일의 태그 중 하나로 단어 구를 분류합니다.
그런 다음 해당 그룹에서 응답을 가져와 사용자에게 제공할 수 있습니다. 챗봇은 태그, 답글, 패턴을 추가로 제공하면 더 좋고 복잡할 것입니다.
3. JSON 데이터 로딩
.json 데이터를 로드하고 일부 모듈을 가져오는 것부터 시작하겠습니다. .json 파일을 동일한 디렉터리에 어셈블하세요. 파이썬 스크립트. 이제 .json 데이터가 data 변수에 저장됩니다.
4. 데이터 추출
이제 JSON 파일에서 필요한 정보를 추출할 차례입니다. 모든 패턴과 패턴이 속한 클래스/태그가 필요합니다.
또한 패턴의 모든 고유 용어 목록이 필요하므로(나중에 설명할 이유가 있음) 이러한 값을 추적하기 위해 몇 가지 빈 목록을 만들어 보겠습니다.
이제 JSON 데이터를 반복하고 필요한 정보를 검색합니다. 문자열로 사용하는 대신 nltk.word 토크나이저를 사용하여 각 패턴을 단어 목록으로 변환합니다.
그런 다음 docs_x 목록에서 관련 태그와 함께 각 패턴을 docs_y 목록에 추가합니다.
5. 단어 형태소 분석
단어의 어근을 찾는 것을 형태소 분석이라고 합니다. 예를 들어 "that"이라는 단어의 어간은 "that"이 될 수 있지만 "happening"이라는 단어의 어간은 "happen"이 될 수 있습니다.
우리는 이 형태소 분석 기술을 사용하여 모델의 어휘를 줄이고 일반적으로 어떤 문장이 의미하는지 알아 내려고 노력할 것입니다. 이 코드는 데이터 준비의 다음 단계에서 사용할 고유한 형태소 단어 목록을 생성합니다.
6. 단어 가방
데이터를 가져오고 형태소 어휘를 생성했으므로 이제 한 뭉치의 단어에 대해 이야기할 시간입니다. 신경망 그리고 기계 학습 알고리즘은 우리 모두가 알고 있듯이 숫자 입력이 필요합니다. 그래서 우리의 문자열 목록은 그것을 자르지 않을 것입니다. 문장에서 숫자를 표현하는 메커니즘이 필요합니다. 여기서 단어 가방이 들어옵니다.
각 구는 우리 모델의 어휘에 있는 용어 수의 길이 목록으로 표시됩니다. 우리 어휘의 각 단어는 목록의 한 장소로 표시됩니다. 목록의 위치가 1이면 해당 단어가 우리의 명령문에 나타납니다. 0이면 해당 단어는 문장에 나타나지 않습니다.
단어가 구에서 나타나는 순서를 모르기 때문에 우리는 그것을 단어의 가방이라고 부릅니다. 우리가 아는 것은 그것들이 우리 모델의 어휘에 존재한다는 것뿐입니다.
입력을 구조화하는 것 외에도 신경망이 이해할 수 있도록 출력 형식을 지정해야 합니다. 단어 모음과 유사한 데이터 세트의 레이블/태그 수 길이인 출력 목록을 작성합니다. 목록의 각 장소는 고유한 레이블/태그를 나타내며 해당 위치의 1은 표시되는 레이블/태그를 나타냅니다.
마지막으로 NumPy 배열을 사용하여 훈련 데이터와 출력을 저장합니다.
7. 모델 개발
모든 데이터를 사전 처리했으므로 이제 모델 구축 및 학습을 시작할 준비가 되었습니다. 우리는 목표를 위해 두 개의 은닉층이 있는 매우 기본적인 피드포워드 신경망을 사용할 것입니다.
우리 네트워크의 목적은 단어 모음을 보고 클래스(JSON 파일의 태그 중 하나)에 할당하는 것입니다. 모델의 아키텍처를 설정하는 것으로 시작하겠습니다. 더 나은 모델을 만들기 위해 몇 가지 숫자를 가지고 놀 수 있다는 것을 명심하세요! 기계 학습 대부분 시행 착오를 기반으로합니다.
8. 모델 교육 및 저장
이제 데이터를 설정했으므로 모델을 학습시킬 시간입니다! 우리는 우리의 데이터를 모델에 맞추면 이것을 달성할 것입니다. 우리가 제공하는 에포크의 수는 모델이 훈련 중에 동일한 데이터에 노출되는 횟수입니다.
훈련이 끝나면 모델을 파일 모델에 저장할 수 있습니다. tflearn은 다른 스크립트에서 사용할 수 있는 스크립트입니다.
9. 챗봇 사용하기
이제 봇과 채팅을 시작할 수 있습니다.
챗봇의 장점
- 봇은 365년 24일 XNUMX시간 무급으로 운영될 것으로 예상되어 가용성과 반응 속도가 향상됩니다.
- 이 봇은 빅 데이터의 XNUMX가지 핵심 V인 볼륨, 속도 및 다양성을 처리하기 위한 완벽한 도구입니다.
- 챗봇은 회사의 소비자에 대해 배우고 이해하는 데 사용할 수 있는 소프트웨어입니다.
- 최고의 장점을 가지고 있으면서도 유지비가 저렴하다는 장점이 있습니다.
- 챗봇 애플리케이션은 분석 및 예측을 위해 보존 및 활용될 수 있는 데이터를 생성합니다.
사용 사례
- 고객 문의 해결
- 자주 묻는 질문에 대한 답변
- 지원 팀에 고객 할당
- 고객 피드백 수집
- 새로운 제안 추천
- 대화형 커머스로 쇼핑하기
- IT 헬프 데스크
- 숙박 예약
- 송금
결론
다른 AI 기술과 마찬가지로 챗봇은 전술적 작업보다 전략적인 작업에 더 많은 시간을 할애함으로써 인간의 기술을 강화하고 인간이 보다 창의적이고 상상력을 발휘할 수 있도록 하는 데 사용될 것입니다.
기업, 직원 및 소비자는 AI가 개발과 결합되는 가까운 장래에 더 빠른 추천 및 예측과 같은 향상된 챗봇 기능과 대화 내에서 고화질 화상 회의에 쉽게 액세스할 수 있는 이점을 누릴 수 있습니다. 5G 기술.
이러한 가능성과 기타 가능성은 아직 조사 중이지만 인터넷 연결, AI, NLP 및 머신 러닝이 발전함에 따라 더 널리 퍼질 것입니다.
츄
안녕하세요
이 프로그램에 감사드립니다.
나는 질문이있다.
"bag_of_words"가 정의되지 않았습니다. 이 오류를 이해할 수 없습니다.
이 오류를 어떻게 해결할 수 있는지 알려주실 수 있나요??
이 프로그램을 주셔서 감사합니다!! 좋은 하루 보내세요
어치
챗봇 섹션을 사용하기 전에 기능을 추가하세요.
////////////////////////////////////////////////////// ///////////////////////////////
def bag_of_words(s, 단어):
가방 = [0 for _ in range(len(words))]
s_words = nltk.word_tokenize(들)
s_words = [s_words의 단어에 대한 stemmer.stem(word.lower())]
s_words에서 se를 위해:
열거(단어)에서 i, w에 대해:
w == se인 경우:
가방[i] = 1
반환 numpy.array(가방)
// 문제를 확실히 해결할 것입니다. // //
/////////////////////////////////////////////////////////////////// ///////////////////////////
전체 코드를 공유하므로 명확한 그림을 얻을 수 있습니다.
////////////////////////////////////////////////////// /////////
수입품
nltk.stem.lancaster에서 가져오기 LancasterStemmer
형태소 분석기 = LancasterStemmer()
수입 numpy
가져오기 tflearn
텐서플로 가져오기
무작위 가져 오기
수입 json
수입 피클
파일로 open("intents.json") 사용:
데이터 = json.load(파일)
시도 :
f로 open("data.pickle", "rb") 사용:
단어, 레이블, 훈련, 출력 = pickle.load(f)
외:
단어 = []
레이블 = []
문서_x = []
문서_y = []
데이터의 의도["의도"]:
인텐트["패턴"]의 패턴:
wrds = nltk.word_tokenize(패턴)
word.extend(wrds)
docs_x.append(wrds)
docs_y.append(의도[“태그”])
인텐트["태그"]가 레이블에 없는 경우:
label.append(의도[“태그”])
words = [stemmer.stem(w.lower()) for w in words if w != "?"]
단어 = sorted(list(set(words)))
레이블 = 정렬됨(레이블)
훈련 = []
출력 = []
out_empty = [범위 내 _에 대해 0(len(라벨))]
x의 경우 enumerate(docs_x)의 문서:
가방 = []
wrds = [문서의 w에 대한 stemmer.stem(w.lower())]
단어로 w에 대해:
wrds의 경우:
가방.추가(1)
그밖에:
가방.추가(0)
출력_행 = 출력_빈[:]
output_row[labels.index(docs_y[x])] = 1
training.append(가방)
output.append(출력 행)
훈련 = numpy.array(훈련)
출력 = numpy.array(출력)
f로 open("data.pickle", "wb") 사용:
pickle.dump((단어, 레이블, 훈련, 출력), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(모양=[없음, len(훈련[0])])
net = tflearn.full_connected(net, 8)
net = tflearn.full_connected(net, 8)
net = tflearn.fully_connected(net, len(출력[0]), 활성화 = "softmax")
순 = tflearn.regression(순)
모델 = tflearn.DNN(net)
시도 :
model.load("모델.tflearn")
외:
model.fit(훈련, 출력, n_epoch=1500, batch_size=8, show_metric=True)
model.save("model.tflearn")
def bag_of_words(s, 단어):
가방 = [0 for _ in range(len(words))]
s_words = nltk.word_tokenize(들)
s_words = [s_words의 단어에 대한 stemmer.stem(word.lower())]
s_words에서 se를 위해:
열거(단어)에서 i, w에 대해:
w == se인 경우:
가방[i] = 1
반환 numpy.array(가방)
데프 채팅():
print("봇과 대화 시작(중지하려면 quit 입력)!")
진실한 동안 :
inp = input("당신: ")
inp.lower() == "종료"인 경우:
하다
결과 = model.predict([bag_of_words(inp, 단어)])
result_index = numpy.argmax(결과)
태그 = 레이블[결과_색인]
데이터["의도"]의 tg:
tg['태그'] == 태그인 경우:
응답 = tg['응답']
인쇄(random.choice(응답))
채팅()
////////////////////////////////////////////////// ///////////////
감사합니다,
행복한 코딩!
Lu
안녕하세요
파이썬으로 챗봇을 만들고 싶은데 엑셀로 설문조사를 해서 얻은 정보인데 어떤 과정을 거쳐야 하는지 아이디어를 주실 수 있나요? 감사합니다!