Jupyter 영화 리뷰 분류: 이진 분류 문제

nbviewer.jupyter.org/github/cyc1am3n/Deep-Learning-with-Python/blob/master/Chap03-getting_started_with_neural_networks/Chap03-4-classifying_movie_reviews.ipynb

 

Jupyter Notebook Viewer

마지막으로 손실함수와 옵티마이저를 선택하면 학습 할 준비가 끝납니다. 이 문제는 이진 분류 문제이고 신경망의 출력이 확률이기 때문에, binary_crossentropy손실이 적합합니다.(mean_squared_error도

nbviewer.jupyter.org

네이버 영화 리뷰 감성 분류

github.com/rickiepark/python-machine-learning-book-3rd-edition/blob/master/ch08/naver_movie_review.ipynb

 

rickiepark/python-machine-learning-book-3rd-edition

"머신 러닝 교과서"(길벗, 2020) 2판의 코드 저장소. Contribute to rickiepark/python-machine-learning-book-3rd-edition development by creating an account on GitHub.

github.com

 

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

한국어는 교착어이다.

한국어는 띄어쓰기가 영어보다 잘 지켜지지 않는다.

NLTK와 KoNLPy를 이용한 영어, 한국어 토큰화 실습

NLTK에서는 영어 코퍼스에 품사 태깅 기능을 지원하고 있습니다. 품사를 어떻게 명명하고, 태깅하는지의 기준은 여러가지가 있는데, NLTK에서는 Penn Treebank POS Tags라는 기준을 사용합니다. 실제로 NLTK를 사용해서 영어 코퍼스에 품사 태깅을 해보도록 하겠습니다.

nltk 에러나면  CMD에서 pip install nltk

>>> from nltk.tokenize import word_tokenize
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    from nltk.tokenize import word_tokenize
ModuleNotFoundError: No module named 'nltk'

>>> from nltk.tokenize import word_tokenize

>>> text="I am actively looking for Ph.D. students. and you are a Ph.D. student."
>>> print(word_tokenize(text))

['I', 'am', 'actively', 'looking', 'for', 'Ph.D.', 'students', '.', 'and', 'you', 'are', 'a', 'Ph.D.', 'student', '.']

>>> from nltk.tag import pos_tag
>>> x=word_tokenize(text)
>>> pos_tag(x)

[('I', 'PRP'), ('am', 'VBP'), ('actively', 'RB'), ('looking', 'VBG'), ('for', 'IN'), ('Ph.D.', 'NNP'), ('students', 'NNS'), ('.', '.'), ('and', 'CC'), ('you', 'PRP'), ('are', 'VBP'), ('a', 'DT'), ('Ph.D.', 'NNP'), ('student', 'NN'), ('.', '.')]

영어 문장에 대해서 토큰화를 수행하고, 이어서 품사 태깅을 수행하였습니다. Penn Treebank POG Tags에서 PRP는 인칭 대명사, VBP는 동사, RB는 부사, VBG는 현재부사, IN은 전치사, NNP는 고유 명사, NNS는 복수형 명사, CC는 접속사, DT는 관사를 의미합니다.

한국어 자연어 처리를 위해서는 KoNLPy("코엔엘파이"라고 읽습니다)라는 파이썬 패키지를 사용할 수 있습니다. 코엔엘파이를 통해서 사용할 수 있는 형태소 분석기로 Okt(Open Korea Text), 메캅(Mecab), 코모란(Komoran), 한나눔(Hannanum), 꼬꼬마(Kkma)가 있습니다.

 

한국어 자연어 처리를 위해서는 KoNLPy("코엔엘파이"라고 읽습니다)라는 파이썬 패키지를 사용할 수 있습니다. 코엔엘파이를 통해서 사용할 수 있는 형태소 분석기로 Okt(Open Korea Text), 메캅(Mecab), 코모란(Komoran), 한나눔(Hannanum), 꼬꼬마(Kkma)가 있습니다.

한국어 NLP에서 형태소 분석기를 사용한다는 것은 단어 토큰화가 아니라 정확히는 형태소(morpheme) 단위로 형태소 토큰화(morpheme tokenization)를 수행하게 됨을 뜻합니다. 여기선 이 중에서 Okt와 꼬꼬마를 통해서 토큰화를 수행해보도록 하겠습니다. (Okt는 기존에는 Twitter라는 이름을 갖고있었으나 0.5.0 버전부터 이름이 변경되어 인터넷에는 아직 Twitter로 많이 알려져있으므로 학습 시 참고바랍니다.)

 

>>> from konlpy.tag import Okt
>>> okt=Okt()

>>> print(okt.morphs("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))

['열심히', '코딩', '한', '당신', ',', '연휴', '에는', '여행', '을', '가봐요']

>>> print(okt.pos("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))

[('열심히', 'Adverb'), ('코딩', 'Noun'), ('한', 'Josa'), ('당신', 'Noun'), (',', 'Punctuation'), ('연휴', 'Noun'), ('에는', 'Josa'), ('여행', 'Noun'), ('을', 'Josa'), ('가봐요', 'Verb')]

>>> print(okt.nouns("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))

['코딩', '당신', '연휴', '여행']

위의 예제는 Okt 형태소 분석기로 토큰화를 시도해본 예제입니다.

1) morphs : 형태소 추출
2) pos : 품사 태깅(Part-of-speech tagging)
3) nouns : 명사 추출

위 예제에서 사용된 각 메소드는 이런 기능을 갖고 있습니다. 앞서 언급한 코엔엘파이의 형태소 분석기들은 공통적으로 이 메소드들을 제공하고 있습니다. 위 예제에서 형태소 추출과 품사 태깅 메소드의 결과를 보면, 조사를 기본적으로 분리하고 있음을 확인할 수 있습니다. 그렇기 때문에 한국어 NLP에서 전처리에 형태소 분석기를 사용하는 것은 꽤 유용합니다.

 

이번에는 꼬꼬마 형태소 분석기를 사용하여 같은 문장에 대해서 토큰화를 진행해볼 것입니다.

>>> from konlpy.tag import Kkma
>>> kkma=Kkma()
>>> print(kkma.morphs("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))

['열심히', '코딩', '하', 'ㄴ', '당신', ',', '연휴', '에', '는', '여행', '을', '가보', '아요']

>>> print(kkma.pos("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))

[('열심히', 'MAG'), ('코딩', 'NNG'), ('하', 'XSV'), ('ㄴ', 'ETD'), ('당신', 'NP'), (',', 'SP'), ('연휴', 'NNG'), ('에', 'JKM'), ('는', 'JX'), ('여행', 'NNG'), ('을', 'JKO'), ('가보', 'VV'), ('아요', 'EFN')]

>>> print(kkma.nouns("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))

['코딩', '당신', '연휴', '여행']

앞서 사용한 Okt 형태소 분석기와 결과가 다른 것을 볼 수 있습니다. 각 형태소 분석기는 성능과 결과가 다르게 나오기 때문에, 형태소 분석기의 선택은 사용하고자 하는 필요 용도에 어떤 형태소 분석기가 가장 적절한지를 판단하고 사용하면 됩니다. 예를 들어서 속도를 중시한다면 메캅을 사용할 수 있습니다.

 

 

출처 : wikidocs.net/21698

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

 [JAVA] jdk8 다운로드,  Konlpy jvm 에러 해결. 

 

> from konlpy.tag import Kkma
> tokenizer = Kkma()
 

이러면 jvm 에러 계속 발생했는데... 

 

No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly
, line 91, in __init__
jvm.init_jvm(jvmpath, max_heap_size)

, line 55, in init_jvm
jvmpath = jvmpath or jpype.getDefaultJVMPath()

, line 74, in getDefaultJVMPath
return finder.get_jvm_path()

, line 212, in get_jvm_path
raise JVMNotFoundException("No JVM shared library file ({0}) "

jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

 

기존 java를 다 삭제하고. 다시 아래에서 다운받아서 설치. 

jdk-8u271-windows-x62

JAVA_HOME도 다시 설정. 

CLASSPATH - C:\Program Files\Java\jdk1.8.0_271\lib\tools.jar

JAVA_HOME - C:\Program Files\Java\jdk1.8.0_271\jre\bin\server

 

CLASSPATH
JAVA_HOME

www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

www.oracle.com/java/technologies/javase-jre8-downloads.html

 

In [1]: from konlpy.tag import Kkma

In [2]: tokenizer = Kkma()

In [3]: tokenizer.morphs("카페에서의 여유 참 좋네요")
Out[3]: ['카페', '에서', '의', '여유', '참', '좋', '네요']

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

필요한 정보의 약 70%를 얻게 되면 대부분의 사항을 결정해야 한다.
90%까지 기다리면 결정이 늦어진다.
또한 잘못된 결정을 빨리 인식하고 바로잡는데 능숙해져야한다.
만약 잘못된 결정을 하더라도 진로를 올바르게 수정한다면
시행착오 비용이 생각보다 덜 들어간다.
반면 결정이 느려지면 치러야 할 대가가 상당하다.
- 제프 베조스 아마존 회장


아마존 리더십 원칙 중 ‘과감한 행동’에 관한 내용 함께 보내드립니다.
“비즈니스는 속도가 생명입니다. 의사결정과 행동이 잘못되었다 하더라도
대부분은 나중에 되돌릴 수 있으니 지나치게 심사숙고할 필요 없습니다.
리더는 예측된 위험을 과감하게 받아들입니다.”

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

35년 동안
9조 원을 익명으로 기부한
'행복한 거지' 찰스 F 피니는 이렇게 말했다.
"돈이 많아도 두 켤레의 신발을 동시에
신을 수는 없으니까요."
어느 날 나는 이런 생각을 했다.
기부를 받는 사람이 더 행복할까
아니면 주는 사람이 더 행복할까?


- 김효진의《굿머니》중에서 -


* 근래 766억 원의 거액을
카이스트에 기부한 광원산업의 이수영 회장이
한 방송에서 "기부하면 얼마나 행복한지 아느냐"라고
묻는 말을 들었습니다. 답은 분명합니다.
주는 사람이 더 행복합니다. 그리고
그 행복은 세상으로 번집니다.
행복도 전염됩니다.

'생활의 발견 > 아침편지' 카테고리의 다른 글

누가 더 행복할까?  (0) 08:37:05
'나중에'는 없다  (0) 2020.12.01
아이들이 번쩍 깨달은 것  (0) 2020.11.30
길을 잃으면 길이 찾아온다  (0) 2020.11.30
절대 잊을 수 없는 날  (0) 2020.11.27
'그저 건강하게 있어달라'  (0) 2020.11.26
Posted by 홍반장水 홍반장水

댓글을 달아 주세요