텍스트 전처리 과정
1. 토큰화(Tokenization) : 텍스트를 정해진 단위로 나누는 작업
- 단어 : 빈칸을 기준으로 나눈다.
- 형태소 : 의미를 가지는 최소 단위, 품사를 기준으로 나누는 작업
- 글자 : 한글자 기준으로 나누는 작업
- 초성(자음),중성(모음),종성(자음)
2. 불용어 처리(stopword)
: 의미없는 단어를 제거하는 작업(주관적)
3. 의미없는 특수문자, 숫자 제거(주관적)
4. 대소문자 통일(주로 소문자로 통일)
변경하지 않을 특수문자, 대소문자, 숫자는
Trump -> Trump_unique 로 변경 후
전체 문자 변경
Trump_unique -> Trump 다시 원위치
5. 어근 추출
: 단어 표현에 대한 통일 작업을 해야한다.
예) 놀아요, 놀아, 놀고 싶어요, 놀다 왔어요 -> 놀다.
- Lemmatization : 사전적으로 표현
- Stemming : 알고리즘을 통해서 기계적으로 변환, 신조어, 은어
6. 텍스트 인코딩 : 텍스트를 벡터로 표현
- Bag of word, tf-idf
KONLP
1. JAVA_HOME 위치확인
Sys.getenv('JAVA_HOME')
2. rJava 설치
install.packages('rJava')
library(rJava)
3. konlp 프로그램과 관련있는 프로그램을 설치
install.packages(c('stringr', 'hash', 'tau', 'Sejong', 'RSQLite', 'devtools'), type = "binary")
install.packages('remotes')
4. konlp 설치
remotes::install_github('haven-jeon/KoNLP', upgrade = "never",
INSTALL_opts=c("--no-multiarch"))
library(KoNLP)
useSejongDic()
useNIADic()
text <- 'R은 오픈소스로 통계, 기계학습, 금융, 생물정보학, 그래픽스에 이르는 다양한 통계 패키지를
갖추는 좋은 프로그램이다.'
명사추출
extractNoun(text)
품사태깅
SimplePos09(text)
SimplePos22(text)
[문제204] SimplePos22(text) 품사 태깅의 보통명사만 추출해주세요.
x <- SimplePos22(text)
library(stringr)
str_replace_all(unlist(str_extract_all(x,'[가-힣]+/NC')),'/NC','')
unlist(str_match_all(x,'[가-힣]+/NC'))
as.vector(na.omit(str_match(x,'[가-힣]+/NC')))
[문제205] review$tagging 열을 생성해서 감상평의 품사 태깅정보가 입력되도록 하세요.
View(review)
x <- SimplePos22(review$감상평)
paste(unlist(x[[1]]),collapse = ' ')
review$tagging <- sapply(x, function(arg){paste(unlist(arg),collapse = ' ')})
+)review$tagging 내용중에 보통명사만 추출해서 새로운 열에 저장하기
str_replace_all(str_extract_all(review$tagging,'[가-힣]+/NC'),'/NC','') #오류
str_replace_all(str_extract_all(review$tagging,'[가-힣]+/NC')[[1]],'/NC','')
x <- str_extract_all(review$tagging,'[가-힣]+/NC')
review$nc <- sapply(x,function(arg){paste(str_replace_all(arg,'/NC',''),collapse = ' ')})
'R' 카테고리의 다른 글
[R] web scraping - css, xpath,JSON (0) | 2022.02.10 |
---|---|
[R] 크롤링, 스크래핑 (0) | 2022.02.09 |
[R] 문제풀이 (0) | 2022.02.07 |
[R] stringr (0) | 2022.02.04 |
[R] grep, 정규표현식(Regular Expression) (0) | 2022.02.03 |