NLTK 6: 텍스트 분류 학습 (` `%%%`#`&12_`__~~~ౡ氀猀攀)

Similar documents

º¸µµ¿Â

성인용-칼라-단면-수정1030

<C3D6BFECBCF6BBF328BFEBB0ADB5BF29202D20C3D6C1BE2E687770>

( )업계소식

( )전국네트워크


( )업계소식

( )업계소식(14.01월)


텀블러514

목 록( 目 錄 )

03-1영역형( )

02-1기록도전( )

07년12월1일자(65호)01-04

DIY 챗봇 - LangCon

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

#이좋은건강-1107-인쇄용.indd

Documents Taxonomy - LASSO regression을 중심으로

Stage 2 First Phonics

포천시시설관리공단 내규 제 24호 포천시시설관리공단 인사규정 시행내규 일부개정(안) 포천시시설관리공단 인사규정 시행내규 일부를 다음과 같이 개정 한다. 제17조(기간제근로자의 무기계약직 임용) 1 기간제근로자 관리규정 제16조 를 제19조 로 한다. 제20조(인사기록)

목 차 1.감사목적 1 2.감사기간 1 3.감사위원회 편성 1 4.감사대상기관 2 5.위원회별 감사일정(총괄) 3 6.감사진행 4 7.감사대상기관별 증인 등의 출석범위 5 8.위원회별 감사 사무보조직원 선정 6 9.감사결과 처리의견 7 10.기타 감사의견 9 11.감사

8장 문자열



02 솔섬풍경 소식 NEWS 세계적 결혼 성지로 뜬 알펜시아 중국인 12쌍이 10일 평창 알펜시아리조트 에서 합동결혼식을 올렸다. 알펜시아는 이 번 중국인 커플 합동결혼식을 시작으로 세 계적인 결혼 성지로의 변신을 시도한다. 이번 웨딩행사는 최근 중국 젊은 커플들에 게

#한국사문제7회4급

May 2014 BROWN Education Webzine vol.3 감사합니다. 그리고 고맙습니다. 목차 From Editor 당신에게 소중한 사람은 누구인가요? Guidance 우리 아이 좋은 점 칭찬하기 고맙다고 말해주세요 Homeschool [TIP] Famil


evt_down[1].pdf

<C0E5B7C1BBF328BEEEB8B0C0CCB5E9C0C729202D20C3D6C1BE2E687770>

2 Wooyi news letter

aT

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

untitled

어울림 5호 내지-최종.indd

PowerPoint 프레젠테이션

03 ¸ñÂ÷

02 C h a p t e r Java

PowerPoint 프레젠테이션

책을읽고(요약)1권

º»¹®-2ºÎ_¼öÁ¤_ÃÖÁ¾¸¶°¨

e01.PDF

<30312DC0CFC1A4C7A52E687770>


SIGPLwinterschool2012

Microsoft Word - P02.doc


C프로-3장c03逞풚


소식지도 나름대로 정체성을 가지게 되는 시점이 된 거 같네요. 마흔 여덟번이나 계속된 회사 소식지를 가까이 하면서 소통의 좋은 점을 배우기도 했고 해상직원들의 소탈하고 소박한 목소리에 세속에 찌든 내 몸과 마음을 씻기도 했습니다. 참 고마운 일이지요 사람과 마찬가지로

2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract

UNIST_교원 홈페이지 관리자_Manual_V1.0

PowerPoint 프레젠테이션

slide2

Week5

*표1234(1월호)

_ _0.xls

단순 베이즈 분류기

비긴쿡-자바 00앞부속

424

420

392

흡연, 알고보면 질병! 울산금연지원센터 센터장 유 철 인 교수 금연으로 치료하세요. 울산금연지원센터는? 2015년 6월 보건복지부의 지원으로 시작된 울산금연지원센터는 울산 대학교병원과 울산금연운동협의회의 문성과 신뢰성을 바탕으로 금연의 사각지대에 놓인 학교 밖 청소년,

pdf

03장.스택.key

년 대한임상건강증진학회 춘계 통합학술대회 정착 초기 단계의 보건의료 문제(1): 감염성 질환 HBsAg (+) : B형 간염 보유자 남한 청소년 남한 2대 15 -B형간염면역상태: 7% HBsAg preva

DDS

ȸº¸11È£

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for



Javascript.pages

한국성인에서초기황반변성질환과 연관된위험요인연구

untitled

C++ Programming

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

50_1953.pdf

C o n t e n t s 2 3


PowerPoint 프레젠테이션

<53504E203228BBF32920B1B3C0E B3E22033BFF9292DB8C0BAB8B1E22E687770>


DCR-HC15

6월 9일(목) 정기총회 17대 윤종현 회장 취임 10월 15일(토) 69 문화행사 개최예정 매년 가을에 진행해 온 69 문화행사는 10 월 15일(토) 온양 박물관에서 갖기로 했습 니다. 자세한 내용은 추후 69 홈페이지 등을 통해 고지할 예정입니다. 많은 기대 와

RVPH020B2M1 IM.9959.

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

잘 수습됐다고 생각합니다. 하지만 그 과정에서 그동안 우리가 세계적으로 높은 의료 수준이 라고 자부했음에도, 감염성 관리에 대한 문제를 넘어 본질적으로 우리나라 의료 시스템 전반 에 대한 민낯과 속살을 보였다고 할 정도로 취약한 여러 가지 문제점들을 드러냈습니다. 그래

AnnualReport_2015.pdf

아름다운-06월-공통

Polly_with_Serverless_HOL_hyouk

전자신문 코리아 e-뉴스 밴쿠버 2012 년 6월22일 9 면 충남도 최석봉 농업시설담당은 이달 말까지 가뭄이 계속되면 농업용수 공급도 한계상황에 이 를 것 이라고 우려했 충남 태안군에서는 저수지가 바 닥을 드러내면서 멸종위기 1급으 로 지정된 민물조개류 귀이빨 대칭이

18호-마스터베이커-내지82p

歯제7권1호(최종편집).PDF

05.PDF

R을 이용한 텍스트 감정분석

JUNIT 실습및발표

KAKAO AI REPORT Vol.01

< C4BFB8AEBEEEC6D0BDBA20BBE7B7CAC1FD5FB0C7C3E02E687770>

<C804><CCB4>.pdf

Transcription:

nltk.org/book/ch06.html

gender_features word last_letter word[-1] word >>> def gender_features(word):... return { last_letter : word[-1]} >>> gender_features( Shrek ) { last_letter : k }

nltk.corpus.names nltk.download() labeled_names (u Aaron, male ) (u Zoe, female ) random.shuffle() >>> from nltk.corpus import names >>> labeled_names = (... [(name, male ) for name in names.words( male.txt )] +... [(name, female ) for name in names.words( female.txt )]) >>> import random >>> random.shuffle(labeled_names)

featuresets ({ last_letter : n}, male ) ({ last_letter : e}, female ) classifier nltk.naivebayesclassifier >>> featuresets = [(gender_features(n), gender)... for (n, gender) in labeled_names] >>> train_set, test_set = featuresets[500:], featuresets[:500] >>> classifier = nltk.naivebayesclassifier.train(train_set)

classify() >>> classifier.classify(gender_features( Neo )) male >>> classifier.classify(gender_features( Trinity )) female nltk.classify.accuracy() >>> print(nltk.classify.accuracy(classifier, test_set)) 0.77

.show_most_informative_features() >>> classifier.show_most_informative_features(5) Most Informative Features last_letter = a female : male = 33.2 : 1.0 last_letter = k male : female = 32.6 : 1.0 last_letter = p male : female = 19.7 : 1.0 last_letter = v male : female = 18.6 : 1.0 last_letter = f male : female = 17.3 : 1.0

0.77 last_letter first_letter count(letter) has(letter >>> def gender_features2(name):... features = {}... features[ first_letter ] = name[0].lower()... features[ last_letter ] = name[-1].lower()... for letter in abcdefghijklmnopqrstuvwxyz :... features[ count({}).format(letter)] = name.lower().count(letter)... features[ has({}).format(letter)] = (letter in name.lower())... return features >>> >>> gender_features2( John ) { count(j) : 1, has(d) : False, count(b) : 0,...}

gender_features() gender_features2() gender_features2() 0.768 0.77 >>> featuresets = [(gender_features2(n), gender)... for (n, gender) in labeled_names] >>> train_set, test_set = featuresets[500:], featuresets[:500] >>> classifier = nltk.naivebayesclassifier.train(train_set) >>> print(nltk.classify.accuracy(classifier, test_set)) 0.768

0.75 >>> train_names = labeled_names[1500:] >>> devtest_names = labeled_names[500:1500] >>> test_names = labeled_names[:500] >>> train_set = [(gender_features(n), gender)... for (n, gender) in train_names] >>> devtest_set = [(gender_features(n), gender)... for (n, gender) in devtest_names] >>> test_set = [(gender_features(n), gender)... for (n, gender) in test_names] >>> classifier = nltk.naivebayesclassifier.train(train_set) >>> print(nltk.classify.accuracy(classifier, devtest_set)) 0.75

tag guess >>> errors = [] >>> for (name, tag) in devtest_names:... guess = classifier.classify(gender_features(name))... if guess!= tag:... errors.append( (tag, guess, name) )

>>> for (tag, guess, name) in sorted(errors):... print( correct={:<8} guess={:<8s} name={:<30}.... format(tag, guess, name)) correct=female guess=male name=abigail... correct=female guess=male name=cindelyn... correct=female guess=male name=katheryn correct=female guess=male name=kathryn... correct=male guess=female name=aldrich... correct=male guess=female name=mitch... correct=male guess=female name=rich...

0.782 0.77 >>> def gender_features(word):... return { suffix1 : word[-1:],... suffix2 : word[-2:]} >>> train_set = [(gender_features(n), gender)... for (n, gender) in train_names] >>> devtest_set = [(gender_features(n), gender)... for (n, gender) in devtest_names] >>> classifier = nltk.naivebayesclassifier.train(train_set) >>> print(nltk.classify.accuracy(classifier, devtest_set)) 0.782

nltk.corpus.movie_reviews documents ([u plot,..., u echoes ], u neg ) ([u if, u there,...], u pos ) random.shuffle() >>> from nltk.corpus import movie_reviews >>> documents = [(list(movie_reviews.words(fileid)), category)... for category in movie_reviews.categories()... for fileid in movie_reviews.fileids(category)] >>> random.shuffle(documents)

nltk.freqdist() contains(word) (True/False) >>> all_words = nltk.freqdist(w.lower() for w in movie_reviews.words()) >>> word_features = list(all_words)[:2000] [1] >>> >>> def document_features(document): [2]... document_words = set(document) [3]... features = {}... for word in word_features:... features[ contains({}).format(word)] = (word in document_words)... return features >>> print(document_features(movie_reviews.words( pos/cv957_8737.txt ))) { contains(waste) : False, contains(lot) : False,...}

0.81 >>> featuresets = [(document_features(d), c) for (d,c) in documents] >>> train_set, test_set = featuresets[100:], featuresets[:100] >>> classifier = nltk.naivebayesclassifier.train(train_set) >>> print(nltk.classify.accuracy(classifier, test_set)) 0.81 >>> classifier.show_most_informative_features(5) Most Informative Features contains(outstanding) = True pos : neg = 11.1 : 1.0 contains(seagal) = True neg : pos = 7.7 : 1.0 contains(wonderfully) = True pos : neg = 6.8 : 1.0 contains(damon) = True pos : neg = 5.9 : 1.0 contains(wasted) = True neg : pos = 5.8 : 1.0

random.shuffle(tagged_sents) >>> import random >>> from nltk.corpus import brown >>> tagged_sents = list(brown.tagged_sents(categories= news )) >>> random.shuffle(tagged_sents) >>> size = int(len(tagged_sents) * 0.1) >>> train_set, test_set = tagged_sents[size:], tagged_sents[:size]

file_ids >>> file_ids = brown.fileids(categories= news ) >>> size = int(len(file_ids) * 0.1) >>> train_set = brown.tagged_sents(file_ids[size:]) >>> test_set = brown.tagged_sents(file_ids[:size])

>>> train_set = brown.tagged_sents(categories= news ) >>> test_set = brown.tagged_sents(categories= fiction )

= + + + + =

= + + + + = 990 + 0 990 + 10 + 0 + 0 = 990 1000 = 99%

>>> def tag_list(tagged_sents):... return [tag for sent in tagged_sents for (word, tag) in sent] >>> def apply_tagger(tagger, corpus):... return [tagger.tag(nltk.tag.untag(sent)) for sent in corpus] >>> gold = tag_list(brown.tagged_sents(categories= editorial )) >>> test = tag_list(apply_tagger(t2,... brown.tagged_sents(categories= editorial ))) >>> cm = nltk.confusionmatrix(gold, test) >>> print(cm.pretty_format(sort_by_count=true, show_percents=true, truncate=9)) N N I A J N V N N N T J. S, B P ----+----------------------------------------------------------------+ NN <11.8%> 0.0%. 0.2%. 0.0%. 0.3% 0.0% IN 0.0% <9.0%>... 0.0%... AT.. <8.6%>...... JJ 1.7%.. <3.9%>... 0.0% 0.0%..... <4.8%>.... NNS 1.5%.... <3.2%>.. 0.0%,...... <4.4%>.. VB 0.9%.. 0.0%... <2.4%>. NP 1.0%.. 0.0%.... <1.8%>

http://www-rohan.sdsu.edu/~gawron/compling/course_ core/assignments/new_maxent_assignment.htm

senseval-hard.xml word= hard-a HARD1 20

call_extract_event.py 1 0 senseval-hard.xml senseval-hard.evt

call_maxent.py classify.batch_classify() classify.classify_many()

Testing classifier... Accuracy: 0.8220 Total: 410 Label Precision Recall HARD1 0.822 1.000 HARD2 0.000 0.000 HARD3 0.000 0.000 Label Num Corr HARD1 337 HARD2 0 HARD3 0

Testing classifier... Accuracy: 0.8220 Total: 410 Label Precision Recall HARD1 0.822 1.000 HARD2 0.000 0.000 HARD3 0.000 0.000 Label Num Corr HARD1 337 HARD2 0 HARD3 0

def extract_vocab(event_list, n=100): # Google s stoplist with most preps removed. and added, word added stopwords = [ I, a, an, are, as, and, be, com, how, is, it, of, or, that, the, this, was, what, when, where, who, will, with, the, www, was ] vocab = Counter() for (s_inst, sense) in event_list: for (i,item) in enumerate(s_inst.context): if i == int(s_inst.position): continue (item, wd, pos) = get_lex_components(item) if wd in stopwords: continue if pos in [ PRP, IN, CC, DT ]: continue vocab[item] += 1 il = vocab.items() il.sort(key=lambda x: x[1],reverse=true) il = il[:n] vocab = dict(il) return vocab

featsets = [({ feat1 : val11, feat2 : val21,...}, class1 ), ({ feat1 : val12, feat2 : val22,...}, class2 ),..., ({ feat1 : val1n, feat2 : val2n,...}, classn )] N = len(featsets) train_set = featsets[:int(n*0.9)] test_set = featsets[int(n*0.9):] train classifier = nltk.classify.naivebayes.naivebayesclassifier classifier = nltk.classify.maxent.maxentclassifier classifier.train(train_set) dir(nltk.classify) nltk.classify.accuracy(classifier, test_set))