for textmining

한국어 서술어의 논항과 자릿수

|

이번 글에서는 한국어 서술어의 논항과 자릿수에 대해 살펴보도록 하겠습니다. 이 글은 고려대 정연주 선생님 강의와 ‘한국어문법총론1(구본관 외 지음, 집문당 펴냄)’을 정리하였음을 먼저 밝힙니다. 그럼 시작하겠습니다.

절에서 서술어의 중요성

주어+서술어 구조의 구성을 ‘절’이라고 합니다. 절에서 필수적으로 쓰여야 하는 문장성분의 개수와 종류는 서술어의 의미에 따라 정해집니다. 서술어는 자신의 의미에 따라 하나 혹은 여러개의 언어요소들을 요구하고, 그것들로 절의 기본적 뼈대가 결정된다는 이야기죠. 예문을 보겠습니다.

꽃이 피었다.

진이가 책을 샀다.

김 박사는 영호를 사위로 삼았다.

위의 예시와 같이 ‘피다’, ‘사다’, ‘삼다’는 각각 서로 다른 수와 종류의 문장성분을 요구하고 있음을 볼 수 있습니다. 예컨대 ‘삼다’의 경우 ‘김 박사는’, ‘영호를’, ‘사위로’라는 요소 없이는 완전한 문장을 구성해낼 수가 없게 됩니다. 이는 나중에 설명할 서술어의 자릿수와 관계가 있습니다.

사태와 참여자

사태(state-of-affairs, situation)란 세계에서 일어나거나 성립되는 일을 가리킵니다. 예컨대 다음 예문과 같습니다.

행위(action) : 나는 학교에 간다.

상태(state) : 물이 차다.

상태변화(change of state) : 얼음이 녹는다.

참여자(participant)란 사태에 참여하는 존재를 나타냅니다. 사태의 성격에 따라 필요한 참여자의 수와 역할이 정해집니다. 그런데 사태와 참여자는 비언어적 존재 혹은 개념이라는 사실에 유의해야 합니다.

서술어와 논항

사태와 참여자에 각각 연관되는 의미론적 개념이 술어와 논항입니다. 서술어(predicate)란 사태의 종류를 나타내는 언어요소입니다. 자신이 나타내는 사태가 필요로 하는 참여자의 수만큼 자신의 의미표상 속에 빈자리(slot)가 있습니다.

논항(argument)이란 서술어가 나타내는 사태에 참여하는 참여자를 나타내는 언여요소입니다. 서술어의 의미표상 속 빈자리를 채워주는 역할을 합니다. 다시 말해 서술어가 그 의미를 온전히 드러내기 위해 반드시 필요한 요소가 논항이라고 말할 수 있습니다. 예문을 보겠습니다.

톰이 제리를 좋아한다.

위 예문의 서술어 동사 ‘좋아하다’가 그 의미를 나타내기 위해서는 최소한 좋아하는 행위를 하는 주체, 좋아하는 행위의 대상이 갖추어져야 어떤 사건의 장면이 성립됩니다. 곧 행위의 주체와 대상은 ‘좋아하다’가 의미적으로 꼭 필요한 요소라고 할 수 있고 이를 논항이라고 부릅니다.

서술어의 자릿수

서술어가 꼭 필요로 하는 문장 성분, 즉 논항의 개수를 서술어의 자릿수(valency)라고 합니다. 한국어 서술어의 자릿수는 대개 한 개에서 세 개 사이라고 합니다. 그 예는 다음과 같습니다.

한 자리 술어 : (사람이) 죽다, (아기가) 울다, (물이) 끓다, (친구가) 예쁘다

두 자리 술어 : (아기가 밥을) 먹다, (범인이 피해자를) 죽이다, (진이가 연극을) 보다, (물이 얼음이) 되다, (어른이 아이에게) 속다, (진이가 학교에) 다니다, (그림이 실물과) 같다

세 자리 술어 : (진이가 동생에게 선물을) 주다, (진이가 동생에게 선물을) 받다, (아이가 우체통에 편지를) 넣다, (김 선생이 저 아이를 제자로) 삼다

그런데 같은 어휘항목이라도 여러 의미를 가지는 경우(다의어)에는 자릿수 또한 달라질 수 있습니다. 다음 예문과 같습니다.

진이가 음식을 만들었다.

그들은 이웃 나라를 속국으로 만들었다.

논항 판별 기준1

그렇다면 문장의 어떤 성분이 해당 서술어의 논항일까요? 문장 필수성분인 논항과 논항이 아닌 부가성분을 가려내는 건 생각보다 쉽지 않습니다. 다음 예문에서 강조표시된 서술어의 논항이 무엇인지 살펴보겠습니다.

(가) 나의 집은 무서울 만큼 조용했다.

