[R좀 R려줘!] R에서 자연어(NLP)처리를 해보자!

👈 Click! 투표!

안녕하세요 :-)!

오늘은 R에서 자연어(NLP) 처리를 어떻게 하는지 알아보려고 합니다!

R 자연어 처리의 경우 SK텔레콤에 재직 중이신 Jeon Heewon님의 깃헙을 참고해보려고 해요!

R에 자연어 처리 패키지 설치하는 방법: 링크

KoNLP 설치 이슈 공유 | Facebook

안녕하세요, 현재 코드 내부적인 이슈로 KoNLP 패키지가 cran에서 내려져 있습니다. github 버전으로 설치해야 해서 해당 내용을 공유합니다. (최초 아카이브 버전을 공유했었는데, 설치가 제대로 진행되지 않는 이슈가 있어서 수정합니다.) 아래 코드에서 의존성 패키지들이 설치 되지 않고 에러가 발생할 수도 있습니다만, 아래와 같이 에러 메세지에서 출력되는 의존성 패키지들을 먼저 설치후에 실행하시면 됩니다. rJava를 설치하는 방법과 함께 공유합니다

www.facebook.com


#install.packages("multilinguer")
library("multilinguer")
install_jdk()

#install.packages(c('stringr', 'hash', 'tau', 'Sejong', 'RSQLite', 'devtools'), type = "binary")
#install.packages("remotes")
#remotes::install_github('haven-jeon/KoNLP', upgrade = "never", INSTALL_opts=c("--no-multiarch"))
library("KoNLP")

SimplePos09("오늘 비가 내린다.")
SimplePos22("오늘 비가 내린다.")

df = read.csv("news_article_2014_2017.csv",
              stringsAsFactors = FALSE)
head(df, 2)

sample_pos = SimplePos09(df[1:3, "title"])
str(sample_pos)

sample_pos[[1]]
unlist(sample_pos[[1]])
grep("/N$|/N+", unlist(sample_pos[[1]]), value = TRUE)

################################################
# Q. 명사만 나오도록 하려면?
noun_ext = function(x) {
    x = grep("/N$|/N+", unlist(sample_pos[[1]]), value = TRUE)
    return(x)
}
lapply(sample_pos, FUN = "noun_ext") 

주석으로 묶여있는 install 부분을 해제하여 패키지를 모두 설치해주세요~!

그 이후 KoNLP 라이브러리를 장착해주신 후, SimplePos09(), SimplePos22() 함수가 잘 돌아가는지 체크해주세요~!

잘 돌아가신다면, 아래와 같이 확인하실 수 있을거에요. ㅎㅎ



그러면, 저희가 갖고 있는 데이터인 뉴스 타이틀 데이터를 한번 쪼개보겠습니다!



제가 의도 했던 것은 ‘명사 단어’만 나오길 바랐는데 뭔가 이상한게 붙었죠?

그렇다면 한번 쪼개보도록 하겠습니다!


# Q. /N 같은 마지막에 붙어있는 단어 속성 표기 제거
# 유통 /N+ 가 /J -> 유통, 해외직구 /N -> 해외직구

noun_ext2 = function(x) {
    x = grep("/N$|/N+", unlist(x), value = TRUE)
    x = as.character(gsub("/[A-Z].*?$", "", x))
    return(x)
}
lapply(sample_pos, FUN = "noun_ext2")



단어 추출을 위해 grep()과 gsub 함수를 사용하였습니다. ㅎㅎ

제법 깔끔해졌죠?

그런데 [[2]] [1]을 보시면 “고공성장” “지속”이 맞을 것 같은데, “지” “속”으로 나누어져서 나왔네요.

이 부분은 패키지가 문제인지 추후에 한번 알아보도록 하겠습니다~!

이렇게 추출한 단어를 활용하여 이전에 했던 ‘wordcloud2’ 패키지를 이용하여 최다빈도 단어를 출력해볼까요?

2020/02/28 – [개발] – [R좀 R려줘!] wordcloud2 패키지를 이용해 최다빈도 단어 추출하기!

[R좀 R려줘!] wordcloud2 패키지를 이용해 최다빈도 단어 추출하기!

안녕하세요 🙂 오늘은 wordcloud2 패키지를 이용하여 최다빈도 단어를 추출해보도록 하겠습니다! 추출할 단어를 위해 하나의 csv 파일을 사용할 것이라 다음 링크에서 다운받아서 활용해주세요! df = read.csv(“n..

signedinfo.com


words = SimplePos09(df$title)
words_noun = lapply(words, FUN = "noun_ext2")
df_words2 = as.data.frame(table(unlist(words_noun)))
df_words2 = df_words2[order(df_words2$Freq, decreasing = TRUE), ]
head(df_words2)

df_words2[, "Var1"] = as.character(df_words2$Var1)
df_words2 = df_words2[nchar(df_words2$Var1) >= 2, ] # 2글자 이상으로 이루어진 단어만

library("wordcloud2")
wordcloud2(df_words2[1: 100, ])



그러면 이렇게 어떤 단어가 많이 사용됐는지 순서로 확인하실 수 있습니다!ㅎㅎ

이해 안가시는 것 있으면 댓글로 남겨주세요~!

2020.02.27 – [개발] – [R좀 R려줘!] R 을 이용한 네이버 뉴스 크롤링 하기!

[R좀 R려줘!] R 을 이용한 네이버 뉴스 크롤링 하기!

R을 이용해 사용자 정의 함수 naver_news와 make_url 두개의 함수를 통해 네이버 뉴스를 크롤링 해보도록 하겠습니다! naver_news의 경우 크롤링 하는데 들어갈 목록을 정의한 함수입니다. 저의 경우 신

signedinfo.com

2020.02.27 – [개발] – [R좀 R려줘!] R gsub() 함수를 이용한 패턴 치환하기!

[R좀 R려줘!] R gsub() 함수를 이용한 패턴 치환하기!

R gsub() 함수를 이용하여 패턴 치환하는 방법에 대해 알아보겠습니다. 예제(text1)에 있는 값을 gsub()함수를 이용해 ‘@’로 치환하는 작업입니다. 참고) # 활용 함수 # ▶ gsub(): 패턴 치환 아래 내용을

