자연어 처리 중 키워드의 출현빈도 및 자주 등장한 키워드에 대한 나열이 가능합니다.

 

collection 라이브러리에 Counter 패키지 사용하였습니다.

 

코드는 아래와 같습니다.

from collections import Counter #라이브러리 호출

df['noun'] = df['content'].apply(lambda x : mecab.nouns(x)) #데이터프레임 본문에서 명사만 추출

#전처리(불용어 제거 및 텍스트 정제)
noun = df['noun'].apply(lambda x : [item for item in x if item not in stop_words])
noun = noun.apply(lambda x : [word for word in x if len(word) > 1])

#counter 함수를 사용하기위해 list화 
noun_list = []

for tokens in noun:
    for token in tokens:
        noun_list.append(token)

#키워드 빈도수 확인
noun_count = Counter(noun_list)
#상위 50개 추출
noun_50 = noun_count.most_common(50)

 

자연어 처리 중 연관단어를 확인하기 위한 방법으로 n-gram을 사용합니다.

 

가장 보편적으로 사용되는 2개의 연속된 단어를 확인하는 bigram 사용해봤습니다. 

 

nltk 패키지 bigrams 사용했습니다.

 

from nltk import bigrams #nltk에 bigrams 패키지 사용

#전처리
noun = df['content'].apply(lambda x : [item for item in x if item not in stop_words]) #불용어 제거
noun = df['content'].apply(lambda x : [word for word in if len(word) > 1]) #글자 수가 1개보다 적은 단어는 제거

bgrams = [bigrams(word) for word in noun] #bgrams라는 변수에 전처리된 단어들을 적용

token = []
for i in bgrams:
    token += ([x for x in i])

 

 

 

 

 

 

 

 

자연어 처리를 하기위해 konlpy를 실행하는 도중...

JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly. 오류를 마주했습니다.

 

konlpy 설치와 import까지 무사히 진행했으나,

okt를 실행했을때 JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly 오류가 났습니다.

 

이전에는 정상적으로 썼던거같은데 오랜만에 사용하려고 하니 오류가 뜬걸까요..?

열심히 구글을 통해 저와 같은 오류가 있으신분들이 어떻게 해결했는지 찾아봤으나 다양한 경우와 해결방법이 있어 

제가 해결한 방법을 공유드리려고 합니다.

 

우선 순서는 아래와 같습니다.

1. JAVA_HOME 환경변수 설정

2. Jpype 설치 및 import

3. 정상작동

 

위와 같은 순서로 진행했습니다.

 

정전으로 인한 서버 다운으로 서버의 연결이 끊겼었습니다.

서버를 관리하는 서버 관리자는 아니지만,데이터 엔지니어로써 데이터가 수집되는 서버에 대해서도

공부해볼 필요가있어 네트워크 이론에대해 공부해봤습니다.

 

정리글은 필요한 부분에 대해서 저의 기준으로 이해하기 쉽게 풀어서 설명한 것입니다.

제가 이해하고있는게 틀려서 수정이 필요하거나,

더 쉽게 이해할 수 있는 방법이 있으신분은 댓글로 달아주시면 감사하겠습니다 !

 

우선 TCP통신에 대해서 설명해보겠습니다.

TCP통신이란 ?

- Transmission Control Protocol의 약자로 두개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 네트워크 프로토콜이다. TCP는 데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해준다. 

쉽게 말해서 내 기기에서 다른 기기로 데이터를 전송해 주는 통신방식 입니다.

 

TPC 통신에서 SYN과 ACK라는 개념이 있습니다.

SYN : synchronize의 약자로 가장 많이 활용되는 패킷이며, 서로 연결(프로세스 통신)을 하기위해 최초로 connection하는 신호

ACK : acknowledge의 약자로 수신자가 송신자측에서 보내온 패킷을 정상적으로 전달 받았음을 알려줌

이를 토대로 2가지의 연결방법을 설명할 수 있습니다.

 

1. 3-way handshake : 통신전 연결방법

- 통신하기 이전 client와 server간 연결을 맺기위해 진행하는 송수신이 3번 진행

1) client가 server에게 연결을 요청하기위해 최초 SYN신호와 함께 Sequence number를 전달

2) server는 client에게 연결 요청을 받고, 연결을 승낙하기 위해 SYN-ACK신호와 Sequnce number를 전달

3)  client는 ACK신호를 받고 ESTABLISHED상태가되어 연결이 이루어지고, 이때 신호를 전달하면서 server도 ESTABLISHED 상태가 된다.

 

2. 4-way handshake : 통신후 종료

- 연결이 종료되는 시점에서 client와 server간 진행하는 송수신이 4번 진행

1) client 측에서 FIN신호를 보내어 연결 종료요청. 이후 client는 server가 연결종료를 승낙할 때 까지 대기하는 FIN_WAIT상태

2) server는 CLOSE_WAIT 상태에서 연결종료를 승낙하기 위한 ACK신호를 client에게 전달

3) client는 ACK신호를 받은 후 FIN_WAIT_2 상태가 되고, 이때 server측은 LAST_ACK상태에서 최종 연력종료 통보인 FIN신호를 전달

4) FIN신호를 전달받은 client는 TIME_WAIT 상태로 전환되어 일정시간 이후 연결을 종료. 이 시점에서 ACK신호를 server보내고 server는 CLOSED 상태가 되어 두 client와 server간 연결이 종료

 