(나) 진리는 시대에 따라 변하는 것이 아니다.

첫번째 논항 판별 기준은 모국어 화자의 ‘직관’을 활용하는 것입니다. 특정 문장성분을 빼도 문장이 성립하는지 따져보는 것입니다. 우선 (가)의 ‘조용하다’는 한 자리 술어인 것 같습니다. ‘나의 집은 조용했다’도 말이 되기 때문입니다. 이런 면에서 ‘조용하다’의 논항은 ‘(나의)집은’이 됩니다.

(나)의 ‘아니다’는 두 자리 술어인 것 같습니다. ‘진리는 아니다’, ‘시대에 따라 변하는 것이 아니다’라는 표현에 뭔가 부족한게 느껴지기 때문입니다. 이런 면에서 ‘아니다’의 논항은 ‘진리는’과 ‘(시대에 따라)변하는 것이’가 됩니다. 하지만 직관에 의존한 논항 판별 기준은 판단하는 사람마다 달라질 수 있고, 모호하다는 단점이 있습니다.

논항 판별 기준2

두번째 판별 기준은 다음 예문과 같이 ‘반문 테스트’를 해보는 것입니다. (이정민, 남승호, 강범모 1998)

A: 존이 떠났어.

B : 아, 그랬어? ?{그런데 어디에서?}

C : 아, 그랬어? 그런데 어디로?

위와 같은 발화상황에서 청자가 ‘아, 그랬어?’라는 반응을 보였다는 것은 화자 A의 단언에 대해 충분히 알아들었다는 걸 의미합니다. 그런데 청자가 논항에 대해 반문한다면 그 발화는 어색할 수밖에 없습니다. 다시 말해 화자 A의 단언을 수긍했다는 것은 이미 그 단언이 당연히 함의하고 있는 정보에 대해서는 충분히 전달받았음을 인정하고 있다는 이야기입니다.

예시 기준으로 설명하면 ‘존이 떠났다’는 걸 수긍한 B가 다시 ‘어디에서 떠났느냐?’고 묻는 것은 어색합니다. 다시 말해 B가 A의 단언을 인정했다는 것은, 구체적인 발화상황 속에서는 ‘어딘가에서’가 생략됐지만, ‘누군가가 어딘가에서 떠났다’는 전체 정보를 이미 수긍했다는 의미이기 때문에, B도 이미 알고 있다고 판단되는 정보인 ‘어딘가에서’를 다시 반문하는 것이 어색하다는 이야기입니다. 따라서 이 반문테스트에서는 ‘어딘가에서’가 ‘떠나다’의 논항이 됩니다.

C의 경우 발화가 자연스럽습니다. 한국어 화자라면 ‘존이 떠났다’는 걸 수긍하더라도 충분히 궁금해할 수 있겠다는 생각이 듭니다. 바꿔 말해 ‘누군가가 어딘가에서 떠났다’는 전체 정보를 이미 수긍했더라도, ‘어디로’는 다시 물어봄직한 추가적인 정보에 해당한다는 이야기입니다. 따라서 이 반문테스트에서는 ‘어디로’는 ‘떠나다’의 논항이 아닙니다.

논항 판별 기준3

세번째 판별 기준은 논항인지, 아닌지 잘 구별되는 통사적 환경을 일부러 만들어서 해당 성분이 논항인지를 따져보는 것입니다. 예컨대 ‘아이가 젓가락으로 밥을 먹는다’에서 ‘먹다’의 논항이 무엇인지 살피기 위해 다음과 같은 문장을 억지로 만들어 봅니다.

(A) 아이가 젓가락으로 먹는 것은 {밥이다, *밥을이다}.

(B) 아이가 밥을 먹는 것은 {*젓가락이다, 젓가락으로이다}.

논항은 서술어의 필수성분입니다. 서술어로부터 의미적인 자격이나 문법적인 자격이 예측될 수 있으므로 격조사 없이도 그 자격이 명확합니다. (A)에서 ‘밥을이다’가 비문이 되는 건 이 때문이라고 할 수 있는데요. 따라서 세번째 판별 기준에 의하면 ‘밥’은 ‘먹다’의 논항이 됩니다.

반면 논항이 아닌 경우에는 해당 성분이 서술어가 요구하는 필수 성분이 아니므로, 서술어로부터 해당 요소의 자격을 예측해낼 수 없습니다. (B)에서 ‘젓가락이다’가 비문이 되는 건 이 때문입니다. 따라서 이 기준에 의하면 ‘젓가락’은 ‘먹다’의 논항이 아닙니다.

온논항과 반논항

논항은 용언의 의미를 성립시키기 위한 필수 요소입니다. 그러므로 상황 맥락이 주어지지 않을 경우에는 문장에서 통사적으로도 반드시 나타나야 합니다. 논항이 통사적으로 나타났을 경우 보충어(complement)라고 합니다. 한국어에서 보충어는 일반적으로 격조사와 결합되어 실현됩니다.

