Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- gpt1
- 분산
- SQL
- Aspect
- LLM
- dfs
- 코딩테스트
- Bert
- 가상환경
- 연구
- 백준
- join
- leetcode
- 머신러닝
- deepseek
- 파이썬
- transformer
- ChatGPT
- SQL 첫걸음
- GPT
- ABAE
- MySQL
- 자연어처리
- paper review
- outer join
- 알고리즘
- 논문리뷰
- 프로그래머스
- NLP
- 그래프
Archives
- Today
- Total
huginn muninn
Okt(Open Korean Text)로 형태소 어간 추출 본문
연구에 사용할 데이터를 형태소 분석기로 형태소 원형(어간)으로 만들어주는 작업을 하려고 한다.
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 |