상세 컨텐츠

본문 제목

형태소 분석기 Kiwi CoNg (3/4): 모델 성능 비교

프로그래밍/NLP

by ∫2tdt=t²+c 2025. 5. 19. 03:17

본문

지난 포스팅까지는 Kiwi에서 도입한 CoNg 모델이 어떤 구조인지, 또 왜 이 모델을 도입했는지 간단하게 소개해드렸습니다. 이번 포스팅에서는 신경망 모델인 CoNg이 기존의 통계 기반 모델과 비교해 실제로 얼마나 강력해졌는지 비교 분석해보도록 하겠습니다.

Kiwi CoNg 포스팅 시리즈

  1. 형태소 분석기 Kiwi CoNg (1/4): 신경망 모델 도입기
  2. 형태소 분석기 Kiwi CoNg (2/4): CoNg 모델 소개
  3. 형태소 분석기 Kiwi CoNg (3/4): 모델 성능 비교
  4. 형태소 분석기 Kiwi CoNg (4/4): 모델 최적화 (조만간 공개됩니다)

형태소 분석기의 성능 평가

형태소 분석기의 성능을 평가하는 가장 정석적인 방법은 입력 문장과 그 문장의 올바른 형태소 분석 결과를 쌍으로 하여 평가 데이터를 구축하고, 형태소 분석기에 해당 문장을 입력했을때 올바른 형태소 분석 결과와 얼마나 유사한 결과가 나오는지를 비교해보는 것입니다. 제일 일반적인 방법이지만 다음과 같은 이유 때문에 실제로는 그대로 따르기가 어렵습니다.

  1. 평가 데이터를 구축하는 데 품이 많이 든다.
  2. 형태소 분석기마다 사용하는 품사 체계가 달라서 다양한 분석기들 간의 성능을 비교하는 것이 불가능하다.
  3. 자주 쓰여서 분석하기 쉬운 어구에서부터 모호해서 분석하기 어려운 어구까지 모두 동등하게 점수에 반영되기 때문에 전반적으로 점수의 변별력이 낮고 원하는 능력만 비교하기가 어렵다.

다양한 도메인의 문장을 잘 분석해내는지 평가하는게 필수적인데, 이 방법으로 평가를 진행하려면 품사 태그별로 평가 데이터를 다양한 도메인에 대해 전부 구축해야합니다. (누가 데이터 구축하라고 돈 주는 것도 아닌데...) 이렇게 평가 데이터를 구축하는 것은 현실적이지 않다고 판단했기 때문에 형태소 분석 결과 그 자체를 비교하는 것은 기존에 구축해둔 소량의 데이터에 대해서만 수행하기로 했고, 이 평가 결과는 성능 자체를 측정한다기보다는 분석기가 문제 없이 잘 작동한다는 것을 확인하기 위한 리그레션 테스트(Regression Test)의 목적으로 수행하기로 했습니다.

형태소 분석 평가 예시
입력 내일이면 또 불금에 주말이 다가오네요~~
모범 답안 내일/NNG 이/VCP 면/EC 또/MAG 불금/NNG 에/JKB 주말/NNG 이/JKS 다가오/VV 네요/EF ~~/SO
분석기 출력 내일/NNG 이/VCP 면/EC 또/MAG 불/VV ᆯ/ETM 금/NNG 에/JKB 주말/NNG 이/JKS 다가오/VV 네요/EF ~~/SO
평가 결과(F1) 0.7142

그래서 형태소 분석 결과 비교 대신 도입한 것은 모호성 해소 평가입니다. 이 평가에 대해서는 예전에 한번 다룬 적이 있습니다. 저 당시에 구축했던 모호성 평가 데이터셋은 200여 문장으로 구성되어 있었는데 Kiwi의 내장 언어 모델이 개선되면서 전반적으로 난이도가 낮아졌다고 판단하여 더 어려운 평가 사례를 추가하여 총 510문장으로 데이터셋을 확충했습니다.

모호성 해소 평가 예시
입력 이집트 역시 물물교환을 위한 시장을 가지고 있었고, 그리스도 마찬가지였다.
모범 답안 그리스/NNP
분석기 출력 이집트/NNP 역시/MAG 물물교환/NNG 을/JKO 위하/VV ㄴ/ETM 시장/NNG 을/JKO 가지/VV 고/EC 있/VV 었/EP 고/EC ,/SP 그리스도/NNP 마찬가지/NNG 이/VCP 었/EP 다/EF ./SF
평가 결과(1 or 0) 0

그리고 모호성 해소 평가와 더불어서 문장 분리 성능도 분석기의 성능을 평가하는데에 사용할 수 있습니다. 문장 분리 과제는 결국 문장이 끝나는 지점을 찾아내는 것이고, 이는 특정 어미가 종결어미인지 비종결어미인지 판단하는 것과 동일합니다. 이것은 어떻게 보면 종결어미일 수도 있고 종결어미가 아닐 수도 있는 형태소의 모호성을 해소하는 것인 셈이니 사실 모호성 해소 평가의 또 다른 버전이라고 볼 수도 있습니다. 문장 분리 평가 데이터셋은 2023년 3월에 구축된 버전도 여전히 충분히 어렵다고 판단해 그대로 사용하기로 했습니다.

문장 분리 평가 예시
입력 알겠지 그러니 나와 친해지지 마 가까워지지 마
모범 답안 알겠지 / 그러니 나와 친해지지 마 / 가까워지지 마
분석기 출력 알겠지 그러니 나와 친해지지 마 / 가까워지지 마
평가 결과(Norm F1) 0.6667

베이스라인

새 모델이 얼마나 잘하는지를 알기 위해서는 기존 분석기들의 성능을 먼저 파악해야합니다. 그래서 다음과 같이 자주 쓰이는 형태소 분석기들을 뽑아 보았습니다.

베이스라인으로 삼은 분석기들이 모호성 해소나 문장 분리 평가를 모두 지원하는 건 아니지만, 일부 평가만으로도 전반적인 경향성을 파악하는 데에는 문제가 없습니다. 베이스라인과 1차로 학습한 CoNg Global 모델의 평가 결과를 정리해보면 아래와 같습니다.

분석기 형태소 분석(F1, %) 모호성 해소(Acc, %) 문장 분리(Norm F1, %)
Komoran - 46.65 -
MeCab - 58.55 -
Kkma - 51.20 -
Hannanum - - 56.73
Okt - - 58.74
Khaiii - 54.32 -
Bareun - 69.86 53.78
Kiwi KnLM 81.95 54.03 80.55
Kiwi SBG 81.89 65.59 81.77
 
Kiwi CoNg Global 81.36 82.03 83.76

형태소 분석 평가의 경우 Kiwi에 업데이트를 거치며 여러 독자적인 품사 태그가 추가되었기에 기존 분석기들과 호환되지 않아서 Kiwi 간의 비교만 가능합니다. 모호성 해소 평가의 경우 Hannanum이나 Okt는 동사와 형용사를 구별하지 못하기 평가가 불가능하구요, 또 문장 분리를 직접 지원하지 않는 분석기도 제법 있습니다. 이런 결측값은 무시하기로 하고 베이스라인의 성능들을 살펴보면 모호성 해소에 대해서는 Bareun의 성능이 가장 높았고, 문장 분리는 타 분석기에서는 Okt, Kiwi에서는 Kiwi SBG가 가장 높은 성능을 보였습니다.

새로 개발한 CoNg 모델의 경우 별도의 튜닝도 없이 모호성 해소 성능과 문장 분리 성능에서 기존 분석기들을 압도했습니다! 그런데 이상하게 형태소 분석 성능은 81.95 → 81.36으로 기존보다 내려가는 양상을 보이고 있습니다. 아니 어째서?! 이론상으로는 CoNg이 KnLM보다 아주 우월한 모델이어야 하는데요, 도대체 어떤 부분이 문제였는지 살펴봐야겠네요.

형태소 분석 성능 하락 원인 탐색 & 해결책

Kiwi CoNg Global의 성능이 내려간 원인을 찾기 위해 KnLM이나 SBG 모델의 분석 결과와 비교해서 CoNg Global의 분석 결과가 어떻게 달라졌는지 살펴봅시다.