이렇게 TCP통신에 대해서 간략하게 살펴보았습니다.

공부를 시작하게 된 계기가 종료된 서버가 다시 되살아났는지, 연결을 정확하게 됬는지 확인하고 싶었기 때문에 관련한 내용인 ICMP와 ping에 대해서 설명하고 마무리 하겠습니다.

 

ICMP란?

- Internet Control Message Protocol의 약자로 TCP/IP 에서 IP패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜 입니다.

 

ping?

- ping은 특정한 인터넷 주소가 있고, 또 그 주소가 요청을 받아들일 수 있는지를 확인해 주는 기본적인 인터넷 프로그램입니다.

만약 내부망처럼 외부에서 접근이 안되는 ip주소라면 VPN연결을 통해 내부망으로 접근하여 확인할 수 있습니다.

확인 방법은 명령 프로토콜(cmd)창을 띄워 명령어로 ping IP주소를 치면 확인할 수 있습니다.

단, 명령어의 결과값을 해석하는데 어려움이 있을 수 있습니다.

문제가 있는지를 확인하기 위해 봐야할 것은 손실평균 왕복시간입니다. 

 

1. 평균 왕복시간이 30ms 이상인 경우

- 평균 왕복시간은 낮을수록 좋은 수치입니다. 만약 평균 왕복시간 30ms이상일 경우 문제가 있을 확률이 높으며, 문제가 없는 경우 평균 왕복시간은 1 ~ 15ms 입니다.

2. 손실이 발생하는 경우

- 유선 환경이라면 손실은 없어야 됩니다. 유선 환경에서 손실이 발생한다는 것은 명백한 문제가 있는 것 입니다. 무선랜을 사용하는 환경에서는 약간의 손실이 발생할 수 있습니다.

3. 핑이 들쑥날쑥 일정하지 않은 경우

- 평균핑은 높지 않지만, 테스트 진행시 핑(시간)이 100ms, 2ms, 130ms, 4ms와 같이 불규칙하게 나타나는 경우도 문제가 있을 확률이 높습니다.

 

 

이상으로 글을 마치겠습니다 .

완벽히 정리된 글은 아니지만, 서버 전송과 관련하여 대략적으로 이해할 수 있는 기회가 되었습니다 !

 

몇번 시행착오도 있었지만 드디어 ADsP합격 했습니다 ㅎㅎ

이번 시험은 고득점자 분들이 많아서 시험점수 공개에 있어서 부끄럽긴 했지만 ...

그래도 시험에 합격한게 뿌듯해서 합격 후기 남겨봤습니다 !

 

시험에 낙방하면서 나태한 저를 마주하니 이번 시험은

평일은 하루 2시간씩, 주말에는 계속해서 공부를했습니다.

시험 준비기간은 시험에 떨어진 과거가 있어서 한달정도 공부했습니다 !

처음 공부할때는 민트책 위주로 이론공부했으며, 

시험 2주전부터는ADsP 요약본 활용해서 암기했고, 

시험 3일전에는 민트책에 모의고사, 기출문제 반복해서 풀었습니다.

 

비록 높은 점수는 아니지만 ㅠㅠ

노력한 저에게 박수를 쳐주고싶네요 ㅎㅎㅎㅎ

이 합격을 발판삼아 지금은 SQLD 공부중입니다 !

아직 두달이라는 시간이있어서 여유는있지만 ADsP처럼 시행착오를 겪지않기위해 꾸준히 하려합니다 ㅎㅎ

 

이번에 합격하신분들 모두 축하드리고 !

혹시라도 불합격하신분들은 다음에 좋은 결과있으실거에요 !! 화이팅 !!

 

모든 공부하는 직장인들을 응원합니다 .

안녕하세요 ~

리눅스 기초 명령어에 대해서 제가 학습한 내용을 기반으로 간단하게 정리를 해보려고합니다 !

 

제일 기본적인 명령어 이자 많이 쓰는 명령어인

ls : 현대 디렉토리에 있는 파일들을 보여주는 명령어

ls -al : 숨긴파일까지 전부 보여주는 명령어

ls -alt : 시간순으로 정렬되어 보여주는 명령어

 

pwd : 현재 본인이 머무르고있는 폴더 경로를 보여주는 명령어

 

cd 경로 : 원하는 경로로 폴더 이동하는 명령어

 

mkdir : 현재 경로에서 파일 생성하는 명령어

 

mv 파일명 원하는경로 : 원하는 경로로 파일을 옮기는 명령어

 

rm 파일명 : 원하는 파일을 삭제하는 명령어 (재확인 하지 않고 바로 삭제해서 사용에 유의 !)

rm -i 파일명 : 위에서 언급한 바로삭제하는 명령어에 조심하기위해 삭제를 할것인지 여부를 물어보고 난 후에 삭제하는 명령어

 

top : 현재 컴퓨터의 상태를 보여주는 명령어

htop : top보다 깔끔하게 현재 컴퓨터의 상태를 보여주는 명령어

 

which 파일명 : 파일의 위치를 보여주는 명령어

 

가장 기본적으로 리눅스에서 사용하는 명령어를 정리해봤습니다 !

추가로 명령어를 학습할때 마다 업데이트 하겠습니다 !

틀린 명령어가 있으면 언제든지 댓글로 남겨 알려주세요 ~

 

+ Recent posts