반응형
반응형

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

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_


반응형
반응형

챗봇 시작해보기   https://www.slideshare.net/ssusercf5d12/ss-69518853


Python 으로 Slackbot 개발하기   https://www.slideshare.net/ssusercf5d12/python-slackbot


20170227 파이썬으로 챗봇_만들기     https://www.slideshare.net/KimSungdong1/20170227-72644192


머신러닝의 자연어 처리기술(I)    https://www.slideshare.net/ssuser06e0c5/i-64267027


인공지능, 기계학습 그리고 딥러닝  https://www.slideshare.net/JinwonLee9/ss-70446412  


[F2]자연어처리를 위한 기계학습 소개   https://www.slideshare.net/deview/f2-14341235





.

반응형
반응형

구글, 파이썬-고 소스코드 변환해주는 ‘글럼피’ 오픈소스로 공개

 

http://www.bloter.net/archives/270167

 

구글이 ‘고’ 소스코드를 파이썬에서 사용할 수 있는 프로그램 ‘글럼피’를 1월4일 공개했다.

글럼피는 파이썬 코드를 고 소스코드로 변경해주는 기술이자 런타임이다. ‘C파이썬’의 대체 기술이며, 바이트코드가 아닌 네이티브 코드를 만들어주는 게 특징이다.

 

글럼피는 구글의 유튜브 팀이 개발했다. 구글은 유튜브의 프론트엔드 서버와 유튜브 API를 파이썬으로 작성했는데, 이때 최적화 문제는 C파이썬이란 기술을 활용해 해결했다. 하지만 기존 파이썬 기반 프로그램은 동시성 작업을 하기에 조금 부족했고, 이를 위해 다양한 파이썬 런타임을 살펴보았으나 알맞은 기술을 찾기 힘들었다고 한다. 그러던 중 고 언어를 발견했으며, 고가 동시성 문제를 해결해주면서 기존 언어들과 호환성이 높다는 것을 알아내고 글럼피를 개발했다.

 

유튜브는 2가지 부분에서 글럼피만의 특색이 있다고 설명했다. 먼저 글럼피는 C언어 기반 확정 모듈을 지원하지 않는다. 과거에 파이썬 내에서 활용되던 C 확장 기술은 사용할 수 없지만, 글럼피 개발팀은 반대로 유연성 및 확장성이 높아졌다고 설명했다. 또한 글럼피는 GIL(Global Interpreter Lock)을 지원하지 않고, 가비지 컬렉션을 활용해 객체를 관리한다.

 

Grumpy_02

▲c파이썬과 글럼피 확장성 비교(사진 : 구글 블로그)

 

고 코드를 마치 파이썬 모듈처럼 자유자재로 활용할 수 있는 것도 특징이다. 다음은 파이썬에서 고 언어로 작성된 net/http 패키지를 이용하는 예시다.

Grumpy_03

▲글럼피로 고 패키지를 불러온 예시(사진:구글 블로그)

글럼피는 아파치 라이선스 2.0으로 배포됐다. 아직은 알파 단계의 소프트웨어며 이후 다양한 기여자들과 함께 기술을 발전시킬 예정이다.

 

 

 

.
반응형
반응형

문자열을 반복하여 붙이는 3가지 코딩 방법 및 수행 시간 비교


[코드 1]
import time
start_time = time.time()
s = ''
for k in range(1000000):
    s += 'python'
end_time = time.time()
print end_time - start_time

출력: 0.243875980377

[코드 2]
start_time = time.time()
t = []
for k in range(1000000):
    t.append('python')
s = ''.join(t)
end_time = time.time()
print end_time - start_time

출력: 0.161774158478

[코드 3]
start_time = time.time()
s = 'python' * 1000000
end_time = time.time()
print end_time - start_time

출력: 0.000773191452026

위 결과로 알 수 있듯이 단순하게 문자열을 반복하여 붙이는 코딩 방법은 3번째 방식의 효율이 가장 좋습니다.

 

 

파이썬 온라인 코딩 학습 사이트 추천

 

https://www.codecademy.com/ko/tracks/python-ko 


온라인 코딩 학습 사이트로 유명한 codecademy의 Python 학습 컨텐츠입니다. 

한글로 친절하게 번역이 잘 되어 있으며, 