입력 문장 그점에서 <두들버그>의 유일한 출연진이자 주연이었던
모범 답안 그/MM 점/NNG 에서/JKB </SSO 두들버그/NNP >/SSC 의/JKG 유일/NNG 하/XSA ᆫ/ETM 출연진/NNG 이/VCP 자/EC 주연/NNG 이/VCP 었/EP 던/ETM
KnLM 결과 그/MM 점/NNG 에서/JKB </SSO 두들버그/NNP >/SSC 의/JKG 유일/NNG 하/XSA ᆫ/ETM 출연진/NNG 이/VCP 자/EC 주연/NNG 이/VCP 었/EP 던/ETM
CoNg 결과 그/MM 점/NNG 에서/JKB </SSO 두/MM 들/XSN 버그/NNG >/SSC 의/JKG 유일/NNG 하/XSA ᆫ/ETM 출연진/NNG 이/VCP 자/EC 주연/NNG 이/VCP 었/EP 던/ETM
입력 문장 문래역 근처 맛집 화덕구이 피자 - 피자팩토리
모범 답안 문래역/NNP 근처/NNG 맛집/NNG 화덕/NNG 구이/NNG 피자/NNG -/SO 피자팩토리/NNP
KnLM 결과 문래역/NNP 근처/NNG 맛집/NNG 화덕/NNG 구이/NNG 피자/NNG -/SO 피자팩토리/NNP
CoNg 결과 문/NNP 래/NNG 역/NNG 근처/NNG 맛집/NNG 화덕/NNG 구이/NNG 피자/NNG -/SO 피자/NNG 팩토리/NNP

위의 두 사례가 CoNg 및 CoNg Global에서 형태소 분석 성능이 떨어지는 이유를 잘 보여주고 있습니다. 모델이 잘 모르는 단어를 자꾸 자기 멋대로 분해하는 현상입니다. 이 현상은 현재 Kiwi의 대표적인 한계 중 하나로 OOV(Out-Of-Vocabulary: 분석기 사전에 등록되지 않은 단어)에서 기인하는 오류 때문입니다. 문장을 올바르게 형태소로 쪼개기 위해서는 분석기는 어떤 형태소들이 있는지 미리 알고 있어야 합니다. 분석기에 최대한 많은 형태소를 입력해둔다고 해도 언어는 끊임없이 변화하면서 새로운 형태소가 만들어지기 때문에 형태소 분석기는 어쩔 수 없이 맞닥뜨릴 수 밖에 없습니다. 

"두들버그"를 예로 들어보면, 모델은 두들버그라는 게 영화 이름이라는 것을 모르므로 이를 하나의 형태소로 분석하는 대신 자신이 아는 형태소들의 조합으로 표현하게 됩니다. "두/MM 들/XSN 버그/NNG"도 그런 조합 중 하나인데요, 사실 한국어 지식이 있는 사람이라면 누구나 관형사(MM) 뒤에 명사형 접미사(XSN)가 붙는건 불가능하므로 말도 안되는 분석이라는 걸 알 수 있습니다. KnLM 모델에서는 왜 이런 현상이 안 나타날까요? 사실은 KnLM에서도 동일한 현상이 발생하지만 Kiwi의 보정 로직이 이를 방지합니다. 언어 모델 탐색 점수가 너무 낮은 경우(두/MM 뒤에 들/XSN이 오는 경우는 아예 없으므로 KnLM에서는 거의 -20에 가까운 로그 확률을 부여하게 됩니다.) 뭔가 잘못된 분석이라는 판단하에 해당 문자열을 형태소로 쪼개는 대신 전체를 신조어로 추정하는 보정 로직이 있거든요. 이 덕분에 분석기는 "두들버그"가 뭔지 모르지만 일단 쪼개지 않고 NNP로 태그를 부여하게 됩니다.

동일한 보정 로직이 왜 CoNg 모델에도 들어가 있는데 왜 동작하지 않았을까요? 이는 신경망 모델의 (과도한) 일반화 능력 때문이라고 볼 수 있습니다. 실제로 CoNg 모델은 두/MM 뒤에 들/XSN이 나타나는 일을 -10 정도의 로그 확률로 추정합니다. KnLM 대비 후하게 점수를 주는 것이죠. 모델은 자신이 학습한 사례에서 두/MM 들/XSN이 연속해서 나오는 패턴이 없었음에도 다른 사례들을 보고 일반화하여 자기멋대로 "두/MM 들/XSN"도 가능하다고 판단한 것입니다. 근데 사실 좋은 모델이라면 학습 과정을 통해 저런 이상한 패턴은 생성이 불가능하다는 걸 스스로 깨닫고 저런 배열에 대해서는 아주 낮은 확률을 부여해야하는 것 아닐까요?

모델이 이렇게 학습되는 이유는 학습 목표와 관련되어 있습니다. 일반적으로 언어 모델을 학습할때는 실제로 쓰이는 문장들을 입력하기 때문에 모델은 올바른 형태소 배열을 학습하게 됩니다. 확률의 관점에서 이야기하자면 올바른 형태소 배열에 대한 확률을 높이는 과정(Likelihood Maximization)에서, 그렇지 않은 배열들에 대한 확률이 자동적으로 낮아지는 구조인 것입니다. 즉, 모델은 잘못된 형태소 배열에 대해서는 한번도 따로 배우지 않습니다. 이 방법은 학습에 쓰는 말뭉치가 아주 큰 경우에는 정말정말 "바른 문장"들을 다양하게 대량으로 보게 되기 때문에 크게 문제가 되지 않습니다. 문제는 말뭉치가 충분히 크지 않은 경우지요. 모델이 보지 못한 문장이 있을때, 이게 올바른 문장이지만 데이터의 다양성이 적어서 모델이 못 봤던 것인지 아니면 실제로 잘못된 문장이라서 못 봤던 것인지 모델 입장에서는 구별할 방법이 없습니다. 이 때문에 올바른 배열과 그렇지 않은 배열 간의 확률 차이를 크게 키우는게 불가능해지는 것이지요.

Kiwi가 필요로 하는 것은 형태소 기반의 언어 모델이므로 이 문제를 풀려면 형태소 분석이 되어있는 대량의 말뭉치가 필요합니다. 그러나 이를 대량으로 확보하는건 불가능한 상황이죠. 따라서 올바른 분석 결과를 더 추가하는 대신 모델에게 잘못된 분석 결과를 보여주면서 이 배열들의 확률을 낮추도록 하는 학습 목표(Unlikelihood Minimization)를 추가했습니다. 기존 방식이 틀린 분석 결과에 대해서는 암묵적으로 피드백을 주었다면 이 방식은 명시적으로 피드백을 준 것이라고 볼 수 있습니다. Unlikelihood Training에 대해 더 궁금하신 분들은 Welleck, Sean, et al. "Neural text generation with unlikelihood training." arXiv preprint arXiv:1908.04319 (2019).  논문을 참고하시길 바랍니다. 

기존의 언어 모델 학습 목표(Likelihood Maximization) $P($ 그/MM 점/NNG 에서/JKB </SSO 두들버그/NNP >/SSC 의/JKG 유일/NNG 하/XSA ᆫ/ETM $)$ :
변경된 언어 모델 학습 목표(+Unlikelihood Minimization) $P($ 그/MM 점/NNG 에서/JKB </SSO 두들버그/NNP >/SSC 의/JKG 유일/NNG 하/XSA ᆫ/ETM $)$ :
$P($ 그/MM 점/NNG 에서/JKB </SSO 두/MM 들/XSN 버그/NNG >/SSC 의/JKG 유일/NNG 하/XSA ᆫ/ETM $)$ :

잘못된 분석 결과를 대량으로 만드는 것은 상대적으로 쉽게 해결 가능합니다. 일단 올바르게 형태소 분석된 결과를 알고 있으니 여기에서 고유 명사를 일부러 강제로 더 쪼개도록 형태소 분석기에게 시키면 됩니다. 그럼 1개의 문장에 대해서도 수십개의 잘못된 분석 결과가 나오게 되죠. 이를 통해서 Unlikelihood Minimization을 수행할 수 있습니다.

추가로 모델이 더 다양한 문장을 학습할 수 있도록 웹 말뭉치를 추가했습니다. 웹 텍스트의 경우 형태분석 결과가 라벨링된 데이터가 별도로 없었으므로 먼저 Kiw KnLM과 Kiwi CoNg이 동일하게 분석하는 사례들만 모아서 자동 라벨링된 데이터셋을 확보했습니다. 자동으로 만들어진 데이터셋의 특성상 품질의 문제가 있을수 있으므로 학습 시에 이 데이터는 50%까지만 보고 나머지 50%는 사람이 직접 구축한 양질의 기존 데이터셋을 보도록 비율을 맞췄습니다. 이렇게 v2 버전을 학습해본 결과는 아래와 같습니다.

분석기 형태소 분석(F1, %) 모호성 해소(Acc, %) 문장 분리(Norm F1, %)
Kiwi KnLM 81.95 54.03 80.55
Kiwi SBG 81.89 65.59 81.77
 