signedinfo.com

2020.02.27 – [일상] – 멀티캠퍼스 R좀 R려줘! R 데이터 분석 with Cloud 후기!!

멀티캠퍼스 R좀 R려줘! R 데이터 분석 with Cloud 후기!!

안녕하세요 :-)! 오늘은 멀티캠퍼스에서 진행하는 R좀 R려줘! R 데이터 분석 with Cloud 강의 들은 후기에 대해 포스팅 해볼까 합니다! 그럼 시작해볼까요? ㅎㅎ 우선. 저는 사실 멀티캠퍼스를 잘 모

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] R rbind(), colnames()를 활용한 하나의 data.frame() 만들기!

[R좀 R려줘!] R rbind(), colnames()를 활용한 하나의 data.frame() 만들기!

안녕하세요 🙂 오늘은 R함수인 rbind(), colnames()를 활용하여 하나의 data frame을 만들어보려고 합니다! 실습 파일 다운로드 링크 문제는 아래와 같습니다.  Q. “2014_2017.xlsx” 에는 4개의 sheet가 있다…

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] R unique(), nrow()를 활용한 언론사 별 트렌드 파악하기!

[R좀 R려줘!] R unique(), nrow()를 활용한 언론사 별 트렌드 파악하기!

안녕하세요 🙂 오늘은 R함수인 unique(), nrow()를 활용하여 언론사 별 트렌드를 파악해보려고 합니다! 실습 파일 다운로드 링크 문제는 아래와 같습니다. # Q1. 몇 군데 언론사의 뉴스 기사가 수

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] aggregate(), ggplot() 함수를 이용한 언론사별 뉴스기사 그래프 그리기!

[R좀 R려줘!] aggregate(), ggplot() 함수를 이용한 언론사별 뉴스기사 그래프 그리기!

안녕하세요 🙂 오늘은 aggregate(), ggplot()함수를 이용하여 언론사별 뉴스기사 그래프를 그려보려고 합니다! 이전 글을 먼저 확인해주세요! 1) 2020/02/28 – [개발] – [R좀 R려줘!] R rbind(), colnames()를 활..

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] wordcloud2 패키지를 이용해 최다빈도 단어 추출하기!

[R좀 R려줘!] wordcloud2 패키지를 이용해 최다빈도 단어 추출하기!

안녕하세요 🙂 오늘은 wordcloud2 패키지를 이용하여 최다빈도 단어를 추출해보도록 하겠습니다! 추출할 단어를 위해 하나의 csv 파일을 사용할 것이라 다음 링크에서 다운받아서 활용해주세요! df

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] 데이터 분석할때 반복문 진행 현황 확인하기!

[R좀 R려줘!] 데이터 분석할때 반복문 진행 현황 확인하기!

안녕하세요 🙂 데이터 분석할때 반복문을 심심치 않게 사용하는데요! 이때 분석량이 많을 경우 어디까지 진행 됐는지 궁금할때 있잖아요? for(n in 1:65){ cat(paste0(“r==== Progress: “, n, “/65 ====”)) #Sys..

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] 하나의 엑셀(Excel)에 담긴 정보를 특정 기준으로 여러 엑셀 파일로 나누고 합치기!

[R좀 R려줘!] 하나의 엑셀(Excel)에 담긴 정보를 특정 기준으로 여러 엑셀 파일로 나누고 합치기!

안녕하세요 :-)!! 오늘은 하나의 엑셀에 담긴 정보를 여러 엑셀 파일로 쪼개는 방법에 대해 알아보겠습니다! 사용할 예제 파일은 링크를 통해 확인해주세요. ㅎㅎ elec = read.csv(“elec_load.csv”, stringsAs

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] R을 이용하여 네이버 실시간 검색어, 인스타그램 검색 결과 크롤링 하기!!

[R좀 R려줘!] R을 이용하여 네이버 실시간 검색어, 인스타그램 검색 결과 크롤링 하기!!

안녕하세요 🙂 오늘은 R을 이용하여 네이버 실시간 검색어, 인스타그램 검색 결과를 크롤링 해보도록 하겠습니다! #install.packages(“RSelenium”) library(“RSelenium”) library(“wdman”) #node.js나 javascript..

signedinfo.com