그러나 어떤 논항은 중요성이 낮아서 보충어로 나타나지 않는 경우도 있습니다. 이때 통사적으로 나타난 논항을 온논항(온전히 나타난 논항)이라 하고, 논항이기는 하지만 통사적으로 나타나지 않은 논항을 반논항이라고 합니다. 예문을 보겠습니다.

(가) 나는 (집에서) 학교로 갔다.

(나) 그는 이 물건을 나에게 (3만 원에) 팔았다.

(가)에서 ‘가다’라는 동사의 의미는 행위의 주체가 어떤 지점에서 어떤 지점까지 공간 이동을 하였을 때 성립합니다. 그러므로 떠나는 지점(집에서)도 논항에 해당하는 겁니다.

(나)에서 ‘팔다’라는 행위에는 반드시 대가가 있어야 합니다. 그 개념이 없으면 ‘주다’의 의미와 같아지기 때문입니다.

그러나 (가)의 ‘집에서’와 (나)의 ‘3만 원에’는 통사적으로 실현되지 않는 경우가 많습니다. 이들 논항이 중요하게 부각되는 상황이 실제 세계에서 드물게 발생하기 때문입니다. 다시 말해 화자가 관심을 기울이지 않는 정보는 논항이라고 하더라도 반논항이라는 겁니다.

아래 예시의 강조 표시는 언제나 온논항에 해당하는 필수 부사어입니다.

(ㄱ) 민들레는 씀바귀와 비슷하다.

(ㄴ) 아내가 귀엽게 군다.

(ㄷ) 철수는 밥을 먹어 버렸다.

논항, 핵어, 보충어

논항이 보충어로 나타나기는 하지만 모든 보충어의 개념이 논항과 연관되는 것은 아닙니다. 정의를 한번 보겠습니다.

(1) 논항은 핵어의 의미적 구현에 꼭 필요한 의미적 요소이다.

(2) 보충어는 핵어의 통사적 구현에 꼭 필요한 통사적 요소이다.

(3) 핵어(head)란 어떤 구성의 핵심적 요소이다. 예컨대 명사구(NP)의 핵어는 명사(N)이고 동사구(VP)의 핵어는 동사(V)이다.

가령 조사는 그 앞에 반드시 명사구가 결합되기를 통사적으로 요구합니다. 이때 조사 앞의 명사구는 조사의 보충어라고 할 수 있습니다. 그러나 이때의 명사구가 조사의 논항은 아닙니다. 논항은 사태(사건+상태) 성립에 필요한 의미적 요소이기 때문입니다.

한편 의존 명사 앞의 관형어도 명사구의 핵어가 의존 명사일 경우 그것이 통사적으로 구현되는 데에 꼭 필요한 통사적 요소이므로 보충어라고 할 수 있습니다.

Comment  Read more

한국어의 접속문

|

이번 글에서는 한국어의 접속문(이어진문장)에 대해 살펴보도록 하겠습니다. 이 글은 고려대 정연주 선생님 강의와 ‘한국어문법총론1(구본관 외 지음, 집문당 펴냄)’을 정리하였음을 먼저 밝힙니다. 그럼 시작하겠습니다.

정의

접속문은 두 절이 대등하게 이어진 문장을 뜻합니다. 그런데 접속문의 선행절(=접속절)과 후행절이 대등하게 이어졌다는 데에는 두 가지 뜻이 있습니다.

첫째, 그 대등성이 의미적이라는 겁니다. 두 절이 의미상 각각 독립적이어서 한쪽이 다른 한쪽에 의존적이지 않다는 이야기입니다.

둘째, 접속절이 후행절의 특정 문장 성분으로 기능하는 것이 아니라는 뜻입니다. 다시 말해 두 절이 문법적으로 서로 연관되지 않은 채 대등하게 별개의 절로 독립해 있다는 소리입니다.

예문을 보겠습니다.

(가) [[[[지금 서울은][[바람이 불]-고] [비가 오]]]-겠]-다].

(나) [[[어제는 눈이 오-았]-고 ]오늘은 비가 오-ㄴ]]-다].

(가)에서 추측 선어말 어미 ‘-겠-‘의 의미 해석은 ‘바람이 불고 비가 오-‘ 전체에 걸리는 것이지 ‘비가 오-‘에만 걸리는 것이 아닙니다. 그러므로 (가)처럼 분석하는 것이 타당합니다.

결국 (가)는 ‘바람이 불-‘이라는 절과 ‘비가 오-‘라는 절이 대등하게 이어졌고 그 둘을 이어주는 연결어미로 ‘-고’가 쓰인 문장이라고 볼 수 있겠습니다.

