ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day6
    데이터 분석/R 2020. 6. 29. 11:52
    #텍스트분석
    
    c(1:6,'a')
    list(1:6,'a')
    
    o1<-1:4
    o2<-6:10
    o3<-list(o1,o2)
    myo<-list(o1,o2,o3)
    myo
    
    #리스트:[[]], 벡터:[]
    myo[[3]][1]  # []:리스트내의 리스트를 추출
    myo[[3]][[1]] # [[]]:리스트내의 리스트에 대한 벡터를 추출
    
    myo[[3]][1]
    
    myo#참조하여 9를 출력하는 코드
    
    myo[[3]][[2]][4]
    
    
    mylist<-list(1:6,'a')
    mylist
    myvector<-c(1:6,'a')
    myvector
    unlist(mylist)#리스트 -> 벡터형식 변환
    unlist(mylist)==myvector
    
    mean(unlist(mylist)[1:6])
    
    mean(mylist[[1]][1:6])
    
    n1<-"Donald"
    ms<-" "
    n2<-"Trump"
    list(n1,ms,n2)
    unlist(list(n1,ms,n2)) #리스트 -> 벡터
    
    n<-c("갑","을","병","정")
    gen<-c(2,1,1,2)
    df<-data.frame(n,gen)
    
    attr(df$n,"means")<-"이름"
    attr(df$gen,"means")<-"성별"
    df$n
    
    myvalues<-gen
    
    for (i in 1:length(gen)){ #i는 1부터 4까지 증가
      myvalues[i]<-ifelse(gen[i]==1, "남성", "여성")
    }
    myvalues
    
    attr(df$gen,"means")   #means:속성명, "성별":속성값
    
    mylist<-list(1:4, 6:10, list(1:4,6:10))
    
    #mean(mylist[1])
    mean(mylist[[1]]) #list 내에 있는 벡터에 대한 평균
    lapply(mylist[1],mean) #list에 대한 평균
    
    rep(1,4)
    
    s1<-c("earth", "to", "earth")
    s1
    rep(1,length(s1))
    
    letters[1:26]
    letters
    LETTERS
    
    tolower("Eye for eye")
    toupper("Eye for eye")
    
    nchar("Korea")
    nchar("Korea", type='bytes')
    nchar("한국")
    nchar("한국", type='bytes')
    
    sent<-"Learning R is so interesting"
    mywords<-strsplit(sent, split=" ")
    strsplit(mywords[[1]][5],split="")
    
    sent2<-"지지자불여호지자 호지자불여락지자"
    #아는 사람은 좋아하는 사람만 못하고,
    #좋아하는 사람은 즐기는 사람만 못하다
    strsplit(sent2, split=" ")
    
    
    myletters<-list(rep(NA, 5))
    
    for(i in 1:5){
      myletters[i]<-strsplit(mywords[[1]][i],split="")
    }
    myletters
    
    #문자들을 합쳐 단어로 구성
    paste(myletters[[1]], collapse = "")
    paste(myletters[[1]], collapse = "&")
    
    
    mywords2<-list(rep(NA,5))
    for(i in 1:5){
      mywords2[i]<-paste(myletters[[i]], collapse = "")
    }
    mywords2
    
    paste(mywords2, collapse = " ")
    
    rWiki<-"R is a programming language and free software environment for statistical computing and graphics supported by the R Foundation for Statistical Computing. 
    The R language is widely used among statisticians and data miners for developing statistical software and data analysis. 
    Polls, data mining surveys, and studies of scholarly literature databases show substantial increases in popularity; as of June 2020, R ranks 9th in the TIOBE index, a measure of popularity of programming languages."
    rWikiPara=strsplit(rWiki,split="\n")
    #문단 분리 : \n
    
    for(i in 1:3){
      print(strsplit(rWikiPara[[1]][i],split=" "))
    }
    
    sent
    loc.begin<-as.vector(regexpr("ing",sent))#re 패키지 정규표현식
    loc.length<-attr(regexpr("ing",sent),'match.length')
    loc.end<-loc.begin + loc.length -1
    loc.end
    length(gregexpr("ing",sent)[[1]]) # 매칭 두번됨 
    regexpr("interesting",sent)
    regexpr("so (interestin(g))",sent)
    
    regexec("interesting",sent)
    regexec("so (interestin(g))",sent)
    
    sub("ing","ING",sent) #소문자->대문자 바꾸기
    gsub("ing","ING",sent)
    
    #고유명사 처리 :여러단어로 기관명 구성 -> _와 같은 기호로 연결-> 하나의 단어 
    #singer = "가수들이름"
    gsub("Micheal Jackson","Micheal_Jackson",singer)
    
    rWikiParaSplit<-list(rep(NA,3))
    for(i in 1:3){
      rWikiParaSplit[i]<-strsplit(rWikiPara[[1]][i],split=" ")
    }
    
    rWikiParaSplit
    
    sent1<-rWikiParaSplit[[1]]
    table(sent1)
    sent1
    #by 제거 
    dropSent<- gsub("by|for|the","",sent1)
    strsplit(dropSent,split = " ")
    
    
    
    sent<-c("Learning R is so interesting",
    "He is a fascinating singer")
    #ing로 끝나는 모든단어 
    mypat0<-gregexpr("ing",sent)
    regmatches(sent,mypat0)
    
    mypat1<-gregexpr("[[:alpha:]]ing",sent)
    mypat1
    
    regmatches(sent,mypat1)
    
    mypat1<-gregexpr("[[:alpha:]](ing)",sent)
    mypat1
    regmatches(sent,mypat1)
    
    mypat1<-gregexpr("[[:lower:]]",sent) #lower ,upper
    mytable<-table(unlist(regmatches(sent,mypat1)))
    max(mytable)
    length(mytable)
    sum(mytable)
    
    #코퍼스 (corpus,말뭉치)
    #분석 대상분야의 용어 집합
    #ex)인공지능 분야 코퍼스 :머신러닝, 파이썬,R..음료수(x)
    
    #자연어 처리 : 코퍼스 구성 
    #법률코퍼스 : 범죄, 법, 헌법....,날씨(x)
    
    
    mytext<-c("software environment", "software  environment", "software\tenvironment")
    library(stringr)
    mytext
    str_split(mytext," ")
    
    #install.packages("stringr")
    
    mytext
    mytext.nowhitespace<-str_replace_all(mytext,"[[:space:]]{1,}"," ") #공백문자 한글자 이상 
    
    mytext2<-"The 45th President of the United States, Donald Trump, states that he knows how to play trump with the former president"
    
    myword<-unlist(str_extract_all(mytext2,boundary("word"))) #word 기준 추출 # 단어 벡터
    table(myword)
    table(tolower(myword))
    
    str_replace(myword,"Trump","Trump_unique_")
    str_replace(myword,"States","States_unique_")
    table(myword)
    
    table(tolower(myword))
    
    mytext<-c("R is the No.1 stat sw")
    str_replace_all(mytext, "[[:digit:]]{1,}[[:space:]]{1,}","_number_ ")  #숫자 한자리 이상 
    
    
    #####################################################################
    
    install.packages("tm")
    library(tm)
    stopwords("en")
    stopwords("SMART")
    
    #동일화 
    #am, are , is , was, were be = > be 로 치환
    
    #치환 
    mytext<-c("I am a boy. You are a boy. The person might be a boy. Is Jane a boy?")
    
    textmin<-tolower(mytext)
    
    result<-gsub("am|are|is|was|were|be|Am|Are|Is|Was|Were|Be","be",textmin)
    
    result
    str_to_title(result)
    
    
    my.text.location<-"D:/Rwork/papers"
    mypaper<-VCorpus(DirSource(my.text.location))
    mypaper
    summary(mypaper)
    
    #VCorpus : 폴더에 있는 모든 텍스트 데이터들을 말뭉치로 구성 
    
    mypaper[[2]] #두번째 문서 
    mypaper[[2]]$content # 문서내의 내용 추출 
    mypaper[[2]]$meta # 메타 데이터 출력 
    # 전화번호 : 데이터. 색인('김' 입력):메타 데이터 
    meta(mypaper[[2]],tag = "author")<-"G. D. Hone"
    myfunc <-function(x){
      str_extract_all(x$content, "[[:alnum:]]{1,}[[:punct:]]{1}?")
    }
    lapply(mypaper, myfunc)
    
    #대문자 [[:upper:]]로 시작하는 단어(영문+숫자를 추출)
    myfunc <-function(x){
      str_extract_all(x$content, "[[:upper:]]{1}[[:alnum:]]{1,}")
    }
    
    mycorpus<-tm_map(mypaper,removeNumbers) # 숫자를 모두 제거 
    mypaper[[1]]$content #제거전
    mycorpus[[1]]$content  # 제거후
    
    mycorpus<-tm_map(mypaper,removePunctuation)
    mycorpus[[1]]$content  # 특수문자 제거후
    
    mycorpus<-tm_map(mypaper,stripWhitespace)
    mycorpus[[1]]$content 
    
    #TFIDF
    
    #토큰화 : 코퍼스  -> 토큰단위로 나누는 작업 (단어 , 형태소, )
    #정제 & 정규화 .-> 의마가 같은 다양한 단어들을 하나의 단어로 통일 
    #-> 불필요한 부분 제거 ㅡ 대소문자 통일, 불용어 제거 
    
    #형태소 - 어간, 점사 
    

    '데이터 분석 > R' 카테고리의 다른 글

    day7  (0) 2020.06.30
    KoNLP 설치오류시 대처방법  (0) 2020.06.30
    day5  (0) 2020.06.26
    day4  (0) 2020.06.25
    학습모델평가  (0) 2020.06.24
Designed by Tistory.