{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"# **Token의 활용**\n",
"\n",
"## **1 Token**\n",
"어휘분석"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# ! pip3 install nltk"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# import nltk\n",
"# nltk.download('punkt')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"text = \"\"\"오늘 금요일, 오후.\n",
"오늘 조금만 버티면 주말입니다. 조금만 힘내세요\"\"\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from nltk import sent_tokenize\n",
"sent_tokenize(text)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from nltk import word_tokenize\n",
"text = word_tokenize(text)\n",
"text"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"from nltk import FreqDist\n",
"dict(FreqDist(text))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"## **2 Re 를 사용한 Regex 정규식**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"text = \"\"\"Park 010-1234-1234 Kim 010-8888-9999 \n",
"Lee 010-2123-1299 홍길동 010-222-9999 신사임당 010-555-2345\"\"\"\n",
"\n",
"from nltk.tokenize import RegexpTokenizer\n",
"re_capt = RegexpTokenizer(r'\\d+')\n",
"re_capt.tokenize(text)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from nltk.tokenize import RegexpTokenizer\n",
"re_capt = RegexpTokenizer(r'[A-z]\\w+')\n",
"re_capt.tokenize(text)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from nltk.tokenize import RegexpTokenizer\n",
"re_capt = RegexpTokenizer(r'[가-힣]\\w+')\n",
"re_capt.tokenize(text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"## **| Quiz : Regex 의 활용**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 한글/영문 이름만 추출하기\n",
"# Quiz1 : 한글과 영어를 함께 추출한다\n",
"# QUiz2 : 전화번호만 추출한다"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"## **| Answer : Quiz 풀기**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 한글/영문이름 추출하기\n",
"from nltk.tokenize import RegexpTokenizer\n",
"re_capt = RegexpTokenizer(r'[ =Quiz!= ]\\w+')\n",
"re_capt.tokenize(text)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# cf) 전화번호만 추출해보기\n",
"re_capt = RegexpTokenizer('\\d{ =Quiz!= }-\\d{ =Quiz!= }-\\d{ =Quiz!= }')\n",
"re_capt.tokenize(text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"## **| Import re**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"text = \"갤럭시(GalaxyNote9)노트9은 2018년 08월 폭발적인 인기를 이끌고 있습니다\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"tokenizer = re.compile(r'[가-힣]+')\n",
"tokenizer.findall(text)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 한글과 공백을 제외한 나머지 선택후 제거\n",
"tokenizer = re.compile(r'[^ 가-힣]+')\n",
"tokenizer.sub(\"\", text)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}