(나)는 ‘어제는 눈이 왔-‘과 ‘오늘은 비가 온-‘이 연결 어미 ‘-고’에 의해 접속된 것이라고 보면 됩니다.

특성

한국어 접속문의 특성은 세 가지입니다. 우선 예문을 보겠습니다.

(ㄱ) 백두산은 {장엄하고, *장엄하다고} 금강산은 아름답다.

(ㄴ) 철수가 키가 작다만 하는 일은 다부지다.

(ㄱ)처럼 선행절을 문장 그대로 사용하지 않고 종결 어미가 빠진 절로 사용하는 경우가 대부분입니다. 그러나 드물게는 (ㄴ)과 같이 종결 어미 뒤에 보조사가 결합되어 접속절을 구성하는 경우도 있습니다.

(ㄷ) 철수는 키가 크고, (*철수는) 잘생겼다.

(ㄷ)처럼 후행절 주어가 선행절 주어와 같으면 후행절 주어를 반드시 탈락시켜야 합니다.

(ㄹ) 철수가 갔다. + 영희가 갔다.

(ㄹ’’) 철수가 {가거나, 갔거나} 영희가 갔습니다.

(ㅁ) 산은 높았다. + 물은 깊었다.

(ㅁ’’) 산은 {높고, 높았고}, 물은 깊었다.

(ㄹ)과 (ㅁ)처럼 접속문은 대체로 선행절에 시제, 상, 높임, 양태 요소의 선어말 어미를 결합시켜 쓸 수 있습니다.

접속문을 이루는 연결어미

접속문을 이루는 연결 어미의 수효는 그리 많지 않습니다. 그 종류와 예문은 다음과 같습니다.

(1) -고 : 어제는 눈이 왔고 오늘은 비가 온다.

(2) -요 : 이것은 먹이{요, 고} 저것은 벼루이다.

(3) -(으)며, -(으)면서 : 그는 능력도 있{으며, 으면서} 성격도 좋다.

(4) -자 : 그는 시인이자 화가이다.

(5) -(으)나, -지만 : 인내는 쓰{나, 지만} 열매는 달다.

(6) -ㄴ데 : 서울은 추운데 부산은 덥다.

(7) -거나 : 내일은 비가 오거나 눈이 올 것이다.

(1)~(4)는 모두 나열 혹은 순접의 기능을 합니다. (1)의 ‘-고’는 가장 일반적으로 쓰이는 순접 연결어미인데요. (2)에서처럼 ‘-고’는 서술격조사 ‘이다’의 어간 ‘이-‘ 뒤에서는 ‘-요’로 수의적으로 교체가 일어나기도 합니다.

(5)~(6)은 모두 대조 혹은 역접, 즉 선행절과 후행절의 의미가 대립적인 관계에 있음을 나타내는 연결어미입니다. (7)의 ‘-거나’는 선택의 의미를 나타냅니다.

특이 사례

접속의 연결어미 중 일부는 전성어미로 쓰이는 경우가 있습니다. 문장의 전체 구조가 이어진 문장(접속문)이 아니라 안은 문장(내포문)으로 해석될 여지가 있다는 겁니다. 다시 말해 선행절과 후행절 사이의 관계가 대등적/독립적이지 않다는 이야기입니다. 예문을 보겠습니다.

나는 밥을 먹 학교에 갔다. (앞의 사건이 끝난 후 뒤의 사건이 계기적으로 일어남)

동생이 학교에 가면서 노래를 부른다. (앞의 사건이 뒤의 사건과 동시에 일어남)

까마귀 날 배 떨어진다. (앞의 사건 바로 뒤에 뒤의 사건이 뒤따름)

내가 집에 가는데 소나기가 내렸다. (앞의 사건은 뒤의 사건의 배경 상황이 됨)

Comment  Read more

단순 결합 질의(simple conjunctive query)

|

이번 포스팅에선 불린 검색 모델(Boolean Retrieval Model)의 기본인 단순 결합 질의(simple conjunctive query)를 파이썬으로 구현하는 걸 살펴보도록 하겠습니다. 이 글의 알고리즘은 Introduction to Information Retrieval(Manning, C. D. et al., 안동언 외 옮김)을 바탕으로 하되 코드는 제가 직접 작성했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

풀려는 문제

풀려는 문제는 다음과 같습니다. 예컨대 영화 리뷰 말뭉치에서 ‘영화’, ‘재미’, ‘깨알’ 세 단어가 동시에 사용된 문서를 찾고 싶은 겁니다. 이 때 세 단어들은 질의(query)가 됩니다. 우선 왓챠에서 72만2813건의 문서를 수집했고, 리뷰 하나가 하나의 행이 되도록 csv파일로 저장해뒀습니다. 이를 파이썬으로 읽어들이는 코드는 다음과 같습니다.