Kiwi CoNg Global 81.36 82.03 83.76
Kiwi CoNg Global v2 81.61 87.46 84.11

사실 형태소 분석 쪽의 성능이 크게 개선되길 바라고 진행한 튜닝이었으나, 실제 개선 폭은 모호성 해소 쪽에서 제일 크다는 의외의 결과를 얻었습니다. 형태소 분석 평가만 보자면 여전히 KnLM이 제일 높아서 몇 가지 튜닝을 더 시도해보았으나 더 개선된 결과를 얻을 순 없었습니다. 어쨌든 모든 과제에서 성능이 올랐으니 이 정도에서 만족하고 최종 모델을 위한 학습 방법을 결정 지었습니다. (이하에서 CoNg이라고 표기되는 모델들은 모두 이 개선된 학습 방법을 채용한 모델을 가리킵니다.)

모호성 해소 성능의 극적인 개선

KnLM 및 SBG 모델 대비 성능이 가장 크게 개선된 과제는 바로 모호성 해소입니다. 과연 실제로 어떤 부분에서 개선이 있었는지 살펴보도록 할까요? 일단 평가 항목별로 점수를 나눠서 측정하면 아래와 같습니다. (Kiwi 외에도 높은 모호성 해소 성능을 보였던 바른 형태소 분석기도 함께 분석의 대상으로 잡아보았습니다. 아래의 결과는 이 코드를 사용하여 재현해 볼 수 있습니다.)

분석기 명사 불규칙 동사 동사/형용사 원거리
Kiwi KnLM 46.02 47.77 65.94 56.41
Kiwi SBG 62.50 56.68 68.84 74.35
Kiwi CoNg 89.77 74.52 84.05 66.66
Kiwi CoNg Global 94.31 77.07 86.23 89.74
Bareun 71.59 66.88 71.74 69.23

CoNg과 CoNg Global의 경우 모든 부분에서 크게 개선되었지만 특히 명사의 모호성 해소 성능이 제일 극적이네요. 명사부터 살펴보도록 하겠습니다.

더보기
박씨를 귀가 조치하고 불구속 수사하기로 결정했다.
(귀가/N)
kiwi-knlm 박/N 씨/N 를/J 귀가/N 조치/N 하/X 고/E 불/X 구속/N 수사/N 하/X 기/E 로/J 결정/N 하/X 었/E 다/E ./S
kiwi-sbg 박/N 씨/N 를/J 귀가/N 조치/N 하/X 고/E 불/X 구속/N 수사/N 하/X 기/E 로/J 결정/N 하/X 었/E 다/E ./S
kiwi-cong 박/N 씨/N 를/J 귀가/N 조치/N 하/X 고/E 불/X 구속/N 수사/N 하/X 기/E 로/J 결정/N 하/X 었/E 다/E ./S
kiwi-cong-global 박/N 씨/N 를/J 귀가/N 조치/N 하/X 고/E 불/X 구속/N 수사/N 하/X 기/E 로/J 결정/N 하/X 었/E 다/E ./S
bareun 박씨/N 를/J 귀/N 가/J 조치하/VV 고/E 불구속/N 수사하/VV 기/E 로/J 결정하/VV 았/E 다/E ./S
모두의 눈과 귀가 집중된 행사!
(귀/N 가/J)
kiwi-knlm 모두/N 의/J 눈/N 과/J 귀/N 가/J 집중/N 되/X ᆫ/E 행사/N !/S
kiwi-sbg 모두/N 의/J 눈/N 과/J 귀/N 가/J 집중/N 되/X ᆫ/E 행사/N !/S
kiwi-cong 모두/N 의/J 눈/N 과/J 귀/N 가/J 집중/N 되/X ᆫ/E 행사/N !/S
kiwi-cong-global 모두/N 의/J 눈/N 과/J 귀/N 가/J 집중/N 되/X ᆫ/E 행사/N !/S
bareun 모두/N 의/J 눈/N 과/J 귀/N 가/J 집중되/VV ㄴ/E 행사/N !/S
그런데 강의 듣는 사람들 입장은 또 다르대.
(강의/N)
kiwi-knlm 그런데/M 강의/N 듣/VV 는/E 사람/N 들/X 입장/N 은/J 또/M 다르/VA 대/E ./S
kiwi-sbg 그런데/M 강의/N 듣/VV 는/E 사람/N 들/X 입장/N 은/J 또/M 다르/VA 대/E ./S
kiwi-cong 그런데/M 강의/N 듣/VV 는/E 사람/N 들/X 입장/N 은/J 또/M 다르/VA 대/E ./S
kiwi-cong-global 그런데/M 강의/N 듣/VV 는/E 사람/N 들/X 입장/N 은/J 또/M 다르/VA 대/E ./S
bareun 그런데/M 강의/N 듣/VV 는/E 사람/N 들/X 입장/N 은/J 또/M 다르/VA 대/E ./S
4대 강의 수문을 열고 진실을 파헤쳐야한다.
(강/N 의/J)
kiwi-knlm 4/S 대/N 강/N 의/J 수문/N 을/J 열/VV 고/E 진실/N 을/J 파헤치/VV 어야/E 하/VX ᆫ다/E ./S
kiwi-sbg 4/S 대/N 강/N 의/J 수문/N 을/J 열/VV 고/E 진실/N 을/J 파헤치/VV 어야/E 하/VX ᆫ다/E ./S
kiwi-cong 4/S 대/N 강/N 의/J 수문/N 을/J 열/VV 고/E 진실/N 을/J 파헤치/VV 어야/E 하/VX ᆫ다/E ./S
kiwi-cong-global 4/S 대/N 강/N 의/J 수문/N 을/J 열/VV 고/E 진실/N 을/J 파헤치/VV 어야/E 하/VX ᆫ다/E ./S
bareun 4/S 대/N 강의/N 수문/N 을/J 열/VV 고/E 진실/N 을/J 파헤치/VV 어야/E 하/VX ㄴ다/E ./S
이에 입각하여 보니 어느 정도 납득이 갔습니다.
(정도/N)
kiwi-knlm 이/N 에/J 입각/N 하/X 어/E 보/VX 니/E 어느/M 정/N 도/J 납득/N 이/J 가/VV 었/E 습니다/E ./S
kiwi-sbg 이/N 에/J 입각/N 하/X 어/E 보/VX 니/E 어느/M 정도/N 납득/N 이/J 가/VV 었/E 습니다/E ./S
kiwi-cong 이/N 에/J 입각/N 하/X 어/E 보/VX 니/E 어느/M 정도/N 납득/N 이/J 가/VV 었/E 습니다/E ./S
kiwi-cong-global 이/N 에/J 입각/N 하/X 어/E 보/VX 니/E 어느/M 정도/N 납득/N 이/J 가/VV 었/E 습니다/E ./S
bareun 이/N 에/J 입각하/VV 아/E 보/VX 니/E 어느/M 정도/N 납득/N 이/J 가/VV 았/E 습니다/E ./S
정도 많고 눈물도 많습니다.
(정/N 도/J)
kiwi-knlm 정/N 도/J 많/VA 고/E 눈물/N 도/J 많/VA 습니다/E ./S
kiwi-sbg 정/N 도/J 많/VA 고/E 눈물/N 도/J 많/VA 습니다/E ./S
kiwi-cong 정/N 도/J 많/VA 고/E 눈물/N 도/J 많/VA 습니다/E ./S
kiwi-cong-global 정/N 도/J 많/VA 고/E 눈물/N 도/J 많/VA 습니다/E ./S
bareun 정도/N 많/VA 고/E 눈물/N 도/J 많/VA 습니다/E ./S
일반적으로 회의 주도자는 상사다.
(회의/N)
kiwi-knlm 일반/N 적/X 으로/J 회/N 의/J 주도자/N 는/J 상사/N 이/VC 다/E ./S
kiwi-sbg 일반/N 적/X 으로/J 회/N 의/J 주도자/N 는/J 상사/N 이/VC 다/E ./S
kiwi-cong 일반/N 적/X 으로/J 회의/N 주도자/N 는/J 상사/N 이/VC 다/E ./S
kiwi-cong-global 일반/N 적/X 으로/J 회의/N 주도자/N 는/J 상사/N 이/VC 다/E ./S
bareun 일반적/N 으로/J 회의/N 주도자/N 는/J 상사/N 이/VC 다/E ./S
귀한 있는 생선을 이 가격에, 심지어 회의 두께와 크기도 제가 딱 좋아하는 정도
(회/N 의/J)
kiwi-knlm 귀하/VA ᆫ/E 있/VV 는/E 생선/N 을/J 이/M 가격/N 에/J ,/S 심지어/M 회/N 의/J 두께/N 와/J 크기/N 도/J 저/N 가/J 딱/M 좋아하/VV 는/E 정도/N
kiwi-sbg 귀하/VA ᆫ/E 있/VV 는/E 생선/N 을/J 이/M 가격/N 에/J ,/S 심지어/M 회/N 의/J 두께/N 와/J 크기/N 도/J 저/N 가/J 딱/M 좋아하/VV 는/E 정도/N
kiwi-cong 귀하/VA ᆫ/E 있/VV 는/E 생선/N 을/J 이/M 가격/N 에/J ,/S 심지어/M 회/N 의/J 두께/N 와/J 크기/N 도/J 저/N 가/J 딱/M 좋아하/VV 는/E 정도/N
kiwi-cong-global 귀하/VA ᆫ/E 있/VV 는/E 생선/N 을/J 이/M 가격/N 에/J ,/S 심지어/M 회/N 의/J 두께/N 와/J 크기/N 도/J 저/N 가/J 딱/M 좋아하/VV 는/E 정도/N
bareun 귀하/VA ㄴ/E 있/VA 는/E 생선/N 을/J 이/M 가격/N 에/J ,/S 심지어/M 회의/N 두께/N 와/J 크기/N 도/J 제/N 가/J 딱/M 좋아하/VV 는/E 정도/N

