티스토리 뷰

예제 대화문


사용자가 좋아하는 노래 있어요?” 라고 질문하는 경우를 생각해 보자. 이때 사용자는 노래대신에 음악, 팜송, K-POP, 곡 등 여러 표현으로 물어볼 수 있다. 즉 비슷한 말을 어떻게 알아 듣게 할 것인가 하는 문제이다. 이 역시 선택매칭([ ], 꺽은괄호) 또는 concept을 이용하여 처리할 수 있다.

선택매칭과 concept의 구문형식에 대해서는 이미 제32절 듣고 말하기에서 설명하였기 때문에 이곳에서는 그 용도와 확장 사용에 대해서만 설명하기로 하겠다.[1]

 

A.     u: ( 좋아* [노래, , 음악, 가사, song] 있어요) . I love you를 좋아해요

      B.     concept: ~노래 [노래, , 음악, 가사, Song]

 u: ( 좋아* ~노래 있어요) . I love you를 좋아해요.

 

concept은 단어 외에 다른 컨셉을 구성요소로 가질 수 있기 때문에 위의 예제처럼 동의어에 사용할 수 있을 뿐만 아니라 여러 컨셉을 하나로 묶어 더 큰 집합으로 만들어 사용할 수도 있다. 예를 들어 애완동물이라는 컨셉에 강아지 컨셉, 고양이 컨셉 등의 개별 컨셉들을 함께 묶어 사용할 수 있다.


concept: ~강아지 [ 푸들 치아와 진돗개 도베르만 삽살개]

concept: ~애완동물 [ ~강아지 ~고양이 ~~파충류]

concept: ~동물 [ ~애완동물 ~가축 ~야생동물]

 

위와 같이 선언할 경우 푸들 à 강아지 à 애완동물 à 동물이라는 계층화된 컨셉을 만들 수 있고 이렇게 개념화된 컨셉을 만들면 코드 작성시의 오류를 줄여줄 수 있을 뿐만 아니라 ~강아지, ~애완동물, ~동물이라는 한 단어로 각각 필요한 수준과 단계에서 그 안에 포함된 모든 요소들을 가리킬 수 있는 효율성도 갖게 해 준다.

그런데 이렇게 concept을 자주 활용하고 중첩해서 사용하다 보면 이미 만들어 놓은 것을 잊고 처음 선언하는 것으로 착각하여 중복 선언할 수가 있다. 만약 중복 선언을 하면 CS는 에러를 표시해 준다[2]. 이때는 최초 선언한 위치로 찾아가 수정할 수도 있겠지만 그 보다는 MORE 라는 명령어로 기존의 concept 요소를 확대시키면 더 간편하게 수정을 할 수 있다.

 

 concept: ~강아지 MORE [ 마스티프 쉬나우저 테리어 도베르만]

 

이제 컨셉 “~강아지에는 기존의 5가지 구성요소 외에 4 가지 요소가 추가 되었는데, 만약 동일한 요소를 중복선언하고 있다면 CS가 자동으로 제외한다. 위의 경우 도베르만이 중복이므로 나중에 추가한 도베르만은 자동으로 무시된다.

컨셉의 또 다른 장점은 다른 사람이 만든 컨셉을 복사해서 사용할 수 있다는 점이다. 따라서 기본이 되는 컨셉은 중복 작성하지 말고 서로 공유하는 것이 생산적일 것이다. 영문의 경우 약 1,600여 개의 컨셉이 소스화일과 함께 제공되고 있다.

이제 위의 대화 예제는 아래와 같이 좀 더 확장하여 작성할 수 있다. 사용자가 좋아하는 곡 있어요?”, “아는 노래 있어요?” 로 질문한다고 가정하고 선택매칭을 추가하였다.  

 

A.     b: ( [좋아* *] ~노래) . I love you를 좋아해요

 

그런데 좀 더 정확하게 하기 위해 있어요라는 단어를 패턴에 넣을 수도 있다. 이때는 있어요”, “있나요”, “있습니까?” 등을 모두 매칭할 수 있게 부분 와일드 카드를 쓰는 것이 좋다.

 

B.     b: ( [좋아* *] ~노래 있*) . I love you 를 좋아해요

 

이제 룰D는 아래의 140가지 조합의 경우를 모두 매칭시킬 수 있게 되었다.




예제 대화를 위한 스크립트





[1] 이 두 가지 방식은 코드의 간편성, 중복성이라는 측면에서 차이가 있을 뿐 아니라 CS가 매칭을 시도하는 방식에 있어서도 차이가 난다. CS는 선택매칭([ ])을 만나게 되면 그 안에 나열된 단어를 앞에서부터 순서대로 매칭을 시도해 보다 매칭이 되면 즉각 꺽은 괄호 밖으로 나와서 그 다음 단어, 위의 예제에서는 있어요를 찾기 시작한다. 반면에 컨셉을 만나면 CS는 컨셉에 포함된 모든 요소를 동시에 매칭 시도한다. 순서대로 매칭하는 것이 아닌데 이 차이의 결과에 대해서는 제7 5S항목에서 자세히 설명하였다.

[2] 스크립트 작성이 끝나면 구문 에러를 체크하는 단계를 거치는데 이때 중복 선언이 있으면 에러를 표시해 준다테스트하는 절차와 방법은 제 6장 4절에서 설명하기로 한다




댓글
댓글쓰기 폼