반응형
반응형

살면서 당신이 실패를 경험해보지 않았다면,
당신은 스스로를 당신의 한계 속에 밀어 넣어 본 적이 없다는 뜻입니다.
스스로를 한계 속에 밀어 넣지 않으면,
스스로가 가진 잠재력 또한 폭발시킬 수가 없습니다.
- 레이 달리오


아직 큰 실패를 해보지 않았다는 것은 도전 대신
안주하는 삶을 살아가고 있다는 것과 같습니다.
‘무섭고 겁이 나더라도 기회가 오면 무조건 잡아라.
불편한 상황으로 자신을 밀어 넣어라.
성장과 편안함은 공존하지 않는다.’
버지니아 로메티 IBM 회장의 주장 함께 보내드립니다.

반응형
반응형

 

피곤해야 잠이 옵니다.
몸과 마음이 둘 다 피곤해야
좋은 잠을 잘 수 있습니다. 둘 중 하나라도
피곤하지 않으면 잠이 오지 않습니다. 우리가
잘 아는 코카인이라는 마약은 우리를 피곤하지 않게
만듭니다. 사실은 우리의 몸이 아니라 뇌를 피곤하지
않게 만듭니다. 그래서 이것에 중독된 사람은 밤새도록
떠들고 춤추고 술을 마셔도 전혀 피곤하지 않습니다.
불면증의 원인은 피곤하지 않아서이고,
불면증의 치료는 피곤해지도록
만드는 것입니다.


- 천종길의《건강하고 즐거운 인생》중에서 -


* 맞습니다.
피곤해야 잠이 잘 옵니다.
그러나 피곤하다고 무조건 잠이 잘 오는 것은
아닙니다. 너무 피곤해도 잠을 이루지 못하고,
너무 늘어져도 잠을 못잡니다. 몸만 피곤하거나
마음만 피곤해도 안됩니다. 몸과 마음이
함께 균형있게 피곤해야 단잠을
이룰 수 있습니다.

반응형

'아침편지' 카테고리의 다른 글

'일을 위한 건강'  (0) 2021.02.18
'언제 가장 행복했습니까?'  (0) 2021.02.17
엄마가 먼저 보여줄게  (0) 2021.02.15
바로 말해요, 망설이지 말아요  (0) 2021.02.10
춤을 몸으로 추는가, 머리로 추는가?  (0) 2021.02.09
반응형

‘감성 분석 뜬다는데 해볼까’는 위험 어떤 문제에 왜 필요한지 정의 먼저

dbr.donga.com/article/view/1101/article_no/8893/ac/special

 

[DBR] ‘감성 분석 뜬다는데 해볼까’는 위험, 어떤 문제에 왜 필요한지 정의 먼저

Article at a Glance기업들이 최근 가장 많은 관심을 갖고 있는 데이터 분석인 ‘감성 분석’은 생각보다 무척 어렵고 복잡하다. 특히 표현이 다양하고 SNS나 인터넷상에서 온갖 형태로, 때로는 거의

dbr.donga.com

그러나 ‘진짜’ 감성 분석, 데이터 과학에 기반해 실제 언어를 맥락에 맞게 이해하고 분석하는 것은 결코 쉬운 일이 아니었다. 그 현란했던 시각화와 프레젠테이션이 지나가고 난 자리에는 오히려 회의감이 남았다. 고객들이 많이 언급했다던 단어와 연관 단어들은 비즈니스에는 큰 도움이 되지 않았다. 실제 ‘어떤 감정에서 왜’ 그 단어가 나왔는지, 실제 소비자들이 어떤 단어나 문장을 통해 말하고자 하는 맥락적 의미가 무엇인지는 전혀 분석되지 않았기 때문이다. 실제로 데이터 과학자들은 감성 분석의 기반이 되는 자연어 처리에 대해 ‘되는 거 몇 개 빼고는 다 안 된다’고 자조적으로 말하기도 했다.

반응형
반응형

KBS 재난포털 : d.kbs.co.kr/special/cctv

 

KBS 재난포털

재난안전 콘텐츠 허브

d.kbs.co.kr

www.youtube.com/channel/UCryGe9S1k4SKgWka3Z2MBUw

 

세이프K

재난 피해 최소화, 혼란 방지, 복구 촉진이라는 진지한 목표를 참신하고 세련된 방식으로 추구하는 KBS 독수리 오형제! 구독자, 시청자와 함께 웃고 울고 공감하는 절대 쌍방향 소통의 힘을 신봉

www.youtube.com

 

반응형
반응형

 

영어/한국어 Word2Vec 실습

