huginn muninn

Okt(Open Korean Text)로 형태소 어간 추출 본문

자연어 처리/한국어 전처리

Okt(Open Korean Text)로 형태소 어간 추출

_maddy 2023. 3. 10. 20:55

연구에 사용할 데이터를 형태소 분석기로 형태소 원형(어간)으로 만들어주는 작업을 하려고 한다. 

Mecab 하고 Okt 중 뭘 사용할지 고민하다가 리뷰 데이터 전처리에 적합하기도 하고, 단어의 형태소 원형으로 바꾸는 게 가능한 Okt를 사용하기로 했다. 

 

Okt(Open Korean Text)

오픈소스 한국어 분석기이고 과거 트위터 형태소 분석기였다.

  • morphs(text) : 텍스트에서 형태소를 반환
  • nouns(text) : 텍스트에서 명사 반환
  • phrases(text) : 텍스트에서 어절을 뽑아냄
  • pos(text) : 텍스트에서 품사 정보를 부탁하여 반환.

 

from konlpy.tag import Okt

okt=Okt()

sentence = "테라스에서도 흡연이 안 된다고 해서 일부러 건물 밖으로 나가서 담배를 피웠는데 갑자기 테라스에 꽁초가 떨어졌더라고요"

print('형태소 반환 : ',okt.morphs(sentence),'\n')
print('명사 반환 : ',okt.nouns(sentence),'\n')
print('어절 뽑기 : ',okt.phrases(sentence),'\n')
print('품사 정보 반환 : ',okt.pos(sentence),'\n')
형태소 반환 :  ['테라스', '에서도', '흡연', '이', '안', '된다고', '해서', '일부러', '건물', '밖', '으로', '나가서', '담배', '를', '피웠는데', '갑자기', '테라스', '에', '꽁초', '가', '떨어졌더라고요'] 

명사 반환 :  ['테라스', '흡연', '안', '일부러', '건물', '밖', '담배', '갑자기', '테라스', '꽁초'] 

어절 뽑기 :  ['테라스', '흡연', '일부러', '일부러 건물', '일부러 건물 밖', '담배', '갑자기', '갑자기 테라스', '꽁초', '건물'] 

품사 정보 반환 :  [('테라스', 'Noun'), ('에서도', 'Josa'), ('흡연', 'Noun'), ('이', 'Josa'), ('안', 'Noun'), ('된다고', 'Verb'), ('해서', 'Verb'), ('일부러', 'Noun'), ('건물', 'Noun'), ('밖', 'Noun'), ('으로', 'Josa'), ('나가서', 'Verb'), ('담배', 'Noun'), ('를', 'Josa'), ('피웠는데', 'Verb'), ('갑자기', 'Noun'), ('테라스', 'Noun'), ('에', 'Josa'), ('꽁초', 'Noun'), ('가', 'Josa'), ('떨어졌더라고요', 'Verb')]

 

  • 어간 추출

형태소 원형(어간)으로 반환하고 싶다면 stem=True로 설정해 주면 된다. 

sentence = "어메니티 자판기가 있어서 편리하였고 레스토랑과 카페가 있어서 맛있는 식사와 함께 편히 쉬다가 왔습니다"
lemmatized_sentence=okt.morphs(sentence,stem=True)
print(lemmatized_sentence)
print(' '.join(lemmatized_sentence))
['어메니티', '자판기', '가', '있다', '편리하다', '레스토랑', '과', '카페', '가', '있다', '맛있다', '식사', '와', '함께', '편하다', '쉬다', '오다']
어메니티 자판기 가 있다 편리하다 레스토랑 과 카페 가 있다 맛있다 식사 와 함께 편하다 쉬다 오다

 

 

 

  • okt 품사 확인하기

품사 태깅하고 okt 품사 정보를 확인하고 싶으면 tagset

okt.tagset
{'Adjective': '형용사',
 'Adverb': '부사',
 'Alpha': '알파벳',
 'Conjunction': '접속사',
 'Determiner': '관형사',
 'Eomi': '어미',
 'Exclamation': '감탄사',
 'Foreign': '외국어, 한자 및 기타기호',
 'Hashtag': '트위터 해쉬태그',
 'Josa': '조사',
 'KoreanParticle': '(ex: ㅋㅋ)',
 'Noun': '명사',
 'Number': '숫자',
 'PreEomi': '선어말어미',
 'Punctuation': '구두점',
 'ScreenName': '트위터 아이디',
 'Suffix': '접미사',
 'Unknown': '미등록어',
 'Verb': '동사'}

 

 

어간 추출 후 필요없는 불용어나 조사는 제거하면 된다.

추후에 맞춤법, 띄어쓰기 교정, 불용어 제거 방법을 정리해 보겠다. 

 

'자연어 처리 > 한국어 전처리' 카테고리의 다른 글

py-hanspell 설치 오류  (0) 2023.04.21
Konlpy 설치, MeCab 설치  (0) 2023.03.10