확실히 Kiwi CoNg 계열의 모델들은 맥락에 맞는 명사를 선택하는 데에 있어서 거의 틀리지를 않고 있습니다. 반면 Kiwi KnLM, SBG나 Bareun은 종종 헷갈린다는걸 볼 수 있습니다.

더보기
구름 속을 나는 용은 무엇을 상징하나
(날/VV)
kiwi-knlm 구름/N 속/N 을/J 날/VV 는/E 용/N 은/J 무엇/N 을/J 상징/N 하/X 나/E
kiwi-sbg 구름/N 속/N 을/J 나/N 는/J 용/N 은/J 무엇/N 을/J 상징/N 하/X 나/E
kiwi-cong 구름/N 속/N 을/J 날/VV 는/E 용/N 은/J 무엇/N 을/J 상징/N 하/X 나/E
kiwi-cong-global 구름/N 속/N 을/J 나/N 는/J 용/N 은/J 무엇/N 을/J 상징/N 하/X 나/E
bareun 구름/N 속/N 을/J 나/N 는/E 용/N 은/J 무엇/N 을/J 상징하/VV 나/E
63년 동안 나는 반역자였다.
(나/N)
kiwi-knlm 63/S 년/N 동안/N 나/N 는/J 반역자/N 이/VC 었/E 다/E ./S
kiwi-sbg 63/S 년/N 동안/N 나/N 는/J 반역자/N 이/VC 었/E 다/E ./S
kiwi-cong 63/S 년/N 동안/N 나/N 는/J 반역자/N 이/VC 었/E 다/E ./S
kiwi-cong-global 63/S 년/N 동안/N 나/N 는/J 반역자/N 이/VC 었/E 다/E ./S
bareun 63/S 년/N 동안/N 나/N 는/J 반역자/N 이/VC 었/E 다/E ./S
반대로 쉽게 떠날 갈 수 있는 생리를 몸으로 체득해
(가/VV)
kiwi-knlm 반대/N 로/J 쉽/VA 게/E 떠나/VV ᆯ/E 갈/VV ᆯ/E 수/N 있/VA 는/E 생리/N 를/J 몸/N 으로/J 체득/N 하/X 어/E
kiwi-sbg 반대/N 로/J 쉽/VA 게/E 떠나/VV ᆯ/E 갈/VV ᆯ/E 수/N 있/VA 는/E 생리/N 를/J 몸/N 으로/J 체득/N 하/X 어/E
kiwi-cong 반대/N 로/J 쉽/VA 게/E 떠나/VV ᆯ/E 가/VV ᆯ/E 수/N 있/VA 는/E 생리/N 를/J 몸/N 으로/J 체득/N 하/X 어/E
kiwi-cong-global 반대/N 로/J 쉽/VA 게/E 떠나/VV ᆯ/E 가/VV ᆯ/E 수/N 있/VA 는/E 생리/N 를/J 몸/N 으로/J 체득/N 하/X 어/E
bareun 반대/N 로/J 쉽/VA 게/E 떠나/VV ㄹ/E 가/VV ㄹ/E 수/N 있/VA 는/E 생리/N 를/J 몸/N 으로/J 체득하/VV 아/E
기저귀 가는 테이블은 허리를 굽힐 필요가 없을 정도로 적당한 높이에 있어야 한다.
(갈/VV)
kiwi-knlm 기저귀/N 가/VV 는/E 테이블/N 은/J 허리/N 를/J 굽히/VV ᆯ/E 필요/N 가/J 없/VA 을/E 정도/N 로/J 적당/X 하/X ᆫ/E 높이/N 에/J 있/VV 어야/E 하/VX ᆫ다/E ./S
kiwi-sbg 기저귀/N 가늘/VA ᆫ/E 테이블/N 은/J 허리/N 를/J 굽히/VV ᆯ/E 필요/N 가/J 없/VA 을/E 정도/N 로/J 적당/X 하/X ᆫ/E 높이/N 에/J 있/VV 어야/E 하/VX ᆫ다/E ./S
kiwi-cong 기저귀/N 가/VV 는/E 테이블/N 은/J 허리/N 를/J 굽히/VV ᆯ/E 필요/N 가/J 없/VA 을/E 정도/N 로/J 적당/X 하/X ᆫ/E 높이/N 에/J 있/VV 어야/E 하/VX ᆫ다/E ./S
kiwi-cong-global 기저귀/N 가/VV 는/E 테이블/N 은/J 허리/N 를/J 굽히/VV ᆯ/E 필요/N 가/J 없/VA 을/E 정도/N 로/J 적당/X 하/X ᆫ/E 높이/N 에/J 있/VV 어야/E 하/VX ᆫ다/E ./S
bareun 기저귀/N 가/VV 는/E 테이블/N 은/J 허리/N 를/J 굽히/VV ㄹ/E 필요/N 가/J 없/VA 을/E 정도/N 로/J 적당하/VA ㄴ/E 높이/N 에/J 있/VA 어야/E 하/VX ㄴ다/E ./S
기록하기 위해 나는 이 일기를 쓰노라.
(쓰/VV)
kiwi-knlm 기록/N 하/X 기/E 위하/VV 어/E 나/N 는/J 이/M 일기/N 를/J 쓸/VV 노라/E ./S
kiwi-sbg 기록/N 하/X 기/E 위하/VV 어/E 나/N 는/J 이/M 일기/N 를/J 쓸/VV 노라/E ./S
kiwi-cong 기록/N 하/X 기/E 위하/VV 어/E 나/N 는/J 이/M 일기/N 를/J 쓰/VV 노라/E ./S
kiwi-cong-global 기록/N 하/X 기/E 위하/VV 어/E 나/N 는/J 이/M 일기/N 를/J 쓰/VV 노라/E ./S
bareun 기록하/VV 기/E 위하/VV 아/E 나/N 는/J 이/M 일기/N 를/J 쓰/VV 노라/E ./S
마누라(법적 부인은 아니고 과부지만)가 마당 쓸 때 사용하는 나일론 빗자루
(쓸/VV)
kiwi-knlm 마누라/N (/S 법/N 적/X 부인/N 은/J 아니/VC 고/E 과부/N 이/VC 지만/E )/S 가/J 마당/N 쓸/VV ᆯ/E 때/N 사용/N 하/X 는/E 나일론/N 빗자루/N
kiwi-sbg 마누라/N (/S 법/N 적/X 부인/N 은/J 아니/VC 고/E 과부/N 이/VC 지만/E )/S 가/J 마당/N 쓸/VV ᆯ/E 때/N 사용/N 하/X 는/E 나일론/N 빗자루/N
kiwi-cong 마누라/N (/S 법/N 적/X 부인/N 은/J 아니/VC 고/E 과부/N 이/VC 지만/E )/S 가/J 마당/N 쓸/VV ᆯ/E 때/N 사용/N 하/X 는/E 나일론/N 빗자루/N
kiwi-cong-global 마누라/N (/S 법/N 적/X 부인/N 은/J 아니/VC 고/E 과부/N 이/VC 지만/E )/S 가/J 마당/N 쓸/VV ᆯ/E 때/N 사용/N 하/X 는/E 나일론/N 빗자루/N
bareun 마누라/N (/S 법적/N 부인/N 은/J 아니/VC 고/E 과부/N 지만/E )/S 가/J 마당/N 쓰/VV ㄹ/E 때/N 사용하/VV 는/E 나일론/N 빗자루/N
그렇다고 해서 개인이 소액으로 살 수 없는 것은 아닙니다.
(사/VV)
kiwi-knlm 그렇/VA 다고/E 하/VV 어서/E 개인/N 이/J 소액/N 으로/J 살/VV ᆯ/E 수/N 없/VA 는/E 것/N 은/J 아니/VC ᆸ니다/E ./S
kiwi-sbg 그렇/VA 다고/E 하/VV 어서/E 개인/N 이/J 소액/N 으로/J 살/VV ᆯ/E 수/N 없/VA 는/E 것/N 은/J 아니/VC ᆸ니다/E ./S
kiwi-cong 그렇/VA 다고/E 하/VV 어서/E 개인/N 이/J 소액/N 으로/J 사/VV ᆯ/E 수/N 없/VA 는/E 것/N 은/J 아니/VC ᆸ니다/E ./S
kiwi-cong-global 그렇/VA 다고/E 하/VV 어서/E 개인/N 이/J 소액/N 으로/J 사/VV ᆯ/E 수/N 없/VA 는/E 것/N 은/J 아니/VC ᆸ니다/E ./S
bareun 그렇/VA 다고/E 하/VV 아서/E 개인/N 이/J 소액/N 으로/J 사/VV ㄹ/E 수/N 없/VA 는/E 것/N 은/J 아니/VC ㅂ니다/E ./S
나는 청계천 끝자락에 사는 내내 그런 여자들을 보았다.
(살/VV)
kiwi-knlm 나/N 는/J 청계천/N 끝/N 자락/N 에/J 사/VV 는/E 내내/M 그런/M 여자/N 들/X 을/J 보/VV 었/E 다/E ./S
kiwi-sbg 나/N 는/J 청계천/N 끝자락/N 에/J 사/VV 는/E 내내/M 그런/M 여자/N 들/X 을/J 보/VV 었/E 다/E ./S
kiwi-cong 나/N 는/J 청계천/N 끝자락/N 에/J 사/VV 는/E 내내/M 그런/M 여자/N 들/X 을/J 보/VV 었/E 다/E ./S
kiwi-cong-global 나/N 는/J 청계천/N 끝자락/N 에/J 사/VV 는/E 내내/M 그런/M 여자/N 들/X 을/J 보/VV 었/E 다/E ./S
bareun 나/N 는/J 청계천/N 끝자락/N 에/J 살/VV 는/E 내내/M 그런/M 여자/N 들/X 을/J 보/VV 았/E 다/E ./S

