반응형

파이썬으로 영어와 한국어 텍스트 다루기

https://www.lucypark.kr/courses/2015-dm/text-mining.html




문서 전처리


https://datascienceschool.net/view-notebook/3e7aadbf88ed4f0d87a76f9ddc925d69/



모든 데이터 분석 모형은 숫자로 구성된 고정 차원 벡터를 독립 변수로 하고 있으므로 문서(document)를 분석을 하는 경우에도 숫자로 구성된 특징 벡터(feature vector)를 문서로부터 추출하는 과정이 필요하다. 이러한 과정을 문서 전처리(document preprocessing)라고 한다.


BOW (Bag of Words) 


문서를 숫자 벡터로 변환하는 가장 기본적인 방법은 BOW (Bag of Words) 이다. BOW 방법에서는 전체 문서  {D1,D2,…,Dn}{D1,D2,…,Dn}  를 구성하는 고정된 단어장(vocabulary)  {W1,W2,…,Wm}{W1,W2,…,Wm}  를 만들고  DiDi 라는 개별 문서에 단어장에 해당하는 단어들이 포함되어 있는지를 표시하는 방법이다.


 만약 단어 Wj가 문서Di 안에 있으면 ,→xij=1

 만약 단어 Wj가 문서Di 안에 있으면 ,→xij=1

 

Scikit-Learn 의 문서 전처리 기능 


Scikit-Learn 의 feature_extraction.text 서브 패키지는 다음과 같은 문서 전처리용 클래스를 제공한다.


CountVectorizer:

    문서 집합으로부터 단어의 수를 세어 카운트 행렬을 만든다.

TfidfVectorizer:

    문서 집합으로부터 단어의 수를 세고 TF-IDF 방식으로 단어의 가중치를 조정한 카운트 행렬을 만든다.

HashingVectorizer:

    hashing trick 을 사용하여 빠르게 카운트 행렬을 만든다.


from sklearn.feature_extraction.text import CountVectorizer

corpus = [

    'This is the first document.',

    'This is the second second document.',

    'And the third one.',

    'Is this the first document?',

    'The last document?',    

]

vect = CountVectorizer()

vect.fit(corpus)

vect.vocabulary_


반응형
반응형

konlpy 한국어 처리 패키지 


https://datascienceschool.net/view-notebook/70ce46db4ced4a999c6ec349df0f4eb0/



konlpy는 한국어 정보처리를 위한 파이썬 패키지이다.


http://konlpy.org/ko/latest/

https://github.com/konlpy/konlpy

konlpy는 다음과 같은 다양한 형태소 분석, 태깅 라이브러리를 파이썬에서 쉽게 사용할 수 있도록 모아놓았다.


Kkma

http://kkma.snu.ac.kr/

Hannanum

http://semanticweb.kaist.ac.kr/hannanum/

Twitter

https://github.com/twitter/twitter-korean-text/

Komoran

http://www.shineware.co.kr/?page_id=835

Mecab

https://bitbucket.org/eunjeon/mecab-ko-dic

konlpy 는 다음과 같은 기능을 제공한다.


한국어 corpus

한국어 처리 유틸리티

형태소 분석 및 품사 태깅



한국어 corpus


 - 예문 호출, 파일리스트 

from konlpy.corpus import kolaw  

kolaw.fileids()


c = kolaw.open('constitution.txt').read()

print(c[:100])


from konlpy.corpus import kobill

kobill.fileids()


d = kobill.open('1809890.txt').read()

print(d[:100])



한국어 처리 유틸리티

konlpy에는 유니코드 한글 문자열이 리스트나 딕셔너리의 내부에 있을 때도 한글 글자 모양을 정상적으로 보여주는 pprint 유틸리티 함수를 제공한다.


x = [u"한글", {u"한글 키": [u"한글 밸류1", u"한글 밸류2"]}]

print(x)


from konlpy.utils import pprint

pprint(x)



형태소 분석 

konlpy는 tag 서브패키지에서 형태소 분석을 위한 5개의 클래스를 제공한다.


Kkma

Hannanum

Twitter

Komoran

Mecab


이 클래스는 다음과 같은 메서드를 대부분 제공한다.


morphs : 형태소 추출

nouns : 명사 추출

pos : pos 태깅



from konlpy.tag import *

hannanum = Hannanum()

kkma = Kkma()

twitter = Twitter()


명사 추출 

문자열에서 명사만 추출하려면 noun 명령을 사용한다.


