[Session 01] 고운 말 자판기
고운 말 자판기
학습 목표
입력받은 텍스트에 비속어나 욕설이 포함된 경우 고운 말 사용을 권유하는 고운 말 자판기를 제작할 수 있다.
문제해결 상황
엔트리봇은 친구들과 게임에서 대화를 하던 중 친구들이 아무렇지 않게 욕설을 사용하는 것을 보고 마음이 아팠어요. 우리말에는 비속어나 욕설보다는 아름답고 고운 말이 너무 많았기 때문이죠. 그래서 욕설이나 비속어가 포함된 글을 입력하면 고운 말 사용을 권유하는 자판기를 만들어 보고 싶었어요.
문제해결 방법
우리가 온라인 상에서 사용하는 말(텍스트 입력)이 고운 말인지 나쁜 말인지 판별하기 위해 고운 말 자판기에 판별하고 싶은 말을 입력한다. 인공지능의 클래스를 고운 말, 나쁜 말로 설정하고 고운 말에 다양한 고운 말 데이터를 입력하고, 나쁜 말에는 나쁜 말 데이터를 입력하여 학습시킨다. 입력된 말이 고운 말과 나쁜 말 중 하나로 분류된다. 예를 들어 고운 말을 입력했을 때 0.5(50%) 초과의 값이 나오면 인공지능은 입력된 말을 고운 말로 분류한다. 이 프로그램에서는 신뢰도를 높이기 위해 0.6(60%) 이상인 경우에 알맞은 반응을 보이도록 한다.
학습 준비물
인터넷에 연결할 수 있는 PC 또는 노트북, 스피커
데이터 수집 아이디어
1-1 인공지능 모델 학습하기
본 주제에서는 학생들이 비속어나 욕설의 의미를 잘 알지 못한 채로 습관적으로 사용하는 것을 막기 위하여 자신이 자주 사용하는 말을 자판기에 입력했을 때 고운 말인지 비속어인지를 판별해 고운 말 사용을 권유하는 프로그램을 제작하고자 한다.
엔트리 프로그램에서 [인공지능] 카테고리의 [인공지능 모델 학습하기]를 클릭하여 학습할 모델 선택하기 화면으로 들어간다. ‘분류:텍스트’를 선택한 후 [학습하기]를 클릭하여 텍스트 모델 학습하기로 들어간다.
|
1) 엔트리 프로그램에서 [인공지능] 카테고리의 [인공지능 모델 학습하기]를 클릭하여 학습할 모델 선택하기 화면으로 들어간다. ‘분류:텍스트’를 선택한 후 [학습하기]를 클릭하여 텍스트 모델 학습하기로 들어간다. |
|
2) 텍스트 모델 이름을 ‘고운 말 자판기’로 입력한다. 클래스 1은 ‘고운 말’ 클래스 2는 ‘나쁜 말’로 입력하여 텍스트 모델을 만든다. |
3) 데이터 입력 시 각각의 데이터는 쉼표로 구분하여 입력한다. txt, csv를 업로드하여 입력할 수도 있다. 추후 고운 말 자판기 모델을 더욱 정교하게 학습시킬 때 고운 말, 나쁜 말 txt파일을 만들어 새로운 단어들을 추가하여 업로드하는 것이 좋다.
|
|
여기서 입력한 데이터는 다음과 같다.
|
4) [모델 학습하기]를 클릭하여 입력한 데이터와 조건으로 모델을 학습한다. |
|
5) 결과 화면에서 ‘고맙습니다’라고 입력하고 결과를 테스트한다. ‘고맙습니다’는 데이터는 수집데이터에 입력되지 않은 것이다. 결과 화면은 확률상 고운 말70.06%로 출력되었다. |
|
6) 각 클래스에 입력되지 않은 “귀여워”, “예쁘다”와 같은 단어는 신뢰도를 확신 하기에 애매한 반응을 보였다. 이는 추후 텍스트 데이터를 보완해 주어야 함을 의미하고, 자판기에서 이와 같은 결과에 어떤 반응을 보이게 만들지 생각해 두어야 한다. |
|
7) [적용하기] 버튼을 클릭한 후 엔트리 블록 탭의 [인공지능] 카테고리에 다음의 블록들이 생성되었는지 확인한다. |
1-2 장면 구성하기
| 1) 엔트리 오브젝트를 다음과 같이 불러온다.
|
|
2) 고운 말, 나쁜 말을 인공지능이 판별
하여 결과를 보여주기 위하여 |
1-3 엔트리 프로그래밍
1) [인공지능] 카테고리에서 [인공지능 블록 불러오기]를 선택한 후 ‘읽어주기’ 메뉴를 이용하여 고운 말 자판기가 어떤 역할을 하는지 음성으로 알려주도록 한다.
2) 아래와 같이 읽어주기 블록이 생긴다.
3) [‘엔트리’ 읽어주기] 블록을 가져다 둔 후 엔트리봇이 고운 말 자판기에 대하여 설명하도록 아래와 같이 코딩한다.
4) 엔트리봇의 설명이 끝나면 고운 말 자판기가 작동하도록 ‘자판기시작’이라는 신호를 만든다. 또한 판별이 끝난 후 자판기에 고운 말인지 나쁜 말인지 아이콘을 보여주기 위하여 ‘고운 말사용’, ‘나쁜 말사용’의 신호를 만든다. 신호를 만들기 위해 다음과 같이 [속성]탭으로 이동하여 [신호]를 선택하고 [신호 추가하기] 버튼을 클릭하여 위의 신호 3가지를 만들어둔다.
5) 신호 추가가 완료되었으면 아래와 같이 [‘자판기시작’신호보내기] 블록을 추가한다.
6) 자동판매기를 선택한 후 [‘자판기시작’ 신호를 받았을 때] 를 입력하여 고운 말 자판기를 시작시키고, 텍스트 입력을 받을 수 있도록 [자료] 카테고리에서 [‘안녕’을(를) 묻고 대답 기다리기] 블록을 추가한다. ‘안녕’ 을 ‘고운 말인지 나쁜 말인지 확인할 텍스트를 입력해주세요.’로 변경하여 텍스트 입력을 기다린다.
|
7) 입력받은 텍스트를 인공지능에게 판별 시키기 위하여 [자료] 카테고리의 [대답] 을 선택하고, [인공지능]의 [‘엔트리’을 (를) 학습한 모델로 분류하기] 블록을 이용하여 다음과 같이 추가한다. |
|
8) 입력받은 텍스트가 나쁜 말 신뢰도가 60%를 넘었을 때 나쁜 말로 판별하고 ‘나쁜 말 멈춰! 고운 말을 사용해주세요.’ 라는 답변을 하고 자동판매기 화면에 ‘싫어요’ 아이콘이 나타나도록 다음과 같이 코드와 [‘나쁜 말 사용’ 신호 보내기] 블록을 추가한다. 이때 판별도는 100%일 때 1로 나타나기 때문에 60%이면 0.6으로 표현해 주어야한다. |
|
9) 나쁜 말이 아닌 경우에는 고운 말인지를 판별해 주기 위하여 [아니면] 블록 속에 다음과 같이 고운 말의 신뢰도가 60%를 넘었을 때 고운 말로 판별하도록 ‘고운 말을 사용하는 참 예쁜 입이네요’를 읽어 주도록 코딩하고, ‘좋아요’ 아이콘이 나타날 수 있도록 [‘고운 말사용’ 신호 보내기]블록을 추가한다. |
| 10) 인공지능이 고운 말, 나쁜 말인지 판별 할 수 없는 경우가 나오는 경우를 대비하여 [아니면] 블록에 [‘고운 말을 사용하는 학교가 되도록 저를 더 학습시켜 주세요’ 읽어주기] 블록을 추가한다. |
11) 자동 판매기의 전체 코드는 다음과 같다.
12) 처음 고운 말 자판기가 시작할 때 ‘대답’, ‘좋아요’, ‘나빠요’가 보이지 않도록 숨기기 블록을 사용하여 숨기고 ‘고운 말신호’를 받았을 때 ‘좋아요’ 아이콘이, ‘나쁜 말신호’를 받았을 때 ‘나빠요’ 아이콘이 나타나도록 각각 다음과 같이 코딩한다.