토크 나이저 훈련 및 불용어 필터링
자체 문장 토크 나이저를 훈련시키는 이유는 무엇입니까?
이것은 NLTK의 기본 문장 토크 나이저를 가지고 있다면 왜 문장 토크 나이저를 훈련해야 하는가에 대한 매우 중요한 질문입니다. 이 질문에 대한 답은 NLTK의 기본 문장 토크 나이저의 품질에 있습니다. NLTK의 기본 토크 나이 저는 기본적으로 범용 토크 나이저입니다. 매우 잘 작동하지만 비표준 텍스트, 아마도 우리의 텍스트 또는 고유 한 서식이있는 텍스트에는 적합하지 않을 수 있습니다. 이러한 텍스트를 토큰 화하고 최상의 결과를 얻으려면 자체 문장 토크 나이저를 훈련해야합니다.
구현 예
이 예에서는 웹 텍스트 코퍼스를 사용합니다. 이 말뭉치에서 사용할 텍스트 파일은 아래에 표시된 대화 상자 형식의 텍스트를 가지고 있습니다.
Guy: How old are you?
Hipster girl: You know, I never answer that question. Because to me, it's about
how mature you are, you know? I mean, a fourteen year old could be more mature
than a twenty-five year old, right? I'm sorry, I just never answer that question.
Guy: But, uh, you're older than eighteen, right?
Hipster girl: Oh, yeah.
이 텍스트 파일을 training_tokenizer라는 이름으로 저장했습니다. NLTK는PunktSentenceTokenizer이를 통해 원시 텍스트를 학습하여 맞춤형 문장 토크 나이저를 생성 할 수 있습니다. 파일에서 읽거나 NLTK 코퍼스에서 원시 텍스트를 얻을 수 있습니다.raw() 방법.
더 많은 통찰력을 얻기 위해 아래의 예를 보겠습니다.
먼저 가져 오기 PunktSentenceTokenizer 수업에서 nltk.tokenize 패키지 −
from nltk.tokenize import PunktSentenceTokenizer
이제 가져 오기 webtext 말뭉치 nltk.corpus 꾸러미
from nltk.corpus import webtext
다음으로 raw() 메서드에서 원시 텍스트를 가져옵니다. training_tokenizer.txt 다음과 같이 파일-
text = webtext.raw('C://Users/Leekha/training_tokenizer.txt')
이제 인스턴스를 만듭니다. PunktSentenceTokenizer 다음과 같이 텍스트 파일에서 토큰 화 문장을 인쇄하십시오-
sent_tokenizer = PunktSentenceTokenizer(text)
sents_1 = sent_tokenizer.tokenize(text)
print(sents_1[0])
산출
White guy: So, do you have any plans for this evening?
print(sents_1[1])
Output:
Asian girl: Yeah, being angry!
print(sents_1[670])
Output:
Guy: A hundred bucks?
print(sents_1[675])
Output:
Girl: But you already have a Big Mac...
완전한 구현 예
from nltk.tokenize import PunktSentenceTokenizer
from nltk.corpus import webtext
text = webtext.raw('C://Users/Leekha/training_tokenizer.txt')
sent_tokenizer = PunktSentenceTokenizer(text)
sents_1 = sent_tokenizer.tokenize(text)
print(sents_1[0])
산출
White guy: So, do you have any plans for this evening?
NLTK의 기본 문장 토크 나이저와 자체 훈련 된 문장 토크 나이저의 차이점을 이해하기 위해 기본 문장 토크 나이저 (예 : sent_tokenize ())를 사용하여 동일한 파일을 토큰 화하겠습니다.
from nltk.tokenize import sent_tokenize
from nltk.corpus import webtext
text = webtext.raw('C://Users/Leekha/training_tokenizer.txt')
sents_2 = sent_tokenize(text)
print(sents_2[0])
Output:
White guy: So, do you have any plans for this evening?
print(sents_2[675])
Output:
Hobo: Y'know what I'd do if I was rich?
출력의 차이 덕분에 자체 문장 토크 나이저를 훈련하는 것이 왜 유용한 지 개념을 이해할 수 있습니다.
불용어는 무엇입니까?
텍스트에 있지만 문장의 의미에 기여하지 않는 몇 가지 일반적인 단어입니다. 이러한 단어는 정보 검색 또는 자연어 처리 목적에 전혀 중요하지 않습니다. 가장 일반적인 불용어는 'the'와 'a'입니다.
NLTK 불용어 말뭉치
실제로 Natural Language Tool 키트에는 여러 언어에 대한 단어 목록이 포함 된 불용어 코퍼스가 함께 제공됩니다. 다음 예제를 통해 사용법을 이해하겠습니다.
먼저 nltk.corpus 패키지 에서 불용어 copus를 가져옵니다.
from nltk.corpus import stopwords
이제 우리는 영어의 불용어를 사용할 것입니다
english_stops = set(stopwords.words('english'))
words = ['I', 'am', 'a', 'writer']
[word for word in words if word not in english_stops]
산출
['I', 'writer']
완전한 구현 예
from nltk.corpus import stopwords
english_stops = set(stopwords.words('english'))
words = ['I', 'am', 'a', 'writer']
[word for word in words if word not in english_stops]
산출
['I', 'writer']
지원되는 언어의 전체 목록 찾기
다음 Python 스크립트의 도움으로 NLTK 불용어 코퍼스에서 지원하는 전체 언어 목록을 찾을 수도 있습니다.
from nltk.corpus import stopwords
stopwords.fileids()
산출
[
'arabic', 'azerbaijani', 'danish', 'dutch', 'english', 'finnish', 'french',
'german', 'greek', 'hungarian', 'indonesian', 'italian', 'kazakh', 'nepali',
'norwegian', 'portuguese', 'romanian', 'russian', 'slovene', 'spanish',
'swedish', 'tajik', 'turkish'
]