wikidocs.net/50739

 

위키독스

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

wikidocs.net

 

반응형
반응형

Word2Vec 모델 만들기  sdc-james.gitbook.io/onebook/5./6.1./6.1.3.-word2vec

 

6.1.3. Word2Vec 모델 만들기

 

sdc-james.gitbook.io

 

다음 예제는 네이버 영화 리뷰를 정리해둔 Naver sentiment movie corpus v1.0(https://github.com/e9t/nsmc) 사용하여 Word Embedding Model (Word2Vec)을 빌드하는 것입니다.

일단 다음 명령으로 genism 라이브러리를 설치합니다. NLTK는 자연어 처리를 위해 광범위하게 쓰이는 Python library입니다.

(onebook) > pip install lxml
(onebook) > pip install utils
(onebook) > pip install paramiko
(onebook) > pip install nltk
(onebook) > pip install genism

다음은 https://github.com/e9t/nsmc 에서 Corpus를 다운로드 합니다.

Naver sentiment movie corpus는 3개의 파일로 되어 있습니다.

  • ratings.txt: All 200K reviews

  • ratings_test.txt: 50K reviews held out for testing

  • ratings_train.txt: 150K reviews for training

각 파일에 있는 Column 은 <영화 아이디, 영화 평, 영화 평점> 입니다.

위의 세개의 파일을 raw형태로 다운로드 합니다.

 

Onebook 가상환경 하단에 NLP라는 폴더를 만들고 다운받은 파일을 이동합니다. "NaverMovieWord2Vec.py" 파이썬 파일을 새로 만들고 프로그래밍을 시작하겠습니다.

일단 저장된 파일을 csv를 사용해서 읽겠습니다. CSV란 Comma-separated values의 약자로서 CSV 파일은 각 라인의 컬럼들이 콤마로 분리된 텍스트 파일 포맷입니다. CSV 파일을 읽기 위해서는 먼저 파이썬에 기본 내장된 csv 모듈을 import 합니다. 다음 .csv 파일을 오픈하고 파일객체를 csv.reader(파일객체) 에 넣으면 됩니다. csv.reader() 함수는 Iterator 타입인 reader 객체를 리턴하므로 for 루프를 돌며 한 라인씩 가져올 수 있습니다. CSV 파일과 비슷하지만, 콤마 대신 Tab으로 컬럼을 분리하는 파일포맷을 TSV 파일이라 합니다. TSV 파일은 컬럼 delimiter만 차이가 나므로, csv 모듈의 reader() 혹은 writer() 함수에서 delimiter='\t' 옵션만 지정해 주면 나머지는 CSV와 동일합니다. Naver sentiment movie corpus는 탭으로 구분되어 있으므로 TSV를 읽는 방식으로 읽습니다.

import csv

 f = open('ratings_train.txt', 'r', encoding='utf-8')
 rdr = csv.reader(f, delimiter='\t')
 r = list(rdr)
 print("Id=%s : Name=%s" % (r[0][0], r[0][1]))
 print("Id=%s : Name=%s" % (r[1][0], r[1][1]))
 print("Id=%s : Name=%s" % (r[2][0], r[2][1]))

 f.close()
 
# 결과 
Id=id : Name=document
Id=9976970 : Name=아 더빙.. 진짜 짜증나네요 목소리
Id=3819312 : Name=흠...포스터보고 초딩영화줄....오버연기조차 가볍지 않구나

이제 본격적으로 형태소 분석 코드를 넣어 보겠습니다. 여기서 'konlpy'의 여러 품사 태깅 클래스 중 'Twitter'를 사용했습니다. Konlpy의 Twitter은 Okt로 변경되었습니다.

실제 형태소를 분석한 결과는 다음과 같습니다.

[('재미', 'Noun'), ('잇다', 'Verb'), ('매우', 'Noun'), ('~~', 'Punctuation')]
[('진짜', 'Noun'), ('자다', 'Verb'), ('만들다', 'Verb'), ('수작', 'Noun')]
[('제발', 'Noun'), ('2', 'Number'), ('좀', 'Noun'), ('찍다', 'Verb'), ('.', 'Punctuation'), ('현기증', 'Noun'), ('나다', 'Verb'), ('말', 'Noun'), ('이에요', 'Josa')]
[('너무나도', 'Adverb'), ('따뜻하다', 'Adjective'), (',', 'Punctuation'), ('마음', 'Noun'), ('이', 'Josa'), ('따뜻하다', 'Adjective'), ('...', 'Punctuation'), ('한번', 'Noun'), ('쯤', 'Suffix'), ('자신', 'Noun'), ('을', 'Josa'), ('되돌아보다', 'Verb'), ('만들다', 'Verb'), ('영화', 'Noun')]

여기에서 “Josa”, “Eomi”, “'Punctuation”는 제외하고 처리해야 합니다. 전체 소스는 다음과 같습니다.

 import csv
 from konlpy.tag import Okt
 from gensim.models import word2vec

 #네이버 영화 코퍼스를 읽는다.
 f = open('ratings_train.txt', 'r', encoding='utf-8')
 rdr = csv.reader(f, delimiter='\t')
 rdw = list(rdr)
 f.close()

 #트위터 형태소 분석기를 로드한다. Twiter가 KoNLPy v0.4.5 부터 Okt로 변경 되었다.
 twitter = Okt()

 #텍스트를 한줄씩 처리합니다.
 result = []
 for line in rdw:
     #형태소 분석하기, 단어 기본형 사용
     malist = twitter.pos( line[1], norm=True, stem=True)
     r = []
     for word in malist:
         #Josa”, “Eomi”, “'Punctuation” 는 제외하고 처리
         if not word[1] in ["Josa","Eomi","Punctuation"]:
             r.append(word[0])
     #형태소 사이에 공백 " "  을 넣습니다. 그리고 양쪽 공백을 지웁니다.
     rl = (" ".join(r)).strip()
     result.append(rl)
     #print(rl)

 #형태소들을 별도의 파일로 저장 합니다.
 with open("NaverMovie.nlp",'w', encoding='utf-8') as fp:
     fp.write("\n".join(result))

 #Word2Vec 모델 만들기
 wData = word2vec.LineSentence("NaverMovie.nlp")
 wModel =word2vec.Word2Vec(wData, size=200, window=10, hs=1, min_count=2, sg=1)
 wModel.save("NaverMovie.model")
 print("Word2Vec Modeling finished")

위의 코드를 실행하면 종료 할 때까지 많은 시간이 걸립니다. 결과는 NaverMovie.model 파일입니다. 어미, 조사, 구두점을 제외하고 동사와 형용사는 기본형으로 학습하도록 입력 텍스트를 만들었습니다. 공백으로 구분된 텍스트 파일을 Word2Vec에 전달하고 생성된 모델을 save()로 저장했습니다.

 

이제 위에서 생성한 모델을 사용하여 단어 유사도를 확인해 보겠습니다.

 

다시 NaverMovieModelTest.py 라는 파일을 만들어 다음의 코드를 입력 해 봅니다.

from gensim.models import word2vec

model = word2vec.Word2Vec.load("NaverMovie.model")

print(model.most_similar(positive=["재미"]))

print(model.most_similar(positive=["최고"]))

위 코드의 수행 결과는 다음과 같습니다.

 

“재미”라는 단어와 유사한 단어들을 벡터로 나타낸 것입니다.

 

[('없슴', 0.6063779592514038), ('나용', 0.6040781736373901), ('지렁이', 0.5945030450820923), ('칙스', 0.5877454280853271), ('오랬', 0.5862023830413818), ('원도', 0.5712456703186035), ('잼', 0.5703416466712952), ('무것', 0.5685503482818604), ('푸시', 0.5684186816215515), ('유익', 0.5595628023147583)]

 

“최고”라는 단어와 유사한 단어들의 벡터는 다음과 같습니다.

 

[('꼽을', 0.6920815110206604), ('꼽는', 0.6835036873817444), ('최고다', 0.6749817132949829), ('단연', 0.6692216396331787), ('손꼽다', 0.6552967429161072), ('으뜸', 0.6476656198501587), ('하이스쿨', 0.6261676549911499), ('정치드라마', 0.6205614805221558), ('꼽겠다', 0.6203451156616211), ('였슴', 0.6191103458404541)]

 

 

 

models.word2vec – Word2vec 임베딩

radimrehurek.com/gensim/models/word2vec.html

 

Gensim: topic modelling for humans

Efficient topic modelling in Python

radimrehurek.com

 

programmers.co.kr/learn/courses/21/lessons/1698

 

실습으로 배우는 데이터 사이언스 - Gensim을 통해 벡터화 & t-SNE로 시각화

Gensim을 통해 벡터화 & t-SNE로 시각화 Word2Vec 모델을 학습 전처리를 거쳐 파싱된 문장의 목록으로 모델을 학습시킬 준비가 되었다. Gensim Word2Vec 모델의 파라메터 아키텍처 : 아키텍처 옵션은 skip-gra

programmers.co.kr

 

반응형

+ Recent posts