{ "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 }