동사가 필요했다.

AI에게 세계를 서술하게 하려면 동사가 있어야 한다. “이순신이 거북선을 만들었다"에서 “만들었다"가 없으면 문장이 아니다.

엔티티 식별에는 위키데이터가 있다. 이순신은 Q28090이다. 거북선은 Q249845다. 식별이 끝나 있다.

동사에는 이에 해당하는 것이 없다. “만들다"의 ID가 없다. “만들다"와 “제작하다"와 “생산하다"가 같은 뜻인지 다른 뜻인지, 합의된 기준이 없다.

동사를 다루는 프로젝트는 — 지식 그래프든, 의미 검색이든, 구조화된 언어 설계든 — 반드시 이 질문을 만난다. 동사 체계를 어디서 가져올 것인가.


직접 만들면

동사 목록을 처음부터 설계할 수 있다.

move, give, think, feel, say. 기본 동사 50개쯤 정하고, 하위 동사를 붙여나간다. move 아래에 walk, run, crawl. give 아래에 donate, bestow, grant.

세 가지 문제가 생긴다.

첫째, 빠진다. 사람이 머릿속으로 동사를 나열하면 반드시 빠지는 게 있다. “흡착하다"를 빠뜨리고, “반추하다"를 빠뜨리고, “체념하다"를 빠뜨린다. 빠진 동사가 필요한 순간에 체계가 깨진다.

둘째, 기준이 없다. walk과 stroll은 별개 동사인가, 같은 동사의 변형인가. 직접 만들면 이 판단이 설계자의 직관에 의존한다. 직관은 사람마다 다르다.

셋째, 계층이 자의적이다. move 아래에 walk을 넣었는데, walk은 travel의 하위이기도 하다. 어디에 넣을지를 설계자가 결정한다. 그 결정의 근거가 없다.

직접 만든 동사 체계는 설계자의 머릿속에서는 완벽하다. 다른 사람이 보면 “왜 이렇게 분류했지?“가 된다.


워드넷이라는 유산

프린스턴 대학교에서 1985년부터 만들기 시작한 영어 어휘 데이터베이스.

40년간 언어학자들이 영어 단어를 의미 단위(synset)로 묶고, 상하위 관계로 연결해왔다. 동사만 13,767개 synset이 있다. 각 synset에 고유 ID가 있고, 정의가 있고, 다른 synset과의 관계가 명시되어 있다.

“donate"와 “bestow"는 같은 synset에 묶여 있다. 같은 의미라는 뜻이다. “donate"는 “give"의 troponym이다. give의 구체적 형태라는 뜻이다. “give"는 “transfer"의 troponym이다. transfer의 구체적 형태라는 뜻이다.

이 계층이 13,767개 동사에 대해 이미 정리되어 있다.

빠지지 않는다. 40년간 언어학자들이 채워왔으니까. 기준이 있다. synset의 정의와 관계가 명시적이니까. 계층이 근거가 있다. troponym 관계가 언어학적 분석에 기반하니까.


사전과 문법은 다르다

워드넷이 동사의 사전이라면, 그 동사를 어떻게 쓸지는 별개의 문제다.

워드넷은 “give"가 어떤 의미이고 “donate"와 어떤 관계인지를 알려준다. 그러나 “give"를 문장에서 어떻게 쓰는지 — 누가 주고, 무엇을 주고, 누구에게 주는지 — 의 구조까지 알려주지는 않는다.

이것은 위키데이터와 같은 관계다. 위키데이터는 이순신이 Q28090이라는 것을 알려준다. 그러나 이순신에 대한 문장을 어떻게 구성할지는 위키데이터의 몫이 아니다.

사전은 빌리되, 문법은 직접 만드는 것이다.

워드넷에서 가져올 것은 synset ID, 의미 정의, troponym 계층 트리다. 워드넷이 함께 제공하는 verb frame이나 참여자 구조, 구문 패턴은 각 프로젝트가 자체 설계하는 편이 낫다. 워드넷의 구문 정보는 영어에 종속되어 있고, 동사의 의미 체계와 동사의 사용법은 별개의 문제이기 때문이다.


13,767개에서 10개까지

워드넷 동사 13,767개를 전부 나열하면 의미가 없다. 구조가 필요하다.

워드넷의 troponym 트리를 타고 올라가면, 더 이상 올라갈 곳이 없는 최상위 노드가 있다. 루트 동사. 이것이 559개다.

559개를 의미적으로 묶으면 68개 하위 원형(sub-primitive)이 된다. 68개를 더 묶으면 10개 원형(primitive)이 된다.

13,767 동사 → 559 루트 → 68 하위 원형 → 10 원형

BE        — 존재, 보유, 위치
PERCEIVE  — 지각, 감지, 발견
FEEL      — 감정, 호오, 욕구
THINK     — 사고, 판단, 기억
CHANGE    — 변화, 시작, 종료
CAUSE     — 행위, 생성, 파괴
MOVE      — 이동, 도착, 이탈
COMMUNICATE — 발화, 표시, 합의
TRANSFER  — 전달, 수취, 교환
SOCIAL    — 협력, 경쟁, 소속

이 10개가 인간 동사의 의미 원형이다. 한 사람의 직관이 아니라 워드넷 40년 축적, 13,767개 데이터의 구조에서 나온 것이다.

이 4단계 계층 — 원형, 하위 원형, 루트, 개별 동사 — 은 해상도 조절이 가능하다. 거칠게 보면 10종류의 행위가 있고, 정밀하게 보면 13,767종류의 행위가 있다. 필요한 해상도에서 끊어 읽으면 된다.


확장과 압축

13,767개가 부족하면? 새 동사를 추가할 수 있다. 다국어 동사, 신조어, 전문 용어. 해당 하위 원형에 추가하면 된다. 기존 체계가 깨지지 않는다.

13,767개가 과하면? 동의어 synset을 하나로 합칠 수 있다. donate → give로 리다이렉트하면 된다. 기존에 donate로 기록된 데이터는 give를 찾아간다. HTTP 301과 같은 원리다.

중요한 것은 순서다. 먼저 전부 넣고, 실제로 돌려보고, 사용 데이터를 보고 나서 깎는다. 데이터 없이 책상에서 깎으면 필요한 구분을 날려먹는다.


그 너머: 의미 원자

워드넷 13,767개 동사는 인간이 이름 붙인 동사의 목록이다. 포괄적이지만, 이것이 전부는 아니다.

“give"를 더 쪼갤 수 있다. CAUSE + HAVE + MOVE. 의미 원자(semantic primitive)로 분해하는 것이다. 이 분해가 완료되면, 목록에 없는 동사도 원자의 조합으로 표현할 수 있다.

워드넷이 표준 라이브러리라면, 의미 원자 체계는 컴파일러다. 표준 라이브러리에 없는 함수도 컴파일러가 만들 수 있듯이.

이것은 큰 연구 과제이고, 워드넷 기반 체계가 작동한 이후에 시도할 일이다. 지금은 표준 라이브러리로 충분하다.


정리

동사 체계를 세우려는 모든 프로젝트는 같은 질문을 만난다. 어디서 가져올 것인가.

직접 만들면 빠지고, 자의적이고, 근거가 없다. 워드넷 위에 세우면 빠지지 않고, 합의되어 있고, 데이터에서 나온다.

워드넷은 40년간 언어학자들이 축적한 인류의 동사 사전이다. 이 사전의 단어를 빌리되, 문법은 직접 만드는 것. 이것이 엔티티에서 위키데이터를 쓰는 이유이고, 동사에서 워드넷을 쓰는 이유다.