728x90
NLTK (4) - 정규표현식을 사용한 문자 분해 Tokenizing sentences using regular expressions
RegexpTokenizer 인스턴스를 생성한 후, 매칭 토큰을 사용하기위해 정규표현식 문장에 적용시켜보자.
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer("[\w']+")
tokenizer.tokenize("Can't is a contraction.")
Out[6]:
클래스를 생성하고 싶지 않다면 다음과 같은 헬퍼 함수를 이용할 수도 있다.
from nltk.tokenize import regexp_tokenize
regexp_tokenize("Can't is a contraction.", "[\w']+")
Out[7]:
축약형을 이제 하나의 단어로 다룰 수 있게 되었다.
※ 정규표현식에 대해서는 아래 링크 참고https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
RegexpTokenizer는 토큰과는 반대로 gap과 매칭해서 사용할 수도 있다. re.findall() 을 사용하는대신, RegexpTokenizer 클래스는 re.split() 을 사용할 것이다. BlanklineTokenizer 클래스가 nltk.tokenize 에서 구현되는 방법이다.
Simple whitespace tokenizer
아래는 공백을 기준으로 분해하는 코드이다. 구두점이 여전히 토큰 속에 포함되어 있음을 알 수 있다. gaps=True 라는 파라메터는 그 패턴이 분해하는 갭을 정의하는데 사용된다는 의미이고, gaps=False 라고 두면 해당 패턴은 토큰을 정의하는데 사용된다는 의미이다.
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer('\s+', gaps=True)
regexp_tokenize("Can't is a contraction.", "[\w']+")
Out[8]:
728x90
'프로그래밍 Programming' 카테고리의 다른 글
게스트 OS 와 VirtualBox 공유폴더 설정하기 Share Folders between Host and Guest OS in VirtualBox (0) | 2017.10.23 |
---|---|
VirtualBox 에 Kali Linux 설치하기 How To Install Kali Linux in VirtualBox (0) | 2017.10.21 |
NLTK (3) - 문장을 단어 단위로 분해하기 Tokenizing sentences into words (0) | 2017.09.25 |
ImportError: cannot import name 'PunktWordTokenizer' (0) | 2017.09.25 |
NLTK (2) - 텍스트 문장으로 분해하기 Tokenizing text into sentences (0) | 2017.09.25 |