import pandas as pd
corpus = pd.read_table('review.csv', sep=',')

단어-문서 색인

영화 리뷰 말뭉치에 있는 단어와 문서를 다음과 같이 색인합니다. 우리가 필요한 정보는 특정 단어가 전체 문서집합 가운데 몇 건의 문서에 등장했는지(document frequency), 그리고 등장한 문서의 ID 집합(postings list)입니다.

위와 같이 색인하는 코드는 다음과 같습니다.

def make_index(corpus):
    # corpus 형태 : document로 이뤄진 list
    from collections import defaultdict

    # split docs and words
    docs = [doc.split() for doc in corpus 
            if isinstance(doc, str)]
    words = sorted(list(set(flatten(docs))))

    # indexing
    term_doc = defaultdict(list)
    for doc_idx, words in enumerate(docs):
        for word in words:
            term_doc[word].append(doc_idx)
    term_docfreq = {}
    term_post = {}
    for word, value in zip(term_doc.keys(),
                           term_doc.values()):
        term_docfreq[word] = len(value)
        term_post[word] = list(set(value))
    return term_docfreq, term_post

def flatten(x):
    result = []
    for el in x:
        if isinstance(el, list):
            result.extend(flatten(el))
        else:
            result.append(el)
    return result

포스팅 목록 비교 함수

‘영화’라는 단어가 등장한 문서의 ID는 다음과 같다고 칩시다. 이 아이디는 term_post로부터 구할 수 있습니다.

2, 4, 7, 8, 11

‘재미’는 다음과 같다고 합니다.

7, 368, 383, 434, 1049

우선 ‘영화’ 목록의 첫번째 포인터가 가리키는 2와 ‘재미’의 7을 비교합니다. 다르니까 패스합니다. 2는 7보다 작으므로 ‘영화’의 포인터를 하나 옮깁니다.

이번엔 4와 7을 비교합니다. 다르니까 또 패스합니다. 4는 7보다 작으므로 ‘영화’의 포인터를 하나 옮깁니다.

‘영화’의 7과 ‘재미’의 7이 이번엔 일치하네요. 이를 정답 리스트에 저장해놓습니다. 이런 식으로 검색해야 할 포스팅 목록이 사라질 때까지 같은 작업을 반복하는 겁니다.

코드는 다음과 같습니다.

def intersection(p1, p2):
    # 포스팅 목록 두개를 단순 비교
    # 계산복잡성은 p1 길이 + p2 길이
    p1 = sorted(p1)
    p2 = sorted(p2)
    answer = []
    while len(p1) > 0 and len(p2) > 0:
        if p1[0] is p2[0]:
            answer.append(p1[0])
            p1 = p1[1:]
            p2 = p2[1:]
        else:
            if p1[0] < p2[0]:
                p1 = p1[1:]
            else:
                p2 = p2[1:]
    return answer

단순결합질의

이번엔 두 개 이상의 단어로 이뤄진 쿼리에 대해 단순결합질의를 하는 함수를 만들어 보겠습니다. 그런데 하나 생각할 것이 있습니다. 예컨대 ‘영화’, ‘재미’, ‘깨알’이 동시에 들어있는 문서를 검색해야 한다면 Document Frequency가 가장 낮은 용어부터 처리해야 검색에 필요한 연산량을 줄일 수 있을 겁니다.

이와 관련해 단어들의 리스트로 이뤄진 쿼리와 DF 정보가 주어졌을 때 쿼리 단어를 DF 순으로 정렬해주는 함수를 만들었습니다. 다음과 같습니다.

def sort_freq(query, docfreq):
    result = sorted([[term,docfreq[term]] for term in query],
                 key=lambda x: x[1], reverse=False)
    return [term for term, _ in result]

마지막으로 단순결합질의를 위한 함수를 만들어보겠습니다. 쿼리를 DF가 낮은 순으로 정리한 뒤 순서대로 겹치는 목록(문서)을 찾아가는 방식입니다. 코드는 다음과 같습니다.

def search(query, posting, docfreq):
    terms = sort_freq(query, docfreq=docfreq)
    result = posting[terms[0]]
    terms = terms[1:]
    while len(result) > 0 and len(terms) > 0:
        result = intersection(result, posting[terms[0]])
        terms = terms[1:]
    return result

함수 실행

자, 필요한 함수를 모두 정의했으니 이번엔 실행을 해보도록 하겠습니다. 실행 코드는 다음과 같습니다.

import time

# indexing
docfreq, posting = make_index(corpus)

# processing start
start_time = time.time()

# processing
result = search(query=['영화','재미','깨알'],
                docfreq=docfreq,
                posting=posting)

# processing end
end_time = time.time()