모호한 맥락에서 동사를 바르게 분석하는 것은 명사보다 전반적으로 훨씬 어렵습니다. 한국어를 충분히 배운 사람도 깜빡하면 틀릴 수도 있을 정도니깐요. 실제로 이 영역에서는 모든 분석기가 틀리는 사례도 제법 있습니다. Kiwi CoNg Global이 가장 높은 성능을 달성했음에도 정확도가 약 77%에 불과해서 앞으로도 추가적인 개선이 필요한 영역으로 보입니다.

더보기
시기나 질투 어린 부정적인 말이나 태도 대신에
(어리/VV)
kiwi-knlm 시기/N 나/J 질투/N 어리/VV ᆫ/E 부정/N 적/X 이/VC ᆫ/E 말/N 이나/J 태도/N 대신/N 에/J
kiwi-sbg 시기/N 나/J 질투/N 어리/VV ᆫ/E 부정/N 적/X 이/VC ᆫ/E 말/N 이나/J 태도/N 대신/N 에/J
kiwi-cong 시기/N 나/J 질투/N 어리/VV ᆫ/E 부정/N 적/X 이/VC ᆫ/E 말/N 이나/J 태도/N 대신/N 에/J
kiwi-cong-global 시기/N 나/J 질투/N 어리/VV ᆫ/E 부정/N 적/X 이/VC ᆫ/E 말/N 이나/J 태도/N 대신/N 에/J
bareun 시기/N 나/J 질투/N 어리/VA ㄴ/E 부정/N 적/X 이/VC ㄴ/E 말/N 이나/J 태도/N 대신/N 에/J
정인은 억지로 눈물을 참으며 어린 남매를 한 차례씩 껴안아 주며 말했다.
(어리/VA)
kiwi-knlm 정인/N 은/J 억지로/M 눈물/N 을/J 참/VV 으며/E 어리/VA ᆫ/E 남매/N 를/J 한/M 차례/N 씩/X 껴안/VV 어/E 주/VX 며/E 말/N 하/X 었/E 다/E ./S
kiwi-sbg 정인/N 은/J 억지로/M 눈물/N 을/J 참/VV 으며/E 어리/VA ᆫ/E 남매/N 를/J 한/M 차례/N 씩/X 껴안/VV 어/E 주/VX 며/E 말/N 하/X 었/E 다/E ./S
kiwi-cong 정인/N 은/J 억지로/M 눈물/N 을/J 참/VV 으며/E 어리/VA ᆫ/E 남매/N 를/J 한/M 차례/N 씩/X 껴안/VV 어/E 주/VX 며/E 말/N 하/X 었/E 다/E ./S
kiwi-cong-global 정인/N 은/J 억지로/M 눈물/N 을/J 참/VV 으며/E 어리/VA ᆫ/E 남매/N 를/J 한/M 차례/N 씩/X 껴안/VV 어/E 주/VX 며/E 말/N 하/X 었/E 다/E ./S
bareun 정인/N 은/J 억지로/M 눈물/N 을/J 참/VV 으며/E 어리/VA ㄴ/E 남매/N 를/J 한/M 차례/N 씩/X 껴안/VV 아/E 주/VX 며/E 말하/VV 았/E 다/E ./S
심종수는 심오한 경학의 이론을 강한다.
(강하/VV)
kiwi-knlm 심/X 종수/N 는/J 심오/X 하/X ᆫ/E 경학/N 의/J 이론/N 을/J 강/N 하/X ᆫ다/E ./S
kiwi-sbg 심/X 종수/N 는/J 심오/X 하/X ᆫ/E 경학/N 의/J 이론/N 을/J 강/N 하/X ᆫ다/E ./S
kiwi-cong 심/X 종/N 수/N 는/J 심오/X 하/X ᆫ/E 경학/N 의/J 이론/N 을/J 강/X 하/X ᆫ다/E ./S
kiwi-cong-global 심/X 종/N 수/N 는/J 심오/X 하/X ᆫ/E 경학/N 의/J 이론/N 을/J 강/X 하/X ᆫ다/E ./S
bareun 심종/N 수/N 는/J 심오하/VA ㄴ/E 경학/N 의/J 이론/N 을/J 강하/VA ㄴ다/E ./S
쇠가 너무 강하면 부러진다.
(강하/VA)
kiwi-knlm 쇠/N 가/J 너무/M 강하/VA 면/E 부러지/VV ᆫ다/E ./S
kiwi-sbg 쇠/N 가/J 너무/M 강하/VA 면/E 부러지/VV ᆫ다/E ./S
kiwi-cong 쇠/N 가/J 너무/M 강하/VA 면/E 부러지/VV ᆫ다/E ./S
kiwi-cong-global 쇠/N 가/J 너무/M 강하/VA 면/E 부러지/VV ᆫ다/E ./S
bareun 쇠/N 가/J 너무/M 강하/VA 면/E 부러지/VV ㄴ다/E ./S
바른 부분과 안 바른 부분이 딱 표시가 날 정도로 반질하게 윤기가 나는데요,
(바르/VV)
kiwi-knlm 바르/VA ᆫ/E 부분/N 과/J 알/VV ᆫ/E 바르/VA ᆫ/E 부분/N 이/J 딱/M 표시/N 가/J 나/VV ᆯ/E 정도/N 로/J 반/N 질/X 하/X 게/E 윤기/N 가/J 나/VV 는데요/E ,/S
kiwi-sbg 바르/VA ᆫ/E 부분/N 과/J 알/VV ᆫ/E 바르/VA ᆫ/E 부분/N 이/J 딱/M 표시/N 가/J 나/VV ᆯ/E 정도/N 로/J 반/N 질/X 하/X 게/E 윤기/N 가/J 나/VV 는데요/E ,/S
kiwi-cong 바르/VA ᆫ/E 부분/N 과/J 안/M 바르/VV ᆫ/E 부분/N 이/J 딱/M 표시/N 가/J 나/VV ᆯ/E 정도/N 로/J 반/N 질/X 하/X 게/E 윤기/N 가/J 나/VV 는데요/E ,/S
kiwi-cong-global 바르/VA ᆫ/E 부분/N 과/J 안/M 바르/VA ᆫ/E 부분/N 이/J 딱/M 표시/N 가/J 나/VV ᆯ/E 정도/N 로/J 반/N 질/X 하/VV 게/E 윤기/N 가/J 나/VV 는데요/E ,/S
bareun 바른/N 부분/N 과/J 안/M 바른/N 부분/N 이/J 딱/M 표시/N 가/J 나/VV ㄹ/E 정도/N 로/J 반질하/VV 게/E 윤기/N 가/J 나/VV 는데/E 요/J ,/S
사람들의 마음에 바른 것을 향한 갈망과 참된 복음을 사모하는 열정들이 불타오르고 있다.
(바르/VA)
kiwi-knlm 사람/N 들/X 의/J 마음/N 에/J 바르/VV ᆫ/E 것/N 을/J 향하/VV ᆫ/E 갈망/N 과/J 참되/VA ᆫ/E 복음/N 을/J 사모/N 하/X 는/E 열정/N 들/X 이/J 불타오르/VV 고/E 있/VX 다/E ./S
kiwi-sbg 사람/N 들/X 의/J 마음/N 에/J 바르/VA ᆫ/E 것/N 을/J 향하/VV ᆫ/E 갈망/N 과/J 참되/VA ᆫ/E 복음/N 을/J 사모/N 하/X 는/E 열정/N 들/X 이/J 불타/VV 어/E 오르/VV 고/E 있/VX 다/E ./S
kiwi-cong 사람/N 들/X 의/J 마음/N 에/J 바르/VV ᆫ/E 것/N 을/J 향하/VV ᆫ/E 갈망/N 과/J 참되/VA ᆫ/E 복음/N 을/J 사모/N 하/X 는/E 열정/N 들/X 이/J 불타오르/VV 고/E 있/VX 다/E ./S
kiwi-cong-global 사람/N 들/X 의/J 마음/N 에/J 바르/VA ᆫ/E 것/N 을/J 향하/VV ᆫ/E 갈망/N 과/J 참되/VA ᆫ/E 복음/N 을/J 사모/N 하/X 는/E 열정/N 들/X 이/J 불타오르/VV 고/E 있/VX 다/E ./S
bareun 사람/N 들/X 의/J 마음/N 에/J 바른/N 것/N 을/J 향하/VV ㄴ/E 갈망/N 과/J 참되/VA ㄴ/E 복음/N 을/J 사모하/VV 는/E 열정/N 들/X 이/J 불타오르/VV 고/E 있/VX 다/E ./S
더러운 솥을 광이 나도록 부셨다.
(부시/VV)
kiwi-knlm 더럽/VA 은/E 솥/N 을/J 광/N 이/J 나/VV 도록/E 부시/VV 었/E 다/E ./S
kiwi-sbg 더럽/VA 은/E 솥/N 을/J 광/N 이/J 나/VV 도록/E 부시/VV 었/E 다/E ./S
kiwi-cong 더럽/VA 은/E 솥/N 을/J 광/N 이/J 나/VV 도록/E 부시/VV 었/E 다/E ./S
kiwi-cong-global 더럽/VA 은/E 솥/N 을/J 광/N 이/J 나/VV 도록/E 부시/VV 었/E 다/E ./S
bareun 더럽/VA ㄴ/E 솥/N 을/J 광/N 이/J 나/VV 도록/E 부시/VV 었/E 다/E ./S
밖으로 나오자 눈이 부셔서 눈을 뜰 수가 없다.
(부시/VA)
kiwi-knlm 밖/N 으로/J 나오/VV 자/E 눈/N 이/J 부시/VA 어서/E 눈/N 을/J 뜨/VV ᆯ/E 수/N 가/J 없/VA 다/E ./S
kiwi-sbg 밖/N 으로/J 나오/VV 자/E 눈/N 이/J 부시/VA 어서/E 눈/N 을/J 뜨/VV ᆯ/E 수/N 가/J 없/VA 다/E ./S
kiwi-cong 밖/N 으로/J 나오/VV 자/E 눈/N 이/J 부시/VA 어서/E 눈/N 을/J 뜨/VV ᆯ/E 수/N 가/J 없/VA 다/E ./S
kiwi-cong-global 밖/N 으로/J 나오/VV 자/E 눈/N 이/J 부시/VA 어서/E 눈/N 을/J 뜨/VV ᆯ/E 수/N 가/J 없/VA 다/E ./S
bareun 밖/N 으로/J 나오/VV 자/E 눈/N 이/J 부시/VA 어서/E 눈/N 을/J 뜨/VV ㄹ/E 수/N 가/J 없/VA 다/E ./S

