IBM Watson의 Natural Language Classifier 사용 후기

IBM Watson의 Natural Language Classifier 사용 후기

전에 쓴 2018/05/29 - 온라인 리뷰의 분석을 통한 사용자 경험 분류: Future... 글을 실제로 실행에 옮겨보고자 한다.

IBM Watson을 사용해보기 위해서는

https://www.bluemix.net/ 로 들어가 가입 후 계정 업그레이드를 위해 신용카드 정보를 입력해야 하는데,

(1달간은 무료 이용이 가능하다.)

주사용 카드인 AMEX 계열의 신한 B.Big이 계속 오류가 나서, 잘 쓰지 않는 마스터카드 계열의 우리카드로 등록을 하였다.

Watson의 서비스 중에서 Natural Language Classifier를 사용하였다.

다만, 현재 베타서비스 중인 이 툴이 8월부터는 변동이 있을 것이라고 한다.

The Natural Language Classifier beta tool is migrating to Watson Studio. To preserve the data used to train your classifiers, download the training data from the Classifiers page before July 31, 2018.

IBM Watson에 있는

Natural Language Classifier 서비스는 문장이나 문구에 가장 잘 맞는 클래스를 리턴할 수 있는 도구.

한국어도 학습이 된다고 한다.

Natural Language Classifier를 위해서는 학습(Training)을 위한 문장과 클래스 조합이 필요하다.

문장은 최대 1024자까지 가능하고, 문장 당 꼭 1가지의 클래스가 아니라 8개까지의 클래스가 가능하다는 것으로 보인다.

여기서는 기존에 사람(Coder)을 이용해서 문장과 클래스 라벨링을 시킨 데이터를 활용하기로 한다.

온라인 리뷰에서 얻은 문장에 대해, 사람들이 사용자 경험 요소로 라벨링을 한 데이터이다.

예를 들어,

Good picture quality

라고 적힌 문장이 있었다면, 화질(picture quality)에 대한 문장으로 라벨링하였다.

데이터셋 코딩(라벨링) 과정

참고로, Watson의 Knowledge Studio와 Natural Language Understanding을 사용하면,

코딩 과정부터 자연어 학습까지 한 플랫폼 안에서 가능하다고 한다.

여기서는 Watson의 성능을 맛보기하려는 용도이므로,

총 836 여 건의 데이터 중, 학습셋으로 663건, 테스트 셋으로 172건을 사용하기로 한다.

일부는 라벨링 된 데이터가 적어서, 학습 셋으로만 활용하기로 한다.

All 학습 셋 테스트 셋 3D 49 40 9 adapt 2 2 aest 66 56 10 appear 25 20 5 cognitive 15 12 3 connect 80 65 15 content 39 30 9 flex 42 33 9 help 32 27 5 life 37 30 7 picture 269 200 69 react 61 51 10 relative 2 2 remote 72 60 12 sound 33 25 8 stab 5 5 voice 7 5 2 합계 836 663 172

훈련(트레이닝) 과정 UI는 소소하지만 와닿는다.

학습 셋으로 훈련을 시킨 후, 테스트 데이터의 라벨을 제거 후 테스트 데이터로 삽입하면 결과를 볼 수 있다.

추정된 라벨과 확률을 보여주고 있다.

JSON형태의 API를 통해 자바나 파이선 등 다른 형태로 출력도 가능하고, 편하게 웹 인터페이스로 작업도 가능하다.

내가 가진 데이터 셋으로 간단하게 추정한 결과 평균 70% 정도의 정확도 결과를 보여주었다.

(확률은 무시하고 정답일 경우 1, 오답일 경우 0으로 합산 후 평균)

텍스트 데이터를 정제하거나 확률을 기반으로 좀 더 계산해보면 정확도가 높을 듯.

당연한 이야기겠지만, 학습 데이터가 많은 클래스일수록 결과의 정확도는 더 높았다.

예를 들어, 리뷰에서 언급이 많았던 Picture quality의 경우 96%의 정확도를 보였고, connectivity도 80%의 정확도를 보였다.

반면 리뷰 데이터에서 언급이 없었거나,

사람도 헷갈려서 분류하기 어려웠던 helpfulness나 real-life applicability 클래스의 경우 0~20%의 정확도를 보였다.

실험 데이터 셋을 가지고 있다면,

Watson의 기술을 이용하여 빠르고 편리하고 정확도 높은 텍스트의 분류 작업을 수행할 수 있음을 알게 되었다.

알고리즘적인 기술 개발을 목적으로 하는게 아니라면, Watson을 이용해 딥러닝 어플리케이션을 쉽고 빠르게 개발할 수 있을 것이다.

from http://jinchory.tistory.com/325 by ccl(S) rewrite - 2020-03-06 20:20:45

댓글

이 블로그의 인기 게시물

[React] - 18) 프로젝트 빌드하기(+코드 스플리팅)

입트영(2020.03.23) - Iced Drinks / 아이스 음료

Redux + React