필기---chap2 텍스트 자료와 어휘 자원 얻기

8356 단어
2.1 텍스트 자료 라이브러리 가져오기
쿠템버그 어료고
import nltk
nltk.corpus.gutenberg.fileids()
[u'austen-emma.txt', u'austen-persuasion.txt', u'austen-sense.txt', u'bible-kjv.txt', u'blake-poems.txt', u'bryant-stories.txt', u'burgess-busterbrown.txt', u'carroll-alice.txt', u'chesterton-ball.txt', u'chesterton-brown.txt', u'chesterton-thursday.txt', u'edgeworth-parents.txt', u'melville-moby_dick.txt', u'milton-paradise.txt', u'shakespeare-caesar.txt', u'shakespeare-hamlet.txt', u'shakespeare-macbeth.txt', u'whitman-leaves.txt']
emma = nltk.corpus.gutenberg.words(u'austen-emma.txt')
len(emma)
192427

raw () 함수: 언어학적으로 처리되지 않은 파일의 내용을 줍니다.따라서 예를 들어 렌(gutenberg.raw('blake-poems.txt')은 텍스트에 나타난 어휘 개수를 알려주고 단어 사이의 빈칸을 포함한다.
sents () 함수: 텍스트를 문장으로 나누고, 그 중 한 문장은 하나의 단어 체인표입니다.
macbeth_sentences = gutenberg.sents('shakespeare-macbeth.txt')   #        
macbeth_sentences[1037]
['Double', ',', 'double', ',', 'toile', 'and', 'trouble', ';',
'Fire', 'burne', ',', 'and', 'Cauldron', 'bubble']
longest_len = max([len(s) for s in macbeth_sentences])   #       
[s for s in macbeth_sentences if len(s) == longest_len]

네트워크 및 채팅 텍스트
NLTK의 인터넷 텍스트 모음집은 Firefox 교류 포럼, 뉴욕에서 무심코 들은 대화, 카리브 해적의 시나리오, 개인 광고와 포도주 평론을 포함한다.
from nltk.corpus import webtext
for fileid in webtext.fileids():
    print fileid,webtext.raw(fileid)[:60],'...'

실시간 메신저 채팅 응답 자료 라이브러리, 10000장 이상의 게시물 포함;15개의 파일로 나뉘어져 있으며, 파일마다 몇 백 개의 특정 날짜와 특정 연령의 채팅방이 포함되어 있다.파일 이름에는 날짜, 채팅방, 게시물 수가 포함됩니다.
from nltk.corpus import nps_chat
chatroom=nps_chat.posts('10-19-20s_706posts.xml')
chatroom[123]

브라운 어료 라이브러리
브라운 어료 라이브러리는 500개의 서로 다른 출처의 텍스트를 포함하고 텍스트에 따라 분류한다. 예를 들어 뉴스, 사설 등이다.
브라운 자료 라이브러리의 모든 부분의 예시 문서
ID
서류
문체
묘사
A16
ca16
뉴스 뉴스
Chicago Tribune: Society Reportage
B02
cb02
사설 편집
Christian Science Monitor: Editorials
C17
cc17
평론
Time Magazine: Reviews
D12
cd12
종교religion
Underwood: Probing the Ethics of Realtors
E36
ce36
취미
Norling: Renting a Car in Europe
F25
cf25
전설
Boroff: Jewish Teenage Culture
G22
cg22
순수문학belleslettres
Reiner: Coping with Runaway Technology
H15
ch15
정부
US Office of Civil and Defence Mobilization: The Family Fallout Shelter
J17
cj19
널리 보기 learned
Mosteller: Probability with Statistical Applications
K04
ck04
소설fiction
W.E.B. Du Bois: Worlds of Color
L13
cl13
추리소설 mystery
Hitchens: Footsteps in the Night
M01
cm01
공상 과학 과학fiction
Heinlein: Stranger in a Strange Land
N14
cn15
탐험adventure
Field: Rattlesnake Ridge
P12
cp12
멜로 로맨스
Callaghan: A Passion in Rome
R06
cr06
유머
Thurber: The Future, If Any, of Comedy
 
from nltk.corpus import brown
brown.categories()            #          
brown.words(categories='news')#            
brown.words(fileids=['cg22'])
brown.sents(categories=['news', 'editorial', 'reviews'])

브라운 어료 라이브러리는 문체 간의 체계적인 차이를 연구하는 문체학이라는 언어학 연구이다
서로 다른 문체 중의 정태 동사의 용법을 비교하다.
첫 번째 단계: 특정 문체의 계수를 생성한다.
from nltk.corpus import brown
news_text=brown.words(categories='news')#        s
fdist=FreqDist([w.lower() for w in news_text])#      ,      
modals=['can','could','may','might','must','will']
for m in modals:
    print m+':',fdist[m],
from nltk.corpus import brown
import nltk
cfd = nltk.ConditionalFreqDist((genre, word)
                          for genre in brown.categories()
                          for word in brown.words(categories=genre))
genres = ['news', 'religion', 'hobbies', 'science_fiction', 'romance', 'humor']
modals = ['can', 'could', 'may', 'might', 'must', 'will']
cfd.tabulate(conditions=genres, samples=modals)

# cfd가 작성한 공백을 한 줄에 두지 말고 두 for 순환의 배치 위치를 주의하십시오.실행 결과는 다음과 같습니다.
                 can could  may might must will 
           news   93   86   66   38   50  389 
       religion   82   59   78   12   54   71 
        hobbies  268   58  131   22   83  264 
science_fiction   16   49    4   12    8   16 
        romance   74  193   11   51   45   43 
          humor   16   30    8    8    9   13 

분석한 결과 뉴스 문체에서 가장 흔히 볼 수 있는 정태동사는will이고 언정문체에서 가장 흔히 볼 수 있는 정태동사는could이다.
로이터 통신 자료 라이브러리
로이터 통신 자료 라이브러리에는 10788개의 뉴스 문서가 포함되어 있으며 모두 130만 글자가 있다.90개 주제로 나뉘어'훈련'과'테스트'에 따라 두 조로 나뉜다.
from nltk.corpus import reuters
reuters.fileids()       #    
reuters.categories()    #         


#               ,                   。           fileid   fileids      
reuters.categories('traing/9865')
reuters.categories(['traing/9865','traing/9880'])

reuters.fileids('barley')
reuters.fileids(['barley','corn'])
#                      
reuters.words('traing/9865')[:14]
reuters.words(['traing/9865','traing/9880'])

reuters.words(categories='barley')
reuters.words(categories=['barley','corn'])

취임 연설 자료 라이브러리에서america와citizen의 시간 추이에 따른 사용 상황을 관찰한다.
from nltk.corpus import inaugural
import nltk
#inaugural.fileids()     
#[fileid[:4] for fileid in inaugural.fileids()]
cfd=nltk.ConditionalFreqDist((target,fileid[:4])
                             for fileid in inaugural.fileids()
                             for w in inaugural.words(fileid)
                             for target in ['america','citizen']
                             if w.lower().startswith(target))
cfd.plot()

실행 결과는 위의 그림과 같습니다. cfd 형식, 세 개의 for 순환과if 정렬을 주의하십시오. matplotlib 패키지를 설치하면 패키지를 호출하지 않아도 그림을 그릴 수 있습니다.
마크업 텍스트 자료 라이브러리
많은 텍스트 자료 라이브러리에는 언어학적 표시, 어적 표시, 명명 실체, 문법 구조, 의미 역할 등 다른 언어의 자료 라이브러리가 포함되어 있다
텍스트 자료 라이브러리의 구조
텍스트 자료 라이브러리의 일반적인 구조:
가장 간단한 자료 라이브러리는 특별한 조직이 없는 고립된 텍스트 집합이다.일부 자료 라이브러리는 문체(브라운 자료 라이브러리) 등 분류에 따라 조직 구조를 구성한다.일부 분류는 주제 분류 (로이터 통신 자료 라이브러리) 와 같이 중첩될 수 있다.또 다른 일부 자료 라이브러리는 시간에 따라 언어 용법의 변화를 나타낼 수 있다(취임 연설 자료 라이브러리).
예제
묘사
fileids()
자료 라이브러리의 파일
fileids([categories])
이 분류에 대응하는 자료 라이브러리의 파일
categories()
자료 라이브러리의 분류
categories([fileids])
이 파일들에 대응하는 자료 라이브러리의 분류
raw()
자료 라이브러리의 원시 내용
raw(fileids=[f1,f2,f3])
파일의 원래 컨텐트 지정하기
raw(categories=[c1,c2])
분류의 원래 컨텐트 지정
words()
전체 어료 라이브러리의 어휘
words(fileids=[f1,f2,f3])
파일의 단어 지정
words(categories=[c1,c2])
분류 중의 어휘를 지정하다
sents()
분류 중인 문장 지정
sents(fileids=[f1,f2,f3])
파일의 문장 지정하기
sents(categories=[c1,c2])
분류 중인 문장 지정
abspath(fileid)
디스크에 파일 위치 지정하기
encoding(fileid)
파일 인코딩 (알면)
open(fileid)
지정한 자료 라이브러리 파일의 파일 흐름 열기
root()
로컬에 설치된 자료 라이브러리 루트 디렉터리 경로
자료 라이브러리 접근 방법 간의 차이점:
raw=gutenberg.raw('burgess-busterbrown.txt')#   
raw[1:20]
words=gutenberg.words('burgess-busterbrown.txt')#   
words[1:20]
sents=gutenberg.sents('burgess-busterbrown.txt')#   
sents[1:20]

자신의 언어 자료 라이브러리 불러오기
파일 시스템의 파일 위치 확인하기;다음 예에서, 우리는 당신의 파일이/usr/share/dict 디렉터리에 있다고 가정합니다.어떤 위치든지 변수를 corpusroot의 값을 이 디렉터리로 설정합니다.PlaintextCorpusReader 초기화 함수

좋은 웹페이지 즐겨찾기