세종말뭉치의 문어 데이터에는 빈도수가 매우 작은 형태소 품사 태그들이 존재합니다. 데이터 기입 중 발생한 표기 실수로 생각됩니다. 단, 이 데이터를 모두 이용하여 모델을 학습하면 엉뚱한 tag states (or labels) 가 학습됩니다. 그렇기 때문에 반드시 이 태그가 포함된 데이터를 제외하여 학습하시기 바랍니다.
tag | count |
---|---|
NNG | 5240816 |
VV | 1726983 |
EC | 1664694 |
ETM | 1306440 |
... | ... |
NA | 1570 |
SW" | 5 |
NNG" | 3 |
NG | 3 |
NNGG | 2 |
S | 2 |
VSV | 1 |
VA" | 1 |
JKSS | 1 |
JG | 1 |
MAAG | 1 |
V | 1 |
JKBB | 1 |
NN | 1 |
MMM | 1 |
EEC | 1 |
NNg | 1 |
VX" | 1 |
MAC | 1 |
발음이 변하는 과정을 설명하려 한 듯 하나, 말뭉치 포멧이 아니기 때문에 데이터를 파싱하는 과정에서는 버려야 합니다.
BTDO0275-00020461\t1)\t1/SN + )/SS
BTDO0275-00020462\t디귿->지읒\t디귿/NNG + -/SS + >/SS + 지읒/NNG
BTDO0275-00020463\t:\t:/SP
BTDO0275-00020464\t굳+이->굳이->구디->[구지]\t굳+이->굳이->구디->[구지]/NA
BTDO0275-00020465\t2)\t2/SN + )/SS
BTDO0275-00020466\t티읕->치읓\t티읕/NNG + -/SS + >/SS + 치읓/NNG
BTDO0275-00020467\t:\t:/SP
BTDO0275-00020468\t같+이->같이->가티->[가치]\t같+이->같이->가티->[가치]/NA
BTDO0275-00020469\t3)\t3/SN + )/SS
BTDO0275-00020470\t디귿\t디귿/NNG
BTDO0275-00020471\t+\t+/SW
BTDO0275-00020472\t히읗\t히읗/NNG
BTDO0275-00020473\t->\t-/SS + >/SS
BTDO0275-00020474\t치읓\t치읓/NNG
BTDO0275-00020475\t:\t:/SP
BTDO0275-00020476\t닫\t닫/VV
BTDO0275-00020477\t+\t+/SW
BTDO0275-00020478\t혀\t혀/NA
BTDO0275-00020479\t->\t-/SS + >/SS
BTDO0275-00020480\t닫혀\t닫히/VV + 어/EC
BTDO0275-00020481\t+\t+/SW
BTDO0275-00020482\t다텨\t다텨/NA
BTDO0275-00020483\t->\t-/SS + >/SS
BTDO0275-00020484\t[다쳐]\t[/SS + 다치/VV + 어/EC + ]/SS
BTDO0275-00020485\t등\t등/NNB
BTDO0275-00020486\t구관\t구관/NNG
BTDO0275-00020487\t서각의\t서각/NNG + 의/JKG
BTDO0275-00020488\t하나.\t하나/NR + ./SF
자음 -ㄴ, -ㄹ 은 조사로 이용됩니다. 그런데 세종 말뭉치에서 이를 표기할 때 자음이 아닌 아랫글자로 기록한 경우들이 있습니다. 실제로 이용되는 글자를 Python 의 ord 를 이용하여 고유 번호로 치환하면 아래처럼 서로 다른 글자임을 확인할 수 있습니다.
print(ord('ᆫ')) # 4523
print(ord('ㄴ')) # 12596
이러한 글자들을 통일하기 위하여 아래의 mapper 를 이용했습니다.
unicode_mapper = {
'ᆨ': 'ㄱ', # 4520
'ᆩ': 'ㄲ', # 4521
'ᆪ': 'ㄳ', # 4522
'ᆫ': 'ㄴ', # 4523
'ᆬ': 'ㄵ', # 4524
'ᆭ': 'ㄶ', # 4525
'ᆮ': 'ㄷ', # 4526
'ᆯ': 'ㄹ', # 4527
'ᆰ': 'ㄺ', # 4528
'ᆱ': 'ㄻ', # 4529
'ᆲ': 'ㄼ', # 4530
'ᆳ': 'ㄽ', # 4531
'ᆴ': 'ㄾ', # 4532
'ᆵ': 'ㄿ', # 4533
'ᆶ': 'ㅀ', # 4534
'ᆷ': 'ㅁ', # 4535
'ᆸ': 'ㅂ', # 4536
'ᆹ': 'ㅄ', # 4537
'ᆺ': 'ㅅ', # 4538
'ᆻ': 'ㅆ', # 4539
'ᆼ': 'ㅇ', # 4540
'ᆽ': 'ㅈ', # 4541
'ᆾ': 'ㅊ', # 4542
'ᆿ': 'ㅋ', # 4543
'ᇀ': 'ㅌ', # 4544
'ᇁ': 'ㅍ', # 4545
'ᇂ': 'ㅎ', # 4546
'ᄀ': 'ㄱ', # 4352
'ᄁ': 'ㄲ', # 4353
'ᄂ': 'ㄴ', # 4354
'ᄃ': 'ㄷ', # 4355
'ᄄ': 'ㄸ', # 4356
'ᄅ': 'ㄹ', # 4357
'ᄆ': 'ㅁ', # 4358
'ᄇ': 'ㅂ', # 4359
'ᄈ': 'ㅃ', # 4360
'ᄉ': 'ㅅ', # 4361
'ᄊ': 'ㅆ', # 4362
'ᄋ': 'ㅇ', # 4363
'ᄌ': 'ㅈ', # 4364
'ᄍ': 'ㅉ', # 4365
'ᄎ': 'ㅊ', # 4366
'ᄏ': 'ㅋ', # 4367
'ᄐ': 'ㅌ', # 4368
'ᄑ': 'ㅍ', # 4369
'ᄒ': 'ㅎ', # 4370
}
심지어 자음을 표현하는 기호가 두 개나 있습니다.
이러한 문제가 있다고 추정되는 문장은 문어 말뭉치의 834,078 문장 중 87,707 개의 문장입니다. 구어 말뭉치에서는 이러한 문제가 발생하지 않았습니다.
세종 말뭉치의 구어와 문어 말뭉치는 서로 다른 형태소 간 구분 기호를 이용합니다. 그렇기 때문에 두 종류의 말뭉치를 동일한 방법으로 파싱할 경우 오류가 발생할 수 있습니다.
구어 말뭉치는 어절 내 형태소의 구분기호로 띄어쓰기가 없는 '+' 를 이용합니다.
5CT_0013-0000130 지하철. 지하철/NNG+./SF
5CT_0013-0000180 기차? 기차/NNG+?/SF
5CT_0013-0000210 아침에 아침/NNG+에/JKB
5CT_0013-0000300 아침에 아침/NNG+에/JKB
5CT_0013-0000380 차를 차/NNG+를/JKO
5CT_0013-0000530 차를 차/NNG+를/JKO
5CT_0013-0000780 육호선은 육호선/NNG+은/JX
5CT_0013-0000950 육호선은. 육호선/NNG+은/JX+./SF
5CT_0013-0000990 이호선으로 이호선/NNG+으로/JKB
5CT_0013-0001110 운이 운/NNG+이/JKS
하지만 문어 말뭉치는 띄어쓰기가 포함되어 있는 ' + ' 로 어절 내 형태소를 구분합니다.
BTAA0001-00000012 프랑스의 프랑스/NNP + 의/JKG
BTAA0001-00000013 세계적인 세계/NNG + 적/XSN + 이/VCP + ᆫ/ETM
BTAA0001-00000017 웅가로가 웅가로/NNP + 가/JKS
BTAA0001-00000019 장식용 장식/NNG + 용/XSN
BTAA0001-00000021 디자이너로 디자이너/NNG + 로/JKB
BTAA0001-00000022 나섰다. 나서/VV + 었/EP + 다/EF + ./SF
BTAA0001-00000023 웅가로는 웅가로/NNP + 는/JX
BTAA0001-00000024 침실과 침실/NNG + 과/JC
BTAA0001-00000025 식당, 식당/NNG + ,/SP
BTAA0001-00000026 욕실에서 욕실/NNG + 에서/JKB
한국어의 조사는 체언 뒤에 붙어 문법의 의미를 더하는 단어로, 독립적으로 하나의 어절을 이루지 못하며 체언 (명사, 대명사, 수사) 뒤에 위치해야 합니다. 단어 '지금'이 독립적으로 사용되거나, 그 뒤에 용언 어절이 위치할 경우에는 부사일 수 있습니다. 하지만 아래와 같이 MAG (부사) + JX (조사) 가 결합될 수는 없습니다. 세종 말뭉치에는 소수의 부분들이 아래와 같이 품사 태깅이 되어 있습니다. '지금' 이라는 단어에 일괄적으로 MAG 품사를 적용한 것이 아닌가 생각됩니다.
지금도 = [['지금', 'MAG'], ['도', 'JX']
위와 같은 부분은 state transition 을 이용하는 모델들에서는 (부사 -> 조사) 가 존재할 수 있는 것으로 학습되기 때문에 이를 교정해야 합니다.
어절 '해요'의 형태소가 일관되지 않습니다. 아래는 마침표가 포함된 '해요.'를 구성하는 형태소 세 종류 입니다. 일단 '하'라는 형태소를 동사(VV) 혹은 보조용언(VX) 으로 태깅을 하였습니다. 보조 용언은 본 용언의 의미를 보강하는 용언입니다.
어절 | 형태소 | 빈도수 | 말뭉치 출처 |
---|---|---|---|
해요. | ['하', 'VV'], ['ㅕ요', 'EF'], ['.', 'SF'] | 162 | 구어 말뭉치 |
해요. | ['하', 'VV'], ['아요', 'EF'], ['.', 'SF'] | 188 | 문어 말뭉치 |
해요. | ['하', 'VX'], ['아요', 'EF'], ['.', 'SF'] | 138 | 문어 말뭉치 |
이 경우는 문제가 되지 않습니다. 한국어 문법에서 보조용언은 띄어쓰기를 할 수 있기 때문입니다.
'노래를 부르게 했다'의 경우 '노래를 부르게했다' 처럼 두 어절을 붙여 쓸 수도 있고 띄어 쓸 수도 있습니다. 이 때, '부르다/동사' 의 의미를 보존하기 위하여 띄어쓰는 것을 권장합니다. 주로 채팅같은 경우에는 보조용언을 잘 띄어쓰지 않기도 합니다만, 세종 말뭉치에서는 보조용언들이 띄어져 있습니다. (모두 띄워져 있는지는 확인해봐야겠습니다.)
문제가 되는 부분은 '하/VV' 다음에 어떤 어미를 이용하느냐입니다. 구어 말뭉치에서는 'ㅕ요'를 이용하고 문어 말뭉치에서는 '아요'를 이용합니다. 아래의 첫 테이블은 구어 말뭉치에서 어절 앞 두 글자가 '해요'인 경우의 일부이며, 두번째 테이블은 문어 말뭉치에서 어절 앞 두 글자가 '해요'인 경우입니다. 전수를 확인한 결과 말뭉치마다 '해요'의 형태소를 다르게 적어뒀음을 알았습니다. 이때문에 lemmatizing 을 할 때, 무엇을 따라야 하는지 결정해야만 합니다.
어절 | 형태소 | 빈도수 |
---|---|---|
해요. | ['하', 'VV'], ['ㅕ요', 'EF'], ['.', 'SF'] | 162 |
해요, | ['하', 'VV'], ['ㅕ요', 'EF'], [',', 'SP'] | 82 |
해요? | ['하', 'VV'], ['ㅕ요', 'EF'], ['?', 'SF'] | 32 |
해요. | ['하', 'VX'], ['ㅕ요', 'EF'], ['.', 'SF'] | 28 |
해요' | ['하', 'VV'], ['ㅕ요', 'EF'] | 23 |
해요, | ['하', 'VX'], ['ㅕ요', 'EF'], [',', 'SP'] | 12 |
해요: | ['하', 'VV'], ['ㅕ요', 'EF'], [',', 'SP'] | 4 |
해요: | ['하', 'VV'], ['ㅕ요', 'EF'], ['.', 'SF'] | 2 |
해요' | ['하', 'VX'], ['ㅕ요', 'EF'] | 1 |
해요: | ['하', 'VX'], ['ㅕ요', 'EF'] | 1 |
해요: | ['하', 'VX'], ['ㅕ요', 'EF'], ['.', 'SF'] | 1 |
해요: | ['하', 'VV'], ['ㅕ요', 'EF'], ['?', 'SF'] | 1 |
해요잉, | ['하', 'VV'], ['ㅕ요', 'EF'], ['잉', 'IC'], [',', 'SP'] | 1 |
어절 | 형태소 | 빈도수 |
---|---|---|
해요. | ['하', 'VV'], ['아요', 'EF'], ['.', 'SF'] | 188 |
해요. | ['하', 'VX'], ['아요', 'EF'], ['.', 'SF'] | 138 |
해요. | ['하', 'VV'], ['아요', 'EF'], ['.', 'SF'] | 56 |
해요. | ['하', 'VX'], ['아요', 'EF'], ['.', 'SF'] | 53 |
해요? | ['하', 'VV'], ['아요', 'EF'], ['?', 'SF'] | 22 |
해요, | ['하', 'VV'], ['아요', 'EC'], [',', 'SP'] | 8 |
해요? | ['하', 'VX'], ['아요', 'EF'], ['?', 'SF'] | 6 |
비슷한 경우로 '그런지는'도 있습니다. 그 외에도 통일되지 않은 품사 태깅이 더 있을 것입니다.
어절 | 형태소 | 빈도수 |
---|---|---|
그런지는 | ['그렇', 'VA'], ['ㄴ지', 'EC'], ['는', 'JX'] | 17 |
그런지는 | ['그러', 'VV'], ['ㄴ지', 'EC'], ['는', 'JX'] | 4 |
그런지는 | ['그런', 'MM'], ['지', 'EC'], ['는', 'JX'] | 1 |