일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- recursion
- RNN
- python
- C
- Java
- 알고리즘
- hive
- 주식분석
- yarn
- 코딩더매트릭스
- 선형대수
- GRU
- NumPy
- 파이썬
- Sort
- collections
- 하둡2
- graph
- codingthematrix
- scrapy
- effective python
- hadoop2
- C언어
- HelloWorld
- tensorflow
- 그래프이론
- 하이브
- 딥러닝
- 텐서플로
- LSTM
- Today
- Total
EXCELSIOR
Chap01-1: Token, Tokenize, Tokenizer 본문
1. Tokenizing text into sentences
Tokenization이란 문자열을 여러개의 조각, 즉 여러 개의 Token(토큰)들로 쪼개는 것을 말한다. Token은 문자열의 한 조각으로 하나의 단어가 하나의 토큰이라고 할 수 있다.
1) paragraph 을 문장 단위로 tokenize하기
nltk의 sentence tokenization function인 sent_tokenize를 통해 단락을 문장단위로 분리해본다.
from nltk.tokenize import sent_tokenize para = "Hello World. It's good to see you. Thanks for buying this book." print(sent_tokenize(para)) ['Hello World.', "It's good to see you.", 'Thanks for buying this book.']
2. Tokenizing sentences into words
가장 기본적인 word tokenization은 word_tokenize( ) 함수이다. 이 함수는 space 단위와 구두점(punctuation)을 기준으로 토큰화(Tokenize)한다.
from nltk.tokenize import word_tokenize print(word_tokenize('Hello World.')) #결과 ['Hello', 'World', '.']
Tokenizer의 종류는 다음 그림과 같다.
1) Separating contractions
Tokenizer들의 가장 중요한 규칙(?) 중 하나는 바로 축약형(contraction) 단어의 분리이다. word_tokenize( )를 사용하면 can't가 다음과 같이 분리된다.
from nltk.tokenize import word_tokenize print(word_tokenize("can't")) #결과 ['ca', "n't"]
WordPunctTokenizer
word_tokenize( )의 대안으로 WordPunctTokenizer가 있다. 이 Tokenizer는 모든 구두점(punctuation)을 기준으로 분리한다.
from nltk.tokenize import WordPunctTokenizer tokenizer = WordPunctTokenizer() print(tokenizer.tokenize("Can't is a contraction.")) # 결과 ['Can', "'", 't', 'is', 'a', 'contraction', '.']
3. Tokenizing sentences using regular expressions
정규식 또는 정규표현(regular expression)은 특정 문자의 집합 또는 문자열을 기호로 바꾸어 나타내는 방법으로 텍스트를 어떻게 토큰화(Tokenize) 할건지에 대해 사용할 수 있다. 다음은 정규표현식의 일부분을 나타낸 표이다.(출처:http://www.nextree.co.kr/p4327/)
from nltk.tokenize.regexp import RegexpTokenizer tokenizer = RegexpTokenizer("[\w']+") print(tokenizer.tokenize("Can't is a contraction.")) #결과 ["Can't", 'is', 'a', 'contraction'] from nltk.tokenize.regexp import regexp_tokenize print(regexp_tokenize("Can't is a contraction.", "[\w']+")) #결과 ["Can't", 'is', 'a', 'contraction']
1) Simple whitespace tokenizer
RegexpTokenizer은 공백을 매칭하여 분리할 수도 있다.
from nltk.tokenize.regexp import RegexpTokenizer tokenizer = RegexpTokenizer("\s+", gaps=True) print(tokenizer.tokenize("Can't is a contraction.")) # 결과 ["Can't", 'is', 'a', 'contraction.']
4. Filtering stopwords in a tokenized sentence
Stopwords(불용어)는 information retrieval 이나 NLP(Natural Language Processing)에서 의미를 가지지 않는 단어들을 의미한다. 예를 들어, 관사, 전치사, 조사, 접속사 등이 불용어에 해당한다.
NLTK 영어 뿐만아니라 독일어, 스페인어 등 다양한 언어의 불용어를 제공한다. nltk_data/corpora/stopwords/에서 확인할 수 있다.
from nltk.corpus import stopwords english_stops = set(stopwords.words('english')) words = ["Can't", 'is', 'a', 'contraction'] print([word for word in words if word not in english_stops]) #결과 ["Can't", 'contraction']
다음 fileids( )함수를 통해 NLTK의 stopwords 불용어를 제공하는 국가의 언어를 확인할 수 있다.
print(stopwords.fileids()) #결과 ['danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'kazakh', 'norwegian', 'portuguese', 'russian', 'spanish', 'swedish', 'turkish']
'NLP > NLTK' 카테고리의 다른 글
Chap02-2 : Replacing and Correcting Words (2) | 2016.12.26 |
---|---|
Chap02-1 : Stemming, Lemmatizing (0) | 2016.12.22 |
Chap01-2 : WordNet, Part-Of-Speech(POS) (1) | 2016.12.14 |
python3.5에 NLTK 설치하기 (4) | 2016.12.13 |
Python NLTK 공부한거 올리는 카테고리 입니다. (0) | 2016.12.13 |