형태가 동일한 동사와 형용사를 구분하는 것은 불규칙 동사보다는 전반적으로 정확도가 높습니다. 사실 이 부분은 오히려 국어를 전문적으로 배우지 않은 일반 한국인들이 분석기보다 더 못 풀 수도 있을 것 같네요. 그러나 분석기 측면에서는 동사와 형용사가 취할수 있는 문법 구조의 차이(목적어의 유무, 형용사가 취할 수 없는 일부 어미들) 때문에 의미를 아주 명확히 파악하지 못해도 적절하게 동사와 형용사를 구분할 수 있는 것으로 보입니다.

더보기
새끼를 입으로 이렇게 이렇게 물어서 옮긴다.
(물/VV)
kiwi-knlm 새끼/N 를/J 입/N 으로/J 이렇/VA 게/E 이렇/VA 게/E 묻/VV 어서/E 옮기/VV ᆫ다/E ./S
kiwi-sbg 새끼/N 를/J 입/N 으로/J 이렇게/M 이렇게/M 물/VV 어서/E 옮기/VV ᆫ다/E ./S
kiwi-cong 새끼/N 를/J 입/N 으로/J 이렇게/M 이렇게/M 묻/VV 어서/E 옮기/VV ᆫ다/E ./S
kiwi-cong-global 새끼/N 를/J 입/N 으로/J 이렇/VA 게/E 이렇/VA 게/E 물/VV 어서/E 옮기/VV ᆫ다/E ./S
bareun 새끼/N 를/J 입/N 으로/J 이렇/VA 게/E 이렇/VA 게/E 묻/VV 어서/E 옮기/VV ㄴ다/E ./S
여기에 좋았는지 나빴는지 적어주세요.
(적/VV)
kiwi-knlm 여기/N 에/J 좋/VA 었/E 는지/E 나쁘/VA 었/E 는지/E 적/VV 어/E 주/VX 세요/E ./S
kiwi-sbg 여기/N 에/J 좋/VA 었/E 는지/E 나쁘/VA 었/E 는지/E 적/VV 어/E 주/VX 세요/E ./S
kiwi-cong 여기/N 에/J 좋/VA 었/E 는지/E 나쁘/VA 었/E 는지/E 적/VV 어/E 주/VX 세요/E ./S
kiwi-cong-global 여기/N 에/J 좋/VA 었/E 는지/E 나쁘/VA 었/E 는지/E 적/VV 어/E 주/VX 세요/E ./S
bareun 여기/N 에/J 좋/VA 았/E 는지/E 나쁘/VA 았/E 는지/E 적/VV 어/E 주/VX 시/E 어요/E ./S
그거 다듬을 때 말이야 길이라든가 아니면 모양이라든가 좀 맞춰서 예쁘게 해.
(길이/N)
kiwi-knlm 그거/N 다듬/VV 을/E 때/N 말/N 이/VC 야/E 길/N 이라든가/J 아니/VC 면/E 모양/N 이/VC 라든가/E 좀/M 맞추/VV 어서/E 예쁘/VA 게/E 하/VV 어/E ./S
kiwi-sbg 그거/N 다듬/VV 을/E 때/N 말/N 이/VC 야/E 길이/N 라든가/J 아니/VC 면/E 모양/N 이/VC 라든가/E 좀/M 맞추/VV 어서/E 예쁘/VA 게/E 하/VV 어/E ./S
kiwi-cong 그거/N 다듬/VV 을/E 때/N 말/N 이/VC 야/E 길/N 이/VC 라든가/E 아니/VC 면/E 모양/N 이라든가/J 좀/M 맞추/VV 어서/E 예쁘/VA 게/E 하/VV 어/E ./S
kiwi-cong-global 그거/N 다듬/VV 을/E 때/N 말/N 이/VC 야/E 길이/N 라든가/J 아니/VC 면/E 모양/N 이/VC 라든가/E 좀/M 맞추/VV 어서/E 예쁘/VA 게/E 하/VV 어/E ./S
bareun 그거/N 다듬/VV 을/E 때/N 말/N 이/VC 야/E 길/N 이라든가/J 아니/VC 면/E 모양/N 이라든가/J 좀/M 맞추/VV 어서/E 예쁘/VA 게/E 하/VX 아/E ./S
언제나 제멋대로 굴고, 철도 아직까지 덜 들고.
(철/N)
kiwi-knlm 언제나/M 제멋대로/M 굴/VV 고/E ,/S 철/N 도/J 아직/M 까지/J 덜/M 들/VV 고/E ./S
kiwi-sbg 언제나/M 제멋대로/M 굴/VV 고/E ,/S 철/N 도/J 아직/M 까지/J 덜/M 들/VV 고/E ./S
kiwi-cong 언제나/M 제멋대로/M 굴/VV 고/E ,/S 철도/N 아직/M 까지/J 덜/M 들/VV 고/E ./S
kiwi-cong-global 언제나/M 제멋대로/M 굴/VV 고/E ,/S 철/N 도/J 아직/M 까지/J 덜/M 들/VV 고/E ./S
bareun 언제나/M 제멋대로/M 굴/VV 고/E ,/S 철/N 도/J 아직/M 까지/J 덜/M 들/VV 고/E ./S