# print processing time
print(end_time - start_time)
print(result)

실행 결과는 다음과 같습니다. 간단한 검색어, 검색 대상이 72여만 건에 불과한데도 제 맥북(2015-early 13인치)에서 무려 125초 넘게 걸리네요ㅠㅠ 다음 글에서 이를 개선해보도록 하겠습니다.

125.26901292800903 [430144, 541361, 708930]

그럼 결과가 잘 나왔는지 해당 문서 내용을 살펴보겠습니다. 다음과 같습니다.

Doc 430144 : 깨알 같은 재미 어느 하나 허투인 것이 없는 웨스 앤더슨 식 영화 Doc 541361 : 깨알 대사 재미 남자임에도 여주인공에게 몰입할 수 있도록 도와주는 연기 생각할 수 있게 하는 영화 또 볼래요 Doc 708930 : 간만에 내 취향의 영화 발견 순수하고 귀여운 캐릭터와 적절한 감동 깨알 재미 배려깊은 결말까지 모두 맘에 들었다 홍영신님과 함께

Comment  Read more

한국어의 어순

|

이번 글에서는 한국어 어순에 대해 살펴보도록 하겠습니다. 이번 글은 ‘한국어문법총론1(구본관 외 지음, 집문당 펴냄)’을 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

한국어는 SOV

세계 언어가 지닌 특성들에서 공통점과 차이점을 기술하고 일반적인 이론으로 발전시키는 언어학의 분야를 언어유형론(linguistic typology)이라 합니다. 언어유형론적으로 볼 때 한국어의 기본 어순은 ‘SOV’입니다. 이는 ‘주어(Subject)+목적어(Object)+동사(Verb)’의 어순이라는 뜻입니다. (영어는 SVO 언어입니다)

한국어의 어순 유형

한국어 어순의 유형을 구체적으로 보이면 다음과 같습니다.

(가) 주어+서술어

(나) 주어+보어+서술어

(다) 주어+목적어+서술어

(라) 주어+부사어+서술어

(마) 주어+부사어+목적어+서술어

(바) 주어+목적어+부사어+서술어

주어+서술어

우선 (가) 유형을 먼저 보겠습니다. (가)는 가장 기본적인 어순으로서 이 어순이 유지된 채 다른 문장 성분이 추가되어 (나)~(바)의 어순이 성립하게 됩니다. 다음 예문에서 보듯이 주어는 서술어 앞에 나오는 것이 원칙이며 만약 강조 등의 문체적 효과를 주기 위해 서술어를 주어 앞에 쓸 때에는 서술어 뒤에 약간의 휴지(pause)를 두는 경우가 많습니다. 문자 언어에서는 서술어 뒤에 반점(,)을 씀으로써 이를 반영합니다.

아기가 잡니다.

겨울은 춥습니다.

여기가 서울입니다.

잡니다, 아기가.

주어+보어+서술어

(나) 유형의 예문은 다음과 같습니다. 그런데 보어와 주어의 순서가 바뀌면 주어와 보어의 해석 역시 바뀌게 되어 뜻이 다른 문장이 되거나 비문이 됩니다. (가) 유형처럼 서술어를 앞에 쓰면 반점을 써 주어야 합니다.

여기는 덕수궁이 아니다. 덕수궁은 여기가 아니다.

철수가 의사가 되었다. *의사가 철수가 되었다.

아니다, 여기는 덕수궁이.

주어+목적어+서술어

먼저 예문을 보겠습니다.

(1) 톰이 제리를 좋아한다.

(2) 제리를 톰이 좋아한다.

(3) 톰이 좋아한다, 제리를.

(4) 좋아한다, 톰이 제리를.

(5) 제리를 좋아한다, 톰이.

(6) 좋아한다, 제리를 톰이.

(1)은 가장 일반적인 (다) 유형 문장입니다. 그런데 (2)에서 보듯이 목적어에 서술의 초점을 두어 주어와 목적어의 순서를 바꿀 수 있습니다. 이는 일반적으로 주어와 목적어의 기능이 뚜렷이 구분되고 격조사 형태도 뚜렷이 구분되기 때문에 가능한 것입니다. 그러므로 (3)~(6)처럼 서술어의 순서까지 바뀌면 어순이 바뀐 문장이 여럿 존재하게 됩니다. 위 예문 모두 자연스러운 한국어 문장입니다.

주어+부사어+서술어

예문을 보겠습니다. (다) 유형의 목적어처럼, (라) 유형의 부사어 또한 의미 강조를 위해 주어와 자리를 바꿀 수 있습니다. 아울러 서술어의 순서까지 바꾼 문장도 성립합니다.

이 지역 기후는 벼농사에 적합하다.

벼농사에 이 지역 기후는 적합하다.

적합하다, 이 지역 기후는 벼농사에.

