KoNLPy 설치
Jpype 설치
- https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 에서 파이썬과 운영체제에 맞는 파일 다운로드
- 기존 jpype 제거 후 설치
pip uninstall jpype1
pip install 파일명.whl
- JVM 설치해야
#error msg
jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.
https://github.com/ojdkbuild/ojdkbuild 에서 설치
파이썬에서 javac
쓰면 나와야 해
환경 변수 설정에서 변수이름은 JAVA_HOME
, 변수 값은 C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.242-1
OKT (Open Korea Text)
트위터에서 만든 OKT (추후에 이름이 바뀐 것이다)
import konlpy.tag import Okt
okt = Okt() #객체 생성
malist = okt.pos("아버지 가방에 들어가신다.", norm=True, stem=True)
#stem=True : 어근으로 표현
print(malist)
#[('아버지', 'Noun'), ('가방', 'Noun'), ('에', 'Josa'), ('들어가다', 'Verb'), ('.', 'Punctuation')]
okt.morphs()
: 형태소 단위로 나눈다.norm
: 문장을 정규화하는 과정이라고 하지만, 어떤 의미인지는 알고리즘 특성으로 알기 어렵다.stem=True
: 각 단어의 어근으로 표현한다.kot.nouns()
: 명사만 추출한다.okt.phrases()
: 어절을 추출한다.okt.pos()
: 각 품사를 태깅한다. 다시 말하면, 주어진 텍스트를 형태소 단위로 나누고, 나눠진 각 형태소를 그에 해당하는 품사와 함께 리스트화하는 것을 의미한다. 옵션으로 norm, stem, join이 있는데 join은 나눠진 형태소와 품사를 ‘형태소/품사’ 형태로 같이 붙여서 리스트화한다.
print(okt.nouns(u'을지로 3가역 주변 첨단빌딩숲 사이에 자리 잡은 커피집'))
#['을지로', '역', '주변', '첨단', '빌딩', '숲', '사이', '자리', '커피집']
print(okt.pos(u'이것도 되나요ㅋㅋ'))
#[('이', 'Determiner'), ('것', 'Noun'), ('도', 'Josa'), ('되나요', 'Verb'), ('ㅋㅋ', 'KoreanParticle')]
print(okt.pos(u'이것도 되나요ㅋㅋ', norm=True, stem=True))
#[('이', 'Determiner'), ('것', 'Noun'), ('도', 'Josa'), ('되다', 'Verb'), ('ㅋㅋ', 'KoreanParticle')]
print(okt.nouns('짜장면 2개, 짬뽕 2개 주세요'))
print(okt.pos('짜장면 2개, 짬뽕 2개 주세요'))
['짜장면', '개', '짬뽕', '개']
[('짜장면', 'Noun'), ('2', 'Number'), ('개', 'Noun'), (',', 'Punctuation'), ('짬뽕', 'Noun'), ('2', 'Number'), ('개', 'Noun'), ('주세요', 'Verb')]
KKMA
서울대에서 만든 형태소 분석기이다.
형태소 분석기 알고리즘이 워낙 복잡하기 때문에, 짧은 문장은 비슷하지만 긴 문장은 okt, kkma 각각 다른 결과를 리턴하기도 한다.
from konlpy.tag import Kkma
kkma = Kkma()
#문장 분리
print('kkma 문장분리 : ', kkma.sentences('안녕하세요. 반갑습니다. 저는 인공지능입니다.'))
#명사 추출
print('kkma 명사만 추출 : ', kkma.nouns('을지로 3가역 주변 첨단빌딩숲 사이에 자리 잡은 커피집'))
#result
kkma 문장분리 : ['안녕하세요.', '반갑습니다.', '저는 인공지능입니다.']
kkma 명사만 추출 : ['을지', '3', '역', '주변', '첨단', '첨단빌딩숲', '빌딩', '숲', '사이', '자리', '커피', '커피집', '집']
kkma.morphs()
: 형태소 단위로 나눈다.kkma.nouns()
: 명사만 추출한다.kkma.pos()
: 각 품사를 태깅한다.
print(kkma.sentences('짜장면 2개, 짬뽕 2개 주세요'))
print(kkma.nouns('짜장면 2개, 짬뽕 2개 주세요'))
print(kkma.morphs('짜장면 2개, 짬뽕 2개 주세요'))
['짜장면 2개, 짬뽕 2개 주세요']
['짜장면', '2', '2개', '개', '짬뽕']
['짜장면', '2', '개', ',', '짬뽕', '2', '개', '주', '세요']
형태소로 알아듣기 힘들어서 OKT를 많이 사용하기도 한다.
'Python > NLP 자연어처리' 카테고리의 다른 글
Word Embeddimg (0) | 2020.02.14 |
---|---|
단어 빈도수 기반 자연어 처리 (0) | 2020.02.10 |
자연어 처리 소개와 char 코드 기반 자연어 처리 (0) | 2020.02.10 |