지난 포스팅까지는 Kiwi에서 도입한 CoNg 모델이 어떤 구조인지, 또 왜 이 모델을 도입했는지 간단하게 소개해드렸습니다. 이번 포스팅에서는 신경망 모델인 CoNg이 기존의 통계 기반 모델과 비교해 실제로 얼마나 강력해졌는지 비교 분석해보도록 하겠습니다.
Kiwi CoNg 포스팅 시리즈
형태소 분석기의 성능을 평가하는 가장 정석적인 방법은 입력 문장과 그 문장의 올바른 형태소 분석 결과를 쌍으로 하여 평가 데이터를 구축하고, 형태소 분석기에 해당 문장을 입력했을때 올바른 형태소 분석 결과와 얼마나 유사한 결과가 나오는지를 비교해보는 것입니다. 제일 일반적인 방법이지만 다음과 같은 이유 때문에 실제로는 그대로 따르기가 어렵습니다.
다양한 도메인의 문장을 잘 분석해내는지 평가하는게 필수적인데, 이 방법으로 평가를 진행하려면 품사 태그별로 평가 데이터를 다양한 도메인에 대해 전부 구축해야합니다. (누가 데이터 구축하라고 돈 주는 것도 아닌데...) 이렇게 평가 데이터를 구축하는 것은 현실적이지 않다고 판단했기 때문에 형태소 분석 결과 그 자체를 비교하는 것은 기존에 구축해둔 소량의 데이터에 대해서만 수행하기로 했고, 이 평가 결과는 성능 자체를 측정한다기보다는 분석기가 문제 없이 잘 작동한다는 것을 확인하기 위한 리그레션 테스트(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에 통합되어 빠르게 동작할 수 있었는지 그 최적화 과정을 소개하도록 하겠습니다.
형태소 분석기 Kiwi CoNg (2/4): CoNg 모델 소개 (1) | 2025.05.11 |
---|---|
형태소 분석기 Kiwi CoNg (1/4): 신경망 모델 도입기 (0) | 2025.05.04 |
한국어 말뭉치를 통한 사이시옷 사용 실태 조사 (1) | 2024.11.04 |
LLM으로 게임 텍스트 번역해보기 (2) | 2024.08.31 |
형태소 분석기의 모호성 해소 성능을 평가해보자 (4) | 2022.03.27 |
[Kiwi] 문장 같은 고유명사 잘 추출해내기 (2) | 2022.03.20 |
댓글 영역