├── 2018 └── LC │ ├── codes │ ├── arith.py │ ├── arith_test.py │ ├── cold_or_hot.py │ ├── cold_or_mild_or_hot.py │ ├── count_char.py │ ├── decision_tree.py │ ├── eliza.py │ ├── fridge.py │ ├── generate.py │ ├── hangul.py │ ├── hello.py │ ├── literary.txt │ ├── maxmatch.py │ ├── multi3.py │ ├── naivebayes_nltk.py │ ├── naivebayes_practice.py │ ├── naivebayes_sklearn.py │ ├── ngrams.py │ ├── password.py │ ├── print_arith.py │ ├── print_hello.py │ ├── readme.MD │ ├── reg_exp.py │ ├── reviews.txt │ ├── snooze.py │ ├── sort_words.py │ ├── statistics.py │ ├── try.py │ ├── vectors.py │ └── word_freq_functions.py │ ├── hw │ ├── eliza.txt │ ├── hw04.pdf │ ├── hw04adv.pdf │ ├── hw05.pdf │ ├── hw06.pdf │ ├── hw07.pdf │ ├── hw07adv.pdf │ ├── hw09.pdf │ ├── hw09adv.pdf │ ├── hw10.pdf │ ├── hw10adv.pdf │ ├── hw11.pdf │ ├── hw12.pdf │ ├── hw13.pdf │ ├── poems.txt │ ├── proper_nouns.txt │ ├── readme.MD │ └── train.txt │ ├── readme.MD │ └── slides │ ├── 02-20180905.pdf │ ├── 03-20180910.pdf │ ├── 04-20180912.pdf │ ├── 05-20180917.pdf │ ├── 06-20180919.pdf │ ├── 07-20181001.pdf │ ├── 08-20181008.pdf │ ├── 09-20181010.pdf │ ├── 10-20181017.pdf │ ├── 11-20181029.pdf │ ├── 12-20181031.pdf │ ├── 13-20181107.pdf │ ├── 14-20181112.pdf │ ├── 15-20181114.pdf │ ├── 16-20181119.pdf │ ├── 17-20181121.pdf │ ├── 19-20181128.pdf │ └── 20-20181203.pdf ├── 2022 └── CL │ └── readme.MD └── README.md /2018/LC/codes/arith.py: -------------------------------------------------------------------------------- 1 | 7 + 2 2 | 7 - 2 3 | 7 * 2 4 | 7 / 2 5 | 7 // 2 6 | 7 % 2 7 | 7 ** 2 8 | -------------------------------------------------------------------------------- /2018/LC/codes/arith_test.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | n = float(input('0.1 + 0.2 = ')) 3 | if n == 0.1 + 0.2: # 어떻게 고쳐야 할까? 4 | print('맞았습니다.') 5 | else: 6 | print('틀렸습니다.') 7 | -------------------------------------------------------------------------------- /2018/LC/codes/cold_or_hot.py: -------------------------------------------------------------------------------- 1 | temp = 26 2 | print('Hello!') 3 | if temp > 20: 4 | print("It isn't cold.") 5 | else: 6 | print("It isn't hot.") 7 | 8 | print('Bye!') 9 | -------------------------------------------------------------------------------- /2018/LC/codes/cold_or_mild_or_hot.py: -------------------------------------------------------------------------------- 1 | temp = 17 2 | print('Hello!') 3 | if temp < 15: 4 | print("It's cold.") 5 | elif temp < 25: 6 | print("It's mild.") 7 | else: 8 | print("It's hot.") 9 | 10 | print('Bye!') 11 | -------------------------------------------------------------------------------- /2018/LC/codes/count_char.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 문장 내에서 특정 글자의 개수를 세는 프로그램 3 | sentence = input('문장을 입력하세요: ') 4 | char = input('찾고 싶은 글자를 입력하세요: ') 5 | n = sentence.lower().count(char.lower()) 6 | print('{}의 출현 횟수: {}'.format(char, n)) 7 | -------------------------------------------------------------------------------- /2018/LC/codes/decision_tree.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: decision_tree.py 3 | # course: Language and Computer 4 | # author: Suzi Park 5 | # date created: 2018-10-29 6 | # description: Decision tree 7 | 8 | # list of abbreviations 9 | abbre = ['Dr.', 'Mr.', 'Ms.'] 10 | 11 | # decision tree for eos determination 12 | def iseos(word:str): 13 | if word.endswith(tuple('?!:')): 14 | return True 15 | if not word.endswith('.'): 16 | return False 17 | return word not in abbre 18 | 19 | def eoslist(words:list): 20 | return [iseos(word) for word in words] 21 | 22 | # non-recursive function 23 | def sent_segment0(words:list): 24 | sents = [] 25 | sent = '' 26 | for word, iseos in zip(words, eoslist(words)): 27 | sent += word 28 | if not iseos: 29 | sent += ' ' 30 | else: 31 | sents.append(sent) 32 | sent = '' 33 | return sents 34 | 35 | # recursive function 36 | def sent_segment(words:list): 37 | # indices of eos 38 | eos_ind = [i for i, iseos in enumerate(eoslist(words)) if iseos] 39 | # stop condition 40 | if len(eos_ind) <= 1: 41 | return [' '.join(words)] 42 | # recursion 43 | for i in eos_ind: 44 | sent = ' '.join(words[:i+1]) 45 | remainder = words[i+1:] 46 | return [sent] + sent_segment(remainder) 47 | 48 | if __name__ == '__main__': 49 | text = "Hello! How are you, Mr. H? I'm fine, thank you. And you?" 50 | print(text) 51 | print("non-recursive :", sent_segment0(text.split())) 52 | print("recursive:", sent_segment(text.split())) 53 | -------------------------------------------------------------------------------- /2018/LC/codes/eliza.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: eliza.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-10-29 6 | # description: ELIZA 7 | 8 | import re, random 9 | 10 | def respond(message): 11 | # preprocessing 12 | message = message.upper() 13 | message = re.sub(r'\s+', ' ', message) 14 | 15 | # generalization 16 | if re.match(r".*\bALL\b.*", message): 17 | return 'IN WHAT WAY' 18 | elif re.match(r".*\bALWAYS\b.*", message): 19 | return 'CAN YOU THINK OF A SPECIFIC EXAMPLE' 20 | 21 | # "I'm sad" 22 | match = re.match(r".*\bI(?: AM|'M) (DEPRESSED|SAD|SICK|UNHAPPY)\b.*", message) 23 | if match: 24 | sad = match.group(1) 25 | responses = [ 26 | f"I AM SORRY TO HEAR THAT YOU ARE {sad}", 27 | f"WHY DO YOU THINK YOU ARE {sad}", 28 | ] 29 | return random.choice(responses) 30 | 31 | # "my" 32 | match = re.match(r".*\bMY (.*)", message) 33 | if match: 34 | response = f'YOUR {match.group(1)}' 35 | response = re.sub(r'\bME\b', 'YOU', response) 36 | response = re.sub(r'\bMY(SELF)?\b', r'YOUR\1', response) 37 | return response 38 | 39 | # no keyword 40 | responses = [ 41 | "PLEASE GO ON", 42 | "WHAT DOES THAT SUGGEST TO YOU", 43 | "I'M NOT SURE I UNDERSTAND YOU FULLY" 44 | ] 45 | return random.choice(responses) 46 | 47 | 48 | if __name__ == '__main__': 49 | print('PLEASE TELL ME YOUR PROBLEM') 50 | message = input('> ') 51 | while message not in ('', 'quit'): 52 | print(respond(message)) 53 | message = input('> ') 54 | 55 | print('GOODBYE') 56 | -------------------------------------------------------------------------------- /2018/LC/codes/fridge.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | fridge = ['주스', '두부', '요거트', '요거트'] 3 | food = input('찾는 것을 입력하세요: ') 4 | if food in fridge: 5 | fridge.remove(food) 6 | print('냉장고에 남은 것: {}'.format(fridge)) 7 | else: 8 | print('냉장고에 없습니다.') 9 | -------------------------------------------------------------------------------- /2018/LC/codes/generate.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: generate.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-11-13 6 | # description: word autocomplete and generation 7 | 8 | from pprint import pprint 9 | from collections import defaultdict, Counter 10 | from random import choice 11 | 12 | text = '''i like to eat pasta . 13 | i want to eat food from malaysia . 14 | show me the list again . 15 | i 'd like the previous list please . 16 | i 'd like to go to a japanese restaurant .''' 17 | 18 | # sents: list of sentences(list of words) 19 | sents = [n.split() for n in text.split('\n')] # you should edit this line 20 | pprint(sents) 21 | 22 | bigrams_dict = defaultdict(list) 23 | for sent in sents: 24 | filled_sent = [''] + sent 25 | for wd1, wd2 in zip(filled_sent, filled_sent[1:]): 26 | bigrams_dict[wd1].append(wd2) 27 | 28 | pprint(bigrams_dict) 29 | pprint(Counter(choice(bigrams_dict['']) for _ in range(100))) 30 | 31 | def modes(seq): 32 | counts = Counter(seq) 33 | M = max(counts.values()) 34 | return [item for item, count in counts.items() if count == M] 35 | 36 | def complete(): 37 | # first word 38 | wd = choice(modes(bigrams_dict[''])) 39 | # initialize sentence to be completed 40 | completed = [wd] 41 | while wd != '.': 42 | wd = choice(modes(bigrams_dict[wd])) 43 | completed.append(wd) 44 | return ' '.join(wd for wd in completed) 45 | 46 | for _ in range(10): 47 | print(complete()) 48 | 49 | def generate(): 50 | # first word 51 | wd = choice(bigrams_dict['']) 52 | # initialize sentence to be completed 53 | generated = [wd] 54 | while wd != '.': 55 | wd = choice(bigrams_dict[wd]) 56 | generated.append(wd) 57 | return ' '.join(wd for wd in generated) 58 | 59 | for _ in range(10): 60 | print(generate()) 61 | -------------------------------------------------------------------------------- /2018/LC/codes/hangul.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: hangul.py 3 | # course: 언어와 컴퓨터 4 | # author: 박수지 5 | # date created: 2018-10-11 6 | # description: 한글 처리 모듈 --- 음절 분해 및 자모 결합 7 | 8 | # 1. 음절 분해 9 | # 준비물 10 | LEADING = 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ' 11 | VOWEL = 'ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ' 12 | TRAILING = ('',) + tuple('ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ') 13 | 14 | n_cnt = len(VOWEL) * len(TRAILING) # 588 15 | t_cnt = len(TRAILING) # 28 16 | 17 | syl = '햒' 18 | 19 | # 음절의 지표 20 | s_ind = ord(syl) - ord('가') 21 | 22 | # 초성, 중성, 종성의 지표 23 | l_ind = s_ind // n_cnt 24 | v_ind = s_ind % n_cnt // t_cnt 25 | t_ind = s_ind % n_cnt % t_cnt 26 | 27 | jamos = '' 28 | jamos += LEADING[l_ind] 29 | jamos += VOWEL[v_ind] 30 | jamos += TRAILING[t_ind] 31 | 32 | jamos 33 | 34 | 35 | 36 | # 2. 자모 결합 37 | from unicodedata import name, lookup 38 | 39 | # 알려진 사실 40 | ''' 41 | >>> lookup('HANGUL CHOSEONG PANSIOS') + lookup('HANGUL JUNGSEONG ARAEA') 42 | 'ᅀᆞ' 43 | ''' 44 | 45 | lvt = 'CHOSEONG', 'JUNGSEONG', 'JONGSEONG' 46 | 47 | 48 | jamos = 'ㅈㅏㄹ' 49 | l = lookup(name(jamos[0]).replace('LETTER', lvt[0])) 50 | v = lookup(name(jamos[1]).replace('LETTER', lvt[1])) 51 | t = lookup(name(jamos[2]).replace('LETTER', lvt[2])) 52 | l + v + t 53 | 54 | 55 | def jamo_name(jamo): 56 | return name(jamo).split()[-1] 57 | 58 | jamos = 'ㅈㅏㄹ' 59 | l = lookup(f'HANGUL {lvt[0]} {jamo_name(jamos[0])}') 60 | v = lookup(f'HANGUL {lvt[1]} {jamo_name(jamos[1])}') 61 | t = lookup(f'HANGUL {lvt[2]} {jamo_name(jamos[2])}') 62 | l + v + t 63 | 64 | # 65 | jamo_names = 'CIEUC', 'A', 'RIEUL' 66 | l = lookup(f'HANGUL {lvt[0]} {jamo_names[0]}') 67 | v = lookup(f'HANGUL {lvt[1]} {jamo_names[1]}') 68 | t = lookup(f'HANGUL {lvt[2]} {jamo_names[2]}') 69 | l + v + t 70 | 71 | # 72 | jamo_names = 'PANSIOS', 'ARAEA', 'RIEUL' 73 | l = lookup(f'HANGUL {lvt[0]} {jamo_names[0]}') 74 | v = lookup(f'HANGUL {lvt[1]} {jamo_names[1]}') 75 | t = lookup(f'HANGUL {lvt[2]} {jamo_names[2]}') 76 | l + v + t 77 | 78 | # 'ㅈ' -> 'CIEUC' 79 | # 'ㅏ' -> 'A' 80 | # 'ㄹ' -> 'RIEUL' 81 | # ??? -> 'PANSIOS' 82 | # ??? -> 'ARAEA' 83 | def jamo_name(jamo): 84 | yet_dict = {'Z': 'PANSIOS', 'A': 'ARAEA', 'V': 'KAPYEOUNPIEUP', 'K': 'PIEUP-SIOS-KIYEOK', 'T': 'PIEUP-SIOS-TIKEUT'} 85 | if jamo in yet_dict.keys(): 86 | return yet_dict[jamo] 87 | else: 88 | return name(jamo).split()[-1] 89 | 90 | ''' 91 | >>> jamo_name("ㅈ") 92 | 'CIEUC' 93 | >>> jamo_name("ㅏ") 94 | 'A' 95 | >>> jamo_name("ㄹ") 96 | 'RIEUL' 97 | >>> jamo_name("Z") 98 | 'PANSIOS' 99 | >>> jamo_name("A") 100 | 'ARAEA' 101 | ''' 102 | 103 | jamos = 'ZAㄹ' 104 | l = lookup(f'HANGUL {lvt[0]} {jamo_name(jamos[0])}') 105 | v = lookup(f'HANGUL {lvt[1]} {jamo_name(jamos[1])}') 106 | t = lookup(f'HANGUL {lvt[2]} {jamo_name(jamos[2])}') 107 | l + v + t 108 | # 'ᅀᆞᆯ' 109 | 110 | # 반복을 없애자 111 | syl = '' 112 | for p, j in zip(lvt, jamos): 113 | syl += lookup(f'HANGUL {p} {jamo_name(j)}') 114 | 115 | # 더 간단하게 116 | ''.join(lookup(f'HANGUL {p} {jamo_name(j)}') for p, j in zip(lvt, jamos)) 117 | 118 | # 함수로 119 | def conjoin(jamos): 120 | return ''.join(lookup(f'HANGUL {p} {jamo_name(j)}') for p, j in zip(lvt, jamos)) 121 | 122 | 123 | ''' 124 | >>> conjoin('ㅈㅏㄹ') 125 | '잘' 126 | >>> conjoin('ZAㄹ') 127 | 'ᅀᆞᆯ' 128 | >>> conjoin('Kㅜㄹ') 129 | 'ᄢᅮᆯ' 130 | >>> conjoin('TAㄹ') 131 | 'ᄣᆞᆯ' 132 | ''' 133 | -------------------------------------------------------------------------------- /2018/LC/codes/hello.py: -------------------------------------------------------------------------------- 1 | name = input('이름을 입력하세요: ') 2 | print(name, '님, 반갑습니다.') 3 | -------------------------------------------------------------------------------- /2018/LC/codes/literary.txt: -------------------------------------------------------------------------------- 1 | # https://en.oxforddictionaries.com/explore/literary-words 2 | abode 3 | access 4 | adieu 5 | afar 6 | apace 7 | argosy 8 | arrant 9 | asunder 10 | atrabilious 11 | aurora 12 | bard 13 | barque 14 | bedizen 15 | beget 16 | behold 17 | beseech 18 | bestrew 19 | betake 20 | betide 21 | betoken 22 | blade 23 | blithe 24 | bosky 25 | brand 26 | brume 27 | celerity 28 | circumvallate 29 | clarion 30 | cleave 31 | cockcrow 32 | coruscate 33 | crapulent 34 | crescent 35 | darkling 36 | deep 37 | dell 38 | dingle 39 | divers 40 | Dives 41 | dolour 42 | dome 43 | dulcify 44 | effulgent 45 | eld 46 | eminence 47 | empyrean 48 | ere 49 | erne 50 | espy 51 | ether 52 | evanescent 53 | farewell 54 | fervid 55 | fidus 56 | finny 57 | firmament 58 | flaxen 59 | fleer 60 | flexuous 61 | fulgent 62 | fulguration 63 | fuliginous 64 | fulminate 65 | furbelow 66 | gird 67 | glaive 68 | gloaming 69 | greensward 70 | gyre 71 | hark 72 | horripilation 73 | hymeneal 74 | ichor 75 | illude 76 | imbrue 77 | impuissant 78 | incarnadine 79 | ingrate 80 | inhume 81 | inly 82 | ire 83 | isle 84 | knell 85 | lachrymal 86 | lacustrine 87 | lambent 88 | lave 89 | lay 90 | lea 91 | lenity 92 | lightsome 93 | limn 94 | lucent 95 | madding 96 | mage 97 | main 98 | malefic 99 | manifold 100 | marge 101 | mead 102 | mephitic 103 | mere 104 | moon 105 | morrow 106 | muliebrity 107 | nescient 108 | nigh 109 | niveous 110 | nocuous 111 | noisome 112 | nymph 113 | orb 114 | orgulous 115 | pellucid 116 | perchance 117 | perfervid 118 | perfidious 119 | philippic 120 | plangent 121 | plash 122 | plenteous 123 | plumbless 124 | poesy 125 | prothalamium 126 | puissant 127 | pulchritude 128 | purl 129 | quidnunc 130 | realm 131 | refulgent 132 | rend 133 | repine 134 | Rhadamanthine 135 | roundelay 136 | rubescent 137 | rutilant 138 | sans 139 | scribe 140 | sea-girt 141 | sempiternal 142 | serpent 143 | shade 144 | ship 145 | shore 146 | slay 147 | slumber 148 | star-crossed 149 | steed 150 | stilly 151 | storied 152 | strand 153 | Stygian 154 | summer 155 | supernal 156 | susurration 157 | swain 158 | sword 159 | sylvan 160 | tarry 161 | temerarious 162 | tenebrous 163 | threescore 164 | thrice 165 | tidings 166 | toilsome 167 | tope 168 | travail 169 | troublous 170 | tryst 171 | unman 172 | vestal 173 | vesture 174 | virescent 175 | viridescent 176 | visage 177 | want 178 | wax 179 | wayfarer 180 | wed 181 | welkin 182 | whited 183 | wind 184 | without 185 | wondrous 186 | wont 187 | wonted 188 | wrathful 189 | wreathe 190 | yon 191 | yore 192 | youngling 193 | zephyr 194 | -------------------------------------------------------------------------------- /2018/LC/codes/maxmatch.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: maxmatch.py 3 | # course: 언어와 컴퓨터 4 | # author: 박수지 5 | # date created: 2018-10-25 6 | # description: MaxMatch 알고리듬 7 | 8 | # 단어 목록 9 | words = ['가방', '방', '아버지', '가', '에', '들어가신다'] 10 | 11 | def maxmatch(sentence:str, dictionary:list): 12 | # stop condition 13 | if not sentence: 14 | return [] 15 | # recursion 16 | for i in range(len(sentence), 0, -1): 17 | first_word, remainder = sentence[:i], sentence[i:] 18 | if first_word in dictionary: 19 | return [first_word] + maxmatch(remainder, dictionary) 20 | # out-of-vocabulary 21 | first_word = sentence[:1] 22 | remainder = sentence[1:] 23 | return [first_word] + maxmatch(remainder, dictionary) 24 | 25 | if __name__ == '__main__': 26 | print(maxmatch('아버지가방에들어가신다', words)) 27 | print(maxmatch('방에아버지가들어가신다', words)) 28 | print(maxmatch('아버지가가방에들어가신다', words)) 29 | print(maxmatch('할아버지가큰방에들어가신다', words)) 30 | -------------------------------------------------------------------------------- /2018/LC/codes/multi3.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | n = input('정수를 입력하세요: ') 3 | if n.isnumeric() and (int(n) % 3): 4 | print('3의 배수가 아닙니다.') 5 | if n.isnumeric() and not (int(n) % 3): 6 | print('3의 배수입니다.') 7 | if not n.isnumeric(): 8 | print('정수를 입력하지 않았습니다.') 9 | -------------------------------------------------------------------------------- /2018/LC/codes/naivebayes_nltk.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: naivebayes_nltk.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-11-21 6 | # description: implementing naive bayes classifier using sciket-learn 7 | 8 | # http://www.nltk.org/book/ch06.html 9 | 10 | # 먼저 할 일: nltk 설치하기 11 | 12 | from random import seed, shuffle 13 | import nltk 14 | 15 | # 0. 코퍼스 준비 16 | # 0.1. 파일 읽기 17 | f = open('reviews.txt', 'r', encoding='utf-8') 18 | # 정답과 데이터 분리하기 19 | data = [line.split('\t') for line in f] 20 | data = [(int(cat), doc.split()) for cat, doc in data] 21 | f.close() 22 | 23 | # 0.2. 순서 섞기 24 | seed(208) 25 | shuffle(data) 26 | 27 | # 0.3. 코퍼스 분할하기 28 | # 코퍼스의 10%를 실험 집합으로, 다음 10%를 개발 집합으로, 나머지를 훈련 집합으로 삼기 29 | boundary = int(len(data) * 0.1) 30 | test = data[:boundary] 31 | dev = data[boundary:2*boundary] 32 | train = data[2*boundary:] 33 | 34 | # 1. 단순 베이즈 분류기 학습 35 | # 1.1. 훈련 집합의 어휘 목록 36 | vocabulary = {morph for cat, doc in train for morph in doc} 37 | 38 | # 문서(doc)을 받아 단어를 키로, 단어가 문서에 있는지를 값으로 하는 딕셔너리를 반환하는 함수 39 | def get_features(doc): 40 | return {word: word in doc for word in vocabulary} 41 | 42 | # 1.2. [({속성: 값}, 정답)] 꼴로 만들기 43 | train_set = [(get_features(doc), cat) for cat, doc in train] 44 | test_set = [(get_features(doc), cat) for cat, doc in test] 45 | dev_set = [(get_features(doc), cat) for cat, doc in dev] 46 | 47 | 48 | clf_nb = nltk.NaiveBayesClassifier.train(train_set) 49 | clf_nb.show_most_informative_features() 50 | 51 | # 2. 개발 52 | nltk.classify.accuracy(clf_nb, dev_set) 53 | 54 | # 오류 분석 55 | for cat, doc in dev: 56 | predicted = clf_nb.classify(get_features(doc)) 57 | if cat != predicted: 58 | print(cat, doc) 59 | 60 | 61 | # 3. 최대 엔트로피 분류기 학습 62 | clf_me = nltk.MaxentClassifier.train(train_set, max_iter=50) 63 | clf_me.show_most_informative_features() 64 | 65 | # 4. 개발 66 | nltk.classify.accuracy(clf_me, dev_set) 67 | 68 | # 오류 분석 69 | for cat, doc in dev: 70 | predicted = clf_me.classify(get_features(doc)) 71 | if cat != predicted: 72 | print(cat, doc) 73 | 74 | 75 | 76 | # 3'. 새로운 시도: 실질어 및 이모티콘만 반영하기 77 | def get_features2(doc): 78 | return {word: word in doc for word in vocabulary if word.endswith(('NNG', 'VA', 'VV', 'XR', 'MAG', 'EMO'))} 79 | 80 | # 속성 집합 업데이트 81 | train_set = [(get_features2(doc), cat) for cat, doc in train] 82 | test_set = [(get_features2(doc), cat) for cat, doc in test] 83 | dev_set = [(get_features2(doc), cat) for cat, doc in dev] 84 | 85 | # 재학습 86 | clf_me = nltk.MaxentClassifier.train(train_set, max_iter=50) 87 | clf_me.show_most_informative_features() 88 | 89 | # 개발 90 | nltk.classify.accuracy(clf_me, dev_set) 91 | 92 | # 오류 분석 93 | for cat, doc in dev: 94 | predicted = clf_me.classify(get_features2(doc)) 95 | if cat != predicted: 96 | print(cat, doc) 97 | 98 | 99 | 100 | # 3''. 새로운 시도: 후반부의 내용을 반영하기 101 | def get_features3(doc): 102 | return {word: word in doc[:len(doc)//2] for word in vocabulary} 103 | 104 | # 속성 집합 업데이트 105 | train_set = [(get_features3(doc), cat) for cat, doc in train] 106 | test_set = [(get_features3(doc), cat) for cat, doc in test] 107 | dev_set = [(get_features3(doc), cat) for cat, doc in dev] 108 | 109 | # 재학습 110 | clf_me = nltk.MaxentClassifier.train(train_set, max_iter=50) 111 | clf_me.show_most_informative_features() 112 | 113 | # 개발 114 | nltk.classify.accuracy(clf_me, dev_set) 115 | 116 | # 오류 분석 117 | for cat, doc in dev: 118 | predicted = clf_me.classify(get_features3(doc)) 119 | if cat != predicted: 120 | print(cat, doc) 121 | 122 | 123 | 124 | # 3'''. 새로운 시도: 단어 빈도를 세기 125 | def get_features4(doc): 126 | return {word: doc.count(word) for word in vocabulary} 127 | 128 | # 속성 집합 업데이트 129 | train_set = [(get_features4(doc), cat) for cat, doc in train] 130 | test_set = [(get_features4(doc), cat) for cat, doc in test] 131 | dev_set = [(get_features4(doc), cat) for cat, doc in dev] 132 | 133 | # 재학습 134 | clf_me = nltk.MaxentClassifier.train(train_set, max_iter=50) 135 | clf_me.show_most_informative_features() 136 | 137 | # 개발 138 | nltk.classify.accuracy(clf_me, dev_set) 139 | 140 | # 오류 분석 141 | for cat, doc in dev: 142 | predicted = clf_me.classify(get_features4(doc)) 143 | if cat != predicted: 144 | print(cat, doc) 145 | 146 | -------------------------------------------------------------------------------- /2018/LC/codes/naivebayes_practice.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: naivebayes_practice.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-11-20 6 | # description: naive bayes classifier 7 | 8 | # from konlpy.tag import Kkma # 형태소 분석 9 | from random import seed, shuffle 10 | from collections import Counter, defaultdict 11 | from scipy import log, argmax 12 | 13 | 14 | # -1. 형태소 분석 15 | # f = open('reviews_raw.txt', 'r', encoding='utf-8') 16 | # data = [line.split('\t') for line in f] 17 | # kkma = Kkma() # 형태소 분석기 18 | # data = [(c, ['/'.join(pair) for pair in kkma.pos(d.strip())]) for c, d in data] 19 | # g = open('reviews.txt', 'w', encoding='utf-8') 20 | # g.writelines('\t'.join((c, ' '.join(morph for morph in d))) + '\n' for c, d in data) 21 | # g.close() 22 | # f.close() 23 | 24 | # 0. 코퍼스 준비 25 | # 0.1. 파일 읽기 26 | f = open('reviews.txt', 'r', encoding='utf-8') 27 | # 정답과 데이터 분리하기 28 | data = [line.split('\t') for line in f] 29 | # 문서를 형태소의 리스트로 바꾸기 30 | # c for class(sentiment), doc for document(review) 31 | data = [(int(c), doc.split()) for c, doc in data] 32 | f.close() 33 | 34 | # 0.2. 순서 섞기 35 | seed(208) 36 | shuffle(data) 37 | 38 | ''' 39 | >>> data[0] 40 | (0, ['졸/VV', '려요/ECD', '../SW', '배트/NNG', '맨/NNG', '과/JKM', '슈퍼맨/NNG', '의/JKG', '갑작스럽/VA', 'ㄴ/ETD', '화해/NNG', '??/SW', '뭐/NP', '여/NNG', '??/SW', '루이스/NNG', '는/JX', '또/MAG', '뭐/NP', '여/NNG', '??/SW', '민폐/NNG', '캐릭/NNG', '??/SW', '애/NNG', '니/JC', '다크/UN', '나이트/NNG', '리턴즈/UN', '와/JKM', '두/VV', 'ㅁ/ETN', '스/VV', '데/EFN', '이의/NNG', '짬뽕/NNG', '생뚱맞/VA', '게/ECD', '나타나/VV', '는/ETD', '원/NNM', '드/VV', '어/ECS', '우먼/NNG', '총/MDT', '1/NR', '분/NNM', '미만/NNG', '의/JKG', '출연/NNG', '아쿠아/NNG', '맨/NNG', '과/JKM', '한명/NNG', '더/MAG', '../SW', '기대/NNG', '하/XSV', '지/ECD', '마시/VV', '고/ECE', '보시/VV', '어야/ECD', '하/VV', 'ㅂ니다/EFN']) 41 | ''' 42 | 43 | # 0.3. 훈련 집합과 실험 집합으로 분할하기 44 | boundary = int(len(data) * 0.9) 45 | # 코퍼스의 90%를 훈련 집합으로, 나머지 10%를 실험 집합으로 삼기 46 | train = data[:boundary] 47 | test = data[boundary:] 48 | 49 | 50 | # 1. 훈련 집합에서 로그사전확률 P(c) 구하기 51 | # 1.1. 문서 개수 52 | Nc = Counter() # edit this line 53 | Ndoc = len(train) 54 | ''' 55 | >>> Nc 56 | Counter({1: 47, 0: 40}) 57 | >>> Ndoc 58 | 87 59 | ''' 60 | 61 | # 1.2. 로그사전확률 62 | logprior = {} # edit this line 63 | ''' 64 | >>> logprior 65 | {0: -0.7770286645406475, 1: -0.6157605169445252} 66 | ''' 67 | 68 | 69 | # 2. 훈련 집합에서 로그가능도 P(w|c) 구하기 70 | # 2.1. 훈련 집합의 어휘 목록 71 | vocabulary = [] 72 | # edit this line 73 | # edit this line 74 | # edit this line 75 | # edit this line 76 | 77 | ''' 78 | >>> len(vocabulary) 79 | 998 80 | >>> vocabulary[:5] 81 | ['졸/VV', '려요/ECD', '../SW', '배트/NNG', '맨/NNG'] 82 | ''' 83 | 84 | # 2.2. 범주별로 문서 합치기 85 | bigdoc = defaultdict(list) 86 | # edit this line 87 | # edit this line 88 | 89 | ''' 90 | >>> bigdoc[1][-5:] 91 | ['좋/VA', 'ㄹ/ETD', '멋/NNG', '짐/NNG', '!!!/SW'] 92 | >>> bigdoc[0][-5:] 93 | ['졸리/VV', '어/ECS', '디지/VV', '는/ETD', '줄/NNG'] 94 | ''' 95 | 96 | # 2.3. 범주별 "큰 문서"에서 어휘 출현 횟수 세기 97 | counts = defaultdict(Counter) 98 | # edit thisline 99 | # edit thisline 100 | 101 | # 2.4. Add-1 smoothing 102 | for w in vocabulary: 103 | for c in counts: 104 | counts[c][w] += 1 105 | 106 | ''' 107 | >>> counts[1].most_common(5) 108 | [('이/VCP', 32), ('ㄴ/ETD', 30), ('./SF', 27), ('하/XSV', 27), ('의/JKG', 25)] 109 | >>> counts[0].most_common(5) 110 | [('./SF', 52), ('ㄴ/ETD', 43), ('하/XSV', 40), ('고/ECE', 28), ('의/JKG', 24)] 111 | ''' 112 | 113 | # 2.5. 로그가능도 114 | loglikelihood = defaultdict(dict) 115 | for c, counter in counts.items(): 116 | count_c = 1 # edit this line 117 | for w in vocabulary: 118 | loglikelihood[w][c] = 0 # edit this line 119 | 120 | ''' 121 | >>> loglikelihood['재밌/VA'] 122 | {0: -7.861341795599989, 1: -5.990630866359405} 123 | >>> loglikelihood['재미/NNG'] 124 | {0: -6.762729506931879, 1: -6.396095974467569} 125 | >>> loglikelihood['잼/NNG'] 126 | {0: -7.861341795599989, 1: -5.702948793907623} 127 | >>> loglikelihood['분위기/NNG'] 128 | {0: -7.1681946150400435, 1: -5.702948793907623} 129 | >>> loglikelihood['울/VV'] 130 | {0: -6.251903883165888, 1: -7.7823903355874595} 131 | >>> loglikelihood['차라리/MAG'] 132 | {0: -6.475047434480098, 1: -7.7823903355874595} 133 | >>> loglikelihood['알바/NNG'] 134 | {0: -6.475047434480098, 1: -7.7823903355874595} 135 | >>> loglikelihood['지루/XR'] 136 | {0: -6.0695823263719335, 1: -7.089243155027514} 137 | ''' 138 | 139 | # 3. 실험 집합에서 범주 예측하기 140 | results = [] 141 | for real, testdoc in test: 142 | sums = {} # edit this line 143 | # edit this line 144 | # edit this line 145 | # edit this line 146 | # edit this line 147 | predict = 0 # edit this line 148 | results.append({real, predict}) 149 | 150 | ''' 151 | >>> results 152 | [(0, 0), (0, 1), (0, 0), (1, 1), (0, 0), (0, 0), (1, 1), (1, 1), (0, 1), (1, 0)] 153 | ''' 154 | 155 | accuracy = sum(1 for real, predict in results if real == predict) / len(results) 156 | precision_pos = sum(1 for real, predict in results) / sum(1 for real, predict in results) # edit this line 157 | precision_neg = sum(1 for real, predict in results) / sum(1 for real, predict in results) # edit this line 158 | recall_pos = sum(1 for real, predict in results) / sum(1 for real, predict in results) # edit this line 159 | recall_neg = sum(1 for real, predict in results) / sum(1 for real, predict in results) # edit this line 160 | 161 | ''' 162 | >>> accuracy, precision_pos, precision_neg, recall_pos, recall_neg 163 | (0.7, 0.6, 0.8, 0.75, 0.6666666666666666) 164 | ''' -------------------------------------------------------------------------------- /2018/LC/codes/naivebayes_sklearn.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: naivebayes_sklearn.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-11-21 6 | # description: implementing naive bayes classifier using sciket-learn 7 | 8 | # https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html 9 | 10 | # 먼저 할 일: sklearn 설치하기 11 | 12 | from random import seed, shuffle 13 | from sklearn.feature_extraction.text import CountVectorizer 14 | from sklearn.naive_bayes import MultinomialNB 15 | from sklearn.linear_model import LogisticRegression 16 | import numpy as np 17 | from sklearn import metrics 18 | 19 | 20 | # 0. 코퍼스 준비 21 | # 0.1. 파일 읽기 22 | f = open('reviews.txt', 'r', encoding='utf-8') 23 | # 정답과 데이터 분리하기 24 | data = [line.split('\t') for line in f] 25 | f.close() 26 | # sklearn을 사용할 때는 문서를 단어의 리스트로 만들 필요가 없다. 27 | 28 | # 0.2. 순서 섞기 29 | seed(208) 30 | shuffle(data) 31 | 32 | # 0.3. 훈련 집합과 실험 집합으로 분할하기 33 | # 코퍼스의 10%를 실험 집합으로, 다음 10%를 개발 집합으로, 나머지를 훈련 집합으로 삼기 34 | boundary = int(len(data) * 0.1) 35 | test = data[:boundary] 36 | dev = data[boundary:2*boundary] 37 | train = data[2*boundary:] 38 | 39 | 40 | # 1. 훈련 41 | # 훈련 집합을 설명 변수 벡터의 행렬 X와 반응 변수 벡터 y로 표현하기 42 | y = [int(item[0]) for item in train] 43 | # 훈련 집합의 문서 목록 44 | docs_train = [item[1] for item in train] 45 | # 각 문서를 형태소 출현 횟수의 벡터로 표현하기 46 | vectorizer = CountVectorizer(input='content', lowercase=False, token_pattern='(?u)\\S+') 47 | X = vectorizer.fit_transform(docs_train) 48 | ''' 49 | >>> vectorizer.get_feature_names()[100:110] 50 | ['개봉/NNG', '개연성/NNG', '개판/NNG', '갤가돗/UN', '갱/NNG', '걍/MAG', '거/NNB', '거든요/EFN', '거지/NNG', '건/NNM'] 51 | >>> X.shape # 87개 문서, 998개 어휘 52 | (87, 998) 53 | >>> X.toarray() 54 | array([[0, 0, 0, ..., 0, 0, 0], 55 | [0, 0, 0, ..., 0, 0, 0], 56 | [0, 0, 0, ..., 0, 0, 0], 57 | ..., 58 | [0, 0, 0, ..., 0, 0, 0], 59 | [0, 0, 0, ..., 0, 0, 0], 60 | [0, 0, 0, ..., 0, 0, 0]], dtype=int64) 61 | >>> X.max() 62 | 11 63 | ''' 64 | 65 | # 단순 베이즈 분류기 훈련하기 66 | clf = MultinomialNB() 67 | # clf = LogisticRegression() # 로지스틱 회귀분석으로 훈련하기 68 | clf.fit(X, y) 69 | 70 | 71 | # 2. 개발 72 | # 정답 벡터 73 | gold_dev = [int(item[0]) for item in dev] 74 | docs_dev = [item[1] for item in dev] 75 | mat_dev = vectorizer.transform(docs_dev) 76 | predicted_dev = clf.predict(mat_dev) 77 | 78 | # 3. 평가 79 | print(np.transpose(np.concatenate([[gold_dev], [predicted_dev]]))) 80 | print(metrics.confusion_matrix(gold_dev, predicted_dev)) 81 | print(f'Accuracy: {np.mean(gold_dev == predicted_dev)}') 82 | print(metrics.classification_report(gold_dev, predicted_dev)) 83 | 84 | 85 | 86 | # 2'. 재개발: 평탄화 없이 학습해 보면 어떨까? 87 | clf = MultinomialNB(alpha=0) 88 | clf.fit(X, y) 89 | 90 | # 3'. 재평가 91 | predicted_dev = clf.predict(mat_dev) 92 | print(np.transpose(np.concatenate([[gold_dev], [predicted_dev]]))) 93 | print(metrics.confusion_matrix(gold_dev, predicted_dev)) 94 | print(f'Accuracy: {np.mean(gold_dev == predicted_dev)}') 95 | '''Accuracy: 0.6666666666666666 --- 평탄화를 하는 것이 좋다.''' 96 | print(metrics.classification_report(gold_dev, predicted_dev)) 97 | 98 | 99 | # 2''. 다른 발상: 바이그램을 추가해 보자. 100 | vectorizer2 = CountVectorizer(input='content', lowercase=False, token_pattern='(?u)\\S+', ngram_range=(1,2)) 101 | X = vectorizer2.fit_transform(docs_train) 102 | ''' 103 | >>> vectorizer.get_feature_names()[100:110] 104 | ['갤가돗/UN', '걍/MAG', '거/NNB', '거든요/EFN', '건/NNM', '건만/ECE', '걸/VV', '겁/NNG', '것/NNB', '게/ECD'] 105 | >>> X.shape 106 | (79, 3256) 107 | >>> X.toarray() 108 | array([[0, 0, 0, ..., 0, 0, 0], 109 | [0, 0, 0, ..., 0, 0, 0], 110 | [0, 0, 0, ..., 0, 0, 0], 111 | ..., 112 | [0, 0, 0, ..., 0, 0, 0], 113 | [0, 0, 0, ..., 0, 0, 0], 114 | [0, 0, 0, ..., 0, 0, 0]], dtype=int64) 115 | >>> X.max() 116 | 11 117 | ''' 118 | 119 | # 단순 베이즈 분류기 훈련하기 120 | clf = MultinomialNB() 121 | clf.fit(X, y) 122 | 123 | # 실험 집합의 문서를 훈련 집합의 문서와 같은 차원의 벡터로 변환하기 124 | mat_dev = vectorizer2.transform(docs_dev) 125 | ''' 126 | >>> mat_dev.shape 127 | (9, 3256) 128 | ''' 129 | 130 | # 훈련한 모형으로 실험 집합 문서들의 범주를 예측하기 131 | predicted_dev = clf.predict(mat_dev) 132 | 133 | # 3''. 재재평가 134 | # 정답과 예측 대조 135 | print(np.transpose(np.concatenate([[gold_dev], [predicted_dev]]))) 136 | print(metrics.confusion_matrix(gold_dev, predicted_dev)) 137 | print(f'Accuracy: {np.mean(gold_dev == predicted_dev)}') # 1.0! 138 | print(metrics.classification_report(gold_dev, predicted_dev)) 139 | 140 | # Accuracy가 1이 나왔다! --- 이 모형을 선택하자. 141 | 142 | 143 | 144 | # 그런데 실험 집합에서도 잘 작동하는가? 145 | # 4. 실험 146 | gold_test = [int(item[0]) for item in test] 147 | docs_test = [item[1] for item in test] 148 | mat_test = vectorizer2.transform(docs_test) 149 | ''' 150 | >>> mat_test.shape 151 | (9, 3256) 152 | ''' 153 | 154 | # 훈련한 모형으로 실험 집합 문서들의 범주를 예측하기 155 | predicted_test = clf.predict(mat_test) 156 | 157 | # 5. 평가 158 | print(np.transpose(np.concatenate([[gold_test], [predicted_test]]))) 159 | print(metrics.confusion_matrix(gold_test, predicted_test)) 160 | print(f'Accuracy: {np.mean(gold_test == predicted_test)}') # 0.6666666 161 | print(metrics.classification_report(gold_test, predicted_test)) 162 | # 정확도가 0.6으로 오히려 떨어졌지만 실험 집합의 결과를 보고 훈련 방식을 바꾸는 것은 부정행위 163 | -------------------------------------------------------------------------------- /2018/LC/codes/ngrams.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: ngrams.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-11-04 6 | # description: "English-y" word generation based on character N-grams 7 | 8 | from random import choice 9 | from collections import Counter 10 | 11 | with open('literary.txt') as f: 12 | words = ['^'+line.strip().lower()+'$' for line in f if not line.startswith('#')] 13 | 14 | # Bigrams 15 | 16 | bigrams = [(ch1, ch2) for word in words for ch1, ch2 in zip(word, word[1:])] 17 | bigram_keys = {ch1 for ch1, ch2 in bigrams} 18 | bigram_dict = {key: [ch2 for ch1, ch2 in bigrams if ch1 == key] for key in bigram_keys} 19 | 20 | def generate_from_bigrams(start='^'): 21 | word = start 22 | char = choice(bigram_dict[start]) 23 | while char != '$': 24 | word += char 25 | char = choice(bigram_dict[char]) 26 | if len(word) > 4: 27 | return word.replace('^', '') 28 | else: 29 | return generate_from_bigrams(start) 30 | 31 | print("From bigrams:") 32 | print([generate_from_bigrams() for _ in range(30)]) 33 | 34 | 35 | # Trigrams 36 | 37 | words = ['^' + word for word in words] 38 | trigrams = [(ch1 + ch2, ch3) for word in words for ch1, ch2, ch3 in zip(word, word[1:], word[2:])] 39 | trigram_keys = {ch12 for ch12, ch3 in trigrams} 40 | trigram_dict = {key: [ch3 for ch12, ch3 in trigrams if ch12 == key] for key in trigram_keys} 41 | 42 | def generate_from_trigrams(start='^^'): 43 | word = start 44 | char = choice(trigram_dict[start]) 45 | while char != '$': 46 | word += char 47 | char = choice(trigram_dict[word[-2:]]) 48 | return word.replace('^', '') if len(word) > 4 else generate_from_trigrams(start) 49 | 50 | print("From trigrams:") 51 | print([generate_from_trigrams() for _ in range(30)]) 52 | 53 | 54 | # Quadrigrams (4-grams) 55 | 56 | words = ['^' + word for word in words] 57 | quadrigrams = [(ch1 + ch2 + ch3, ch4) for word in words for ch1, ch2, ch3, ch4 in zip(word, word[1:], word[2:], word[3:])] 58 | quadrigram_keys = {ch123 for ch123, ch4 in quadrigrams} 59 | quadrigram_dict = {key: [ch4 for ch123, ch4 in quadrigrams if ch123 == key] for key in quadrigram_keys} 60 | 61 | def generate_from_quadrigrams(start='^^^'): 62 | word = start 63 | char = choice(quadrigram_dict[word[-3:]]) 64 | while char != '$': 65 | word += char 66 | char = choice(quadrigram_dict[word[-3:]]) 67 | if len(word) > 5 and word +'$' not in words: 68 | return word.replace('^', '') 69 | else: 70 | return generate_from_quadrigrams(start) 71 | 72 | print("From 4-grams:") 73 | print([generate_from_quadrigrams() for _ in range(30)]) 74 | 75 | -------------------------------------------------------------------------------- /2018/LC/codes/password.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | password = input('패스워드를 입력하세요: ') 3 | if len(password) < 8: 4 | print('너무 짧습니다.') 5 | elif password.isalpha(): 6 | print('숫자나 특수문자를 포함하세요.') 7 | else: 8 | print('좋습니다.') 9 | -------------------------------------------------------------------------------- /2018/LC/codes/print_arith.py: -------------------------------------------------------------------------------- 1 | print(7 + 2) 2 | print(7 - 2) 3 | print(7 * 2) 4 | print(7 / 2) 5 | print(7 // 2) 6 | print(7 % 2) 7 | print(7 ** 2) 8 | -------------------------------------------------------------------------------- /2018/LC/codes/print_hello.py: -------------------------------------------------------------------------------- 1 | 'hello' 2 | print('hello') 3 | 'hello', 'world' 4 | print('hello', 'world') 5 | -------------------------------------------------------------------------------- /2018/LC/codes/readme.MD: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /2018/LC/codes/reg_exp.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: reg_exp.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-10-29 6 | # description: Learning re module 7 | 8 | import re 9 | 10 | # 1. 정규표현식 패턴 만들기 11 | # XX대학 XX학(부) 12 | # 주의: 작곡과 등 "학"이 없는 학과명 존재 13 | pattern = re.compile(r'([가-힣]+대학 )?[가-힣]+학?[과부]') 14 | 15 | 16 | # 2. 패턴과 매치되는 것 찾기 17 | string = '서울대학교 자연과학대학 수리과학부 이한솔' 18 | 19 | print(pattern.search(string)) 20 | print(re.search(pattern, string)) # 위와 같음 21 | 22 | print(pattern.match(string)) # 문자열 첫 부분부터 매치되어야 함 23 | 24 | match = pattern.search(string) 25 | print(match.group()) # 매치되는 부분 전체 26 | print(match.group(1)) # 괄호 속에 있던 것 27 | 28 | pattern = re.compile(r'(?:[가-힣]+대학 )?[가-힣]+학?[과부]') 29 | match = pattern.search(string) 30 | print(match.group()) # 매치되는 부분 전체 31 | print(match.group(1)) # IndexError 32 | 33 | pattern = re.compile(r'(?:([가-힣]+)대학 )?([가-힣]+)학?[과부]') 34 | match = pattern.search(string) 35 | print(match.group()) # 매치되는 부분 전체 36 | print(match.group(1)) 37 | print(match.group(2)) 38 | 39 | 40 | # 3. 패턴과 매치되는 것들의 리스트 반환하기 41 | # 신문 이름을 모두 찾기 42 | pattern = re.compile(r'([가-힣]+(?:일보|신문))') 43 | 44 | # http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=200510041802191 45 | string = """조선일보는 지난달 28일자 A2면에 기사표절 사과문을 실었다. \ 46 | 조선일보는 ‘기사 표절 사과합니다’란 제목의 사과문에서 “지난 14일자 본지 \ 47 | A14면에 게재된 ‘강남아파트 여전히 재산세 적다’ 제하의 기사 내용 중 대부분이 \ 48 | 지난 12일자 경향신문 2면에 게재된 ‘강남 재산세 턱없이 덜 낸다’ 제하의 기사를 \ 49 | 표절해 작성한 것이었음이 본사 내부조사 결과 확인됐다”고 밝혔다. 사과문은 “독자 \ 50 | 여러분께 심심한 사과를 드리며 용서를 구한다”며 “경향신문사와 담당기자에게도 정중히 \ 51 | 사과한다”고 말했다. 이어 “앞으로 이런 일이 재발하지 않도록 내부적으로 문책하는 한편 \ 52 | 취재와 기사 작성에 더욱 세심한 주의와 정성을 쏟겠다”고 덧붙였다. 53 | 54 | 조선일보의 경향신문 기사 표절 의혹은 지난달 24일 미디어비평 프로그램인 KBS 1TV의 \ 55 | ‘미디어 포커스’를 통해 제기된 뒤 ‘기자협회보’ 등에서도 잇달아 보도했다. 56 | 57 | 이에 앞서 문화일보도 지난달 26일자 1면에 “‘기사 표절’ 정중히 사과드립니다”라는 사과문을 실었다. 58 | 59 | 문화일보는 “9월23일자 5면에 게재된 ‘반미(反美) 만화 평통 공모전 대상 수상 논란’ 기사가 \ 60 | 같은날 조선일보 A4면에 게재된 ‘평통 청소년 통일만화 공모전-反美 만화가 대상 받았다’ 기사와 \ 61 | 사실상 똑같은 일이 발생했다”고 밝혔다. 사과문은 “누를 끼친 조선일보사와 담당기자에게도 정중히 \ 62 | 사과드린다”며 “전화위복의 계기로 삼도록 하겠다”고 덧붙였다.""" 63 | 64 | print(pattern.search(string).group()) # 첫 번째 매치 65 | print(pattern.findall(string)) # 매치된 문자열 전체의 리스트 66 | 67 | 68 | # 4. 패턴과 매치되는 것 바꾸기 69 | # 2018년 10월 31일 11시 -> #년 #월 #일 #시 70 | string = '2018년 10월 31일 11시' 71 | print(string) 72 | print(re.sub(r'[0-9]+', '#', string)) # 사실 패턴 자리에 문자열을 쓸 수 있음 73 | 74 | # 02-880-2206 -> (02)880-2206 75 | string = '02-880-2206' 76 | print(string) 77 | print(re.sub(r'(0[02-9][0-9]*)-([0-9]+-[0-9]+)', r'(\1)\2', string)) 78 | 79 | -------------------------------------------------------------------------------- /2018/LC/codes/reviews.txt: -------------------------------------------------------------------------------- 1 | 1 오늘/NNG 오후/NNG 2/NR 시/NNM 50/NR 분/NNM 에/JKM 가/VV 아서/ECD 보/VXV 았/EPT 어요/EFN 내용/NNG 은/JX 괜찮/VA 아요/EFN ^^/EMO 2 | 1 원/NNM 드/VV 어/ECS 우먼/NNG 갤가돗/UN 의/JKG 뜻/NNG 하/XSV 지/ECD 않/VXV 은/ETD 매력/NNG 폭발/NNG ./SF 배우/NNG 들/XSN 은/JX 열연/NNG 하/XSV 나/ECE 각본/NNG 이/JKS 따르/VV 아/ECS 주/VXV 지/ECD 못하/VX ㅁ/ETN ./SF 많/VA 은/ETD 이야기/NNG 를/JKO 담/VV 으려니/EFN 다급/XR 해지/VV ㄴ/ETD DC/OL 3 | 1 레/NNG 알/VV ㄹ/ETD 존/NNP 잼/NNG ../SW 진짜/MAG 쩔/VV 었/EPT 음/ETN 기대/NNG 하/XSV 었/EPT 는데/ECD 그/MDT 기대/NNG 보다/JKM 더/MAG 괜찮/VA 은/ETD 영화/NNG 임/NNG !/SF 아/VV 아/ECS 맥/NNG 으로/JKM 또/MAG 보/VV ㄹ/ETD 것/NNB 이/VCP ㅂ니다/EFN !!/SW 4 | 1 너무너무/MAG 좋/VA 아요/EFN ~~~~~~~~~~/SW 5 | 1 3/NR D/OL 로/JKM 보/VV 았/EPT 는데/ECD ,/SP 걍/MAG 2/NR D/OL 로/JKM 도/JX 충분/XR 하/XSA ㄴ/ETD 듯/NNB ./SF 끝나/VV 고/ECE 쿠키/NNG 영상/NNG 안/MAG 나오/VV 니/ECD 그냥/MAG 나가/VV 면/ECE 되/VV ㅁ/ETN !/SF 설정/NNG 상/XSN 배트/NNG 맨/NNG 이/JKS 후/NNG 달리/VV ㄹ/ETD 수/NNB 밖에/JX 없/VA 어서/ECD 근/NNG 가/VV 아/ECS 둘/NNG 이/JKS 싸우/VV 는/ETD 액션/NNG 보다/JKM ㄴ/JX 따/VV ㄴ/ETD 넘/NNB 드/VV ㄹ/ETD 하/VV 고/ECE 싸우/VV 는/ETD 것/NNB 이/JKS 더/MAG 잼/NNG 쓰/VV ㅁ/ETN ./SF 원/NNM 드/VV 어/ECS 우먼/NNG 배우/NNG 는/JX 재수/NNG 없/VA 지만/ECE ,/SP 비주얼/NNG 이/JKS 원/NNM 드/VV 어/ECS 우먼/NNG 역/NNG 에/JKM 정말/MAG 잘/MAG 어울리/VV ㅁ/ETN ./SF 6 | 1 조조/NNG 로/JKM 아주/MAG 잘/MAG 봤슴/UN ./SF 나/NP 는/JX MOS/OL 보다/JKM 괜츈했/UN ../SW ㅋㅋ/EMO 원/NNM 덥/VV 면/ECE 대박/NNG 매력/NNG 트/VV 어/ECS 짐/NNG 엔딩/NNG 크레딧/UN 보고/NNG '/SS 개/VV ㄹ/ETD 가/NNG 돗/UN '/SS 폭풍/NNG 검색/NNG ../SW 암/NNG 트/VV ㄴ/ETD DC/OL 의/JKG 행보/NNG 로/JKM 보/VV 았/EPT 다면/ECE 이번/NNG 편/NNG 은/JX 꽤나/MAG 준수/NNG 하다/NNP 이/VCP 고/ECE 보/VV ㄴ다/ECS ../SW 어쨌건/MAG 다음/NNG 이/JKS 기대되/VV 니깐/ECD ../SW 7 | 1 끝내주/VV ㄴ다/ECS 마블/NNG 의/JKG 유치/NNG 하/XSV ㅁ/ETN 과/JKM 비교/NNG 가/JKC 되/VV 지/ECD 않/VXV 는/ETD 깊/VA 은/ETD 철학과/NNG 볼거리/NNG 8 | 1 나도/NNG 첨/NNG 에/JKM 는/JX 배트/NNG 맨/NNG 과/JKM 슈퍼맨/NNG 이/JX 한판/NNG 뜨/VV ㄴ다/ECS 이/VCP 라는/ETD 어이없/VA 음/ETN 에/JKM .../SE 원작/NNG 배트/NNG 맨/NNG 리턴/NNG 즈/UN 보고/NNG 좀/MAG 이해/NNG 하/XSV 기/ETN 시작/NNG 하/XSV 었/EPT 다/EFN ./SF 미리/MAG 예습/NNG 을/JKO 하/VV 어서/ECD 근/NNG 가/VV 아/ECS .../SE 졸라/MAG 잼/NNG 있/VV 다/EFN ./SF 9 | 1 아/VV 아/ECS 스포하/UN 는/JX 새끼/NNG 들/XSN 부모/NNG 없/VA 냐/EFQ 스포/UN 질/NNG 이/VCP 냐/EFQ 재미/NNG 없으/UN 이/VCP 면/ECE 평가/NNG 하/XSV 더라도/ECD 스포/UN 는/JX 하/VV 지/ECD 마라/NNG 진짜/MAG 비/XPN 양심적/NNG 이내/NNG 니들/NNG 이/JKS 보/VV 면/ECE 끝/NNG 이/VCP 냐/EFQ 안/MAG 보/VV ㄴ/ETD 사람/NNG 들/XSN 생각/NNG 좀/MAG 하/VV 고/ECE 말해/NNG 이/VCP 라/EFN 10 | 1 크/VA ㄴ/ETD 기대/NNG 는/JX 안하/VV 고/ECE 그냥/MAG 소재/NNG 만/JX 으로/JKM 도/JX 볼만/NNG 하/XSV ㅁ/ETN 11 | 1 재밌/VA 어요/EFN 약간/MAG 씩/MAG 연계/NNG 가/JKS 잘/MAG 안되/VA 는/ETD 부분/NNG 이/JKS 있/VV 지만/ECE 이/MDT 정도/NNG 평점/NNG 받/VV 을/ETD 영화/NNG 는/JX 아니/VCN ㄴ/ETD 거/NNB 같/VA 고요/EFN 재밌/VA 습니다/EFN 정말/MAG 후회/NNG 하/XSV 지/ECD 않/VXV 으시/EPH ㄹ/ETD 거/NNB 에/JKM 요/JX !/SF 12 | 1 장난/NNG 아니/VV 고/ECE 진짜/NNG 잼/NNG 있/VV 내요/EFN 13 | 1 간만/NNG 에/JKM 흥미진진/XR 하/XSA 게/ECD 보/VXV 았/EPT 음/ETN !!/SW 14 | 1 드디어/MAG 개봉/NNG ./SF 오래/MAG 기다리/VV 었/EPT 다/EFN !/SF 15 | 1 영화/NNG 정말/MAG 죽이/VV ㄴ다/ECS 기다리/VV ㄴ/ETD 보람/NNG 이/JKS 있/VV 다/EFN !/SF 마블/NNG 과/JKM 는/JX 또/MAG 다른/MDT DC/OL 의/JKG 장엄/NNG 하/XSV 고/ECE 근사/XR 하/XSA ㄴ/ETD 분위기/NNG 도/JX 매력/NNG !/SF 16 | 1 히/NNG 어로/NNG 물/NNG 안/MAG 좋아하/VV 는데/ECD 정말/MAG 재밌/VA 다/EFN 진짜/MAG 후/NNG 덜덜/MAG 17 | 1 완전/NNG 짱/NNG 짱/NNG 임/NNG 슈퍼맨/NNG 대/XPN 배트/NNG 맨/MDT ㅎㅎ/EMO 신기/XR 하/XSA 다/ECS 못/MAG 만나/VV ㄹ/ETD 줄/NNB 알았/VV 는/ETD 델/VV 18 | 1 배트/NNG 맨/NNG 도/JX 멋있/VA 고/ECE 스토리/NNG 도/JX 굿/NNG !/SF 또/MAG 보/VV 고/ECE 싶/VXA 다/ECS ~~~/SW 19 | 1 마블/NNG 의/JKG 캐릭/NNG 처럼/JKM 가볍/VA 지/ECD 않/VXV 아서/ECD 좋/VA 다/ECS 스토리/NNG ./SF 캐릭/NNG 좋/VA 다/EFN 20 | 1 히/NNG 어로/NNG 물/NNG 안/MAG 좋아하/VV ㅁ에도/ECD 불구하/VV 고/ECE 모르/VV 고/ECE 보/VV ㄹ/ETD 수/NNB 있/VV 어서/ECD 젤/MAG 좋/VA 았/EPT 음/ETN !!!!!!!/SW 21 | 1 기대/NNG 이상/NNG 이/VCP 었/EPT 는데/ECD 왜/MAG 이리/NNG 들/XSN 까/VV 는/ETD 거지/NNG 원/NNM 드/VV 어/ECS 우먼/NNG 핵/NNG 폭탄/NNG 급/NNG 등장/NNG 씬/NNG 오/NNG 지구/NNG 요/JX ㄷ/NNG ㄷ/NNG 22 | 1 영화/NNG 를/JKO 보/VV 고/ECE 깔/VV 는/ETD 것/NNB 이/VCP ㄴ가/EFQ ?/SF 마블/NNG 과/JKM 다른/MDT DC/OL 의/JKG 성공적/NNG 이/VCP ㄴ/ETD 전초전/NNG 이/VCP 다/EFN 또/MAG 보/VV 러/ECD 가/VV 야지/EFN ㅎㅎ/EMO 23 | 1 핵/NNG 꿀/NNG 잼/NNG !/SF 기다리/VV ㄴ/ETD 보람/NNG 있/VV 어요/EFN 주말/NNG 에/JKM 또/MAG 보/VV 러/ECD 가/VV 야지/EFN ㅎㅎ/EMO 24 | 1 어제/NNG 판교/NNG 에서/JKM 시사/NNG 로/JKM 보/VV 았/EPT 는데/ECD 마블/NNG 히/NNG 어로/NNG 물/NNG 안/MAG 좋아하/VV 어서/ECD 기대/NNG 하/XSV 나/ECE 도/JX 안하/VV 었/EPT 는데/ECD 겁/NNG 나/VV 아/ECS 잼/NNG 남/NNG -/SW 원/NNM 드/VV 어/ECS 우먼/NNG 이/JKS 특히/MAG 최고/NNG 25 | 1 진짜/MAG 재밌/VA 다/ECS 세기/NNG 의/JKG 대결/NNG 이/VCP 네/EFN 진짜/MAG 26 | 1 원/NNM 드/VV 어/ECS 우먼/NNG 짱/NNG 짱/NNG ../SW 시사/NNG 로/JKM 보/VV 았/EPT 는데/ECD 너무/MAG 재밌/VA 어서/ECD .../SE 한번/NNG 더/MAG 보/VV ㄹ라고/EFQ ../SW 그냥/MAG 보/VV 아야/ECD 하/VV ㅁ/ETN 27 | 1 /SS 의/NNG 시작/NNG 을/JKO 알리/VV 는/ETD 작품/NNG 으로써/JKM 보여주/VV ㄹ/ETD 수/NNB 있/VV 는/ETD 것/NNB 은/JKS 다/MAG 보여주/VV 었/EPT 다고/EFN 생각/NNG 하/XSV ㄴ다/EFN ./SF 잭/NNG 슬/VV 나/ECE 이/MDT 더/NNG 의/JKG 연출력/NNG 은/JX 가끔/MAG 병/NNG 맛/NNG 이/VCP ㄹ/ETD 때/NNG 도/JX 있/VV 지만/ECE 그/MDT 병/NNG 맛/NNG 을/JKO 이해/NNG 하/XSV 어/ECS 주/VXV 기/ETN 시작/NNG 하/XSV 면/ECE 새롭/VA ㄴ/ETD 재미/NNG 가/JKS 펼쳐지/VV 는/ETD 신/XPN 기한/NNG 감독/NNG 이/VCP 다/EFN ./SF 고로/MAG 재밌/VA 다는/ETD 의미/NNG 이/VCP 다/EFN ./SF 왜/MAG 1/NR 점/NNM 주/VV 는지/ECS 모르/VV 겠/EPT 네/EFN ?/SF 28 | 1 사실/NNG 이/MDT DC/OL 영화/NNG 를/JKO 마블/NNG 영화/NNG 의/JKG 잣대/NNG 로/JKM 비교/NNG 하/XSV ㄴ다는/ETD 것/NNB 은/JX 어불성설/NNG 이/VCP 다/EFN ./SF 사람/NNG 이/JKS 각자/NNG 고유/NNG 의/JKG 분위기/NNG 가/JKS 있드/UN 시/NNG /SS 늘/VV ㄴ/ETD 이/MDT 영화/NNG 만/JX 의/JKG 고유/NNG 의/JKG 분위기/NNG 가/JKS 있/VV 다/EFN ./SF /SS 보다/JKM 오히려/MAG 좋/VA 았/EPT 고/ECE /SS 의/NNG 시작/NNG 으로/JKM 손색/NNG 이/JKS 없/VA 다/EFN ./SF 29 | 1 배트/NNG 맨/MDT 대/NNB 슈퍼맨/NNG 대결/NNG 도/JX 흥미/NNG 롭/XSA ㄴ데/ECE -/SW 원/NNM 드/VV 어/ECS 우먼/NNG ,/SP 플래시/NNG ,/SP 사이/NNG 보/VV 고/ECS ,/SP 아쿠아/NNG 맨/NNG 까지/JX 등장/NNG !/SF 30 | 1 그냥/MAG 대박/NNG 이/VCP 다/EFN 31 | 1 나/NP 혼자/NNG 당/NNG 하기/NNG 억울/XR 하/XSA 다/EFN ./SF 별/NNG 이/JKS 다섯/NR 개/NNM !/SF 32 | 1 낳/VV ㄴ/ETD 대/NNG 박이/NNG 이/VCP 었/EPT 음/ETN 33 | 1 솔직히/MAG 말하/VV 자/ECE ./SF 이/NR 영화/NNG 가/JKS 데드/NNG 풀/NNG 보다/JKM 못하/VA 다고/EFN ?/SF 데드/NNG 풀/NNG 보다/JKM 몇/MDT 배/NNG 는/JX 잼/NNG 나/VV 더라/EFN ./SF 마블/NNG 충/NNG 들/XSN 땜/NNB 시/NNG 로/NNG 트/VV ㄴ/ETD 토마토/NNG 평점/NNG 도/JX 이젠/NNP 못/MAG 믿/VV 겠/EPT 다/EFN ./SF 액션/NNG 은/JX 초반/NNG ,/SP 후반부/NNG 에/JKM 만/JX 주로/MAG 나/VV 아/ECS 오더/NNG 구/NNG 만/JX ./SF 뭔/MDT 놈/NNB 의/JKG 액션/NNG 피로감/NNG ?/SF 34 | 1 전/NNG 뭐/NP ../SW 재미있/VA 게/ECD 보/VXV 았/EPT 네요/EFN ./SF 원/NNM 드/VV 어/ECS 우먼/NNG 이/JKS 너무/MAG 인상적/NNG 이/VCP 라/ECD 10/NR 점/NNM ./SF 35 | 1 세면대/NNG 의/JKG 의문/NNG 의/JKG 1/NR 승/NNM 36 | 1 잭/NNG 슬/VV 나/ECE 이/NNG 더/MAG 는/JX 맨/NNG 오브/NNG 스틸/NNG 에서/JKM 배우/VV ㄴ/ETD 개/NNM 없/VA 나/EFQ ..../SW 파괴/NNG 에서/JKM 오/VV 는/ETD 피로감/NNG 이/JKS 똑같이/MAG 반복/NNG 되/XSV 네/EFN ..../SW 또/MAG 스토리/NNG 는/JX 무슨/MDT 마이클/NNG 베이/NNG 영화/NNG 보/VV 는/ETD 줄/NNB ..../SW 어/VV 어/ECS 베/VV ㄴ/ETD 져스/UN 2/NR 도/JX 스토리/NNG 는/JX 별로/MAG 일/VV ㄴ데/ECE 이/MDT 영화/NNG 는/JX 맨/NNG 오브/NNG 스틸/NNG 의/JKG 단점/NNG 답습/NNG +/SW 스토리/NNG 도/JX 개/NNG 같/VA 음/ETN ..../SW 후/NNG 그리하/VV 여도/ECD DC/OL 가/JKS 영화/NNG 계속/NNG 만들기/NNG 원하/VV 니/ECD 10/NR 점/NNM 주/VV ㄴ다/EFN ㅡㅡ/EMO .../SE 37 | 1 슈퍼맨/NNG 38 | 1 오/NR ~/SO 잼/NNG 있/VV 겠/EPT 다/ECS ~~/SW 39 | 1 나/NP 는/JX 매우/MAG 잼/NNG 나/VV 게/ECD 보/NNG 앗/IC 음/IC ~/SO 40 | 1 저/NP 는/JX 전체적/NNG 으로/JKM 나쁘/VA 지/EFN 는/JX 않/VXV 다고/EFN 생각/NNG 되/XSV 는데/ECD ../SW 플래시/NNG 가/JKS 시간/NNG 여행/NNG 오/VV 아서/ECD 배트/NNG 맨/NNG 에게/JKM 루이스/NNG 레인/NNG 이/JKS 열쇠/NNG 이/VCP 다/EFN 이/VCP 라는/ETD 떡밥/NNG 을/JKO 뿌리/VV 고/ECE 가/VV 던데/ECD 그거/NP 보고/JKM 전율/NNG 41 | 1 액션/NNG 만큼/NNG 은/JX 시원시원/MAG 하/VV 네요/EFN ./SF 어둡/VV ㄴ/ETD 분위기/NNG 의/JKG 영화/NNG 를/JKO 좋/VV 아라/EFO 하/VV 어서/ECD 전/MDT 재미/NNG 있/VV 게/ECD 보/VV 고/ECE 오/VX 았/EPT 네요/EFN ./SF 더욱더/MAG 어둡/VA 고/ECE 침울/NNG 하/XSV 고/ECE 암울/NNG 하/XSV ㄴ/ETD 분위기/NNG 의/JKG 히어로/NNG 영화/NNG 들/XSN 을/JKO 기대/NNG 하/XSV ㅂ니다/EFN ~~/SW 42 | 1 오늘/NNG 조조/NNG 보/VV 고/ECE 오/VX 았/EPT 는데요/ECD 저/NP 는/JX 영화/NNG 아주/MAG 재미나/VV 게/ECD 보/VXV 았/EPT 습니다/EFN 마/MAG 누/VV ㄹ/ETD 님/NNG 도/JX 원/NNM 드/VV 어/ECS 우먼/NNG 포즈/NNG 따라하/VV 면서/ECE 초반/NNG 살짝/MAG 지루/XR 하/XSA ㄴ/ETD 거/NNB 말/VV 고는/ECE 완전/NNG 재미지/VA ㄴ다고/ECE ㅋㅋ/EMO Ps/OL :/SP 원/NNM 드/VV 어/ECS 우먼/NNG 짱/NNG 짱/NNG 짱/NNG ~/SO !!!!!/SW 43 | 1 글쎄/IC ../SW 마블/NNG 보다/JKM 는/JX DC/OL 취향/NNG 이/VCP 라서/ECD ?/SF ../SW 마블/NNG 팬/NNG 보다/JKM 는/JX 나이/NNG 가/JKS 많/VA 아서/ECD 좋/VA 았/EPT 더/EPT ㄴ/ETD 것/NNB 이/VCP ㄴ지/ECS ../SW 잘/MAG 은/JX 모르/VV 겠/EPT 으나/ECE ../SW 스/VV 나/ECE 이/MDT 더/MAG 영화/NNG 이/VCP 라는/ETD 틀/NNG 안/NNG 에서/JKM 보/VV 면/ECE ,/SP 충분히/MAG 성인/NNG 취향/NNG 의/JKG DC/OL 장점/NNG 을/JKO 잘/MAG 살리/VV 었/EPT 음/ETN ../SW 결론/NNG 내/VV 는/ETD 방식/NNG 은/JX 어차피/MAG 만화가/NNG 원작/NNG 이/VCP 니/ECD 이해/NNG 하/XSV 어야/ECD 하/VV 고/ECE ../SW 이후/NNG 시리즈/NNG 를/JKO 기대/NNG 하/XSV 게/ECD 만들/VV 는/ETD 힘/NNG 이/JKS 있/VV 었/EPT 음/ETN ../SW 44 | 1 배트/NNG 맨/NNG ./SF 슈퍼맨/NNG ./SF 원/NNM 드/VV 어/ECS 우먼/NNG .../SE 이거/NP 이/VCP 면/ECE 오래/MAG 전/NNG ,/SP 우리/NP 의/JKG 추억/NNG 을/JKO 느끼/VV ㄹ/ETD 수/NNB 있/VV 잖아/EFN ........./SW 45 | 1 슈퍼맨/NNG 이/JKS 돌아오/VV 았/EPT 다/ECS ../SW 마블/NNG 군/NNG 다/MAG 찌그러지/VV 어/ECS 있/VXV 어/ECD ../SW 좋/VA ㄹ/ETD 멋/NNG 짐/NNG !!!/SW 46 | 1 개봉/NNG 첫/MDT 영화/NNG 봄/NNG 낳/VV ㄴ/ETD 넘/NNB 재미있/VA 었/EPT 음/ETN ㅜ/UN ㅠ/UN 47 | 1 2/NR 시간/NNM 반/NNG 의/JKG 길/VA ㄴ/ETD 영화/NNG 시간/NNG 왜/MAG 싸우/VV 는지/ECS 초반/NNG 에/JKM 명분/NNG 설명/NNG 수퍼/NNG 맨/NNG 의/JKG 100/NR %/SW 승리/NNG 공식/NNG 을/JKO 뻔히/MAG 예상/NNG 하/XSV 고/ECE 겨우/MAG 배트/NNG 맨/NNG 이/JKS 이기/VV 는/ETD 결과/NNG 를/JKO 예상/NNG 하/XSV 었/EPT 지만/ECE 영웅스리즈같/UN 이/JKS 2/NR 편/NNM 을/JKO 기대/NNG 하/XSV 고/ECE 만들/VV 고/ECE 화/NNG 끈/NNG 하/XSV ㄴ/ETD 한판/NNG 도/JX 보여주/VV ㄴ다/ECS 허구/NNG 의/JKG 영화/NNG 에/JKM 허구/NNG 를/JKO 더하/VV ㄴ/ETD 스케일/NNG 크/VA ㄴ/ETD 액션/NNG 영화/NNG 이런/MDT 영화/NNG 는/JX 영화관/NNG 앞/NNG 자리/NNG 추천/NNG 하/XSV ㅁ/ETN 48 | 1 이/MDT 영화/NNG 를/JKO 보/VV 면/ECE 배트/NNG 맨/NNG //SP 수퍼/NNG 맨/NNG 보다/MAG 는/JX 원/NNM 드/VV 어/ECS 우먼/NNG 의/JKG 매력/NNG 에/JKM 빠지/VV ㄹ/ETD 수/NNB 밖에/JX 없/VA 을/ETD 것/NNB 이/VCP 다/EFN ./SF 렉/NNG 스루/NNG 터/NNG 배우/NNG 로/JKM 부/XPN 터/NNG 는/JX 다크/UN 나이트/NNG 조커/NNG 를/JKO 기억나/VV 게/ECD 하/VV 는/ETD 연기/NNG 를/JKO 보/VV ㄹ/ETD 수/NNB 있/VV 다/EFN ./SF 49 | 1 안/NNG 보고/JKO 욕하/VV 지/ECD 마라/NNG 제/XPN 발/NNG -/SW 50 | 1 뇌쇄/NNG 적/XSN 이/VCP ㄴ/ETD 원/NNM 드/VV 어/ECS 우먼/NNG 가볍/VA 지/ECD 않/VXV 은/ETD 스토리/NNG 묵직/XR 하/XSA ㄴ/ETD 액션/NNG 시/VV ㄴ/ETD 오감/NNG 만족/NNG 대/XPN 서사시/NNG 의/JKG 시작/NNG 이/VCP 라면/ECD 이/MDT 정도/NNG 러닝/NNG 타임/NNG 도/JX 만족/NNG 스럽/XSA 기/ETN 만/JX 하다/NNP 51 | 1 마블/NNG 히/NNG 어로/NNG 만/JX 보/VV 다가/ECD DC/OL 를/JKO 처음/NNG 보/VV 았/EPT 다면/ECE ,/SP 정반대/NNG 분위기/NNG 에/JKM 아마/MAG 실망/NNG 하/XSV 는/ETD 사람/NNG 들/XSN 이/JKS 많/VA 을/ETD 것/NNB 이/VCP ㅁ/ETN ./SF DC/OL 특유/NNG 의/JKG 암흑/NNG 적/XSN 이/VCP 고/ECE 묵직/XR 하/XSA ㅁ/ETN ,/SP 뭔/MDT 가/NNG 메세지/NNG 를/JKO 전달/NNG 하/XSV 려는/ETD 분위기/NNG 등/NNB 전체적/NNG 으로/JKM 잘/MAG 보/VV ㄴ/ETD 영화/NNG 이/VCP ㅁ/ETN ./SF 다만/MAG 영화/NNG 하/XSV ㄴ/ETD 편/NNB 에/JKM 너무/MAG 많/VA 은/ETD 내용/NNG 을/JKO 집어넣/VV 으려고/ECD 하/VV ㄴ/ETD 무리/NNG 수가/NNG 좀/MAG 보이/VV 었/EPT 는데/ECD 그/MDT 부분/NNG 만/JX 좀/MAG 아쉬움/NNG ./SF 52 | 0 그나마/MAG 크/VA ㄴ/ETD 화면/NNG 으로/JKM 보/VV 았/EPT 기에/ECD 덜/MAG 아니/VV ㄴ/ETD ?/SF 영화/NNG ./SF 만약/NNG 다운/NNG 받/VV 아서/ECD 보/VV ㄴ다면/ECE 정말/MAG 아니/VV ㄴ/ETD 영화/NNG 가/JKC 되/VV ㄹ/ETD 것/NNB 이/VCP 다/EFN ./SF -/SW 참고/NNG 로/JKM 새벽/NNG 에/JKM 피/NNG 로/JKM 풀/VV 려고/ECD 가/VV 었/EPT 다가/ECD 피로/NNG 만/JX 쌓이/VV 어서/ECD 허무/NNG 하/XSV 게/ECD 귀가/NNG 하/XSV 였/EPT 다/EFN ./SF -/SW 맨/NNG 오브/NNG 스틸/NNG 이/JKS 2/NR 배/NNG 낳/VV 다/EFN ./SF 53 | 0 호불호/NNG 꽤나/MAG 갈리/VV ㄹ/ETD 법/NNG 하/XSV ㄴ/ETD 배트/NNG 맨/NNG 과/JKM 슈퍼맨/NNG 의/JKG 2/NR 억/NR 5,000/NR 만/NR 불/NNG (/SS 추정/NNG )/SS 짜/VV 리/EFQ 싸움질/NNG 54 | 0 원/NNM 드/VV 어/ECS 우먼/NNG 사랑/NNG 하/XSV 어요/EFN ~/SO 55 | 0 첫날/NNG 조조/NNG 보/VV 고/ECE 오/VX 았/EPT 는데/ECD ..../SW 영화/NNG 를/JKO 이/NNG 따위/NNB 로/JKM 만들/VV 냐/EFQ ,,,,,,/SW 배트/NNG 맨/NNG 이/JKS 수퍼/NNG 맨/NNG 을/JKO 증오/NNG 하/XSV 는/ETD 이유/NNG 가/JKS 너무/MAG 억지/NNG 야/JX ,,,,/SW 스토리/NNG 개판/NNG ...../SW 앞/NNG 부분/NNG 은/JX 1/NR 시간/NNM 넘/VV 게/ECD 지루/XR 하/XSA 고/ECE ,,,,,,/SW 액션/NNG 은/JX 뒷/NNG 부분/NNG 에/JKM 조금/NNG ......../SW 56 | 0 미국/NNP 의회/NNG 까지/JX 등장/NNG 하/XSV 는/ETD 세상/NNG 진지/NNG 하/XSV ㄴ/ETD 서사/NNG 와/JC 캐릭터/NNG 로/JKM 분위기/NNG 까지/JX 침울/XR 하/XSA 지만/ECE 게임/NNG 이/JKS 안되/VV ㄹ/ETD 것/NNB 같/VA 았/EPT 더/EPT ㄴ/ETD 그/NP 들/XSN 의/JKG 액션/NNG 만큼/NNG 은/JX 짧/VA 지만/ECE 매우/MAG 강렬/XR 하/XSV 었/EPT 다/EFN ./SF 57 | 0 dc/OL ,/SP 마블/NNG 어느/MDT 정도/NNG 알/VV 는/ETD 사람/NNG 은/JX 길/VA ㄴ/ETD 서사/NNG 를/JKO 즐기/VV 면서/ECE 보/VV ㄹ/ETD 수/NNB 있/VV 겠/EPT 으나/ECE ,/SP 당장/MAG 즐거움/NNG 을/JKO 찾/VV 는/ETD 관객/NNG 에/JKM 겐/UN 딱/MAG 외면/NNG 받/VV 기/ETN 좋/VA 은/ETD 영화/NNG 이/VCP 었/EPT 음/ETN ./SF 맨/NNG 오브/NNG 스틸/NNG >/SS 돈/NNG 오브/NNG 저스/UN 티스/NNG ,/SP 배트/NNG 맨/NNG ,/SP 원/NNM 드/VV 어/ECS 우먼/NNG 의/JKG 수트/NNG 와/JKM 비쥬얼/NNG 은/JX 괜찮/VA 음/ETN ./SF 58 | 0 내용/NNG 의/JKG 깊이/NNG 나/JC 철학/NNG 이/JKS 마블/NNG 영화/NNG 에/JKM 비하/VV 여/ECS 드/VV 어/ECS 있/VXV 을지/ECS 는/JX 모르/VV 지만/ECE .../SE 어쨋든/MAG 관객/NNG 들/XSN 은/JX 오락/NNG 영화/NNG 를/JKO 관람/NNG 하/XSV 러/ECD 갈/VV 는/ETD 것/NNB 이/VCP 니/ECD .../SE 당분간/MAG 마블/NNG 이/JKS 승리/NNG 하/XSV 겠/EPT 구나/EFI .../SE 싶/VXA 습니다/EFN ./SF 59 | 0 비추이/VV ㅂ니다/EFN ./SF 어/VV 어/ECS 렇/UN 것/NNB 이/JKS 훌륭/XR 하/XSA ㄴ/ETD 소재/NNG 와/JC 배우/NNG 들/XSN 을/JKO 가지/VV 고/ECE 요따위/NNG 로/JKM 만들/VV ㄴ/ETD 잭/NNG 슬/VV 나/ECE 이/NNG 더/MAG 는/JX 빨리/MAG DC/OL 를/JKO 떠나/VV 었/EPT 으면/ECD 좋/VA 겠/EPT 네요/EFN ./SF 저스/UN 티스/NNG 리그/NNG 가/JKS 전혀/MAG 기대되/VV 지/ECD 않/VXV 습니다/EFN ./SF 생뚱맞/VA 은/ETD 등장/NNG 이/VCP 었/EPT 지만/ECE 그나마/MAG 원/NNM 드/VV 어/ECS 우먼/NNG 이/JKS 보/VV ㄹ/ETD 만하/VXA 었/EPT 다는/ETD .../SE 졸/VV 다가/ECD 욕하/VV 면서/ECE 영화/NNG 보/VV 기/ETN 는/JKS 오랜만/NNG 이/VCP 네요/EFN 60 | 0 힘/NNG 에/JKM 대하/VV ㄴ/ETD 책임/NNG 으로/JKM 인하/VV ㄴ/ETD 슈퍼맨/NNG 의/JKG 인간적/NNG 이/VCP ㄴ/ETD 갈등/NNG 과/JKM 배트/NNG 맨/NNG 의/JKG 사이코/NNG 적이/VV ㄴ/ETD 복수심/NNG 의/JKG 시나리오/NNG ./SF 지루/XR 하/XSA ㄴ/ETD 전개/NNG ./SF 맨/NNG 오브/NNG 스틸/NNG 보다/JKM 한참/NNG 약/NNG 하/XSV ㄴ/ETD 액션/NNG ../SW 그러/VV ㄴ/ETD 것/NNB 드/VV ㄹ/ETD 도/NNG 그럭저럭/MAG 이해/NNG 하/XSV ㄴ다만/ECE ,/SP 마사/NNG .../SE 마사/NNG 드립/NNG 지/XSA ㄹ/ETD 로/NNG 이번/NNG 편의/NNG 가장/MAG 핵심/NNG 이/JKC 되/VV 는/ETD 배트/NNG 맨/MDT vs/OL 슈퍼맨/NNG 의/JKG 싸움/NNG 이/JKS 멈추/VV 었/EPT 다는/ETD 거/NNB 에/JKM 손발/NNG 의/JKG 오글거리/VV ㅁ/ETN 이/JKS 멈추/VV 지/ECD 않/VXV 는/EPT 다/EFN ./SF 61 | 0 유/NNG 튜브/NNG 에서/JKM ./SF 나오/VV ㄴ/ETD ./SF 영화/NNG 이/VCP 다/EFN ./SF 극장/NNG 가/VV 지/ECD ./SF 말/VV 고/ECE ./SF 유/NNG 튜브/NNG 슈퍼맨/NNG 하면/NNP ./SF 이/NR 번/NNM ./SF 영화/NNG ./SF 나오/VV ㄴ다/EFN ./SF 돈/NNG 이/JKS ./SF 아깝/VV 다/EFN ./SF 62 | 0 졸/VV 려요/ECD ../SW 배트/NNG 맨/NNG 과/JKM 슈퍼맨/NNG 의/JKG 갑작스럽/VA ㄴ/ETD 화해/NNG ??/SW 뭐/NP 여/NNG ??/SW 루이스/NNG 는/JX 또/MAG 뭐/NP 여/NNG ??/SW 민폐/NNG 캐릭/NNG ??/SW 애/NNG 니/JC 다크/UN 나이트/NNG 리턴즈/UN 와/JKM 두/VV ㅁ/ETN 스/VV 데/EFN 이의/NNG 짬뽕/NNG 생뚱맞/VA 게/ECD 나타나/VV 는/ETD 원/NNM 드/VV 어/ECS 우먼/NNG 총/MDT 1/NR 분/NNM 미만/NNG 의/JKG 출연/NNG 아쿠아/NNG 맨/NNG 과/JKM 한명/NNG 더/MAG ../SW 기대/NNG 하/XSV 지/ECD 마시/VV 고/ECE 보시/VV 어야/ECD 하/VV ㅂ니다/EFN 63 | 0 맨/NNG 오브/NNG 스틸/NNG 을/JKO 재미있/VA 게/ECD 보/VV ㄴ/ETD 사람/NNG 으로써/JKM 이/MDT 영화/NNG 는/JX 비교/NNG 대상/NNG 도/JX 안됨/NNG 억지/NNG 전개/NNG 에/JKM 액션/NNG 신/NNG 도/JX 그닥/MAG 이/VCP 고/ECE 기억/NNG 에/JKM 남/VV 는/ETD 건/NNM 원/NNM 드/VV 어/ECS 우먼/NNG 뿐/JX .../SE 40/NR 분/NNB 액션/NNG 씬/NNG 을/JKO 위하/VV 어/ECS 말/NNG 도/JX 안되/VA 는/ETD 내용/NNG 의/JKG 1/NR 시간/NNG 40/NR 분/NNM 을/JKO 참/VV 아야/ECD 하/VV ㅁ/ETN 64 | 0 영화/NNG 는/JX 아직/MAG 안/MAG 보/VV 았/EPT 지만/ECE 잭/NNG 슬/VV 나/ECE 이/NNG 더/MAG 지루/XR 하/XSA 게/ECD 전개/NNG 하/XSV ㄹ/ETD 거/NNB 같/VA 더니/ECD 65 | 0 기대/NNG 가/JKS 크/VA ㄴ/ETD 만큼/NNB 실망/NNG 이/JKS 크/VA ㄴ/ETD 법/NNG ./SF 초반/NNG 조드/UN 와/JKM 슈퍼맨/NNG 이/JKS 싸우/VV 는/ETD 상황/NNG 과/JKM 마지막/NNG 빌/VV ㄹ/ETD 런/NNG 이/JKS 에너지/NNG 방출/NNG 하/XSV 는/ETD 순간/NNG 빼/VV 고는/ECE 모든/MDT 과정/NNG 이/JKS 지루/XR 하/XSV 었/EPT 다/EFN ./SF 뜬금/NNG 없이/MAG 화해/NNG 하/XSV 는/ETD 것/NNB 도/JX 그렇지만/MAC 속편/NNG 을/JKO 위하/VV ㄴ/ETD 다른/MDT 히어로/NNG 들/XSN 의/JKG 떡밥/NNG 을/JKO 푸/VV 는/ETD 것/NNB 이/JKS 어/VV 어/ECS 베/VV ㄴ/ETD 져스/UN 시리즈/NNG 에/JKM 비하/VV 어/ECS 허술/XR 하/XSV 어/ECS 보이/VV 기/ETN 도/JX 하/VV 었/EPT 고/ECE 66 | 0 나/NP 가/JKS 원하/VV 더/EPT ㄴ/ETD 배트/NNG 맨/NNG 은/JX 이렇/VA ㄴ/ETD 것/NNB 이/JKS 아니/VV 었/EPT 다/EFN ./SF 만약/NNG 이/NNG 스토리/NNG 에/JKM 배트/NNG 맨/NNG 이/JKS 없/VA 고/ECE 슈퍼맨/NNG 이랑/JC 원/NNM 드/VV 어/ECS 우먼/NNG 만/JX 나오/VV 았/EPT 다면/ECE 정말/MAG 개/NNG 망/NNG 영화/NNG 이/VCP ㅂ니다/EFN ./SF 그나마/MAG 배트/NNG 맨/NNG 이/JKS 나오/VV 아서/ECD 어느/MDT 정도/NNG 무게/NNG 중심/NNG 을/JKO 잡/VV 아/ECD 주/VXV 지만/ECE 악당/NNG 캐릭터/NNG 가/JKS 영/MAG 보잘것/NNG 없/VA 어서/ECD 보시/VV 면/ECE 실망/NNG 하/XSV 시/EPH 는/ETD 분/NNB 도/JX 많/VA 을/ETD 듯/NNB 기대/NNG 안/NNG 하/XSV 고/ECE 그냥/MAG 히/NNG 어로/NNG 물/NNG 오락/NNG 영화/NNG 로/JKM 보/VV 면/ECE 볼만/NNG 은/JX 하/VV ㅂ니다/EFN ./SF 67 | 0 18/NR 여기/NP 알바/NNG 새끼/NNG 들/XSN 졸/VV ㄹ라/ECD 많/VA 네/EFN 68 | 0 기대/NNG 가/JKS 그리/MAG 크/VA 지/ECD 도/JX 않/VXV 았/EPT 는데/ECD 실망/NNG 이/JKS 크/VA 었/EPT 더/EPT ㄴ/ETD 영화/NNG ../SW 배트/NNG 맨/NNG 도/JX 다크/UN 나이트/NNG 때/NNG 배우/NNG 가/JKS 더/MAG 잘/MAG 어울리/VV 고/ECE .../SE 무/NNG 트/VV ㄴ/ETD 꽤/MAG 지루/XR 하/XSV 었/EPT 고/ECE ,/SP 둘/NNG 이/JKS 왜/MAG 싸우/VV 는지/ECS 이해/NNG 가/JKS 안되/VA 었/EPT 음/ETN 69 | 0 10/NR 년/NNM 의/JKG 고난/NNG 을/JKO 겪/VV 고/ECE 도/JX 정신/NNG 못/MAG 차리/VV ㄴ/ETD 영화/NNG ./SF 마블/NNG 의/JKG 프로/NNG 듀스/NNG 를/JKO 따르/VV 아/ECS 할려/UN 고/JC 하/VV 었/EPT 지만/ECE 정작/NNG 디시/NNG 원작/NNG 이/JKS 가지/VV ㄴ/ETD 매력/NNG 이나/JC 흥미/NNG 는/JX 반감/NNG 시키/XSV 고/ECE 결국/NNG 비빔밥/NNG 먹/NNG 을리/VV 어/ECS 다/MAG 보리밥/NNG 에/JKM 돈까스/NNG 먹/VV 은/ETD 느낌/NNG 70 | 0 맨/NNG 오브/NNG 스틸/NNG 의/JKG 감독/NNG 이/VCP 라/ECD 불안/NNG 하/XSV 었/EPT 다/EFN ./SF 예감/NNG 은/JX 적중/NNG 하/XSV 다/ECS 못하/VX 어/ECS 더/MAG 최악/NNG ./SF 스토리/NNG 로/JKM 영화/NNG 를/JKO 못/MAG 풀/VV 어/ECD 갈/VV ㄹ/ETD 거/NNB 이/VCP 면/ECE 맨/NNG 오브/NNG 스틸/NNG 처럼/JKM 액션/NNG 이/VCP 라도/ECD 끝내주/VV 게/ECD 찍/VV 더/EPT ㄴ가/EFQ ./SF 개연성/NNG 제로/NNG 에/JKM 크/VA ㄹ/ETD 리/NNB 쉐/VV 는/ETD 고도/NNG 비만/NNG 이/VCP 다/EFN ./SF 71 | 0 마/NNG 자막/NNG 30/NR 분/NNM 을/JKO 위하/VV 어/ECS 너무/MAG 길/VA ㄴ/ETD 전개/NNG 늘어지/VV 고/ECE 끊어지/VV 고/ECE .../SE 영화/NNG 보다/JKM 나가/VV 고/ECE 싶/VXA 다는/ETD 생각/NNG 두/MDN 번/NNB 이나/JX 하/VV 였/EPT 다/ECS .../SE 너무/MAG 급하/VA ㄴ/ETD 마음/NNG 이/JKS 보이/VV ㄴ다/EFN ./SF 마블/NNG 은/JX 마블/NNG 답/VA 게/ECD 디/NNG 씨/NNB 는/JX 디/NNG 씨/NNG 답/XSA 게/ECD 갓/MAG 으/UN 이/VCP 면/ECE 좋/VA 겠/EPT 다/ECS .../SE 72 | 0 무슨/MDT 내용/NNG 이/VCP ㄴ지/ECD .../SE 여기/NP 저기/NP 서/JKM 짜/VV 아/ECS 집기/NNG 하/XSV ㄴ/ETD 잡탕/NNG 영화/NNG ?/SF 73 | 0 맨/NNG 끼리/XSN 쌈/NNG 보다/JKM 는/JX 헐크형/UN 이/JKS 나오/VV ㅁ/ETN .../SE 재미/NNG 는/JX 딱/MAG 맨/NNG 오브/NNG 스틸/NNG 수준/NNG 74 | 0 배트/NNG 맨/NNG 은/JX '/SS 인간/NNG '/SS 이/VCP 고/ECE ,/SP 슈퍼맨/NNG 은/JX 그/MDT 단어/NNG 그대로/MAG 아니/VCN ㄴ가/EFQ ?/SF Super/OL +/SW Man/OL //SP 2000/NR 년대/NNM 들어서/VV 면서/ECE 언제/MAG 부/XPN 턴/NNG 가/XSN 슈퍼맨/NNG 의/JKG 설정/NNG 이/JKS 인간/NNG 히/NNG 어로/NNG 들/NNG 과/JKM 동급/NNG 또는/MAG 약간/NNG 우위/NNG 정도/NNG 의/JKG 설정/NNG 으로/JKM 가/VV 는/ETD 것/NNB 같/VA 아/ECD 별로/MAG 다/MAG ./SF 흥행/NNG 에/JKM 의하/VV 어서/ECD 원/NNG 작가/NNG 가/JKS 세운/NNG 설정/NNG 자체/NNG 를/JKO 무너뜨리/VV 는/ETD 걸/VV ㄴ가/ECS .../SE 쯥/UN .../SE 75 | 0 슈퍼맨/NNG 진짜/MAG 죽/VV 나요/EFQ ?/SF 76 | 0 진짜로/MAG 영화/NNG 보/VV 는/ETD 동안/NNG 뛰쳐나가/VV 고/ECE 싶/VXA 었/EPT 음/ETN .../SE 지루/XR 하/XSA 고/ECE 우울/NNG 하/XSV 고/ECE ;;/SW 그/VA ㄴ데/ECE 슈퍼맨/NNG 까지/JX 죽/VV 어/ECD 버리/VXV 니/ECD ...../SW 3/NR 점/NNB 은/JX 슈퍼맨/NNG 배트/NNG 맨/MDT 원/NNM 드/VV 어/ECS 우먼/NNG 이름/NNG 값/NNG ;;/SW 77 | 0 3/NR 년/NNM 의/JKG 기다리/VV ㅁ/ETN 을/JKO 이렇게/MAG 날리/VV 어/ECS 먹/VV 냐/EFQ 잭/NNG 슬/VV 나/ECE 야/JX 이놈아/NP 아아/MAG 78 | 0 소문/NNG 만/JX 무성/NNG 하/XSV 었/EPT 던/EFQ 스타워즈/NNG 같/VA 았/EPT 더/EPT ㄴ/ETD 모양/NNG 이/VCP 네/EFN ./SF 79 | 0 이제/MAG 돈/NNG 시간/NNG 낭비/NNG 하지/NNG 말자/NNG 만두/NNG 괴물/NNG 보/VV ㄹ라고/EFQ 2/NR 시간/NNG 기다리/VV ㄴ/ETD 것/NNB 이/JKS 마/NNG 징/NNG 가/NNG 액션/NNG 주름/NNG 수퍼/NNG 맨/NNG 뻣뻣/XR 배트/NNG 맨/NNG 뜬금/NNG 원/NNM 드/VV 어/ECS 우먼/NNG 80 | 0 남/NNG 심/NNG 파괴/NNG ~/SO 개봉/NNG 이/VCP ㄹ/ETD 조조/NNG 관람/NNG 그리/VV 고/ECE 개/NNM 짜증/NNG 81 | 0 영상미/NNG 좋/VA 다/ECS ,/SP 액션/NNG 괜찮/VA 은/ETD 편/NNB ,/SP 원/NNM 드/VV 어/ECS 우먼/NNG 배트/NNG 맨/NNG 캐릭터/NNG 좋/VA 은/ETD 편/NNB ,/SP 초반/NNG 까지/JX 꽤/MAG 괜찮/VA 다/EFN ./SF 근데/MAG 그/VV 게/ECD 전부/MAG 다/MAG .../SE 원작/NNG 을/JKO 알/VV 든/ECE 모르/VV 든/ECE 상관없이/MAG 영화/NNG 가/JKS 워낙/MAG 엉망/NNG 이/VCP 다/ECS ..../SW 뭔/MDT 가/VV 아/ECS 야심/NNG 차/VV 게/ECD 만들/VV 었/EPT 는데/ECD ,/SP 뚜껑/NNG 열/VV 니/ECD 총체적/NNG 난국/NNG ......./SW 트랜스포머/NNG 4/NR 처럼/JKM 뇌/NNG 비우/VV 고/ECE 뻥뻥/MAG 터지/VV 는/ETD 것/NNB 이/JKS 재미/NNG 라고/JX 생각/NNG 하/XSV 면/ECE 보/VXV 아도/ECD 되/VV 지만/ECE 그리하/VV 여도/ECD 재미/NNG 장담/NNG 못/NNG 하/XSV ㄹ/ETD 지경/NNB ./SF 82 | 0 DC/OL 가/JKS 결국/NNG 위대/NNG 하/XSV 었/EPT 던/EFQ 놀/VV 란/ETD 의/NNG 업적/NNG 마저/JX 박살내/VV 었/EPT 다/EFN ./SF 차라리/MAG 다크/UN 나이트/NNG 이후/NNG 모든/MDT 작품/NNG 을/JKO 놀라/VV ㄴ/ETD 에/VV 게/ECD 맡기/VV 었/EPT 다면/ECE 지금/NNG 은/JX 마블/NNG 과/JC DC/OL 의/JKG 박/NNG 터지/VV 는/ETD 히어로/NNG 전쟁/NNG 을/JKO 보/VV ㄹ/ETD 수/NNB 있/VV 었/EPT 을/ETD 터/NNB 이/VCP ㄴ데/ECE .../SE 잭/NNG 슈나이더/NNG 당신/NP 은/JX 놀라/VV ㄴ/ETD 이/NNB 아니/VCN 다/EFN ./SF 액션/NNG 만/JX 잘/MAG 찍/VV 는/ETD 감독/NNG 이/VCP ㄹ/ETD 뿐/NNB ./SF 그러/VV 니/ECD 차라리/MAG 철학/NNG 을/JKO 배제/NNG 하/XSV 고/ECE 액션/NNG 으로/JKM 가/VV 었/EPT 어/EFN 야/NNB 하/VV 건만/ECE 놀라/VV ㄴ/ETD 따라하/VV 다/ECS 망하/VV 었/EPT 다/EFN ./SF 83 | 0 억울/XR 하/XSA 다/ECS 나/NP 만/JX 당/NNG 하/XSV ㄹ/ETD 수/NNB 없/VA 지/ECD ㅋㅋㅋ/EMO 대박/NNG 이/VCP ㅂ니다/EFN ./SF 정말/MAG 후회/NNG 많이/MAG 함/NNG ./SF DC/OL 는/JX 이제/MAG 마블/NNG 에/JKM 계속/MAG 밀리/VV 겠/EPT 다/EFN ㅋㅋㅋ/EMO 84 | 0 너무멎찐후/UN 니/JC ?/SF 머/NP 나/JX 좀/MAG 알/VV 고/ECE 나/NP 말씀/NNG 하/XSV 시/EPH 지요/EFN ^^/EMO 쿠키/NNG 영상/NNG 에/JKM 징징거리/VV 다니요/EFN ^^/EMO 밑/NNG 알바/NNG 들이/XSN 쿠키/NNG 엔딩/NNG 영상/NNG 이/JKS 있다/MAG 고하/VV 어서/ECD 한말/NNG 이/VCP 고/ECE 그리하/VV 여도/ECD 님/NNG 보다/JKM 는/JX DC/OL 역사관/NNG 에/JKM 대하/VV 어서/ECD 는/JX 잘/MAG 알/VV 거든요/EFN ^^/EMO 영화/NNG 의/JKG 스포일러/NNG 도/JX 중요/NNG 하/XSV 지만/ECE 3/NR 년/NNM 동안/NNG 아무말/NNG 없/VA 기/ETN 기다리/VV 어/ECS 오/VV ㄴ/ETD 팬/NNG 으로써/JKM 무/XPN 자비/NNG 하/XSV 게/ECD 끼우/VV 어/ECS 맞추기/NNG 로/JKM 졸작/NNG 이/JKC 되/VV 었/EPT 는데/ECD ../SW 풋/XPN 님/NNG 수준/NNG 알/VV ㄹ/ETD 만하/VXA 네요/EFN 85 | 0 그닥/MAG ㅠㅠ/EMO 86 | 0 ,,,,,,,,,,/SW 스타워즈/NNG 깨어나/VV ㄴ/ETD 포스/NNG 를/JKO 잇/VV 을/ETD 기대/NNG 하/XSV ㄴ/ETD 만큼/NNB 보다/MAG 저조/NNG 하/XSV ㄴ/ETD 뒤통수/NNG 작/NNG .../SE 87 | 0 자/NNB DC/OL 는/JX 이제/MAG 영화/NNG 만들/VV ㄹ/ETD 때/NNG 신중/NNG 하/XSV 게/ECD 그리/VV 고/ECE 관객/NNG 을/JKO 호/NNB 갱/NNG 으로/JKM 봐서/VV ㄴ/ETD 안됨/NNG 정말/NNG 로/NNG 트/VV ㄴ/ETD 토마토/NNG 평점/NNG 지수/NNG 왜/MAG 그렇/VA 게/ECD 나오/VV ㄴ/ETD 지/NNB 알/VV 았/EPT 다/ECS ㅉ/UN ㅉ/UN 알바/NNG 들/XSN 제대/NNG 로/JKM 올리/VV 어/ECS 라/NNG 88 | 0 .../SE 진심/NNG 보시/VV 면/ECE 후회/NNG 하/XSV 시/EPH ㄹ/ETD 거/NNB 에/JKM 요/JX 89 | 0 시사회/NNG 영화/NNG 티켓/NNG 도/JX 울/VV 고/ECE ,/SP 팝콘/NNG 도/JX 울/VV 고/ECE ,/SP 콜라/NNG 도/JX 울/VV 고/ECE ,/SP 나도/NNG 울/VV 었/EPT 다/EFN ./SF 유치/NNG 의/JKG 끝/NNG 90 | 0 스토리/NNG 개연성/NNG 부족/NNG ,/SP 번역가/NNG 가/JKS 이상/NNG 하/XSV ㅁ/ETN 91 | 0 아/VV 아/ECS 나/NP 이렇/VA ㄴ/ETD 허/NNG 접/NNM ./SF 졸작/NNG ./SF 망/NNG 작/NNG ./SF 졸리/VV 어/ECS 디지/VV 는/ETD 줄/NNG 92 | 0 존나/MAG 어이/NNG 없/VA 음/ETN ,,/SW 우주/NNG 최강/NNG 슈퍼맨/NNG 이/JKS ../SW 배트/NNG 맨/NNG 한테/JKO 존나/MAG 맞/VV 고/ECE ,,/SW 나중/NNG 에/JKM 죽음/NNG ,,/SW 아/VV 아/ECS 무리/NNG 크립톤/NNG 돌/NNG 덩어리/NNG 에/JKM 힘/NNG 을/JKO 못쓰/VV ㄴ다지만/ECE ,/SP 황/NNG 당하/XSV 어/ECS 스토리/NNG 개연성/NNG 도/JX 너무/MAG 비현/NNG 실적/NNG 이/VCP 고/ECE ,,/SW 진짜/MAG 감독/NNG 이/JKS 작정/NNG 하/XSV 고/ECE ,,/SW 슈퍼맨/NNG 죽일려/UN 고/JC 만들/VV ㄴ/ETD 영화/NNG 이/VCP 다/EFN ./SF 슈퍼맨/NNG 팬/NNG 입장/NNG 에서/JKM 는/JX 굉장히/MAG 보/VV 기/ETN 불편/NNG 하/XSV ㄴ/ETD 영화/NNG 배트/NNG 맨/MDT 인간/NNG 따위/NNB 가/JKS ,,/SW 슈퍼맨/NNG 을/JKO 막/MAG 가지/VV 고/ECE 놀/VV 음/ETN ,,,,/SW 93 | 0 예상/NNG 대로/JX 개/NNG 유치/NNG 뽕짝/NNG ~/SO 그러나/MAC 수퍼/NNG 맨/NNG 이/VCP 니까/ECD 보/VXV 아야지/EFN ~/SO 94 | 0 돈옵저/UN 의/JKG 멸망/NNG 95 | 0 멀쩡/XR 하/XSA ㄴ/ETD 캐릭/NNG 이/JKS 하나/NNG 도/JX 없/VA 다/EFN ./SF 그동안/NNG 의/JKG 추억/NNG 을/JKO 박살내/VV 고/ECE 싶/VXV 으면/ECD 보/VV 자/ECE ./SF 96 | 0 잭/NNG 슬/VV 나/ECE 이/NNG 덜/VV 는/ETD 영화/NNG 바닥/NNG 에서/JKM 영원히/MAG 떠나/VV 아야/ECD 하/VV ㅁ/ETN ./SF 97 | 0 매일/MAG 영화관/NNG 가/VV 아서/ECD 이딴/MDT 거/NNB 나/JX 보/VV 면서/ECE 흥행/NNG 을/JKO 올리/VV 어/ECS 주/VXV 고/ECE 있/VXV 으니/ECD ,/SP 니들/NNG 의/JKG 그지/NNG 근성/NNG ,/SP 노예/NNG 근성/NNG ,/SP 식민/NNG 사관/NNG 은/JX 끝/NNG 이/JKS 없/VA 는/ETD 것/NNB 이/VCP 다/EFN ./SF 영화관/NNG 가/VV 아서/ECD 흥행/NNG 올리/VV 어/ECS 주/VXV 지/ECD 말/VXV 고/ECE ,/SP 볼려/UN 이/VCP 면/ECE 차라리/MAG 다운로드/NNG 받/VV 아서/ECD 보/VXV 는/ETD 거/NNB 추천/NNG 하/XSV ㅁ/ETN ./SF 98 | -------------------------------------------------------------------------------- /2018/LC/codes/snooze.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | print('알람 시계가 울린다') 4 | 5 | # 반복문으로 수정할 부분 6 | input('일어날 준비 완료? (Y/N) ') 7 | print('Snooze 버튼을 누른다') 8 | print('좀 더 잔다') 9 | 10 | print('샤워하고 옷 입는다') 11 | -------------------------------------------------------------------------------- /2018/LC/codes/sort_words.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | sentence = input('문장을 입력하세요: ') 3 | words = sentence.split() 4 | words.sort() 5 | print(words) 6 | -------------------------------------------------------------------------------- /2018/LC/codes/statistics.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: statistics.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-11-02 6 | # description: basic statistics (with SciPy) 7 | 8 | # Original code: ch05_statistics.py (without SciPy) 9 | # https://github.com/insightbook/Data-Science-from-Scratch/blob/master/code/ch05_statistics.py 10 | 11 | import matplotlib.pyplot as plt # 그림 그리기 12 | from collections import Counter # 빈도 세기 13 | 14 | # import numpy as np 15 | # import scipy 16 | # import scipy.stats 17 | 18 | # 5.1 데이터셋 설명하기 -- 한 종류의 데이터 19 | 20 | # 데이터 21 | num_friends = [100,49,41,40,25,21,21,19,19,18,18,16,15,15,15,15,14,14,13,13,13,13,12,12,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 22 | 23 | # 히스토그램 24 | friend_counts = Counter(num_friends) # 빈도표 25 | # friend_counts[17] # no KeyError 26 | plt.bar(friend_counts.keys(), friend_counts.values()) # 막대그래프 27 | plt.show() 28 | 29 | # 통계치 30 | num_points = len(num_friends) 31 | largest_value = max(num_friends) 32 | smallest_value = min(num_friends) 33 | 34 | # 5.1.1 중심 경향성(central tendency) 35 | # 통계치: 평균, 중위수, 최빈값 36 | # (1) 평균(mean) 37 | def mean(x): 38 | return sum(x) / len(x) 39 | 40 | mean(num_friends) 41 | # scipy.mean(num_friends) 42 | 43 | # (2) 중위수(median) 44 | def median(v): 45 | """finds the 'middle-most' value of v""" 46 | n = len(v) 47 | midpoint = n // 2 48 | sorted_v = sorted(v) 49 | if n % 2 == 1: 50 | # if odd, return the middle value 51 | return sorted_v[midpoint] 52 | else: 53 | # if even, return the average of the middle values 54 | return mean(sorted_v[midpoint-1:midpoint+1]) 55 | 56 | median(num_friends) 57 | # scipy.median(num_friends) 58 | 59 | # (3) 최빈값(mode) 60 | def mode(x): 61 | """returns a list, might be more than one mode""" 62 | counts = Counter(x) 63 | max_count = max(counts.values()) 64 | return [x_i for x_i, count in counts.items() if count == max_count] 65 | 66 | mode(num_friends) 67 | # scipy.stats.mode(num_friends) 68 | 69 | # 분위 70 | def quantile(x, p): 71 | """returns the pth-percentile value in x""" 72 | p_index = int(p * len(x)) 73 | return sorted(x)[p_index] 74 | 75 | quantile(num_friends, 0.10) 76 | quantile(num_friends, 0.25) 77 | quantile(num_friends, 0.75) 78 | quantile(num_friends, 0.90) 79 | # scipy.quantile(num_friends, 0.10) 80 | # scipy.quantile(num_friends, 0.25) 81 | # scipy.quantile(num_friends, 0.75) 82 | # scipy.quantile(num_friends, 0.90) 83 | 84 | # 5.1.2 산포도(dispersion) "퍼짐 경향성" 85 | # 통계치: 범위, 분산, 표준편차 86 | # (1) 범위 87 | # "range" already means something in Python, so we'll use a different name 88 | def data_range(x): 89 | return max(x) - min(x) 90 | 91 | data_range(num_friends) 92 | # np.ptp(num_friends) 93 | 94 | 95 | # (2) 분산, 표준편차 96 | def de_mean(x): 97 | """translate x by subtracting its mean (so the result has mean 0)""" 98 | x_bar = mean(x) 99 | return [x_i - x_bar for x_i in x] 100 | 101 | de_mean(num_friends) 102 | # np.array(num_friends) - np.mean(num_friends) 103 | 104 | # from vectors import sum_of_squares 105 | def variance(x): 106 | """assumes x has at least two elements""" 107 | n = len(x) 108 | deviations = de_mean(x) 109 | return sum_of_squares(deviations) / (n - 1) 110 | 111 | variance(num_friends) 112 | # scipy.var(num_friends, ddof=1) 113 | 114 | 115 | def standard_deviation(x): 116 | return variance(x) ** (1/2) 117 | 118 | standard_deviation(num_friends) 119 | # scipy.std(num_friends, ddof=1) 120 | 121 | 122 | # (3) 사분위범위 123 | def interquartile_range(x): 124 | return quantile(x, 0.75) - quantile(x, 0.25) 125 | 126 | interquartile_range(num_friends) 127 | # scipy.stats.iqr(num_friends) 128 | 129 | 130 | # 5.2 상관관계 --- 두 종류의 데이터 131 | daily_minutes = [1,68.77,51.25,52.08,38.36,44.54,57.13,51.4,41.42,31.22,34.76,54.01,38.79,47.59,49.1,27.66,41.03,36.73,48.65,28.12,46.62,35.57,32.98,35,26.07,23.77,39.73,40.57,31.65,31.21,36.32,20.45,21.93,26.02,27.34,23.49,46.94,30.5,33.8,24.23,21.4,27.94,32.24,40.57,25.07,19.42,22.39,18.42,46.96,23.72,26.41,26.97,36.76,40.32,35.02,29.47,30.2,31,38.11,38.18,36.31,21.03,30.86,36.07,28.66,29.08,37.28,15.28,24.17,22.31,30.17,25.53,19.85,35.37,44.6,17.23,13.47,26.33,35.02,32.09,24.81,19.33,28.77,24.26,31.98,25.73,24.86,16.28,34.51,15.23,39.72,40.8,26.06,35.76,34.76,16.13,44.04,18.03,19.65,32.62,35.59,39.43,14.18,35.24,40.13,41.82,35.45,36.07,43.67,24.61,20.9,21.9,18.79,27.61,27.21,26.61,29.77,20.59,27.53,13.82,33.2,25,33.1,36.65,18.63,14.87,22.2,36.81,25.53,24.62,26.25,18.21,28.08,19.42,29.79,32.8,35.99,28.32,27.79,35.88,29.06,36.28,14.1,36.63,37.49,26.9,18.58,38.48,24.48,18.95,33.55,14.24,29.04,32.51,25.63,22.22,19,32.73,15.16,13.9,27.2,32.01,29.27,33,13.74,20.42,27.32,18.23,35.35,28.48,9.08,24.62,20.12,35.26,19.92,31.02,16.49,12.16,30.7,31.22,34.65,13.13,27.51,33.2,31.57,14.1,33.42,17.44,10.12,24.42,9.82,23.39,30.93,15.03,21.67,31.09,33.29,22.61,26.89,23.48,8.38,27.81,32.35,23.84] 132 | 133 | 134 | # 공분산 135 | def covariance(x, y): 136 | n = len(x) 137 | return dot(de_mean(x), de_mean(y)) / (n - 1) 138 | 139 | covariance(num_friends, daily_minutes) 140 | # scipy.cov(num_friends, daily_minutes)[0,1] 141 | 142 | 143 | # 상관계수 144 | def correlation(x, y): 145 | stdev_x = standard_deviation(x) 146 | stdev_y = standard_deviation(y) 147 | if stdev_x > 0 and stdev_y > 0: 148 | return covariance(x, y) / stdev_x / stdev_y 149 | else: 150 | return 0 # if no variation, correlation is zero 151 | 152 | correlation(num_friends, daily_minutes) 153 | # scipy.corrcoef(num_friends, daily_minutes)[0,1] 154 | 155 | 156 | # 산점도 157 | plt.scatter(num_friends, daily_minutes) 158 | plt.show() 159 | 160 | # 이상치 제거 161 | outlier = num_friends.index(100) # index of outlier 162 | 163 | num_friends_good = [x 164 | for i, x in enumerate(num_friends) 165 | if i != outlier] 166 | 167 | daily_minutes_good = [x 168 | for i, x in enumerate(daily_minutes) 169 | if i != outlier] 170 | 171 | correlation(num_friends_good, daily_minutes_good) 172 | plt.scatter(num_friends_good, daily_minutes_good) 173 | plt.show() 174 | -------------------------------------------------------------------------------- /2018/LC/codes/try.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: try.py 3 | # course: 언어와 컴퓨터 4 | # author: 박수지 5 | # date created: 2018-10-11 6 | # description: try-except 문으로 예외 처리하기 7 | 8 | ############################# 9 | '''0. 일단 함수를 만든다.''' 10 | def myint(string): 11 | return int(string) 12 | 13 | '''한 행씩 실행시켜 보면서 다양한 오류의 유형을 살펴보자.''' 14 | myint(42) 15 | myint('42') 16 | myint('4.2') # ValueError 17 | myint([42]) # TypeError 18 | myint('42')) # SyntaxError 19 | 20 | ############################# 21 | '''1. 예외의 유형에 따라 다르게 처리할 수 있다.''' 22 | def myint(string): 23 | try: 24 | return int(string) 25 | except ValueError: 26 | print('잘못된 값입니다.') 27 | except TypeError: 28 | print('자료형이 잘못되었습니다.') 29 | except SyntaxError: 30 | print('문법이 잘못되었습니다.') 31 | finally: 32 | print('어쨌든 수고하셨습니다.') 33 | 34 | '''except 문에 사용할 수 없는 오류의 유형은 무엇인가?''' 35 | myint(42) 36 | myint('42') 37 | myint('4.2') 38 | myint([42]) 39 | myint('42')) 40 | 41 | '''finally 문의 스위트가 언제 실행되는지 살펴보자.''' 42 | myint(42) 43 | myint('42') 44 | myint('4.2') 45 | myint([42]) 46 | 47 | ############################# 48 | '''3. finally 문이 없어도 try/except 문은 작동한다.''' 49 | def myint(string): 50 | try: 51 | return int(string) 52 | except ValueError: 53 | print('잘못된 값입니다.') 54 | except TypeError: 55 | print('자료형이 잘못되었습니다.') 56 | print('어쨌든 수고하셨습니다.') 57 | 58 | '''2.의 실행 결과와 다른 점을 살펴보자.''' 59 | myint(42) 60 | myint('42') 61 | myint('4.2') # ValueError 62 | myint([42]) # TypeError 63 | 64 | ############################# 65 | '''4. 오류의 유형을 따지기 귀찮다.''' 66 | def myint(string): 67 | try: 68 | return int(string) 69 | except: 70 | print('무엇인지는 몰라도 오류가 발생했습니다.') 71 | 72 | myint(42) 73 | myint('42') 74 | myint('4.2') # ValueError 75 | myint([42]) # TypeError 76 | -------------------------------------------------------------------------------- /2018/LC/codes/vectors.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: vectors.py 3 | # course: Language and Computer 4 | # author(s): Suzi Park 5 | # date created: 2018-11-02 6 | # description: vector and matrix arithmetic (in NumPy) 7 | 8 | # Original code: ch04_linear_algebra.py (without NumPy) 9 | # https://github.com/insightbook/Data-Science-from-Scratch/blob/master/code/ch04_linear_algebra.py 10 | 11 | # import numpy as np 12 | # from numpy import linalg as LA 13 | 14 | height_weight_age = [70, # inches 15 | 170, # pounds 16 | 40] # years 17 | 18 | grades = [95, # Test1 19 | 85, # Test2 20 | 75, # Test3 21 | 72] # Test4 22 | # 23 | # functions for working with vectors 24 | # 25 | 26 | # two 4-dimemsional vectors 27 | v = [1, 7, 8, 3] 28 | w = [3, 4, 3, 9] 29 | u = [0, 9, 2, 5] 30 | 31 | def vector_add(v, w): 32 | """adds two vectors componentwise""" 33 | return [v_i + w_i for v_i, w_i in zip(v,w)] 34 | 35 | vector_add(v, w) 36 | # np.add(v, w) 37 | 38 | 39 | def vector_subtract(v, w): 40 | """subtracts two vectors componentwise""" 41 | return [v_i - w_i for v_i, w_i in zip(v,w)] 42 | 43 | vector_subtract(v, w) 44 | # np.subtract(v, w) 45 | 46 | 47 | def vector_sum(vectors): 48 | result = vectors[0] 49 | for vector in vectors[1:]: 50 | result = vector_add(result, vector) 51 | return result 52 | 53 | vector_sum([v, w, u]) 54 | # np.sum([v, w, u], axis=0) 55 | 56 | 57 | def scalar_multiply(c, v): 58 | return [c * v_i for v_i in v] 59 | 60 | scalar_multiply(-2, v) 61 | # np.multiply(-2, v) 62 | 63 | 64 | def vector_mean(vectors): 65 | """compute the vector whose i-th element is the mean of the 66 | i-th elements of the input vectors""" 67 | n = len(vectors) 68 | return scalar_multiply(1/n, vector_sum(vectors)) 69 | 70 | vector_mean([v, w, u]) 71 | # np.mean([v, w, u], axis=0) 72 | 73 | 74 | def dot(v, w): 75 | """v_1 * w_1 + ... + v_n * w_n""" 76 | return sum(v_i * w_i for v_i, w_i in zip(v, w)) 77 | 78 | dot(v, w) 79 | # np.dot(v, w) 80 | 81 | 82 | def sum_of_squares(v): 83 | """v_1 * v_1 + ... + v_n * v_n""" 84 | return dot(v, v) 85 | 86 | sum_of_squares(v) 87 | # np.sum(np.square(v)) 88 | 89 | 90 | def magnitude(v): 91 | return sum_of_squares(v) ** (1 / 2) 92 | 93 | magnitude(v) 94 | # LA.norm(v, 2) 95 | 96 | 97 | def squared_distance(v, w): 98 | return sum_of_squares(vector_subtract(v, w)) 99 | 100 | squared_distance(v, w) 101 | # np.sum(np.square(np.subtract(v, w))) 102 | 103 | 104 | def distance(v, w): 105 | return squared_distance(v, w) ** (1/2) 106 | 107 | distance(v, w) 108 | # LA.norm(np.subtract(v, w), 2) 109 | 110 | # from scipy.spatial import distance 111 | # distance.euclidean(v, w) 112 | 113 | 114 | # Use NumPy! 115 | # BEFORE NumPy 116 | v + w # concatenation not sum 117 | -2 * v # reperition not multiplication 118 | [v, w, u] # "matrix" 119 | 120 | # AFTER NumPy 121 | import numpy as np 122 | # Arrays 123 | # v, w, u = np.array(v), np.array(w), np.array(u) 124 | v, w, u = map(np.array, [v, w, u]) 125 | 126 | v + w 127 | -2 * v 128 | v.dot(w) 129 | v.dot(v) 130 | 131 | # Matrices 132 | A = np.array([v, w, u]) 133 | A.shape # 3-by-4 matrix 134 | print(A) 135 | 136 | # matrix multiplication 137 | B = np.random.randint(-2, 3, size=(4, 2)) 138 | print(B) 139 | np.dot(A, B) # 3-by-2 matrix 140 | 141 | # identity matrix of size 4 142 | I = np.identity(4, dtype=int) 143 | A.dot(I) 144 | 145 | A[1, 2] # (1,2) component 146 | A[2, :] # 2nd row 147 | A[:, 0] # 0th column 148 | 149 | np.zeros((4, 2), dtype=int) # zero matrix 150 | np.ones((4, 2), dtype=int) # one matrix 151 | 152 | C = np.zeros((4, 2), dtype=int) 153 | C[2,1] = 1 154 | C[3,:] = 2 155 | print(C) 156 | -------------------------------------------------------------------------------- /2018/LC/codes/word_freq_functions.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # title: word_freq_functions.py 3 | # course: 언어와 컴퓨터 4 | # author: 박수지 5 | # date created: 2018-10-01 6 | # description: 단어 빈도 계산하기 7 | 8 | 9 | def get_word_list(sentence): 10 | '''문장을 받아서 단어 리스트를 반환하는 함수''' 11 | return sentence.strip().lower().split() 12 | 13 | def remove_punct(word): 14 | '''단어를 받아서 문장부호를 제거하여 반환하는 함수''' 15 | return ''.join(char for char in word if char.isalnum()) 16 | 17 | def get_freq(seq): 18 | '''열을 받아서 {항목: 빈도} 딕셔너리를 반환하는 함수''' 19 | freq = {} 20 | for item in seq: 21 | if item in freq.keys(): 22 | freq[item] += 1 23 | else: 24 | freq[item] = 1 25 | return freq 26 | 27 | def get_word_freq(sentence): 28 | '''문장 문자열을 받아서 단어 빈도 딕셔너리를 반환하는 함수''' 29 | return get_freq(remove_punct(word) for word in get_word_list(sentence)) 30 | 31 | # 테스트 32 | if __name__ == '__main__': 33 | sentences = ('Twinkle twinkle little star', 34 | 'Baby shark, doo doo doo doo doo doo. Baby shark!') 35 | for sentence in sentences: 36 | print(sentence) 37 | print(get_word_freq(sentence)) 38 | -------------------------------------------------------------------------------- /2018/LC/hw/eliza.txt: -------------------------------------------------------------------------------- 1 | Men are all alike. 2 | IN WHAT WAY 3 | They’re always bugging us about something or other. 4 | CAN YOU THINK OF A SPECIFIC EXAMPLE 5 | Well, my boyfriend made me come here. 6 | YOUR BOYFRIEND MADE YOU COME HERE 7 | He says I’m depressed much of the time. 8 | I AM SORRY TO HEAR YOU ARE DEPRESSED 9 | It’s true. I am unhappy. 10 | DO YOU THINK COMING HERE WILL HELP YOU NOT TO BE UNHAPPY 11 | I need some help, that much seems certain. 12 | WHAT WOULD IT MEAN TO YOU IF YOU GOT SOME HELP 13 | Perhaps I could learn to get along with my mother. 14 | TELL ME MORE ABOUT YOUR FAMILY 15 | My mother takes care of me. 16 | WHO ELSE IN YOU FAMILY TAKES CARE OF YOU 17 | My Father. 18 | YOUR FATHER 19 | You are like my father in some ways. 20 | WHAT RESEMBLANCE DO YOU SEE 21 | You are not very aggressive but I think you don’t want me to notice that. 22 | WHAT MAKES YOU THINK I AM NOT VERY AGGRESSIVE 23 | You don’t argue with me. 24 | WHY DO YOU THINK I DON’T ARGUE WITH YOU 25 | You are afraid of me. 26 | DOES IT PLEASE YOU TO BELIEVE I AM AFRAID OF YOU 27 | My father is afraid of everybody. 28 | WHAT ELSE COMES TO MIND WHEN YOU THINK OF YOUR FATHER 29 | Bullies. 30 | DOES THAT HAVE ANYTHING TO DO WITH THE FACT THAT YOUR BOYFRIEND MADE YOU COME HERE 31 | -------------------------------------------------------------------------------- /2018/LC/hw/hw04.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw04.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw04adv.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw04adv.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw05.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw06.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw06.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw07.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw07.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw07adv.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw07adv.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw09.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw09.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw09adv.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw09adv.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw10.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw10adv.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw10adv.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw11.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw11.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw12.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw12.pdf -------------------------------------------------------------------------------- /2018/LC/hw/hw13.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/hw/hw13.pdf -------------------------------------------------------------------------------- /2018/LC/hw/poems.txt: -------------------------------------------------------------------------------- 1 | 0 1 虞世南 蝉 垂緌饮清露,流响出疏桐。居高声自远,非是藉秋风。 1 0 王绩 野望 东皋薄暮望,徙倚欲何依。树树皆秋色,山山唯落晖。牧人驱犊返,猎马带禽归。相顾无相识,长歌怀采薇。 2 1 王绩 秋夜喜遇王处士 北场芸藿罢,东皋刈黍归。相逢秋月满,更值夜萤飞。 3 0 王梵志 吾富有钱时 吾富有钱时,妇儿看我好。吾若脱衣裳,与吾叠袍袄。吾出经求去,送吾即上道。将钱入舍来,见吾满面笑。绕吾白鸽旋,恰似鹦鹉鸟。邂逅暂时贫,看吾即貌哨。人有七贫时,七富还相报。图财不顾人,且看来时道。 4 0 王梵志 诗(二首) 我有一方便,价值百匹练。相打长伏弱,至死不入县。他人骑大马,我独跨驴子。回顾担柴汉,心下较些子。 5 0 寒山 杳杳寒山道 杳杳寒山道,落落冷涧滨。啾啾常有鸟,寂寂更无人。淅淅风吹面,纷纷雪积身。朝朝不见日,岁岁不知春。 6 1 上官仪 入朝洛堤步月 脉脉广川流,驱马历长洲。鹊飞山月曙,蝉噪野风秋。 7 0 骆宾王 咏蝉 西陆蝉声唱,南冠客思深。不堪玄鬓影,来对白头吟。露重飞难进,风多响易沉。无人信高洁,谁为表予心? 8 0 骆宾王 于易水送人一绝 此地别燕丹,壮士发冲冠。昔时人已没,今日水犹寒。 9 0 杜审言 和晋陵陆丞早春游望 独有宦游人,偏惊物候新。云霞出海曙,梅柳渡江春。淑气催黄鸟,晴光转绿蘋.忽闻歌古调,归思欲沾襟。 10 0 杜审言 渡湘江 迟日园林悲昔游,今春花鸟作边愁。独怜京国人南窜,不似湘江水北流。 11 1 苏味道 正月十五日夜 火树银花合,星桥铁锁开。暗尘随马去,明月逐人来。游妓皆秾李,行歌尽落梅。金吾不禁夜,玉漏莫相催。 12 1 王勃 咏风 肃肃凉风生,加我林壑清。驱烟寻涧户,卷雾出山楹。去来固无迹,动息如有情。日落山水静,为君起松声。 13 0 王勃 别薛华 送送多穷路,遑遑独问津。悲凉千里道,凄断百年身。心事同漂泊,生涯共苦辛。无论去与住,俱是梦中人。 14 1 王勃 送杜少府之任蜀川 城阙辅三秦,风烟望五津。与君离别意,同是宦游人。海内存知己,天涯若比邻。无为在歧路,儿女共沾巾。 15 0 王勃 江亭夜月送别二首(其二) 乱烟笼碧砌,飞月向南端。寂寞离亭掩,江山此夜寒。 16 0 王勃 山中 长江悲已滞,万里念将归。况属高风晚,山山黄叶飞。 17 1 杨炯 从军行 烽火照西京,心中自不平。牙璋辞凤阙,铁骑绕龙城。雪暗凋旗画,风多杂鼓声。宁为百夫长,胜作一书生。 18 0 刘希夷 代悲白头翁 洛阳城东桃李花,飞来飞去落谁家?洛阳女儿惜颜色,行逢落花长叹息。今年落花颜色改,明年花开复谁在?已见松柏摧为薪,更闻桑田变成海。古人无复洛城东,今人还对落花风。年年岁岁花相似,岁岁年年人不同。寄言全盛红颜子,应怜半死白头翁。此翁白头真可怜,伊昔红颜美少年。公子王孙芳树下,清歌妙舞落花前。光禄池台文锦绣,将军楼阁画神仙。一朝卧病无相识,三春行乐在谁边?宛转蛾眉能几时?须臾鹤发乱如丝。但看古来歌舞地,惟有黄昏鸟雀悲。 19 0 宋之问 送别杜审言 卧病人事绝,嗟君万里行。河桥不相送,江树远含情。别路追孙楚,维舟吊屈平。可惜龙泉剑,流落在丰城。 20 0 宋之问 题大庾岭北驿 阳月南飞雁,传闻至此回。我行殊未已,何日复归来?江静潮初落,林昏瘴不开。明朝望乡处,应见陇头梅。 21 0 宋之问 早发始兴江口至虚氏村作 候晓逾闽嶂,乘春望越台。宿云鹏际落,残月蚌中开。薜荔摇青气,桄榔翳碧苔。桂香多露裛,石响细泉回。抱叶玄猿啸,衔花翡翠来。南中虽可悦,北思日悠哉。鬒发俄成素,丹心已作灰。何当首归路,行剪故园莱。 22 0 宋之问 渡汉江 岭外音书断,经冬复历春。近乡情更怯,不敢问来人。 23 0 沈佺期 杂诗三首(其三) 闻道黄龙戍,频年不解兵。可怜闺里月,长在汉家营。少妇今春意,良人咋夜情。谁能将旗鼓,一为取龙城。 24 0 沈佺期 夜宿七盘岭 独游千里外,高卧七盘西。山月临窗近,天河入户低。芳春平仲绿,清夜子规啼。浮客空留听,褒城闻曙鸡。 25 0 沈佺期 独不见 卢家少妇郁金堂,海燕双栖玳瑁梁。九月寒砧催木叶,十年征戍忆辽阳。白狼河北音书断,丹凤城南秋夜长。谁谓含愁独不见,更教明月照流黄! 26 1 郭震 古剑篇 君不见昆吾铁冶飞炎烟,红光紫气俱赫然。良工锻炼凡几年,铸得宝剑名龙泉。龙泉颜色如霜雪,良工咨嗟叹奇绝。琉璃玉匣吐莲花,错镂金环映明月。正逢天下无风尘,幸得周防君子身。精光黯黯青蛇色,文章片片绿龟鳞。非直结交游侠子,亦曾亲近英雄人。何言中路遭弃捐,零落飘沦古狱边。虽复沉埋无所用,犹能夜夜气冲天。 27 0 陈子昂 感遇三十八首(其二) 兰若生春夏,芊蔚何青青!幽独空林色,朱蕤冒紫茎。迟迟白日晚,嫋嫋秋风生。岁华尽摇落,芳意竟何成? 28 0 陈子昂 感遇三十八首(其四) 乐羊为魏将,食子殉军功。骨肉且相薄,他人安得忠?吾闻中山相,乃属放麑翁。孤兽犹不忍,况以奉君终。 29 0 陈子昂 感遇三十八首(其二十三) 翡翠巢南海,雄雌珠树林。何知美人意,骄爱比黄金?杀身炎洲里,委羽玉堂阴,旖旎光首饰,葳蕤烂锦衾。岂不在遐远?虞罗忽见寻。多材信为累,叹息此珍禽。 30 0 陈子昂 燕昭王 南登碣石馆,遥望黄金台。丘陵尽乔木,昭王安在哉?霸图今已矣,驱马复归来。 31 0 陈子昂 登幽州台歌 前不见古人,后不见来者。念天地之悠悠,独怆然而涕下! 32 0 陈子昂 晚次乐乡县 故乡杳无际,日暮且孤征。川原迷旧国,道路入边城。野戍荒烟断,深山古木平。如何此时恨,噭噭夜猿鸣。 33 1 陈子昂 送魏大从军 匈奴犹未灭,魏绛复从戎。怅别三河道,言追六郡雄。雁山横代北,狐塞接云中。勿使燕然上,惟留汉将功。 34 0 陈子昂 春夜别友人 银烛吐青烟,金樽对绮筵。离堂思琴瑟,别路绕山川。明月隐高树,长河没晓天。悠悠洛阳道,此会在何年。 35 1 贺知章 咏柳 碧玉妆成一树高,万条垂下绿丝绦。不知细叶谁裁出,二月春风似剪刀。 36 0 贺知章 回乡偶书二首 少小离家老大回,乡音无改鬓毛衰。儿童相见不相识,笑问客从何处来。离别家乡岁月多,近来人事半消磨。惟有门前镜湖水,春风不改旧时波。 37 0 沈如筠 闺怨 雁尽书难寄,愁多梦不成。愿随孤月影,流照伏波营。 38 0 张说 蜀道后期 客心争日月,来往预期程。秋风不相待,先至洛阳城。 39 1 苏颋 奉和春日幸望春宫应制 东望望春春可怜,更逢晴日柳含烟。宫中下见南山尽,城上平临北斗悬。细草偏承回辇处,飞花故落奉觞前。宸游对此欢无极,鸟弄歌声杂管弦。 40 0 苏颋 汾上惊秋 北风吹白云,万里渡河汾。心绪逢摇落,秋声不可闻。 41 1 张敬忠 边词 五原春色旧来迟,二月垂杨未挂丝。即今河畔冰开日,正是长安花落时。 42 1 张九龄 感遇十二首(其一) 兰叶春葳蕤,桂华秋皎洁。欣欣此生意,自尔为佳节。谁知林栖者,闻风坐相悦。草木有本心,何求美人折? 43 1 张九龄 湖口望庐山瀑布水 万丈红泉落,迢迢半紫氛。奔流下杂树,洒落出重云。日照虹霓似,天清风雨闻。灵山多秀色,空水共氤氲。 44 0 张九龄 望月怀远 海上生明月,天涯共此时。情人怨遥夜,竟夕起相思。灭烛怜光满,披衣觉露滋。不堪盈手赠,还寝梦佳期。 45 1 王之涣 登鹳雀楼 白日依山尽,黄河入海流。欲穷千里目,更上一层楼。 46 0 王之涣 凉州词 黄河远上白云间,一片孤城万仞山。羌笛何须怨杨柳,春风不度玉门关。 47 0 王之涣 宴词 长堤春水绿悠悠,畎入漳河一道流。莫听声声催去棹,桃溪浅处不胜舟。 48 1 孟浩然 夏日南亭怀辛大 山光忽西落,池月渐东上。散发乘夕凉,开轩卧闲敞。荷风送香气,竹露滴清响。欲取鸣琴弹,恨无知音赏。感此怀故人,中宵劳梦想。 49 0 孟浩然 夜归鹿门歌 山寺鸣钟昼已昏,渔梁渡头争渡喧。人随沙岸向江村,余亦乘舟归鹿门。鹿门月照开烟树,忽到庞公栖隐处。岩扉松径长寂寥,唯有幽人独来去。 50 0 孟浩然 秦中感秋寄远上人 一丘常欲卧,三径苦无资。北土非吾愿,东林怀我师。黄金燃桂尽,壮志逐年衰。日夕凉风至,闻蝉但益悲。 51 0 孟浩然 宿桐庐江寄广陵旧游 山暝听猿愁,沧江急夜流。风鸣两岸叶,月照一孤舟。建德非吾土,维扬忆旧游。还将两行泪,遥寄海西头。 52 0 孟浩然 早寒有怀 木落雁南度,北风江上寒。我家襄水曲,遥隔楚云端。乡泪客中尽,归帆天际看。迷津欲有问,平海夕漫漫。 53 0 孟浩然 留别王维 寂寂竟何待,朝朝空自归。欲寻芳草去,惜与故人违。当路谁相假?知音世所稀。只应守寂寞,还掩故园扉。 54 0 孟浩然 与诸子登岘首 人事有代谢,往来成古今。江山留胜迹,我辈复登临。水落鱼梁浅,天寒梦泽深。羊公碑尚在,读罢泪沾襟。 55 1 孟浩然 题义公禅房 义公习禅寂,结宇依空林。户外一峰秀,阶前众壑深。夕阳连雨足,空翠落庭阴。看取莲花净,方知不染心。 56 1 孟浩然 过故人庄 故人具鸡黍,邀我至田家。绿树村边合,青山郭外斜。开轩面场圃,把酒话桑麻。待到重阳日,还来就菊花。 57 1 孟浩然 舟中晓望 挂席东南望,青山水国遥。舳舻争利涉,来往接风潮。问我今何适?天台访石桥。坐看霞色晓,疑是赤城标。 58 0 孟浩然 岁暮归南山 北阙休上书,南山归敝庐。不才明主弃,多病故人疏。白发催年老,青阳逼岁除。永怀愁不寐,松月夜窗虚。 59 1 孟浩然 春晓 春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少? 60 0 孟浩然 洛中访袁拾遗不遇 洛阳访才子,江岭作流人。闻说梅花早,何如北地春。 61 0 孟浩然 宿建德江 移舟泊烟渚,日暮客愁新。野旷天低树,江清月近人。 62 0 孟浩然 送杜十四之江南 荆吴相接水为乡,君去春江正渺茫。日暮征帆何处泊?天涯一望断人肠。 63 0 李颀 古从军行 白日登山望烽火,黄昏饮马傍交河。行人刁斗风沙暗,公主琵琶幽怨多。野云万里无城郭,雨雪纷纷连大漠。胡雁哀鸣夜夜飞,胡儿眼泪双双落。闻道玉门犹被遮,应将性命逐轻车。年年战骨埋荒外,空见蒲桃入汉家。 64 1 王昌龄 采莲曲二首(其二) 荷叶罗裙一色裁,芙蓉向脸两边开。乱入池中看不见,闻歌始觉有人来。 65 1 王昌龄 青楼曲二首 白马金鞍随武皇,旌旗十万宿长杨。楼头少妇鸣筝坐,遥见飞尘入建章。驰道杨花满御沟,红妆漫绾上青楼。金章紫绶千余骑,夫婿朝回初拜侯。 66 1 王维 青溪 言入黄花川,每逐青溪水。随山将万转,趣途无百里。声喧乱石中,色静深松里。漾漾泛菱荇,澄澄映葭苇。我心素已闲,清川澹如此。请留盘石上,垂钓将已矣。 67 1 王维 渭川田家 斜光照墟落,穷巷牛羊归。野老念牧童,倚杖候荆扉。雉雊麦苗秀,蚕眠桑叶稀。田夫荷锄至,相见语依依。即此羡闲逸,怅然吟《式微》。 68 1 王维 春中田园作 屋上春鸠鸣,村边杏花白。持斧伐远扬,荷锄觇泉脉。归燕识故巢,旧人看新历。临觞忽不御,惆怅思远客。 69 1 王维 新晴野望 新晴原野旷,极目无氛垢。郭门临渡头,村树连溪口。白水明田外,碧峰出山后。农月无闲人,倾家事南亩。 70 1 王维 送梓州李使君 万壑树参天,千山响杜鹃。山中一夜雨,树杪百重泉。汉女输橦布,巴人讼芋田。文翁翻教授,不敢倚先贤。 71 1 王维 山居秋暝 空山新雨后,天气晚来秋。明月松间照,清泉石上流。竹喧归浣女,莲动下渔舟。随意春芳歇,王孙自可留。 72 1 王维 终南别业 中岁颇好道,晚家南山陲。兴来每独往,胜事空自知。行到水穷处,坐看云起时。偶然值林叟,谈笑无还期。 73 1 王维 观猎 风劲角弓鸣,将军猎渭城。草枯鹰眼疾,雪尽马蹄轻。忽过新丰市,还归细柳营。回看射雕处,千里暮云平。 74 1 王维 汉江临泛 楚塞三湘接,荆门九派通。江流天地外,山色有无中。郡邑浮前浦,波澜动远空。襄阳好风日,留醉与山翁。 75 1 王维 和贾至舍人早朝大明宫之作 绛帻鸡人报晓筹,尚衣方进翠云裘。九天阊阖开宫殿,万国衣冠拜冕旒。日色才临仙掌动,香烟欲傍袞龙浮。朝罢须裁五色诏,佩声归到凤池头。 76 1 王维 出塞作 居延城外猎天骄,白草连天野火烧。暮云空碛时驱马,秋日平原好射雕。护羌校尉朝乘障,破虏将军夜渡辽。玉靶角弓珠勒马,汉家将赐霍嫖姚。 77 1 王维 春日与裴迪过新昌里访吕逸人不遇 桃源一向绝风尘,柳市南头访隐沦。到门不敢题凡鸟,看竹何须问主人。城上青山如屋里,东家流水入西邻。闭户著书多岁月,种松皆作老龙鳞。 78 1 王维 栾家濑 飒飒秋雨中,浅浅石溜泻。跳波自相溅,白鹭惊复下。 79 1 王维 白石滩 清浅白石滩,绿蒲向堪把。家住水东西,浣纱明月下。 80 1 王维 竹里馆 独坐幽篁里,弹琴复长啸。深林人不知,明月来相照。 81 1 王维 鸟鸣涧 人闲桂花落,夜静春山空。月出惊山鸟,时鸣春涧中。 82 1 王维 相思 红豆生南国,春来发几枝?愿君多采撷,此物最相思。 83 1 王维 书事 轻阴阁小雨,深院昼慵开。坐看苍苔色,欲上人衣来。 84 1 王维 田园乐(其六) 桃红复含宿雨,柳绿更带朝烟。花落家童未扫,莺啼山客犹眠。 85 1 王维 少年行(其一) 新丰美酒斗十千,咸阳游侠多少年。相逢意气为君饮,系马高楼垂柳边。 86 0 韩翃 宿石邑山中 浮云不共此山齐,山霭苍苍望转迷。晓月暂飞高树里,秋河隔在数峰西。 87 1 司空曙 江村即事 钓罢归来不系船,江村月落正堪眠。纵然一夜风吹去,只在芦花浅水边。 88 1 李端 鸣筝 鸣筝金粟柱,素手玉房前。欲得周郎顾,时时误拂弦。 89 1 胡令能 小儿垂钓 蓬头稚子学垂纶,侧坐莓苔草映身。路人借问遥招手,怕得鱼惊不应人。 90 1 顾况 过山农家 板桥人渡泉声,茅檐日午鸡鸣。莫嗔焙茶烟暗,却喜晒谷天晴。 91 1 于良史 春山夜月 春山多胜事,赏玩夜忘归。掬水月在手,弄花香满衣。兴来无远近,欲去惜芳菲。南望鸣钟处,楼台深翠微。 92 0 柳中庸 听筝 抽弦促柱听秦筝,无限秦人悲怨声。似逐春风知柳态,如随啼鸟识花情。谁家独夜愁灯影?何处空楼思月明?更入几重离别恨,江南歧路洛阳城。 93 0 柳中庸 征人怨 岁岁金河复玉关,朝朝马策与刀环。三春白雪归青冢,万里黄河绕黑山。 94 1 戴叔伦 兰溪棹歌 凉月如眉挂柳湾,越中山色镜中看。兰溪三日桃花雨,半夜鲤鱼来上滩。 95 1 卢纶 塞下曲六首(其三) 月黑雁飞高,单于夜遁逃。欲将轻骑逐,大雪满弓刀。 96 1 韩愈 春雪 新年都未有芳华,二月初惊见草芽。白雪却嫌春色晚,故穿庭树作飞花。 97 1 韩愈 晚春 草树知春不久归,百般红紫斗芳菲。杨花榆荚无才思,惟解漫天作雪飞。 98 1 韩愈 早春呈水部张十八员外二首(其一) 天街小雨润如酥,草色遥看近却无。最是一年春好处,绝胜烟柳满皇都。 99 1 刘禹锡 淮阴行五首(其四) 何物令侬羡?羡郎船尾燕。衔泥趁樯竿,宿食长相见。 100 1 刘禹锡 竹枝词二首(其一) 杨柳青青江水平,闻郎江上唱歌声。东边日出西边雨,道是无晴还有晴。 101 1 刘禹锡 堤上行三首(其一、其二) 酒旗相望大堤头,堤下连樯堤上楼。日暮行人争渡急,桨声幽轧满中流。江南江北望烟波,入夜行人相应歌。《桃叶》传情《竹枝》怨,水流无限月明多。 102 1 刘禹锡 踏歌词四首(其三) 新词宛转递相传,振袖倾鬟风露前。月落乌啼云雨散,游童陌上拾花钿。 103 0 刘禹锡 阿娇怨 望见葳蕤举翠华,试开金屋扫庭花。须臾宫女传来信,言幸平阳公主家。 104 1 刘禹锡 秋词二首 自古逢秋悲寂寥,我言秋日胜春朝。晴空一鹤排云上,便引诗情到碧霄。山明水净夜来霜,数树深红出浅黄。试上高楼清入骨,岂如春色嗾人狂。 105 1 刘禹锡 竹枝词九首(其九) 山上层层桃李花,云间烟火是人家。银钏金钗来负水,长刀短笠去烧畲。 106 1 刘禹锡 浪淘沙九首(其六) 日照澄洲江雾开,淘金女伴满江隈。美人首饰侯王印,尽是沙中浪底来。 107 0 刘禹锡 和乐天《春词》 新妆宜面下朱楼,深锁春光一院愁。行到中庭数花朵,蜻蜓飞上玉搔头。 108 1 刘禹锡 望洞庭 湖光秋月两相和,潭面无风镜未磨。遥望洞庭山水色,白银盘里一青螺。 109 1 白居易 问刘十九 绿蚁新醅酒,红泥小火炉。晚来天欲雪,能饮一杯无? 110 0 白居易 寒闺怨 寒月沉沉洞房静,真珠帘外梧桐影。秋霜欲下手先知,灯底裁缝剪刀冷。 111 1 白居易 钱塘湖春行 孤山寺北贾亭西,水面初平云脚低。几处早莺争暖树,谁家新燕啄春泥。乱花渐欲迷人眼,浅草才能没马蹄。最爱湖东行不足,绿杨阴里白沙堤。 112 1 白居易 西湖晚归回望孤山寺赠诸客 柳湖松岛莲花寺,晚动归桡出道场。卢橘子低山雨重,栟榈叶战水风凉。烟波淡荡摇空碧,楼殿参差倚夕阳。到岸请君回首望,蓬莱宫在海中央。 113 1 白居易 杭州春望 望海楼明照曙霞,护江堤白踏晴沙。涛声夜入伍员庙,柳色春藏苏小家。红袖织绫夸柿蒂,青旗沽酒趁梨花。谁开湖寺西南路,草绿裙腰一道斜。 114 0 白居易 秋雨夜眠 凉冷三秋夜,安闲一老翁。卧迟灯灭后,睡美雨声中。灰宿温瓶火,香添暖被笼。晓晴寒未起,霜叶满阶红。 115 0 白居易 与梦得沽酒闲饮且约后期 少时犹不忧生计,老后谁能惜酒钱?共把十千沽一斗,相看七十欠三年。闲征雅令穷经史,醉听清吟胜管弦。更待菊黄家酝熟,共君一醉一陶然。 116 0 白居易 览卢子蒙侍御旧诗,多与微之唱和。感今伤昔,因赠子蒙,题于卷后 昔闻元九咏君诗,恨与卢君相识迟。今日逢君开旧卷,卷中多道赠微之。相看泪眼情难说,别有伤心事岂知?闻道咸阳坟上树,已抽三丈白杨枝! 117 0 白居易 杨柳枝词 一树春风千万枝,嫩于金色软于丝。永丰西角荒园里,尽日无人属阿谁? 118 1 白居易 白云泉 天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间! 119 0 李绅 悯农二首 春种一粒粟,秋收万颗子。四海无闲田,农夫犹饿死。锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。 120 0 柳宗元 与浩初上人同看山寄京华亲故 海畔尖山似剑芒,秋来处处割愁肠。若为化作身千亿,散向峰头望故乡。 121 0 韩偓 惜花 皱白离情高处切,腻红愁态静中深。眼随片片沿流去,恨满枝枝被雨淋。总得苔遮犹慰意,若教泥污更伤心。临轩一盏悲春酒,明日池塘是绿阴。 122 0 韩偓 春尽 惜春连日醉昏昏,醒后衣裳见酒痕。细水浮花归别涧,断云含雨入孤村。人闲易有芳时恨,地迥难招自古魂。惭愧流莺相厚意,清晨犹为到西园。 123 0 韩偓 效崔国辅体四首 淡月照中庭,海棠花自落。独立俯闲阶,风动秋千索。酒力滋睡眸,卤莽闻街鼓。欲明天更寒,东风打窗雨。雨后碧苔院,霜来红叶楼。闲阶上斜日,鹦鹉伴人愁。罗幕生春寒,绣窗愁未眠。南湖一夜雨,应湿采莲船。 124 0 吴融 卖花翁 和烟和露一丛花,担入宫城许史家。惆怅东风无处说,不教闲地著春华。 125 0 吴融 子规 举国繁华委逝川,羽毛飘荡一年年。他山叫处花成血,旧苑春来草似烟。雨暗不离浓绿树,月斜长吊欲明天。湘江日暮声凄切,愁杀行人归去船。 126 0 吴融 途中见杏花 一枝红艳出墙头,墙外行人正独愁。长得看来犹有恨,可堪逢处更难留!林空色暝莺先到,春浅香寒蝶未游。更忆帝乡千万树,澹烟笼日暗神州。 127 1 张槟 登单于台 边兵春尽回,独上单于台。白日地中出,黄河天外来。沙翻痕似浪,风急响疑雷。欲向阴关度,阴关晓不开。 128 0 金昌绪 春怨 打起黄莺儿,莫教枝上啼。啼时惊妾梦,不得到辽西。 129 0 鱼玄机 江陵愁望有寄 枫叶千枝复万枝,江桥掩映暮帆迟。忆君心似西江水,日夜东流无歇时。 130 1 郑谷 菊 王孙莫把比蓬蒿,九日枝枝近鬓毛。露湿秋香满池岸,由来不羡瓦松高。 131 0 郑谷 淮上与友人别 扬子江头杨柳春,杨花愁杀渡江人。数声风笛离亭晚,君向潇湘我向秦。 132 0 郑谷 鹧鸪 暖戏烟芜锦翼齐,品流应得近山鸡。雨昏青草湖边过,花落黄陵庙里啼。游子乍闻征袖湿,佳人才唱翠眉低。相呼相应湘江阔,苦竹丛深日向西。 133 1 郑谷 海棠 春风用意匀颜色,销得携觞与赋诗。秾丽最宜新著雨,娇娆全在欲开时。莫愁粉黛临窗懒,梁广丹青点笔迟。朝醉暮吟看不足,羡他蝴蝶宿深枝。 134 0 郑谷 中年 漠漠秦云淡淡天,新年景象入中年。情多最恨花无语,愁破方知酒有权。苔色满墙寻故第,雨声一夜忆春田。衰迟自喜添诗学,更把前题改数联。 135 0 杜荀鹤 春宫怨 早被婵娟误,欲妆临镜慵。承恩不在貌,教妾若为容?风暖鸟声碎,日高花影重。年年越溪女,相忆采芙蓉。 136 1 杜荀鹤 送友游吴越 去越从吴过,吴疆与越连。有园多种桔,无水不生莲。夜市桥边火,春风寺外船。此中偏重客,君去必经年。 137 0 杜荀鹤 山中寡妇 夫因兵死守蓬茅,麻苎衣衫鬓发焦。桑柘废来犹纳税,田园荒后尚徵苗。时挑野菜和根煮,旋斫生柴带叶烧。任是深山更深处,也应无计避征徭。 138 0 杜荀鹤 自叙 酒瓮琴书伴病身,熟谙时事乐于贫。宁为宇宙闲吟客,怕作乾坤窃禄人。诗旨未能忘救物,世情奈值不容真。平生肺腑无言处,白发吾唐一逸人。 139 0 杜荀鹤 再经胡城县 去岁曾经此县城,县民无口不冤声。今来县宰加朱绂,便是生灵血染成。 140 0 杜荀鹤 溪兴 山雨溪风卷钓丝,瓦瓯篷底独斟时。醉来睡着无人唤,流到前溪也不知。 141 1 杜荀鹤 赠质上人 枿坐云游出世尘,兼无瓶钵可随身。逢人不说人间事,便是人间无事人。 142 1 罗虬 比红儿诗(百首录一) 薄罗轻剪越溪纹,鸦翅低从两鬓分。料得相如偷见面,不应琴里挑文君。 143 1 贯休 春晚书山家屋壁二首 柴门寂寂黍饭馨,山家烟火春雨晴。庭花蒙蒙水泠泠,小儿啼索树上莺。水香塘黑蒲森森,鸳鸯鸂鶒如家禽。前村后垄桑柘深,东邻西舍无相侵。蚕娘洗茧前溪渌,牧童吹笛和衣浴。山翁留我宿又宿,笑指西坡瓜豆熟。 144 0 崔涂 孤雁 几行归塞尽,念尔独何之?暮雨相呼失,寒塘欲下迟。渚云低暗度,关月冷相随。未必逢矰缴,孤飞自可疑。 145 0 崔涂 春夕 水流花谢两无情,送尽东风过楚城。蝴蝶梦中家万里,子规枝上月三更。故园书动经年绝,华发春唯满镜生。自是不归归便得,五湖烟景有谁争? 146 0 秦韬玉 贫女 蓬门未识绮罗香,拟托良媒益自伤。谁爱风流高格调,共怜时世俭梳妆。敢将十指夸针巧,不把双眉斗画长。苦恨年年压金线,为他人作嫁衣裳! 147 0 唐彦谦 采桑女 春风吹蚕细如蚁,桑芽才努青鸦嘴。侵晨采桑谁家女,手挽长条泪如雨。去岁初眠当此时,今岁春寒叶放迟。愁听门外催里胥,官家二月收新丝。 148 1 王驾 社日 鹅湖山下稻粱肥,豚栅鸡栖半掩扉。桑柘影斜春社散,家家扶得醉人归。 149 1 王驾 雨晴 雨前初见花间蕊,雨后全无叶底花。蜂蝶纷纷过墙去,却疑春色在邻家。 150 0 陈玉兰 寄夫 夫戍边关妾在吴,西风吹妾妾忧夫。一行书信千行泪,寒到君边衣到无? 151 1 齐己 早梅 万木冻欲折,孤根暖独回。前村深雪里,昨夜一枝开。风递幽香出,禽窥素艳来。明年如应律,先发望春台。 152 0 李洞 绣岭宫词 春日迟迟春草绿,野棠开尽飘香玉。绣岭宫前鹤发翁,犹唱开元太平曲。 153 1 卢汝弼 和李秀才边庭四时怨(其四) 朔风吹雪透刀瘢,饮马长城窟更寒。半夜火来知有敌,一时齐保贺兰山。 154 0 花蕊夫人徐氏 述国亡诗 君王城上竖降旗,妾在深宫那得知?十四万人齐解甲,更无一个是男儿。 155 0 翁宏 春残 又是春残也,如何出翠帏?落花人独立,微雨燕双飞。寓目魂将断,经年梦亦非。那堪向愁夕,萧飒暮蝉辉。 156 0 谭用之 秋宿湘江遇雨 湘上阴云锁梦魂,江边深夜舞刘琨。秋风万里芙蓉国,暮雨千家薜荔村。乡思不堪悲橘柚,旅游谁肯重王孙。渔人相见不相问,长笛一声归岛门。 157 0 张泌 寄人 别梦依依到谢家,小廊回合曲阑斜。多情只有春庭月,犹为离人照落花。 158 1 捧剑仆 诗 青鸟衔葡萄,飞上金井栏。美人恐惊去,不敢卷帘看。 159 0 孟宾于 公子行 锦衣红夺彩霞明,侵晓春游向野庭。不识农夫辛苦力,骄骢踏烂麦青青。 -------------------------------------------------------------------------------- /2018/LC/hw/readme.MD: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /2018/LC/readme.MD: -------------------------------------------------------------------------------- 1 | # 언어와 컴퓨터 (100.130) 2 | 서울대학교 언어학과, 2018학년도 2학기 3 | 4 | + 강의자: 박수지(mam3b at snu_ac_kr) 5 | + 목표: 이 과목은 컴퓨터언어학을 위한 기초 과정으로, 문자로 이루어진 텍스트 처리를 중심으로 인간의 언어를 컴퓨터에서 구현하는 과정을 배운다. 강좌는 크게 두 부분으로 이루어져 있다. 중간고사 이전에는 대량의 텍스트를 자동으로 처리할 수 있도록 Python 프로그램을 사용하는 방법을 익히며, 이후에는 자연언어 처리에 필요한 통계 모형에 관하여 학습한다. 6 | + 교재 7 | - Jurafsky and Martin. (forthcoming). Speech and Language Processing (3rd ed. draft) https://web.stanford.edu/~jurafsky/slp3/ 8 | - 조엘 그루스 지음. 박은정·김한결·하성주 옮김. (2016). 《밑바닥부터 시작하는 데이터 과학: 데이터 분석을 위한 파이썬 프로그래밍과 수학·통계 기초》. 인사이트. 9 | + 기타 참고 자료 10 | - [Automating the boring stuff](https://automatetheboringstuff.com) 11 | - [Think Python (2nd Edition)](http://greenteapress.com/wp/think-python-2e/) 12 | - [씽크 파이썬](https://thebook.io/006878/) 13 | - [파이썬 자습서](https://docs.python.org/ko/3/tutorial/index.html) 14 | 15 | 16 | ## 수업 일정 및 자료 17 | 18 | ### 제1강 (2018-09-03) 강의 소개 19 | 20 | ### 제2강 (2018-09-05) 시작하기 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/02-20180905.pdf)) 21 | 강좌의 목표, 파이썬 인터프리터, 산술 연산, 오류 메시지 22 | #### 코드 23 | + [arith.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/arith.py) 24 | + [print_arith.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/print_arith.py) 25 | + [print_hello.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/print_hello.py) 26 | #### 파이썬 인터프리터 사용하기 27 | ##### 웹 28 | + [repl.it](https://repl.it) 29 | + [Python Tutor](http://pythontutor.com) 30 | ##### 모바일 31 | + [QPython3 (안드로이드)](https://play.google.com/store/apps/details?id=org.qpython.qpy3) 32 | + [Pydroid 3 (안드로이드)](https://play.google.com/store/apps/details?id=ru.iiec.pydroid3) 33 | + [Pythonista 3 (iOS)](https://itunes.apple.com/kr/app/pythonista-3/id1085978097?mt=8) 34 | 35 | ### 제3강 (2018-09-10) 기본 자료형: 수와 문자열 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/03-20180910.pdf)) 36 | #### 과제 37 | + \[숙제02] 파이썬 기본 개념 연습 38 | - https://automatetheboringstuff.com/chapter1/ 연습문제 39 | 40 | ### 제4강 (2018-09-12) 반복 가능한 자료형 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/04-20180912.pdf)) 41 | 객체, 리스트, 튜플, 범위, 딕셔너리 42 | #### 코드 43 | + [count_char.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/count_char.py) 44 | + [sort_words.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/sort_words.py) 45 | #### 도구 46 | + [부동소수점 변환기](https://www.exploringbinary.com/floating-point-converter/) 47 | + [리스트 복사 과정 시각화](http://pythontutor.com) 48 | 49 | ### 제5강 (2018-09-17) 조건문 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/05-20180917.pdf)) 50 | 복합문, if, else, elif 키워드 51 | #### 코드 52 | + [cold_or_not.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/cold_or_not.py) 53 | + [cold_or_hot.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/cold_or_hot.py) 54 | + [cold_or_mild_or_hot.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/cold_or_mild_or_hot.py) 55 | + [multi3.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/multi3.py) 56 | + [password.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/password.py) 57 | + [fridge.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/fridge.py) 58 | + [arith_test.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/arith_test.py) 59 | #### 과제 60 | + \[숙제03] 리스트 및 조건문 연습 61 | - https://automatetheboringstuff.com/chapter2/ 연습문제 62 | - https://automatetheboringstuff.com/chapter4/ 연습문제 63 | 64 | ### 제6강 (2018-09-19) 반복문 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/06-20180919.pdf)) 65 | 복합문, while, for, break, pass 키워드 66 | #### 코드 67 | + [20180919-loop.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/20180919-loop.py) 68 | + [snooze.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/snooze.py) 69 | #### 과제 70 | + [\[숙제04\] 프로그래밍 연습](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw04.pdf) 71 | + [\[숙제04심화\] 3-6-9 게임](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw04adv.pdf) 72 | 73 | ### 제7강 (2018-10-01) 모듈과 함수 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/07-20181001.pdf)) 74 | #### 코드 75 | + [word_freq_functions.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/word_freq_functions.py) 76 | #### 과제 77 | + [\[숙제05\] 함수 정의 연습](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw05.pdf) 78 | 79 | ### 제8강 (2018-10-08) 파일 처리 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/08-20181008.pdf)) 80 | #### 읽기 81 | + [Dive into Python 3: Chapter 11. Files](https://juehan.github.io/DiveIntoPython3_Korean_Translation/files.html) 82 | + [씽크 파이썬: 9장. 사례 연구: 워드 플레이](https://thebook.io/006878/ch09/) 83 | #### 과제 84 | + [\[숙제06\] 파일 처리 연습](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw06.pdf) 85 | - 자료: [현대 국어 사용 빈도 조사 결과 파일(텍스트 파일)](http://www.korean.go.kr/front/etcData/etcDataView.do?mn_id=46&etc_seq=61) | [데이터 파일 proper_nouns.txt](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/proper_nouns.txt) 86 | - 참고: [딕셔너리 사용하기](https://dojang.io/mod/page/view.php?id=1003) 87 | 88 | ### 제9강 (2018-10-10) 문자 인코딩 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/09-20181010.pdf)) 89 | #### 읽기 90 | + [국어 정보화의 방향: 문자 코드를 중심으로](http://www.korean.go.kr/nkview/nklife/2015_2/25_0205.pdf) 91 | + [‘설믜를 설믜라 못 부르는’ 김설믜씨 “제 이름을 지켜주세요”](http://www.hani.co.kr/arti/society/society_general/864914.html) 92 | 93 | ### 제10강 (2018-10-17) 한글 처리 모듈 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/10-20181017.pdf)) 94 | try 문, 한글 음절 분해, 옛한글 자모 조합 95 | #### 읽기 96 | + [파이썬 자습서 8. 에러와 예외](https://docs.python.org/ko/3/tutorial/errors.html) 97 | #### 코드 98 | + [try.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/try.py) 99 | + [hangul.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/hangul.py) 100 | #### 옛한글 지원 글꼴 101 | + [본고딕(Source Han Sans)](https://github.com/adobe-fonts/source-han-sans/blob/master/README-KR.md) 102 | + [본명조(Source Hans Serif)](https://github.com/adobe-fonts/source-han-serif/blob/master/README-KR.md) 103 | + [나눔옛한글](https://hangeul.naver.com/2014/archaicword) 104 | #### 과제 105 | + [\[숙제07\] 한글 처리 모듈 확장](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw07.pdf) 106 | + [\[숙제07심화\] 옛한글 입력 방법 추가](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw07adv.pdf) 107 | 108 | ### 중간고사 109 | 110 | ### 제11강 (2018-10-29) 텍스트 처리 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/11-20181029.pdf)) 111 | 정규표현식, 코퍼스, 단어 토큰화, 단어 정제, 문장 분리 112 | #### 코드 113 | + [maxmatch.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/maxmatch.py) 114 | + [decision_tree.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/decision_tree.py) 115 | #### 기타 116 | + [형태소 깎는 노인: 국어사 자료를 위한 형태분석 보조기](http://www.ndsl.kr/ndsl/search/detail/article/articleSearchResultDetail.do?cn=NPAP12638918) — MaxMatch와 비슷한 방법으로 형태소 분리하기 117 | + [단어 임베딩과 음성적 유사도를 이용한 트위터 ‘서치 방지 단어’ 의 자동 예측](http://www.ndsl.kr/ndsl/search/detail/article/articleSearchResultDetail.do?cn=NPAP12638863) — 최소 편집 거리로 음성적 유사도 측정하기 118 | 119 | 120 | ### 제12강 (2018-10-31) 정규표현식 실습 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/12-20181031.pdf)) 121 | re 모듈, ELIZA 122 | #### 코드 123 | + [reg_exp.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/reg_exp.py) 124 | + [eliza.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/eliza.py) 125 | #### 읽기 126 | + [ELIZA: a computer program for the study of natural language communication between man and machine](http://doi.org/10.1145/365153.365168) 127 | #### 도구 128 | + 정규표현식 테스트 [RegExr: Learn, Build, & Test RegEx](https://regexr.com) 129 | + 파이썬 라이브러리 [NLTK: Natural Language Toolkit](http://www.nltk.org) 130 | + 파이썬 라이브러리 [KoNLPy: 파이썬 한국어 NLP](http://konlpy.org/ko/latest/) 131 | #### 과제 132 | + [\[숙제09\] ELIZA 완성하기 (조별)](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw09.pdf) 133 | - 자료: [eliza.txt](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/eliza.txt) 134 | + [\[숙제09심화\] 최소 편집 거리 알고리듬 구현하기](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw09adv.pdf) 135 | 136 | 137 | ### 제13강 (2018-11-07) 벡터, 통계, 데이터 시각화 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/13-20181107.pdf)) 138 | 밑바닥부터 시작하는 데이터 과학 3장–8장. 139 | #### 코드 140 | + [vectors.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/vectors.py) 141 | + [statistics.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/statistics.py) 142 | #### 과제 143 | + [\[숙제10\] NumPy 및 SciPy 연습](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw10.pdf) 144 | + [\[숙제10심화\] 트위터 사용자 데이터 분석](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw10adv.pdf) 145 | - 자료: [tweets.txt](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/tweets.txt) 146 | - [해설](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw10adv_solutions.pdf) 147 | #### 도구 148 | + [NumPy](http://www.numpy.org) 149 | + [SciPy](https://www.scipy.org) 150 | 151 | ### 제14강 (2018-11-12) n-그램 언어 모형 (1) ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/14-20181112.pdf)) 152 | 153 | ### 제15강 (2018-11-14) n-그램 언어 모형 (2) ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/15-20181114.pdf)) 154 | #### 코드 155 | + 문장 생성 [generate.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/generate.py) 156 | + “영어스러운 단어 생성” [ngrams.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/ngrams.py) 157 | - 자료: [literary.txt](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/literary.txt) https://en.oxforddictionaries.com/explore/literary-words 158 | #### 과제 159 | + [\[숙제11\] n-그램 언어 모형](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw11.pdf) 160 | 161 | 162 | ### 제16강 (2018-11-19) 단순 베이즈 분류기와 감정분석 (1) ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/16-20181119.pdf)) 163 | 164 | ### 제17–18강 (2018-11-21,26) 단순 베이즈 분류기와 감정분석 (2-3) ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/17-20181121.pdf)) 165 | #### 코드 166 | + 영화평 분류 [naivebayes_practice.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/naivebayes_practice.py) 167 | - 자료: [reviews.txt](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/reviews.txt) 168 | = 참조: [꼬꼬마 형태소 분석기: 품사 태그표](http://kkma.snu.ac.kr/documents/index.jsp?doc=postag) 169 | #### 과제 170 | + [\[숙제12\] 단순 베이즈 분류기를 사용한 당시(唐詩)의 감정 분류](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw12.pdf) 171 | - 자료: [Sentiment lexicon for classical Chinese poetry](https://www.cl.uni-heidelberg.de/~hou/resources.mhtml) | [데이터 poems.txt](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/poems.txt) 172 | 173 | 174 | ### 제19강 (2018-11-28) scikit-learn과 NLTK를 사용한 기계학습 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/19-20181128.pdf)) 175 | #### 코드 176 | + [naivebayes_nltk.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/naivebayes_nltk.py) 177 | + [naivebayes_sklearn.py](https://github.com/suzisuti/lecture/blob/master/2018/LC/codes/naivebayes_sklearn.py) 178 | #### 읽기 179 | + [NLTK: Learning to Classify Text](http://www.nltk.org/book/ch06.html) 180 | + [scikit-learn: Working With Text Data](https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html) 181 | #### 도구 182 | + [일부 환경에서 scikit-learn 설치 후 NumPy와 SciPy를 재설치하는 방법](https://code.i-harness.com/ko-kr/q/232f672) 183 | #### 과제 184 | + [\[숙제13\] 악성 트윗 분류기 개발하기 (조별)](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/hw13.pdf) 185 | - 읽기: [Automated Hate Speech Detection and the Problem of Offensive Language](https://aaai.org/ocs/index.php/ICWSM/ICWSM17/paper/view/15665) 186 | - 자료: https://github.com/t-davidson/hate-speech-and-offensive-language | [데이터 파일 train.txt](https://github.com/suzisuti/lecture/blob/master/2018/LC/hw/train.txt) 187 | 188 | 189 | ### 제20강 (2018-12-03) 로지스틱 회귀분석 ([슬라이드](https://github.com/suzisuti/lecture/blob/master/2018/LC/slides/20-20181203.pdf)) 190 | 191 | ### 기말고사 192 | -------------------------------------------------------------------------------- /2018/LC/slides/02-20180905.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/02-20180905.pdf -------------------------------------------------------------------------------- /2018/LC/slides/03-20180910.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/03-20180910.pdf -------------------------------------------------------------------------------- /2018/LC/slides/04-20180912.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/04-20180912.pdf -------------------------------------------------------------------------------- /2018/LC/slides/05-20180917.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/05-20180917.pdf -------------------------------------------------------------------------------- /2018/LC/slides/06-20180919.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/06-20180919.pdf -------------------------------------------------------------------------------- /2018/LC/slides/07-20181001.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/07-20181001.pdf -------------------------------------------------------------------------------- /2018/LC/slides/08-20181008.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/08-20181008.pdf -------------------------------------------------------------------------------- /2018/LC/slides/09-20181010.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/09-20181010.pdf -------------------------------------------------------------------------------- /2018/LC/slides/10-20181017.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/10-20181017.pdf -------------------------------------------------------------------------------- /2018/LC/slides/11-20181029.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/11-20181029.pdf -------------------------------------------------------------------------------- /2018/LC/slides/12-20181031.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/12-20181031.pdf -------------------------------------------------------------------------------- /2018/LC/slides/13-20181107.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/13-20181107.pdf -------------------------------------------------------------------------------- /2018/LC/slides/14-20181112.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/14-20181112.pdf -------------------------------------------------------------------------------- /2018/LC/slides/15-20181114.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/15-20181114.pdf -------------------------------------------------------------------------------- /2018/LC/slides/16-20181119.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/16-20181119.pdf -------------------------------------------------------------------------------- /2018/LC/slides/17-20181121.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/17-20181121.pdf -------------------------------------------------------------------------------- /2018/LC/slides/19-20181128.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/19-20181128.pdf -------------------------------------------------------------------------------- /2018/LC/slides/20-20181203.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suparklingmin/lecture/79d7c5337b2731e732d96293b660a90897f157ef/2018/LC/slides/20-20181203.pdf -------------------------------------------------------------------------------- /2022/CL/readme.MD: -------------------------------------------------------------------------------- 1 | [여기로 오세요](https://github.com/suzisuti/CompLing2022) 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 강의 2 | + 컴퓨터의 개념 및 실습 (2018학년도 1학기, [2023학년도 1학기](https://github.com/suparklingmin/DCCP2023)) 3 | + 언어데이터과학 (2022학년도 2학기) 4 | + 컴퓨터언어학 (2019학년도 1학기, 2021학년도 1학기, [2022학년도 1학기](https://github.com/suzisuti/CompLing2022)) 5 | + 언어와 컴퓨터 (2017학년도 2학기, [2018학년도 2학기](https://github.com/suzisuti/lecture/tree/master/2018/LC), 2020학년도 2학기, [2021학년도 2학기](https://github.com/suzisuti/LangComp2021)) 6 | --------------------------------------------------------------------------------