본문 바로가기
#02.천재교육 빅데이터/+12.자연어 처리

[천재교육] 자연어처리(1)

by 돌비오 2023. 5. 8.
728x90
도커 세팅

C:/Users/user/workspace-nlp


# 도커 이미지 확인
docker images

# 도커 컨테이너 확인
docker ps


## 도커 실행 (교육장 로컬pc nlp 도커 실행)
docker run --rm -it -v="C:/Users/user/workspace-nlp:/home/jovyan/work/tmp" -p 8888:8888 jupyter-nlp:1.1 jupyter notebook --allow-root


## 오늘 입력한 내용을 도커 이미지로 저장 및 생성
docker commit c673ea8aaf3c jupyter-nlp:1.2

 

 

 

 

<<참고링크>>

 

2. 자연어 처리란?

Contribute to LimSuyun/nlp_basic development by creating an account on GitHub.

github.com

 

 

 

 

파이썬 re 모듈에서 정규표현식으로 문자열 다루기

phone_number = """010-1234-5678 02-343-1578 016-2323-5789 132-450-6322"""
str_sample = """abc apple banana"""

pn_p = re.compile('([0-9]+)-([0-9]+)-([0-9]+)')
s_p_start_a = re.compile('(^a)|w+')
s_p_end_a = re.compile('\w+(a$)')
s_p_inside_pn = re.compile('\w+[pn]\w+')

 

 

 

 

 

match 메서드 사용하기
* 문자열의 처음부터 정규식과 매치되는지 조사한다.
* match 객체의 메서드
  * group() : 매치된 문자열을 리턴한다.
  * start() : 매치된 문자열의 시작 위치를 리턴한다.
  * end() : 매치된 문자열의 끝 위치를 리턴한다.
  * span() : 매치된 문자열의 (시작, 끝)에 해당하는 위치를 튜플로 리턴한다.

 

pn_p.match(phone_number)

pn_p_rs = pn_p.match(phone_number)
if pn_p_rs :
    print(pn_p_rs.group())
    print(pn_p_rs.start())
    print(pn_p_rs.end())
    print(pn_p_rs.span())
else:
    prin("일치하는 패턴이 없습니다.") # None
010-1234-5678
0
13
(0, 13)

 

 

re.match("(?P<first>[0-9]+)-(?P<middle>[0-9]+)-(?P<end>[0-9]+)", phone_number).groupdict()
{'first': '010', 'middle': '1234', 'end': '5678'}

 

 

 

def patRS(p):
    if p :
        print(p.group())
    else:
        print("일치하는 패턴이 없습니다")


spsa = s_p_start_a.match(str_sample)
spsa
<re.Match object; span=(0, 1), match='a'>

 

 

patRS(spsa)
a
728x90