마지막으로 원거리 영역입니다. 이 영역에서는 모호성 해소의 힌트가 되는 단어가 멀리 떨어져 있어서 모델이 멀리 떨어지 형태소 사이의 관계를 고려할 수 있어야 합니다. 이 때문에 실제로 KnLM이나 CoNg 모델은 전반적으로 점수가 낮게 나오고 반대로 SBG와 CoNg Global은 점수가 높게 나오죠. 실제 사례에서도 마찬가지의 결과가 나왔습니다.

지금까지 살펴본 내용을 정리해보면, CoNg 모델에서는 전반적으로 모호성 해소 성능이 크게 개선되었고, 특히 명사 영역에서의 개선이 가장 두드러진다고 할 수 있습니다. 불규칙 활용 역시 다른 분석기보다는 잘하고 있으나 아직 더 많은 개선이 필요한 상황이구요. 또한 Global 모델이 실제로 예상했던것처럼 원거리 관계를 잘 고려하고 있다는 것도 확인할 수 있었습니다.

문장 분리 성능 개선

분석기 웹(블로그) 웹(트위터) 웹(위키백과) 안은문장 명사형 어미 다양한 어미
Kiwi KnLM 81.3 79.3 97.5 89.4 85.7 37.7
Kiwi SBG 81.1 80.9 97.8 91.7 85.8 39.9
Kiwi CoNg 81.6 81.1 98.3 88.0 88.1 49.7
Kiwi CoNg Global 83.1 83.1 98.4 91.1 83.9 51.6
Bareun 46.0 53.5 91.6 80.4 54.6 11.4

문장 분리는 다소 일관되지 못한 결과를 보여주고 있습니다. 특히 안은 문장이나 명사형 어미가 있는 경우 오히려 CoNg 계열 모델에서 문장 분리 정확도가 떨어지는 모습을 보여주고 있습니다. 그럼에도 다양한 어미 영역에서 극적으로 점수 개선이 있었습니다. 다양한 어미 영역은 사투리를 비롯하여 흔하게 쓰이지 않는 문장 종결어미로 구성된 데이터셋입니다. 표준어를 기반으로한 통계 모델을 태생적으로 취약할 수 밖에 없는 평가 영역이죠. 신경망 모델도 마찬가지로 사투리 종결 어미를 많이 배우지는 못했지만, 그래도 통계모델보다는 일반화 성능이 높으므로 이렇게 데이터가 부족한 영역에서 성능이 개선되었다고 볼 수 있습니다.

더보기
  입력 우리 외가는 원채 충남 예산 사람인지라 부추를 솔이라고 혀 / 근디 충주, 대전, 요래 이사 다니셔서 그런가 / 엄니는 정구지라고 카는 겨
Kiwi KnLM 우리 외가는 원채 충남 예산 사람인지라 부추를 솔이라고 혀 근디 충주, 대전, 요래 이사 다니셔서 그런가 엄니는 정구지라고 카는 겨
Kiwi SBG 우리 외가는 원채 충남 예산 사람인지라 부추를 솔이라고 혀 근디 충주, 대전, 요래 이사 다니셔서 그런가 엄니는 정구지라고 카는 겨
Kiwi CoNg 우리 외가는 원채 충남 예산 사람인지라 부추를 솔이라고 혀 근디 충주, 대전, 요래 이사 다니셔서 그런가 / 엄니는 정구지라고 카는 겨
Kiwi CoNg Global 우리 외가는 원채 충남 예산 사람인지라 부추를 솔이라고 혀 근디 충주, 대전, 요래 이사 다니셔서 그런가 / 엄니는 정구지라고 카는 겨
Bareun 우리 외가는 원채 충남 예산 사람인지라 부추를 솔이라고 혀 근디 충주, 대전, 요래 이사 다니셔서 그런가 엄니는 정구지라고 카는 겨
  입력 속 이바구할 인간도 없재 / 일 이바구 밖에 할 게 더 있긋나 / 6년 전에 뱅기 몰다가 사하라 사막에 떨어졌붓지 / 모다에 머가 나간기라 / 기관사가 있나 / 손님이 있었긋나
Kiwi KnLM 속 이바구할 인간도 없재 일 이바구 밖에 할 게 더 있긋나 6년 전에 뱅기 몰다가 사하라 사막에 떨어졌붓지 모다에 머가 나간기라 기관사가 있나 손님이 있었긋나
Kiwi SBG 속 이바구할 인간도 없재 일 이바구 밖에 할 게 더 있긋나 6년 전에 뱅기 몰다가 사하라 사막에 떨어졌붓지 모다에 머가 나간기라 기관사가 있나 손님이 있었긋나
Kiwi CoNg 속 이바구할 인간도 없재 일 이바구 밖에 할 게 더 있긋나 6년 전에 뱅기 몰다가 사하라 사막에 떨어졌붓지 모다에 머가 나간기라 / 기관사가 있나 손님이 있었긋나
Kiwi CoNg Global 속 이바구할 인간도 없재 / 일 이바구 밖에 할 게 더 있긋나 6년 전에 뱅기 몰다가 사하라 사막에 떨어졌붓지 / 모다에 머가 나간기라 / 기관사가 있나 손님이 있었긋나
Bareun 속 이바구할 인간도 없재 일 이바구 밖에 할 게 더 있긋나 6년 전에 뱅기 몰다가 사하라 사막에 떨어졌붓지 모다에 머가 나간기라 기관사가 있나 손님이 있었긋나

웹 텍스트에서도 CoNg의 효과를 살펴보면 좋을것 같습니다. 블로그나 위키백과에 비해 더 지저분한 것으로 유명한 트위터 텍스트를 보면 노이즈에 대한 강건성 차이가 명확하게 드러나겠죠?

더보기
  입력 알겠지 / 그러니 나와 친해지지 마 / 가까워지지 마 / 아픔을 나누지도 동조하지도 마 / _주하림, 우리는 사랑의 계절에 굶주린 새
Kiwi KnLM 알겠지 / 그러니 나와 친해지지 마 가까워지지 마 아픔을 나누지도 동조하지도 마 _주하림, 우리는 사랑의 계절에 굶주린 새
Kiwi SBG 알겠지 / 그러니 나와 친해지지 마 가까워지지 마 아픔을 나누지도 동조하지도 마 _주하림, 우리는 사랑의 계절에 굶주린 새
Kiwi CoNg 알겠지 / 그러니 나와 친해지지 마 가까워지지 마 / 아픔을 나누지도 동조하지도 마 / _주하림, 우리는 사랑의 계절에 굶주린 새
Kiwi CoNg Global 알겠지 / 그러니 나와 친해지지 마 / 가까워지지 마 / 아픔을 나누지도 동조하지도 마 / _주하림, 우리는 사랑의 계절에 굶주린 새
Bareun 알겠지 그러니 나와 친해지지 마 가까워지지 마 아픔을 나누지도 동조하지도 마 _주하림, 우리는 사랑의 계절에 굶주린 새
  입력 위험하다고 안된다고 하는 거 분명 집으로 갈려고 15층을 눌렀는데 1층인거야 / 엘리베이터 문이 열리더니 그 옆에 있는 사람이 내리는 거야 / 그러더니 엘리배이터 앞에서 대기타던 괴물이 그 아저씨 목을 물어뜯는 그 때 딱 깨어남