주어+부사어+목적어+서술어

예문을 보겠습니다.

(A) 선희가 나에게 선물을 주었다.

(B) 선희가 선물을 나에게 주었다.

(C) 철수는 밥을 맛있게 먹는다.

(D) 철수는 맛있게 밥을 먹는다.

(A), (B)를 보면 부사어가 목적어 앞이나 뒤, 둘 중 아무 위치나 올 수 있음을 알 수 있습니다. (C)와 (D) 역시 마찬가지입니다.

물론 자세히 보면 (A)와 (C)가 정상적인 어순이고, (B)와 (D)가 각각 ‘선물을’과 ‘맛있게’를 초점화한 문장이라고 할 수 있습니다. 그러나 그 어순 바꿈이 주어와 목적어의 어순 바꿈만큼 큰 차이를 나타내는 것은 아닙니다.

주어+목적어+부사어+서술어

다음 예문은 부사어를 목적어 뒤에 놓아야 하는 어순입니다. 만약 순서가 바뀌면 매우 어색하거나 비문이 됩니다. 아래 예문에서 ‘꽃에’, ‘사위로’, ‘천재로’, ‘녹지로’ 등의 부사어는 없으면 안되는 필수 부사어인 점 또한 확인할 수 있습니다.

임꺽정 씨가 나를 꽃에 비유했다.

그분이 백동수를 사위로 삼았다.

우리는 홍길동 씨를 천재로 여긴다.

그들이 황무지를 녹지로 만들었다.

Comment  Read more

한국어의 통사 단위

|

이번 글에서는 한국어 통사론(syntax)의 기본 개념과 한국어 통사론이 다루는 통사 단위(문법 단위)에 대해 살펴보도록 하겠습니다. 이번 글은 고려대 정연주 선생님 강의와 ‘한국어문법총론1(구본관 외 지음, 집문당 펴냄)’을 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

통사론

통사론이란 둘 이상의 단어(word)가 결합하여 구(phrase), 절(clause), 문장(sentence)을 형성하는 원리를 탐구하는 분야입니다. 이 때 ‘단어, 구, 절, 문장’을 통사단위라고 합니다. 한국어 통사론이 다루는 최소의 통사 단위는 단어이고 최대 통사 단위는 문장이 됩니다.

다만 이는 편의적인 기술일 뿐이고, 국어 통사론 연구자들은 단어 이하의 단위인 용언의 활용어미까지 통사 단위로 보고 연구한다고 합니다. 활용어미는 교착어인 한국어에서는 단어의 일부분이기 때문입니다.

또한 생성문법의 영향을 많이 받은 현대의 통사론은 문장이라는 최종 결과물을 분석하기보다는 작은 통사 단위를 결합하여 큰 통사 단위를 형성하는 원리를 탐구하는 데 집중합니다.

통사론의 분석 방법

통사론에서는 문법 단위의 각 성분들이 계층적으로 구성을 이룬다고 전제하고, 크게 두 조각으로 분석한 뒤 각각을 다시 더 작은 단위로 분석하는 방식을 이용합니다. 이때 어떤 문법 단위가 모여 보다 큰 문법 단위가 됐을 때 이 큰 단위를 구성, 이 구성을 이루고 있는 작은 단위들 각각을 구성요소(성분)이라고 합니다. 예컨대 다음과 같습니다.

통사단위

통사론이 살피는 통사단위를 예문과 함께 보겠습니다.

(가) 단어 : 민수

(나) : 내 친구 민수

(다) 절(단문) : 민수가 학교에 갔다.

(라) 절(복문) : 민수가 학교에 가면 엄마는 청소를 한다.

(가)는 단어(單語)입니다. 단어란 문장에서 홀로 쓰일 수 있는 말 중 가장 작은 단위입니다. 문장에서 쓰일 때 그 구성요소가 분리되지 않는 성질을 가집니다. 예컨대 (가)의 ‘민수’를 ‘민’과 ‘수’로 나눌 수 없고, 그렇게 되면 그 의미가 사라집니다.

(나)는 ‘민수’를 꾸며주는 말이 앞에 와서 (가)가 확장된 구(句)입니다. 구는 단어들이 모여 이루어진, 그러나 주어와 서술어가 갖추어지지 않은 단위입니다. 둘 이상의 단어가 모여 주변어-중심어의 관계로 맺어지거나, 혹은 중심어만으로 절이나 문장의 일부분을 이룹니다.

(다)에서 비로소 주어와 서술어가 함께 나타나고 있는데 이와 같은 구성을 절(節)이라고 합니다. (다)와 같이 하나의 절이 하나의 문장이 되는 경우도 있고, (라)와 같이 두 개 이상의 절이 하나의 문장을 이루는 경우도 있습니다. (다)를 단문(홑문장), (라)를 복문(겹문장)이라고 부릅니다.

