본문 바로가기

테크크런치기사

인공 지능 chatbot을 구축하기위한 최상의 언어 선택하기

출처 : https://techcrunch.com/2017/12/20/choosing-the-best-language-to-build-your-ai-chatbot/?ncid=rss


대화방에 가장 적합한 언어는 무엇입니까?

아니요, 이것은 가상 에이전트가 영어 속어, 스페인어의 가정법 또는 심지어 일본어로 "I"라고 말하는 수십 가지 방법을 이해하도록할지 여부가 아닙니다. 사실, 당신이 봇을 만드는 프로그래밍 언어는 그것이 이해하는 인간 언어만큼 중요합니다.

그러나 당신은 어떻게 그것들을 구별합니까? Facebook, Slack 및 Telegram 모두 가장 인기있는 언어를 지원하는 반면 Dialogflow , LUIS 및 wit.ai 와 같은 API 플랫폼 은 대다수의 SDK를 제공합니다.

물론주의해야 할 점은 항상 가장 편안하게 사용하는 언어로 방향을 바꾸어야한다는 것입니다. 그러나 처음에는 프로그래밍 연못에 발가락을 담그는 사람들에게는 확실한 승자가 등장하기 시작합니다. 파이썬은 선택의 언어입니다.

왜 파이썬이 아닌 다른 것들 : 자연어 처리

파이썬은 근본적으로 다용도 덕분에 코딩의 스위스 군용 칼입니다. 또한 초보자가 인간을 반영하는 일관된 구문과 언어로 쉽게 이해할 수있는 언어 중 하나입니다.

이것은 파이썬이 처음 출시되었을 때 웹 디자인과 개발에만 국한되었던 Ruby와 같은 다른 언어보다 더 다양한 경우에 적용된다는 것을 의미했습니다. 한편, Python은 과학 컴퓨팅 분야에서 확장되어 수년 간의 연구 개발을 통해 얻은 광범위한 오픈 소스 라이브러리의 개발을 장려했습니다.

자연어 처리 (NLP) 와 관련하여 NLP 통합의 할아버지는 파이썬으로 작성되었습니다. NLTK ( Natural Language Toolkit ) 초기 릴리스는 2001 년에 시작되었습니다. Java 기반 경쟁 업체 인 스탠포드 라이브러리 NLP 보다 5 년 앞서서,  채팅 봇이 NLP의 최상의 기능을 활용할 수 있도록 도와주는 광범위한 리소스로 사용되었습니다.

스탠포드 NLP와 아파치 오픈 NLP  는 자바 사용자를위한 재미있는 대안을 제공합니다. 두 도구 모두 툴링을 통해 챠트 봇 개발을 적절히 지원할 수 있거나 API를 통해 호출 할 때 명시 적으로 사용할 수 있기 때문입니다. 그러나 NLTK는 다른 언어에 대한 추가 지원, 다른 NLP 도구에 대한 다중 버전 및 인터페이스, 심지어 일부 Stanford NLP 패키지 및 타사 Java 프로젝트 설치 기능 덕분에보다 뛰어납니다.

비평가들은 NLTK의 비효율 성과 가파른 학습 곡선이 봇봇에 대한 해결책보다 학술적 테마 파크를 더 많이 만들었다 고 주장하지만, TextBlob은이 를보다 직관적 인 인터페이스와 사용자를위한 학습 곡선을 제공하는 발판으로 사용하여이 문제를 해결합니다.

전문가가 선호하는 언어를보기 위해 일부 하드 데이터를 보는 것보다 나은 접근 방법은 무엇입니까?