Kiwi KnLM 위험하다고 안된다고 하는 거 분명 집으로 갈려고 15층을 눌렀는데 1층인거야 엘리베이터 문이 열리더니 그 옆에 있는 사람이 내리는 거야 그러더니 엘리배이터 앞에서 대기타던 괴물이 그 아저씨 목을 물어뜯는 그 때 딱 깨어남
Kiwi SBG 위험하다고 안된다고 하는 거 분명 집으로 갈려고 15층을 눌렀는데 1층인거야 엘리베이터 문이 열리더니 그 옆에 있는 사람이 내리는 거야 그러더니 엘리배이터 앞에서 대기타던 괴물이 그 아저씨 목을 물어뜯는 그 때 딱 깨어남
Kiwi CoNg 위험하다고 안된다고 하는 거 분명 집으로 갈려고 15층을 눌렀는데 1층인거야 / 엘리베이터 문이 열리더니 그 옆에 있는 사람이 내리는 거야 그러더니 엘리배이터 앞에서 대기타던 괴물이 그 아저씨 목을 물어뜯는 그 때 딱 깨어남
Kiwi CoNg Global 위험하다고 안된다고 하는 거 분명 집으로 갈려고 15층을 눌렀는데 1층인거야 / 엘리베이터 문이 열리더니 그 옆에 있는 사람이 내리는 거야 그러더니 엘리배이터 앞에서 대기타던 괴물이 그 아저씨 목을 물어뜯는 그 때 딱 깨어남
Bareun 위험하다고 안된다고 하는 거 분명 집으로 갈려고 15층을 눌렀는데 1층인거야 엘리베이터 문이 열리더니 그 옆에 있는 사람이 내리는 거야 그러더니 엘리배이터 앞에서 대기타던 괴물이 그 아저씨 목을 물어뜯는 그 때 딱 깨어남

구두점이 거의 없는 트위터 텍스트 특성상 기존의 KnLM이나 Bareun 분석기 등은 문장을 거의 나누지 못합니다. CoNg 계열의 모델도 완벽하게 해내는 것은 아니지만 그래도 어느정도 문장의 경계를 찾아내는 것을 확인할 수 있습니다. 확실히 노이즈에 대해 좀 더 강한 모습을 보이고 있습니다. 마지막으로 CoNg-Global에서 오히려 성능이 하락한 것으로 드러난 명사형 어미에 대해서도 살펴보겠습니다.

더보기
  입력 술을 잘 안하는데 어제 마심 ㅠㅠ / 지난 20키로 런때 허벅지 쓸림때문에 오른쪽 다리안닿게 하려고 뛰어서 무릎이 좀 안좋았음.. / 그 핑계로 4일정도 운동 하나도 안했음 / 다리에 무릎에 발까지 아프고 배아팠음..
Kiwi KnLM 술을 잘 안하는데 어제 마심 ㅠㅠ / 지난 20키로 런때 허벅지 쓸림때문에 오른쪽 다리안닿게 하려고 뛰어서 무릎이 좀 안좋았음.. / 그 핑계로 4일정도 운동 하나도 안했음 / 다리에 무릎에 발까지 아프고 배아팠음..
Kiwi SBG 술을 잘 안하는데 어제 마심 ㅠㅠ / 지난 20키로 런때 허벅지 쓸림때문에 오른쪽 다리안닿게 하려고 뛰어서 무릎이 좀 안좋았음.. / 그 핑계로 4일정도 운동 하나도 안했음 / 다리에 무릎에 발까지 아프고 배아팠음..
Kiwi CoNg 술을 잘 안하는데 어제 마심 ㅠㅠ / 지난 20키로 런때 허벅지 쓸림때문에 오른쪽 다리안닿게 하려고 뛰어서 무릎이 좀 안좋았음.. / 그 핑계로 4일정도 운동 하나도 안했음 / 다리에 무릎에 발까지 아프고 배아팠음..
Kiwi CoNg Global 술을 잘 안하는데 어제 마심 ㅠㅠ 지난 20키로 런때 허벅지 쓸림때문에 오른쪽 다리안닿게 하려고 뛰어서 무릎이 좀 안좋았음.. / 그 핑계로 4일정도 운동 하나도 안했음 / 다리에 무릎에 발까지 아프고 배아팠음..
Bareun 술을 잘 안하는데 어제 마심 ㅠㅠ 지난 20키로 런때 허벅지 쓸림때문에 오른쪽 다리안닿게 하려고 뛰어서 무릎이 좀 안좋았음.. 그 핑계로 4일정도 운동 하나도 안했음 다리에 무릎에 발까지 아프고 배아팠음..
  입력 저에게 옥수동 하면 가장 떠오르는 것은 다름 아닌 `서울의 달`입니다. / 긍정적인 요인은 길음 뉴타운의 대장주인 센터피스의 고공행진입니다.
Kiwi KnLM 저에게 옥수동 하면 가장 떠오르는 것은 다름 아닌 `서울의 달`입니다. / 긍정적인 요인은 길음 뉴타운의 대장주인 센터피스의 고공행진입니다.
Kiwi SBG 저에게 옥수동 하면 가장 떠오르는 것은 다름 아닌 `서울의 달`입니다. / 긍정적인 요인은 길음 / 뉴타운의 대장주인 센터피스의 고공행진입니다.
Kiwi CoNg 저에게 옥수동 하면 가장 떠오르는 것은 다름 아닌 `서울의 달`입니다. / 긍정적인 요인은 길음 / 뉴타운의 대장주인 센터피스의 고공행진입니다.
Kiwi CoNg Global 저에게 옥수동 하면 가장 떠오르는 것은 다름 아닌 `서울의 달`입니다. / 긍정적인 요인은 길음 / 뉴타운의 대장주인 센터피스의 고공행진입니다.
Bareun 저에게 옥수동 하면 가장 떠오르는 것은 다름 아닌 `서울의 달`입니다. / 긍정적인 요인은 길음 뉴타운의 대장주인 센터피스의 고공행진입니다.

"어제 마심 ㅠㅠ"과 같이 이모티콘이 따라붙는 경우를 잘못 해석한 경우가 있고, 또 "길음 뉴타운"의 길음을 종결 어미로 잘못 해석한 경우도 있습니다. 후자는 처음에 Unlikelihood Minimization을 도입할때 직면했던것과 유사한 문제네요. "길음"이라는 고유명사를 몰라서 길/VA + 음/ETN으로 잘못 분석했고 이게 문장 분리까지 영향을 미친 것입니다. 여전히 이런 오류들이 있는 것으로 보아 지명과 같은 고유 명사에 대해서는 추가적인 학습이 필요할지도 모르겠습니다.

정리

지금까지 형태소 분석, 모호성 해소, 문장 분리 3가지 평가 과제를 통해 Kiwi CoNg 모델이 기존 모델 대비 실제로 성능이 개선되었는지 확인해보았습니다. 형태소 분석의 경우 잘 모르는 패턴을 접한 경우 자기 멋대로 분석하려는 경향성이 강해져서 이를 방지하기 위해 Unlikelihood Training을 도입하였고, 덕분에 해당 문제가 크게 줄어들었으나 여전히 기존의 KnLM 대비 분석 정확도는 약간 낮은 것으로 드러났습니다. 반면 모호성 해소와 문장 분리 성능은 기존 모델 대비 개선되었으며 특히 모호성 해소 과제에서는 압도적으로 높은 향상이 있었기에 CoNg 모델 도입의 이득이 손실보다 더 크다는 결론을 내릴 수 있었습니다.

다만 결과 분석을 통해 밝혀진 약점인 잘 모르는 고유명사를 과도하게 분절하는 현상과 여전히 정확도가 낮은 불규칙 활용 모호성 해소사투리 등의 다양한 어미가 포함된 문장 분리 문제는 추가적인 연구가 필요한 상황이라고 할 수 있겠습니다. 추후 연구 과제도 중요하지만 이건 일단 미래에 맡기고, 옛말처럼 구슬이 서 말이어도 꿰지 않으면 아무 쓸모가 없겠죠? CoNg 모델의 효과가 아무리 입증되었다고 한들 실제로 Kiwi 소스코드 내에 최적화된 채로 구현이 들어가야 형태소 분석기로 사용을 할 수가 있을 겁니다. 특히 이전 포스팅에서 CoNg모델을 사용할 경우 형태소 분석에 들어가는 연산량이 적을 수 있다는 것을 이론상으로만 추정해보았고 실제로 어느정도 속도가 나오는지는 미래의 저에게 맡겨두었는데요, 이제 그 '미래의 제'가 일해야할 시간입니다. 다음 포스팅에서는 어떤 방식으로 경량화 & 최적화를 적용하여 CoNg모델이 Kiwi에 통합되어 빠르게 동작할 수 있었는지 그 최적화 과정을 소개하도록 하겠습니다.

 

관련글 더보기

댓글 영역