그러나 띄어쓰기 단위인 ‘어절’은 통사단위가 아닙니다. 아래 예문을 보겠습니다.

내 친구 민수가 도로 건너편의 학교에 갔다.

위 문장의 주어는 ‘내 친구 민수’라는 구에 조사 ‘-가’가 붙은 구조로 분석할 수 있습니다. 다시 말해 어절 개념과 상관 없이 더 큰 통사단위가 만들어진 것입니다.

어휘범주, 구 범주

다음 예문을 보겠습니다.

(A) 민수-가 빵-을 먹었다.

(B) [내 친구 민수]-가 [어제 산 빵]-을 먹었다.

(A)의 ‘민수’와 (B)의 ‘내 친구 민수’는 문장에서의 문법적 역할이 같습니다. 마찬가지로 ‘빵’과 ‘어제 산 빵’도 그렇습니다. 이처럼 명사와 명사구의 문법적 역할이 동일하므로 명사 단독으로 쓰이나 명사구로 쓰이나 모두 같은 문법적 범주라는 이야기입니다. 이와 관련해 명사는 원칙적으로 언제라도 명사구로 확장되어 쓰일 수 있다고 합니다.

따라서 (A)에서 ‘민수’, ‘빵’이라는 명사가 단독으로 쓰였지만, ‘민수’와 ‘빵’은 명사구 ‘내 친구 민수’, ‘어제 산 빵’과 같이 명사구와 같은 자격을 지니는 것으로 보아야 합니다. 다시 말해 얼핏 보면 그냥 명사인 것 같아도 내재해 있는 문법적 역할은 명사구라는 이야기입니다. 이는 생성문법에서 비롯된 생각으로, 생성문법에서는 어떤 어휘 범주 X가 단독으로 쓰여도 구 범주 XP와 같은 자격을 가지는 것으로 일관되게 기술합니다.

절(節) 판정 기준

주어와 서술어가 실현되어야 절이라고 말할 수 있습니다. 그런데 어떤 구성은 절인지 아닌지 판별하는 것도 까다롭습니다. 예문을 보겠습니다.

(ㄱ) 빵을 먹으면서 민수가 학교에 간다.

(ㄴ) A: 철수는 밥을 먹었니? B: 응, 먹었어.

(ㄷ) 불이야!

(ㄱ)에서 서술어 ‘간다’의 주어는 ‘민수가’로 나와 있으나 ‘먹으면서’의 주어는 나와 있지 않습니다. (ㄴ)의 B의 대답에서도 맥락상 분명히 알 수 있는 ‘철수가’가 생략되어 있습니다. 그러나 이들 생략된 주어는 무엇인지 확인할 수 있다는 점에서 없지만 있는 것으로 보아야 합니다. 따라서 이 경우에는 ‘빵을 먹으면서’와 ‘먹었어’를 절로 봐야 합니다.

이와는 대조적으로 (ㄷ)은 전형적인 무주어문입니다. 무주어문은 서술어가 ‘이다’일 경우 성립하는 것으로서 절로 이뤄지지 않은 특수한 종류의 문장입니다.

문장

문장이란 생각이나 감정을 말과 글로 표현할 때 완결된 내용을 나타내는 최소의 독립적 형식 단위입니다. 크게 체계문(system sentence)사용문(text sentence)으로 나뉩니다. 체계문은 해당 언어의 문법 원리에 따라 구성된 문장이고 사용문은 실제 사용되는 모습 그대로의 문장을 가리킵니다. 예문을 보겠습니다.

(a) 영희가 소설을 읽는다.

(b) A: 영희가 무엇을 읽니? B: 응, 소설.

(b’) 응, 영희가 소설을 읽어.

(c) 아버지는 신문을 읽고 (아버지는) 회사에 출근하셨다.

(a)는 한국어의 문법 원리에 따라 문장을 끝맸는 종결어미까지 갖춘 ‘주어+목적어+서술어’ 구성의 문장으로서 체계문에 해당합니다. 체계문은 원칙적으로 실제 언어생활에서 사용문으로도 쓰일 수 있습니다.

그러나 (b)의 대답 “응, 소설.”이라는 문장은 (b’)와 같은 체계문에서 담화 맥락상 불필요한 성분을 모두 생략한 사용문입니다. (a)와 (b)-A와 같이 필요한 성분이 문법 원리에 따라 완전하게 구성된 문장을 완전문(full sentence)이라 하고 (b)-B와 같이 실제 상황의 필요에 따라 완전문의 일부를 생략한 문장을 소형문(minor sentence)이라 합니다. 완전문은 체계문일 수도 있고 사용문일 수도 있으나 소형문은 사용문으로만 성립합니다.

Comment  Read more