NLTK와 TextBlob에 대한 흥미로운 라이벌이 Python (및 Cython)에서 spaCy 형태로 등장했습니다 . 그것은 몇 가지 장점이 있습니다. 즉, NLTK와 함께 제공되는 9 개의 형태소 분석 라이브러리가 아닌 단일 형태소 분석기를 구현합니다 이는 채팅 봇에 가장 효과적인 것을 결정할 때 문제가됩니다. 여기 에서 볼 수 있듯이 spaCy는 다른 언어의 다른 시스템과 비교하여 토큰 화 및 구문 분석시 번개가 빠릅니다. 주요 약점은 지원이 제한된 커뮤니티와 영어로만 제공된다는 것입니다. 그러나 채팅 봇이 여러 언어를 필요로하지 않는 소규모 회사 용이라면 강력한 선택을 제공합니다.

NLTK는 꽤 간단한 chatbots에 대한 좋은 내기 일뿐만 아니라보다 진보 된 무언가를 찾고있는 경우에도 유용합니다. 여기에서 기계 학습을 전문으로하는 많은 사람들을 포함하여 다른 Python 라이브러리가 여러분에게 열립니다.

기계 학습

기계 학습의 주제에 대해, 전문가가 선호하는 언어를보기 위해 하드 데이터를 보는 것보다 더 나은 접근 방법은 무엇입니까? 최근 2,000 명 이상의 데이터 과학자와 기계 학습 개발자를 대상으로 한 설문 조사에서 57 %가 파이썬을 사용했으며 33 %는 개발을 우선시했습니다.

왜 이런거야? NLP와 마찬가지로 Python은 scickit-learn 과 TensorFlow를 포함하여 chatbots를위한 다양한 오픈 소스 라이브러리를 자랑합니다 Scikit-learn은 파이썬을위한 모든 기계 학습 알고리즘이있는 가장 발전된 시스템 중 하나입니다. TensorFlow는 더 낮은 레벨입니다. 원하는 경우 기계 학습 알고리즘의 LEGO 블록입니다. 이 다목적 성은 파이썬이 빛나는 이유입니다.

비교할 때 챠트 봇 건물을 창백하게 만드는 많은 다른 언어들. PHP는 기계 학습면에서별로 제공 할 것이 없으며 웹 사이트 개발에 더욱 적합한 서버 측 스크립팅 언어입니다. C ++은 TensorFlow 및 Torch와 같은 라이브러리에서 지원되는 가장 빠른 언어 중 하나이지만 Python의 자원은 여전히 ​​부족합니다.

Java와 JavaScript는 모두 기계 학습과 관련하여 특정 기능을 갖추고 있습니다. JavaScript에는 데모 용으로 여기 에 설명 된대로 많은 라이브러리가 포함되어 있지만 Java 애호가는 Weka 와 같은 ML 패키지에 의존 할 수 있습니다 Weka가 Python 기반 라이벌과 비교했을 때, 지원이 부족하고 더 많은 플러그 앤 플레이 기계 학습 솔루션으로 자리 매김했습니다. 이것은 소규모 데이터 세트와 더 간단한 분석에 적합하지만 파이썬의 라이브러리는 훨씬 더 실용적입니다.

파이썬은 어디에서 어려움을 겪고 있습니까?

파이썬의 가장 큰 실패한 문서는 PHP, Java 및 C ++와 같은 다른 확립 된 언어와 비교할 수없는 문서입니다. Python에서 답변을 검색하는 것은 읽지 않은 책에서 특정 구절을 찾는 것과 유사합니다. 또한이 언어는 유용하고 간단한 예가 심각하게 부족합니다. 명확성은 또한 챠트 봇을 만들 때 매우 중요한 문제입니다. 단계 중 하나라도 약간의 모호성이 있어도 실패 할 수 있기 때문에 중요합니다.

속도가 chatbot을 구축하는 주요 관심사라면 Java 및 C ++과 비교하여 Python을 사용하고 싶을 것입니다. 그러나 문제는 코드 실행 시간이 실제로 중요한지 여부입니다. 더 중요한 것은 최종 사용자 경험이며, C ++과 같은 챠트 봇 구축을 위해보다 빠르고 제한적인 언어를 선택하는 것은 자멸합니다. 이러한 이유 때문에 몇 밀리 초를 더 빨리 작동시킬 수있는 봇의 개발 시간과 범위를 희생하는 것은 의미가 없습니다.

