본문 바로가기
R 주제/텍스트마이닝

[R 텍스트마이닝] 영화 어바웃타임 대본 단어 빈도분석 ③ 빈 문자열 제거

by 만다린망고 2020. 12. 7.
반응형

[R 텍스트마이닝] 

영화 어바웃타임 대본 단어 빈도분석 ③ 빈 문자열 제거


지난시간에 불필요한 기호를 제거 했는데요. 빈 문자열 "" 이 남아있었습니다. 오늘은 빈 문자열을 제거해봅시다. 


불필요한 기호를 제거하고 단어단위로 쪼갠 이후부터 진행하겠습니다. 


library(stringr)

library(dplyr)


#텍스트 불러오기

raw=readLines("E:/ONE_DRIVE/OneDrive/21.textmining/abouttime/abouttime.txt")


#불필요 기호 제거하기

raw2=raw %>% gsub(pattern=".",replacement="",fixed=TRUE) %>% 

              gsub(pattern="-",replacement="",fixed=TRUE) %>%

              gsub(pattern="?",replacement="",fixed=TRUE) %>%

              gsub(pattern=",",replacement="",fixed=TRUE)


#단어 단위로 쪼개기

word = strsplit(raw2 ,split=" ") %>% unlist()


변수 word를 출력해보면 빈 문자열이 있는 것을 알 수 있습니다. 


> word[1:5]

[1] ""       "I"      "always" "knew"   "we"   


이제 빈 문자열을 제거해봅시다. str_detect 함수로 원하는 조건 여부에 따라 TRUE와 FALSE로 바꾸고, which 함수를 이용하여 TRUE의 index를 저장합니다. "." 에서 콤마는 정규표현식입니다. 뭔가가 들어있으면 TRUE를 반환합니다. 따라서 빈 문자열 ""은 FALSE를 반환할 것입니다. 앞에 부정연산자 !를 붙여서, 빈 문자열에서 TRUE가 반환되도록 합니다. 여기에 which 함수를 적용하면 빈문자열의 위치가 rm_obj에 저장됩니다. 


#불필요한 단어 찾아 위치 저장하기

rm_obj=which(!str_detect(word,"."))


인덱싱을 이용하여 빈문자열들을 제거합니다. 


#불필요한 단어 제거하기 

word2=word[-rm_obj]


빈도를 계산합시다.


#빈도 계산하기

word_table=table(word2) %>% sort(decreasing=TRUE) 

word_df=word_table %>% as.data.frame()


결과는 아래와 같습니다. 1위에 있던 빈 문자열이 사라진 것을 알 수 있습니다.


> head(word_df,20)

   word2 Freq

1    you  314

2      I  284

3    the  259

4      a  229

5     to  183

6     of  150

7     it  136

8    and  110

9     is   98

10    No   98

11  that   98

12    in   96

13  Yeah   84

14  have   83

15   was   83

16   I'm   82

17    me   81

18    my   80

19   And   76

20    do   72


전체 단어 수를 알아봅시다. 


> str(word_df)

'data.frame': 2058 obs. of  2 variables:

 $ word2: Factor w/ 2058 levels "you","I","the",..: 1 2 3 4 5 6 7 8 9 10 ...

 $ Freq : int  314 284 259 229 183 150 136 110 98 98 ...


총 2058단어입니다. txt파일로 저장합시다.


# 텍스트 파일 저장

write.table(word_df,file="abouttime_wordrank.txt",quote=FALSE)


결과가 저장된 메모장을 첨부합니다. 


abouttime_wordrank.txt






<오늘 코드 모아보기>


library(stringr)

library(dplyr)


#텍스트 불러오기

raw=readLines("E:/ONE_DRIVE/OneDrive/21.textmining/abouttime/abouttime.txt")


#불필요 기호 제거하기

raw2=raw %>% gsub(pattern=".",replacement="",fixed=TRUE) %>% 

              gsub(pattern="-",replacement="",fixed=TRUE) %>%

              gsub(pattern="?",replacement="",fixed=TRUE) %>%

              gsub(pattern=",",replacement="",fixed=TRUE)


#단어 단위로 쪼개기

word = strsplit(raw2 ,split=" ") %>% unlist()


#불필요한 단어 찾아 위치 저장하기

rm_obj=which(!str_detect(word,"."))


#불필요한 단어 제거하기 

word2=word[-rm_obj]


#빈도 계산하기

word_table=table(word2) %>% sort(decreasing=TRUE) 

word_df=word_table %>% as.data.frame()



# 텍스트 파일 저장

write.table(word_df,file="abouttime_wordrank.txt",quote=FALSE)


반응형

댓글