각 단계별로 실제 코딩을 하여야 다음 단계로 넘어갈 수 있기 때문에 

파이썬을 학습하기에 아주 좋은 사이트입니다.

 

 

파이썬으로 개발된 유명한 S/W에는 어떤 것이 있을까요?
아래 링크에서 확인할 수 있습니다.


위 링크의 내용에 나와 있듯이 Youtube도 Python으로 개발되었습니다.

 

 

 

반응형
반응형

윈도우즈에 파이썬 개발 환경 구축 참고 자료 


Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기

 


http://www.slideshare.net/JoongiKim/python-korea-20140628-windows-python

 


처음에 윈도우즈에서 개발환경을 구축할 때 도움이 될 만한 자료입니다.

 

[turtle 모듈 활용하기]


1) 참고자료


2) 예제

import turtle

t = turtle.Turtle()
t.pensize(3)             # 펜 사이즈를 3으로 설정한다.
t.penup()                # 펜을 종이로 부터 들어올린다.
t.goto(-200, -50)        # 해당 좌표로 이동한다.
t.pendown()              # 펜을 종이에 놓는다.
t.circle(40, steps=3)    # 반지름이 40인 원을 3 step으로만 그린다. ==> 삼각형이 그려짐

t.penup()
t.goto(-100, -50)
t.pendown()
t.circle(40, steps=4)

t.penup()
t.goto(0, -50)
t.pendown()
t.circle(40, steps=5)

t.penup()
t.goto(100, -50)
t.pendown()
t.circle(40, steps=6)

t.penup()
t.goto(200, -50)
t.pendown()


t.circle(40, steps=40)
반응형
반응형

 


함수의 정의와 호출


함수: 여러 개의 statement를 하나로 묶은 단위
* 함수는 반복적 수행이 가능하며, 코드를 논리적으로 이해하는데 도움을 줌. 또한 코드의 일정
 부분을 별도의 논리적 개념으로 독립화 가능


간단한 함수의 정의 → def: 함수 정의 시 사용하는 키워드


함수 객체와 함수 호출
* 함수 이름 자체는 함수 객체의 레퍼런스를 지님
* 함수 이름에 저장된 레퍼런스를 다른 변수에 할당하여 그 변수를 이용한 함수 호출 가능
* 함수 몸체에는 최소한 한 개 이상의 statement가 존재해야 함 (없으면 pass 사용)


함수 인수값 전달 방법
* 기본: 값에 의한 호출(call-by-value) → 실제로는 참조에 의한 호출(call-by-reference)
* 함수 인자에 변경불가능 객체인 숫자값, 문자열, 튜플을 전달하면 의미 없음
* 함수 인자에 변경 가능한 객체인 리스트와 사전을 전달하면 올바른 전달법 및 활용법


- 반환문 : 인수 없이 return문 사용하면 None 객체 전달


- 함수 인자에 대한 동적인 자료형 결정 : 함수 인자는 함수가 호출되는 순간 해당 인자에 전달되는
 객체에 따라 타입 결정

 

함수 인수 처리


기본 인수 값 : 함수를 호출할 때 인수를 넘겨주지 않아도 인수가 기본적으로 가지는 값
* incr(a, step=1)에서 step=1과 같은 형태를 가짐
* 함수 정의를 할 때 일반적인 인수 앞에 기본 인수 값 올 수 없으나 여러 개는 정의 가능


키워드 인수 : 인수 값 전달 시 인수 이름과 함께 값을 전달하는 방식
* 함수 호출 시 키워드 인수는 마지막에 위치해야 함


가변 인수 리스트 : 함수 정의 시 일반적인 인수 선언 뒤에 *var 형식의 인수로 가변 인수 선언
* var 에는 함수 호출 시 넣어주는 인수 값들 중 일반 인수에 할당되는 값을 제외한 나머지 값들을
 지닌 튜플 객체가 할당됨
* C 언어의 printf문과 유사한 형태의 printf 정의 됨


튜플 인수와 사전 인수로 함수 호출하기
* 함수 호출 시 * 사용하고 뒤에 튜플을 넣으면 튜플 전체 호출 가능
* 함수 호출 시 ** 사용하고 뒤에 사전을 넣으면 사전 전체 호출 가능

반응형

+ Recent posts