channel.io/ko

 

고객 획득 메신저 - 채널톡

사이트 방문객을 놓치지 마세요. 상담을 늘려서 영업기회를 높이거나, 자동화된 맞춤형 메시지로 전환율을 높일 수 있습니다.

channel.io

 

 

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

왓챠, 이스터에그 중 루모스, 볼드모트 해봄. 

 

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

[chrome] 크롬 화면 분할 확장프로그램 

 

 우선 설정 > 모양 > 테마 (Chrome 웹 스토어 열기) 클릭

 웹 스토어에서 확장 프로그램을 검색한다. Split Tabs 라는 프로그램이다.

 

Split Screen made easy. Resize the CURRENT tab and tabs to the RIGHT into layouts on separate windows. w/ Multi Monitor Support.

 

For a more easily readable description please visit:

 

https://github.com/peterdotjs/tab-resize

 

***** Version 2.3.0

--------------------------

Added default shortcut keys for:

Ctrl + Shift + Z: Undo Last Resize

Ctrl + Shift + 1: 1x1 Resize

Ctrl + Shift + 2: 1x2 Resize

Ctrl + Shift + 4: 2x2 Resize

 

www.youtube.com/watch?v=GFHl98nAV04

 

브라우저 상단에서 설정할 수 있다.

 

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

Split 유형의 함수로 구분자로 몇번째 위치의 문자열 가져오기 

-----------------------------------------------------------------------------------------------------------  
--  Split 유형의 함수  
--  문자열에서 구분자(@iSeparator)로 몇번째 단어 가져오기  
--  예: SELECT 데이터베이스명.소유자명.fn_GetIdxDataLikeSplit('가-나-다',2,'-') --> '나'  
-----------------------------------------------------------------------------------------------------------  
-----------------------------------------------------------------------------------------------------------  
-- 프로시저 생성  
-----------------------------------------------------------------------------------------------------------  
ALTER   FUNCTION  [dbo].[fn_GetIdxDataLikeSplit]   
    (  
        @iText          VARCHAR(200),  
        @idx                INT,  
        @iSeparator     VARCHAR(10) = '-'  
    )  
RETURNS  VARCHAR(200)   
AS  
BEGIN  
    DECLARE @wData          VARCHAR(200)  
    DECLARE @wText          VARCHAR(200)  
    DECLARE @wSeparator VARCHAR(10)  
    DECLARE @wNum           INT  
  
    SET @wData          = ''  
    SET @wNum           = 1;  
    SET @wSeparator = LTRIM(RTRIM(@iSeparator));  
    SET @wText          = LTRIM(RTRIM(@iText)) + @wSeparator;   
  
    IF CHARINDEX(@wSeparator, @iText) > 0  
    BEGIN  
        WHILE    @idx >= @wNum  
        BEGIN  
            IF CHARINDEX(@wSeparator, @wText) > 0  
            BEGIN  
                   -- 문자열의 인덱스 위치의 요소를 반환  
                   SET @wData   = SUBSTRING(@wText, 1, CHARINDEX(@wSeparator, @wText) - 1);  
                   SET @wData   = LTRIM(RTRIM(@wData));  
  
                -- 반환된 문자는 버린후 좌우공백 제거     
                    SET @wText  = LTRIM(RTRIM(RIGHT(@wText, LEN(@wText) - (LEN(@wData) + LEN(@iSeparator)))))  
            END   
            ELSE  
            BEGIN  
                    SET @wData  = ''  
            END  
            SET @wNum = @wNum + 1  
        END  
    END  
    ELSE  
    BEGIN  
        SET @wData  = @iText  
    END  
      
      
    RETURN(@wData)  
      
END  

 
Posted by 홍반장水 홍반장水

댓글을 달아 주세요

gspread를 이용하여 Python에서 구글 시트 연동하기

public-google-sheets-parser 

yurimkoo.github.io/python/2019/07/20/link-with-googlesheets-for-Python.html

 

유림's Blog

베짱이가 되고 싶은 개미의 기술 블로그

yurimkoo.github.io

 

googlesheets를 이용하여 R에서 구글 시트 연동하기

yurimkoo.github.io/r/2019/07/20/link-with-googlesheets-for-R.html

 

유림's Blog

베짱이가 되고 싶은 개미의 기술 블로그

yurimkoo.github.io

 

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

"자바 두명 타세요" 개발자 인력시장에 비유한 SW채용박람회

news.mt.co.kr/mtview.php?no=2020120310284718257

 

"자바 두명 타세요" 개발자 인력시장에 비유한 SW채용박람회 - 머니투데이

한 IT 공공기관이 소프트웨어(SW) 개발자 온라인 채용박람회를 진행하는 가운데 안내 포스터에 SW개발자를 새벽 인력시장 인부에 비유한 이미지를 사용해 물의를 빚...

news.mt.co.kr

한 IT 공공기관이 소프트웨어(SW) 개발자 온라인 채용박람회를 진행하는 가운데 안내 포스터에 SW개발자를 새벽 인력시장 인부에 비유한 이미지를 사용해 물의를 빚고있다.

판교창업존 운영기관인 경기창조경제혁신센터가 진행하는 '스타트업DNA-623 오픈런' 온라인 채용박람회 포스터다. 중소벤처기업부와 창업진흥원이 후원하는 이 행사는 스타트업들로부터 구인신청을 받고 이후 취업을 희망하는 구직자가 지원서를 제출하면 온라인상에서 매칭해주는 채용이벤트다.

