2017.11.20) Konlpy를 활용한 야민정음 해석기 part.3
2017. 11. 20. 23:33ㆍ프로젝트(완료)/야민정음 해석기
문장을 분석하여 문장 성분들이 제자리에 잘 위치하고 있으면 점수를 부여하는 형식으로
야민정음이 섞인 문장과 섞이지 않은 문장을 구별하는 방법을 취한다
3개의 품사에만 적용시켰다.
추가 된 것들 : 명사, 형용사, 동사
추가 할 것들 : 관형사, 여러 어미들(선어말어미 등)
나머지는 예외가 너무 많고, 야민정음이 사실상 쓰이지 않기 때문이다.
명사 :
일반 명사 ->
일반명사가 1자리일때는 야민정음이 강제로 분리된 경우가 다반수
점수 +1점
2자리 이상일때는
점수 +5점
고유 명사 ->
야민정음이 들어갈 수도 있고, 진짜 이름같은 것이 들어갈 수 있으므로 중간점수
점수 +3점
기타 어미, 조사들이 뒤에 온다(야민정음인 경우 조사 없이 명사 명사 명사 식으로 끊어지기 때문)
점수 +3점
형용사:
뒤에 전성 어미가 붙거나 연결 어미가 올 경우
점수 +2점
동사:
형용사와 같은 용언으로서 연결어미, 전성어미가 올 경우 밑 의존명사(~것)이나 선어말어미가 올 경우
점수 +3점
현재 야민정음과 일반 문장의 점수차가 생각보다 적게 나고 있어
확실한 구분이 가능하게 채점을 강화해야 함.
계속 실험해보며 더 뛰어난 문장 채점 방식으로 개선해나갈 것임
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | import konlpy def yamin(): print("입력 : ") rtn = [] __input = "한글과피라는 단어가 머체로 '한국어 과피'익\ 익미로 잘㕦 사용되고 있거만, 야민정음익 경윽에는 정말로\ 글자에 판련된 문제01므로 '한글과피'에 속한다고 볼 슥 있다." rtn.append(__input) __input = "한글파괴라는 단어가 대체로 '한국어 파괴'의\ 의미로 잘못 사용되고 있지만, 야민정음의 경우에는 정말로\ 글자에 관련된 문제이므로 '한글파괴'에 속한다고 볼 수 있다." rtn.append(__input) return rtn def nounNext(p0): if p0 == 'SC' or \ p0 == 'MAJ' or \ p0 == 'JKS' or \ p0 == 'JKC' or \ p0 == 'JKG' or \ p0 == 'JKO' or \ p0 == 'JKB' or \ p0 == 'JKV' or \ p0 == 'JKQ' or \ p0 == 'JC' or \ p0 == 'JX' or \ p0 == 'XSN': print("+3") return 3 return 0 def adjNext(p0): if p0 == 'ETM' or \ p0 == 'EP' or \ p0 == 'EC': print("+2") return 2 return 0 def verbNext(p0): if p0 == 'EC' or \ p0 == 'EP' or \ p0 == 'ETM' or \ p0 == 'NNB': print("+3") return 3 return 0 _input = yamin() words = [] score = [] for arr in _input: words.append(konlpy.tag.Mecab().pos(arr)) score.append(0) for i in range(0,len(words)): print("\n"+_input[i]) for j in range(0, len(words[i])): for k in words[i][j][1].split('+'): if k == 'NNG': print('일반 명사 : ' + words[i][j][0]) score[i] += nounNext(words[i][j+1][1]) if len(words[i][j][0]) == 1: score[i] += 1 print("+1") else: score[i] += 5 print("+5") if k == 'NNP': print('고유 명사 : ' + words[i][j][0]) score[i] += nounNext(words[i][j + 1][1]) + 3 print("+1") if k == 'NNB': print('의존 명사 : ' + words[i][j][0]) score[i] += nounNext(words[i][j + 1][1]) if k == 'NR': print('수사 : ' + words[i][j][0]) score[i] += nounNext(words[i][j + 1][1]) if k == 'NP': print('대명사 : ' + words[i][j][0]) score[i] += nounNext(words[i][j + 1][1]) if k == 'VV': print('동사 : ' + words[i][j][0]) try: score[i] += verbNext(words[i]\ [j][1].split('+')[1]) except: print("동사가 결합형이 아님") score[i] += verbNext(words[i][j + 1][1]) if k == 'VA': print('형용사 : ' + words[i][j][0]) score[i] += adjNext(words[i][j + 1][1]) if k == 'VX': print('보조 용언 : ' + words[i][j][0]) if k == 'VCP': print('긍정 지정사 : ' + words[i][j][0]) if k == 'VCN': print('부정 지정사 : ' + words[i][j][0]) if k == 'MM': print('관형사 : ' + words[i][j][0]) if k == 'MAG': print('일반 부사 : ' + words[i][j][0]) if k == 'MAJ': print('접속 부사 : ' + words[i][j][0]) if k == 'IC': print('감탄사 : ' + words[i][j][0]) if k == 'JKS': print('주격 조사 : ' + words[i][j][0]) if k == 'JKC': print('보격 조사 : ' + words[i][j][0]) if k == 'JKG': print('관형격 조사 : ' + words[i][j][0]) if k == 'JKO': print('목적격 조사 : ' + words[i][j][0]) if k == 'JKB': print('부사격 조사 : ' + words[i][j][0]) if k == 'JKV': print('호격 조사 : ' + words[i][j][0]) if k == 'JKQ': print('인용격 조사 : ' + words[i][j][0]) if k == 'JC': print('접속 조사 : ' + words[i][j][0]) if k == 'JX': print('보조사 조사 : ' + words[i][j][0]) if k == 'EP': print('선어말어미 : ' + words[i][j][0]) if k == 'EF': print('종결 어미 : ' + words[i][j][0]) if k == 'EC': print('연결 어미 : ' + words[i][j][0]) if k == 'ETN': print('명사형 전성 어미 : ' + words[i][j][0]) if k == 'ETM': print('관형형 전성 어미 : ' + words[i][j][0]) if k == 'XPN': print('체언 접두사 : ' + words[i][j][0]) if k == 'XSN': print('명사 파생 접미사 : ' + words[i][j][0]) if k == 'XSV': print('동사 파생 접미사 : ' + words[i][j][0]) if k == 'XSA': print('형용사 파생 접미사 : ' + words[i][j][0]) if k == 'XR': print('어근 : ' + words[i][j][0]) if k == 'SF': print('마침표 물음표 느낌표 : ' + words[i]\ [j][0]) if k == 'SE': print('줄임표 ... : ' + words[i][j][0]) if k == 'SSO': print('여는 괄호 : ' + words[i][j][0]) if k == 'SSC': print('닫는 괄호 : ' + words[i][j][0]) if k == 'SC': print('구분자 : ' + words[i][j][0]) if k == 'SY': print('기타 기호 : ' + words[i][j][0]) if k == 'SH': print('한자 : ' + words[i][j][0]) if k == 'SL': print('외국어 : ' + words[i][j][0]) if k == 'SN': print('숫자 : ' + words[i][j][0]) print() for i in range(0,len(_input)): print(_input[i]) print("점수 : "+str(score[i])) | cs |
'프로젝트(완료) > 야민정음 해석기' 카테고리의 다른 글
2017.11.25) Konlpy를 활용한 야민정음 해석기 part.4 (0) | 2017.11.25 |
---|---|
2017.11.20) Konlpy를 활용한 야민정음 해석기 part.2 (0) | 2017.11.20 |
2017.11.17) Konlpy를 활용한 야민정음 해석기 part.1 (0) | 2017.11.17 |