pprint(hannanum.nouns(c[:65]))

pprint(kkma.nouns(c[:65]))

pprint(twitter.nouns(c[:65]))


형태소 추출 

명사 뿐 아니라 모든 품사의 형태소를 알아내려면 morphs라는 명령을 사용한다.


pprint(hannanum.morphs(c[:65]))

pprint(kkma.morphs(c[:65]))

pprint(twitter.morphs(c[:65]))



품사 태깅 

pos 명령을 사용하면 품사(POS)가 붙어있는(tagging) 형태로 형태소 분석을 한다. 다만 이 때 출력되는 품사의 정의 및 기호는 형태소 분석기 마다 다르므로 각 형태소 분석기에 대한 문서를 찾아봐야 한다.


다음은 많이 쓰이는 형태소 분석기의 품사 기호를 비교한 자료이다.


Korean POS tags comparison chart : https://docs.google.com/spreadsheets/d/1OGAjUvalBuX-oZvZ_-9tEfYD2gQe7hTGsgUpiiBSXI8/edit#gid=0


pprint(hannanum.pos(c[:65]))

pprint(kkma.pos(c[:65]))

pprint(twitter.pos(c[:65]))



반응형
반응형

[Python] 그래프에서 한글 깨질때


bar 차트를 그리기 위해서 먼저 필요한 모듈을 import합니다. matplotlib.pyplot과 numpy 모듈은 기존에도 자주 사용했지만 font_manager와 rc 모듈은 처음으로 import하는 모듈입니다. 해당 모듈은 그래프를 그릴 때 한글 폰트를 설정하기 위해 사용합니다.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import font_manager, rc

그림 15.23을 참조하면 업종명이 한글로 출력됨을 확인할 수 있습니다. matplotlib는 한글 폰트를 설정해주지 않으면 기본적으로 한글이 제대로 출력되지 않습니다. 따라서 데이터에 한글이 포함되어 있다면 다음과 같이 사용할 한글 폰트를 설정해줘야 한글이 정상적으로 출력됩니다.

font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)

폰트를 설정하기 위해서는 폰트 이름을 알아야 합니다. 윈도우 7부터는 '맑은 고딕'이라는 폰트가 기본 폰트로 사용되고 있기 때문에, 본 예제에서는 'c:/Windows/Fonts/malgun.ttf'라는 경로를 사용했습니다. 폰트의 설치 경로로부터 폰트 이름을 먼저 알아낸 후 rc 함수를 통해서 폰트를 설정했습니다.






.

반응형
반응형

직원들은 강요당하는 것은 무엇이든 저항하지만,

반대로 똑같은 사안이라도 

선택의 자유가 있다고 생각하면 기꺼이 받아들인다.

인간은 변화를 거부하는 것이 아니라

‘변화 당하는 것’을 거부한다.

- 티어링크 (할리 데이비슨 전 회장)


사람들은 스스로 선택하면 제 아무리 어렵더라도 즐겁게 일합니다.

반면에 강요받으면 쉬운 일도 불평불만으로 대합니다.

스톡옵션이 주인의식을 만들어주지 않습니다.

스스로 선택하고 결정할 수 있을 때

비로소 주인이 되는 것입니다.



.

반응형
반응형

신은 최후의 창조자였고, 

우리 인간은 단지 모방을 할 뿐입니다. 

사실 우리가 만드는 모든 것은 이미 존재하는 것을 

바탕으로 하고 있고, 또 그렇게 해야 합니다. 

진공 상태에서 그 어떤 창의성도, 

어떤 아이디어도 나올 수 

없으니까요. 


- 존 헤가티의《지그할 때, 재그하라!》중에서 - 


* 신의 창조도 최후가 아닙니다.

창조 작업에는 끝이 없습니다. 더 새롭고

더 아름다운 끝점(오메가포인트)을 향해서

계속 진화하고 완성해 갑니다. 하물며 인간의

창조 작업은 더 말할 것도 없습니다. 이미 

만들어져 있고 존재하는 것들 속에

창조의 비밀이 숨겨 있습니다.



.

반응형

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

꿈이 있는 아내는...  (0) 2017.06.19
영혼의 성장, 영혼의 여행  (0) 2017.06.16
'그림 같다'  (0) 2017.06.14
내 몸을 알자  (0) 2017.06.13
'어떻게'가 더 중요하다  (0) 2017.06.12

+ Recent posts