import spacy
nlp = spacy.load('en')
text = "Mary, don't slap the green witch"
print([str(token) for token in nlp(text.lower())])
# ['mary', ',', 'do', "n't", 'slap', 'the', 'green', 'witch']
from nltk.tokenize import TweetTokenizer
tweet = u"Snow White and the Seven Degrees #MakeAMovieCold@midnight:-)"
tokenizer = TweetTokenizer()
print(tokenizer.tokenize(tweet.lower()))
# ['snow', 'white', 'and', 'the', 'seven', 'degrees', '#makeamoviecold', '@midnight', ':-)']
말뭉치에 등장하는 고유한 토큰. 말뭉치에 있는 모든 타입의 집합이 어휘 사전 또는 어휘lexicon이다.
텍스트에 있는 고정 길이의 연속된 토큰 시퀀스
def n_grams(text, n):
'''
takes tokens or text, returns a list of n-grams
'''
return [text[i:i+n] for i in range(len(text)-n+1)]
cleaned = ['mary', ',', "n't", 'slap', 'green', 'witch', '.']
print(n_grams(cleaned,3))
# [['mary', ',', "n't"],
# [',', "n't", 'slap'],
# ["n't", 'slap', 'green'],
# ['slap', 'green', 'witch'],
# ['green', 'witch', '.']]
부분단어subword 자체가 유용한 정보를 전달한다면 문자 n-gram을 생성할 수 있다.
표제어lemma는 단어의 기본형이다.
어간 추출stemming은 표제어 추출 대신에 사용하는 축소 기법이다.
단어 'geese'를 표제어 추출하면 'goose', 어간 추출하면 'gees'가 생성된다.
import spacy
nlp = spacy.load('en')
doc = nlp(u"he was running late")
for token in doc:
print('{} --> {}'.format(token, token.lemma_))
# he --> -PRON-
# was --> be
# running --> run
# late --> late
TF와 TF-IDF 표현이 문서나 문장 같은 긴 텍스트 뭉치를 분류하는데 유용하다.
토픽 레이블 할당, 리뷰의 감성 예측, 스팸 이메일 필터링, 언어 식별, 이메일 분류 같은 작업은 지도 학습 기반의 문서 분류 문제이다.
문서에 레이블을 할당하는 개념을 단어나 토큰으로 확장할 수 있다.
단어 분류 작업의 예로는 품사part of speech, 태깅tagging이 있다.
import spacy
nlp = spacy.load('en')
doc = nlp(u"Mary slapped the green witch.")
for token in doc:
print('{} - {}'.format(token, token.pos_))
# Mary - PROPN
# slapped - VERB
# the - DET
# green - ADJ
# witch - NOUN
# . - PUNCT
청크나누기chinking 또는 부분 구문 분석shallow parsing의 목적은 명사, 동사, 형용사 같은 문법적 요소로 구성된 고차원의 단위를 유도해 내는 것이다.
import spacy
nlp = spacy.load('en')
doc = nlp(u"Mary slapped the green witch.")
for chunk in doc.noun_chunks:
print('{} - {}'.format(chunk, chunk.label_))
# Mary - NP
# the green witch - NP
개체명named entity는 사람, 장소, 회사, 약 이름과 같은 실제 세상의 개념을 의미하는 문자열이다.
구성 구문 분석constituent parsing, 의존 구문 분석dependency parsing
단어에는 의미sense가 하나 이상 있다.