무회blog

R함수 basic003 : 텍스트 find , replace, sub, delete 본문

Python/R

R함수 basic003 : 텍스트 find , replace, sub, delete

최무회 2020. 6. 3. 20:49
## string Data 처리 방식 (최신테스트 내용 최상위 배치)
## tidyverse 방식,  알파벳의 대소문자 표현 함수 : letters[], LETTERS[]
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
## R함수 basic003 gregexpr, regexpr, test strsplit , paste , spli01 , paste, nchar ,letters LETTERS tolower() , toupper() grep, sub, gsub, table, 


## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
ttx02 <- "앞서 원-핫 인코딩 챕터에서 찾기 원-핫 벡터는 단어 간 찾기 유사도를 계산할 수 없다는 단점이 있음을 언급한 적이 있습니다. 
그래서 단어찾기 간 찾기 유사도를 반영할 수 있도록 찾기 단어의 의미를 벡터화 할 수 있는 방법이 필요합니다. "
strsplit(ttx02[[1]]," ")                                          # 단어 자르기 , 띄어쓰기 기준 
table(strsplit(ttx02[[1]]," "))                                   # 단어빈도수 
sum(table(strsplit(ttx02[[1]]," ")))                              # 단어총 갯수 
drop.test <- gsub("유사도를|있음을","",ttx02)                     # 특정 단어 혹은 단어들을 삭제하기 
strsplit(drop.test[[1]]," ")                                      # 단어 자르기 , 띄어쓰기 기준 

## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
## sub() , gsub()
sub("찾기","find", ttx02)                       # 하나 바꾸기 
gsub("찾기","find", ttx02)                      # 다 바꾸기 

## grep() grepl()
grep("기",ttx02)                              # object 의 위치 반환 
grepl("찾기",ttx02)                           # 불리언값 반환 

## regexec  # 찾은 데이터 () 를 기준으로 위치 반환 
regexec("원-핫 인코딩 챕터에서 찾(기) 원-핫 벡(터)",ttx02)
nchar("원-핫 인코딩 챕터에서 찾",type = 'byte')  # 바이트 길이 
nchar("원-핫 인코딩 챕터에서 찾")

## gregexpr  # 찾은 데이터 위치 반환 , 찾은 데이터 길이 반환 , 전부 각각 반환 
gregexpr("찾기",ttx02)  

## regexpr('fisrtfindtext','text')  : return (첫번째찾은 텍스트위치, 찾은 텍스트길이, 자료형)
regexpr("찾기",ttx02)
ttx02.frfind    <- as.vector(regexpr("찾기",ttx02))                           # 첫번재찾은 길이 
ttx02.len       <- as.vector(attr(regexpr("찾기",ttx02), 'match.length'))     # match.length 길이 
ttx02.frEndWord <- as.vector(ttx02.frfind + ttx02.len -1)                     # 첫번재찾은길이부터 종료되는 길이 
ttx02.frEndWord
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
## test strsplit , paste : 자르고 붙히기 (문장, 단어, 혹은 기타 )
ttx01 <- "앞서 원-핫 인코딩 챕터에서 원-핫 벡터는 단어 간 유사도를 계산할 수 없다는 단점이 있음을 언급한 적이 있습니다. 
그래서 단어 간 유사도를 반영할 수 있도록 단어의 의미를 벡터화 할 수 있는 방법이 필요합니다. 
그리고 이를 위해서 사용되는 대표적인 방법이 워드투벡터(Word2Vec)입니다. Word2Vec의 개념을 설명하기에 앞서, 
Word2Vec가 어떤 일을 할 수 있는지 먼저 확인해보겠습니다."

# spli01 <- strsplit(ttx01,'\n')  # 줄단위로 짜르기 
# spli01 <- strsplit(ttx01,'\t')    # 탭단위로 짜르기 
spli01 <- strsplit(ttx01,'\\.')    # 마침표 . 단위로 짜르기 \\ 두개를 써줘야 특수문자 인식가능
spli01

## strsplit() , paste() : string 분해와 결함 
strsplit_test01 <- "What is the Learning mechine"
rs_test01<- strsplit(strsplit_test01,split = ' ')  # (데이타, 구분자) , 단어 짜르기 
# typeof(rs_test01[[1]][1])
# rsch_01 <- rs_test01[[1]][-2]  # 앞에서 두번째 단어 삭제 후 출력 
rsch_01 <- rs_test01[[1]][1]  # 스트링 cut 하여 출력 
strsplit_test02 <- rsch_01 
rsch_02 <- strsplit(strsplit_test02, split = '')  # 글자단위로 짜르기 , 와~ 재밌다 .. 
rsch_02

mytest <- list()
for(i in 1:5) {
  mytest[i] <- strsplit(rs_test01[[1]][i],split = '')
}
mytest
unlist(mytest)


paste(mytest[[1]],collapse = '')     # 글자단위 결합 
paste(mytest[[3]],collapse = '-')     # 글자단위 결합 

mytest02 <- list()
for(i in 1:length(mytest[[1]])) {
  mytest02[i] <- paste(mytest[[1]][i],collapse = '')
}
mytest02          # 글자단위로 리스트에 들어감 
typeof(mytest02)   # list"

rs_test01
paste(rs_test01[1],collapse = ' ')    # 차이가 있음     
paste(rs_test01[[1]],collapse = ' ')  # 차이가 있음 

## nchar() 사용법 , 문자수, 바이트 수 카운팅 : default is count character 
nchar('test')
nchar('test', type = 'bytes')
nchar("테스트")  
nchar('테스트', type = 'bytes')
nchar("!!@@**")
nchar('!!@@**', type = 'bytes')
nchar("\t")
nchar('\t', type = 'bytes')
nchar("\n")
nchar('\n', type = 'bytes')
# nchar("\")  # 이거 에러나서 안됨 ,, 컴퓨터가 인식을 안함 ,, 나 무척 당황 
# nchar('\', type = 'bytes')
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
## tolower() , toupper() 사용법 
tolower("This test is Lower string")
toupper("This test is Lower string")

## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
## 대소문자 알파벳 출력  ㅊ
letters[3]
LETTERS[3]
letters[1:26]
LETTERS[1:26]

 

Comments