파이썬으로 구현 된 자연 언어 처리

대화 상자를 똑똑하게 만드는데있어 파이썬이 얼마나 유용 할 수 있는지 알아보기 위해 NLP의 한 측면을 살펴 보도록하겠습니다.

가장 기본적인 형태의 감정 분석에는 사용자가 좋은 경험을했는지 여부와 관계없이 작업해야합니다. 챠트 봇이 이것을 인식 할 수 있다면, 대화를 인간에게 맡길 수있는 제품을 제공하는시기, 제품 사용자가 더 흥미를 느끼는 곳, 또는 어떤 오프닝 라인이 가장 잘 작동 하는지를 알 수 있습니다.

상호 작용이 부정적인지 긍정적인지 판단하기 위해 정서 분석을 사용할 수 있습니다. 예를 들어이 문장을 살펴보십시오.

"훌륭해, 내 카드가 작동하지 않아."

물론 여기에 대한 감정은 부정적인 것이지만 "brilliant"라는 단어가 사용되면 로봇이 탐지하는 것이 어려울 수 있습니다. 우리는 우리의 봇에 강력한 정서 분석을 어떻게 갖추어야합니까? 참고 : 아래에 설명 된 실제 기능의 예는 여기 및 여기 에서 찾을 수 있습니다 .

SpaCy와 TextBlob을 사용 하는 것이 훨씬 간단 하지만 NLTK의 작동 방식을 이해하면 감정 분석의 개념을 이해하는 데 도움이됩니다. NLTK를 사용하여 수동으로 주석을 추가 한 데이터 집합을 먼저 검사하여 정서를 인식하도록 로봇을 교육 할 수 있습니다. 우리는 긍정적 인 의견, 부정적인 의견 및 혼합물이 포함 된 테스트 목록의 세 가지 목록을 취하여이를 만듭니다. 각 목록에 대한 예제가 많을수록 정서 분석의 신뢰성이 높아집니다. 수동으로 주석을 추가 한 데이터는 Google 분류 기준의 정확성을 테스트합니다.

경주 용 자동차에서 가장 좋은 타이어를 선택하는 것과 마찬가지로 chatbot에 대해 선택한 언어는 여러 조건에 따라 다릅니다.

그 다음에는 각 문장에서 가장 적절한 단어를 추출해야합니다 (위의 예에서는 "훌륭함", "하지 않음"및 "작업중"이 될 것입니다). 데이터 내의 출현 빈도에 따라 순위를 매깁니다. 이렇게하기 위해 우리는 3 글자보다 적은 단어를 제거 할 수 있습니다. 완료되면 특성 추출기를 사용하여 나머지 관련 단어 사전을 작성하여 완성 된 교육 세트를 작성하여 분류 자에게 전달합니다.

분류기는 Naive Bayes Classifier를 기반으로합니다.이 분류기는 단어의 사전 확률과 빈도를 분석하여 특정 정서가 얼마나 가능성이 있는지 계산하기 위해 주석의 기능 세트를 볼 수 있습니다. 여기에서 정서가 얼마나 가능성이 있는지 측정 할 수 있습니다.

틱봇에 AI를 장착하는 "언어 일뿐입니다"라고 논쟁하는 것은 사실이지만 파이썬과 다양한 라이브러리 및 기성 알고리즘을 사용하면 다른 언어보다 훨씬 간단합니다.

경주 용 자동차에서 가장 좋은 타이어를 선택하는 것과 마찬가지로 chatbot에 대해 선택한 언어는 여러 조건에 따라 다릅니다. 어떤 종류의 봇을 만들고 싶습니까? 가장 편안한 언어는 무엇입니까? 특정 프로젝트가 지속적으로 성장함에 따라 견딜 수있을만큼 강력합니다.

그러나 신선한 것을 시작하고 어떤 언어가 먼저 조사 할 가치가 있는지 궁금해지면 데이터 과학 군중을 따라하고 파이썬을 보는 것이 좋은 출발입니다.