하지만 좋은 취지와 달리 행사 안내포스터에 마치 영등포나 구로 새벽 인력시장에서 개발자를 픽업하는 듯한 이미지를 사용해 구설에 올랐다. 특히 "자바 두명 타세요"라는 문구는 이미 수년전부터 개발자들의 열악한 처우를 건설인부의 속칭 '노가다'(건축 및 토목노동자를 의미하는 일본어 유례 속어)에 비유한 사례로 회자돼 온 것이다.

최근 4차 산업혁명과 비대면 열풍으로 AI(인공지능)과 클라우드, 블록체인 등 SW시스템 개발 수요가 폭증하면서 개발자 부족현상이 심화되는 현실과도 맞지않다는 지적이다.

한 SW개발자는 "개발자 채용박람회라하면서 국가가 나서서 저런 인력시장 그림을 갖다 붙이는 것은 너무한 것 아니냐"면서 "오픈런이라는게 도망가라는 뜻인가? 개발자를 조롱하는 것같다"고 질타했다.

개발자 커뮤니티 오키의 노상범 대표는 "나름 유머라고 생각한 모양인데 담당자의 IT에 대한 인식수준이 저것밖에 안되나 싶다"고 꼬집었다.

경기창조경제혁신센터도 이같은 지적이 일자 포스터 이미지를 교체했다. 센터 관계자는 "개발자들을 모신다는 의미로 비하할 의도는 없었는데 잘못 전달된 것 같다"면서 "일부 지적이 있어 어제 바로 포스터 이미지를 교체했다"고 밝혔다.

 

Posted by 홍반장水 홍반장水

댓글을 달아 주세요

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 홍반장水 홍반장水

댓글을 달아 주세요

Word Tokenization 단어 토큰화

 

자연어 처리에서 크롤링 등으로 얻어낸 코퍼스 데이터가 필요에 맞게 전처리되지 않은 상태라면, 해당 데이터를 사용하고자하는 용도에 맞게 토큰화(tokenization) & 정제(cleaning) & 정규화(normalization)하는 일을 하게 됩니다. 이번 챕터에서는 그 중에서도 토큰화에 대해서 배우도록 합니다.

주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고 부릅니다. 토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의합니다.

이 챕터에서는 토큰화에 대한 발생할 수 있는 여러가지 상황에 대해서 언급하여 토큰화에 대한 개념을 이해합니다. 뒤에서 파이썬과 NLTK 패키지, KoNLPY를 통해 실습을 진행하며 직접 토큰화를 수행해보겠습니다.

 

 


## word_tokenize는 Don't를 Do와 n't로 분리하였으며, 
## 반면 Jone's는 Jone과 's로 분리한 것을 확인할 수 있습니다.
>from nltk.tokenize import word_tokenize  
>print(word_tokenize("Don't be fooled by the dark sounding name, Mr. Jone's Orphanage is as cheery as cheery goes for a pastry shop."))  
['Do', "n't", 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', ',', 'Mr.', 'Jone', "'s", 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop', '.']  


## WordPunctTokenizer는 구두점을 별도로 분류하는 특징을 갖고 있기때문에, 앞서 확인했던
## word_tokenize와는 달리 Don't를 Don과 '와 t로 분리하였으며, 
## 이와 마찬가지로 Jone's를 Jone과 '와 s로 분리한 것을 확인할 수 있습니다.
>from nltk.tokenize import WordPunctTokenizer  
>print(WordPunctTokenizer().tokenize("Don't be fooled by the dark sounding name, Mr. Jone's Orphanage is as cheery as cheery goes for a pastry shop."))
['Don', "'", 't', 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', ',', 'Mr', '.', 'Jone', "'", 's', 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop', '.']  


## 케라스 또한 토큰화 도구로서 text_to_word_sequence를 지원합니다. 이번에는 케라스로 토큰화를 수행해봅시다.
## 케라스의 text_to_word_sequence는 기본적으로 모든 알파벳을 소문자로 바꾸면서 온점이나 
## 컴마, 느낌표 등의 구두점을 제거합니다. 하지만 don't나 jone's와 같은 경우 아포스트로피는 보존하는 것을 볼 수 있습니다.
>from tensorflow.keras.preprocessing.text import text_to_word_sequence
>print(text_to_word_sequence("Don't be fooled by the dark sounding name, Mr. Jone's Orphanage is as cheery as cheery goes for a pastry shop."))
["don't", 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', 'mr', "jone's", 'orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop']


## 표준으로 쓰이고 있는 토큰화 방법 중 하나인 Penn Treebank Tokenization의 규칙에 대해서 소개하고, 토큰화의 결과를 보도록 하겠습니다.
## 규칙 1. 하이푼으로 구성된 단어는 하나로 유지한다.
## 규칙 2. doesn't와 같이 아포스트로피로 '접어'가 함께하는 단어는 분리해준다. 
>from nltk.tokenize import TreebankWordTokenizer
>tokenizer=TreebankWordTokenizer()
>text="Starting a home-based restaurant may be an ideal. it doesn't have a food chain or restaurant of their own."
>print(tokenizer.tokenize(text))
['Starting', 'a', 'home-based', 'restaurant', 'may', 'be', 'an', 'ideal.', 'it', 'does', "n't", 'have', 'a', 'food', 'chain', 'or', 'restaurant', 'of', 'their', 'own', '.']
Posted by 홍반장水 홍반장水

댓글을 달아 주세요