Natural Language Toolkit-텍스트 토큰 화
토큰 화란 무엇입니까?
텍스트 조각을 문장이나 단어와 같은 작은 부분으로 나누는 과정으로 정의 할 수 있습니다. 이러한 작은 부분을 토큰이라고합니다. 예를 들어, 단어는 문장의 토큰이고 문장은 단락의 토큰입니다.
NLP는 감정 분석, QA 시스템, 언어 번역, 스마트 챗봇, 음성 시스템 등과 같은 애플리케이션을 구축하는 데 사용된다는 것을 알고 있으므로이를 구축하기 위해서는 텍스트의 패턴을 이해하는 것이 중요합니다. 위에서 언급 한 토큰은 이러한 패턴을 찾고 이해하는 데 매우 유용합니다. 토큰 화를 형태소 분석 및 구조화와 같은 다른 레시피의 기본 단계로 고려할 수 있습니다.
NLTK 패키지
nltk.tokenize 토큰 화 프로세스를 달성하기 위해 NLTK 모듈에서 제공하는 패키지입니다.
문장을 단어로 토큰 화
문장을 단어로 나누거나 문자열에서 단어 목록을 만드는 것은 모든 텍스트 처리 활동의 필수 부분입니다. 에서 제공하는 다양한 기능 / 모듈의 도움으로 이해합시다.nltk.tokenize 꾸러미.
word_tokenize 모듈
word_tokenize모듈은 기본 단어 토큰 화에 사용됩니다. 다음 예제는이 모듈을 사용하여 문장을 단어로 분할합니다.
예
import nltk
from nltk.tokenize import word_tokenize
word_tokenize('Tutorialspoint.com provides high quality technical tutorials for free.')
산출
['Tutorialspoint.com', 'provides', 'high', 'quality', 'technical', 'tutorials', 'for', 'free', '.']
TreebankWordTokenizer 클래스
word_tokenize 위에서 사용 된 모듈은 기본적으로 tokenize () 함수를 인스턴스의 인스턴스로 호출하는 래퍼 함수입니다. TreebankWordTokenizer수업. 문장을 단어로 분할하기 위해 word_tokenize () 모듈을 사용하는 동안 얻은 것과 동일한 출력을 제공합니다. 위에서 구현 된 동일한 예제를 보겠습니다.
예
먼저 자연어 툴킷 (nltk)을 가져와야합니다.
import nltk
이제 TreebankWordTokenizer 단어 토크 나이저 알고리즘을 구현하는 클래스-
from nltk.tokenize import TreebankWordTokenizer
다음으로 다음과 같이 TreebankWordTokenizer 클래스의 인스턴스를 만듭니다.
Tokenizer_wrd = TreebankWordTokenizer()
이제 토큰으로 변환하려는 문장을 입력하십시오.
Tokenizer_wrd.tokenize(
'Tutorialspoint.com provides high quality technical tutorials for free.'
)
산출
[
'Tutorialspoint.com', 'provides', 'high', 'quality',
'technical', 'tutorials', 'for', 'free', '.'
]
완전한 구현 예
아래에서 전체 구현 예를 보겠습니다.
import nltk
from nltk.tokenize import TreebankWordTokenizer
tokenizer_wrd = TreebankWordTokenizer()
tokenizer_wrd.tokenize('Tutorialspoint.com provides high quality technical
tutorials for free.')
산출
[
'Tutorialspoint.com', 'provides', 'high', 'quality',
'technical', 'tutorials','for', 'free', '.'
]
토크 나이저의 가장 중요한 규칙은 수축을 분리하는 것입니다. 예를 들어, 이러한 목적으로 word_tokenize () 모듈을 사용하면 다음과 같은 출력을 제공합니다.
예
import nltk
from nltk.tokenize import word_tokenize
word_tokenize('won’t')
산출
['wo', "n't"]]
이런 종류의 컨벤션 TreebankWordTokenizer용납 할 수 없습니다. 그래서 두 개의 대체 단어 토크 나이저가 있습니다.PunktWordTokenizer 과 WordPunctTokenizer.
WordPunktTokenizer 클래스
모든 구두점을 별도의 토큰으로 분할하는 대체 단어 토크 나이저입니다. 다음의 간단한 예를 들어 이해합시다.
예
from nltk.tokenize import WordPunctTokenizer
tokenizer = WordPunctTokenizer()
tokenizer.tokenize(" I can't allow you to go home early")
산출
['I', 'can', "'", 't', 'allow', 'you', 'to', 'go', 'home', 'early']
텍스트를 문장으로 토큰 화
이 섹션에서는 텍스트 / 단락을 문장으로 나눌 것입니다. NLTK는sent_tokenize 이 목적을 위해 모듈.
왜 필요한가요?
우리 마음 속에 떠오른 분명한 질문은 단어 토크 나이저가있을 때 왜 우리가 문장 토크 나이저가 필요하거나 텍스트를 문장으로 토큰 화해야 하는가하는 것입니다. 문장에서 평균 단어를 세어야한다고 가정 해 봅시다. 어떻게 할 수 있습니까? 이 작업을 수행하려면 문장 토큰 화와 단어 토큰 화가 모두 필요합니다.
다음의 간단한 예를 통해 문장과 단어 토크 나이저의 차이점을 이해해 보겠습니다.
예
import nltk
from nltk.tokenize import sent_tokenize
text = "Let us understand the difference between sentence & word tokenizer.
It is going to be a simple example."
sent_tokenize(text)
산출
[
"Let us understand the difference between sentence & word tokenizer.",
'It is going to be a simple example.'
]
정규식을 사용한 문장 토큰 화
단어 토크 나이저의 출력이 허용되지 않는다고 생각하고 텍스트를 토큰 화하는 방법을 완전히 제어하려면 문장 토큰 화를 수행하는 동안 사용할 수있는 정규 표현식이 있습니다. NLTK는RegexpTokenizer 이를 달성하기 위해 클래스.
아래 두 가지 예를 통해 개념을 이해하겠습니다.
첫 번째 예에서는 영숫자 토큰과 작은 따옴표를 일치시키기 위해 정규식을 사용하여 다음과 같이 축소하지 않도록합니다. “won’t”.
예 1
import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer("[\w']+")
tokenizer.tokenize("won't is a contraction.")
tokenizer.tokenize("can't is a contraction.")
산출
["won't", 'is', 'a', 'contraction']
["can't", 'is', 'a', 'contraction']
첫 번째 예에서는 정규 표현식을 사용하여 공백을 토큰 화합니다.
예 2
import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer('/s+' , gaps = True)
tokenizer.tokenize("won't is a contraction.")
산출
["won't", 'is', 'a', 'contraction']
위의 출력에서 구두점이 토큰에 남아 있음을 알 수 있습니다. 매개 변수 gaps = True는 패턴이 토큰화할 간격을 식별 할 것임을 의미합니다. 반면에 gaps = False 매개 변수를 사용하는 경우 패턴은 다음 예에서 볼 수있는 토큰을 식별하는 데 사용됩니다.
import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer('/s+' , gaps = False)
tokenizer.tokenize("won't is a contraction.")
산출
[ ]
그것은 우리에게 빈 출력을 줄 것입니다.