Giter VIP home page Giter VIP logo

nlp4kec's Introduction

NLP4kec

한글, 영어, 중국어 텍스트 데이터 파일을 입력받아 형태소 분석 후 R tm package에서 사용할 수 있도록 해주는 패키지

  • 한글은 은전한닢 형태소 분석기를 사용
  • 영어, 중국어는 Stanford core NLP 사용

1. 패키지 다운로드

R 4.0.0 버전에서 사용가능하도록 업데이트 되었습니다.

형태소 분석기 패키지 다운 받을 수 있는 링크

2. 설치 방법

위에서 다운 받으신 파일을 가지고 패키지 인스톨을 하시면 됩니다.
(rJava패키지 사전에 인스톨 해야함 / JRE 1.8 이상이 요구됨)

직접설치

install.packages("다운받은 패키지 파일 경로", repos = NULL)
# 예시) install.packages("C:/Users/user/Desktop/class/NLP4kec_1.2.0.zip" , repos=NULL)

#또는 Rstudio에서 제공하는 패키지 인스톨 기능을 사용하세요.

or git clone 후 설치

#git에서 clone 하신 다음 설치도 가능
library(devtools)
install_local("해당 repo를 clone한 경로")

3. 사용법

엑셀 또는 CSV로 정리된 텍스트 데이터의 경로와 몇가지 옵션을 입력받아 형태소 분석을 처리함. 분석 대상 파일은 반드시 컬럼명이 id, content로 구성된 파일이어야함 (sample.xlsx 참조)

  • 파일(xlsx, csv)로 텍스트를 읽어서 형태소 분석 후 결과를 vector 형태로 가져오기
library(NLP4kec)
result = file_parser_r(path = "./sample.xlsx", language = "ko")
  • character vector를 형태소 분석하여 vector 형태로 가져오기
library(NLP4kec)
sample_sentence = "카레닌에게 잠에서 깨어나는 순간은 순수한 행복이었다."
r_parser_r(sample_sentence, language = "ko")
  • 형태소 분석 결과에서 동의어 처리하기
synonym_processing(parsedVector = parsedData, synonymDic = "동의어 사전 경로")
  • 파일(xlsx, csv)로 텍스트를 읽어서 형태소 분석 후 결과를 csv형태로 저장하기
result = file_parser_file(path = "./sample.xlsx", language = "ko")
  • 사용자 사전 적용해서 형태소 분석하기
result = file_parser_r(path = "./sample.xlsx", language = "ko", korDicPath = "dictionary 파일 경로")
  • 한글에서 영어로된 단어도 같이 분석할 경우
result = file_parser_r(path = "./sample.xlsx", language = "ko", useEn = T)
  • 영어 또는 중국어 분석하기
# 영어
result = file_parser_r(path = "./en_sample.xlsx", language = "en")

# 중국어
result = file_parser_r(path = "./zh_sample.xlsx", language = "zh")

4. tm패키지와 함께 사용 예시

library(tm)
library(NLP4kec)

#형태소 분석기 실행하기
parsedData = file_parser_r(path = "./sample.xlsx"
                         ,language = "ko"
                         ,korDicPath = "./dictionary.txt")

#단어간 스페이스 하나 더 추가하기 
parsedData = gsub(" ","  ",parsedData) #(윈도우에서 돌리는 경우에만 적용)

#Corpus 생성
corp = VCorpus(VectorSource(parsedData))

#특수문자 제거
corp = tm_map(corp, removePunctuation)

#Document Term Matrix 생성
dtm = DocumentTermMatrix(corp, control=list(removeNumbers=FALSE, wordLengths=c(2,Inf)))

#단어 양옆 스페이스 제거 및 한글자 단어 제외하기
colnames(dtmW) = trimws(colnames(dtmW))  #(윈도우에서 돌리는 경우에만 적용)
dtmW = dtmW[,nchar(colnames(dtmW)) > 1]

#연관 키워드 구하기
findAssocs(dtm, terms = "냉장고", corlimit = 0.2)

nlp4kec's People

Contributors

namyounkim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nlp4kec's Issues

사전 추가하여 분석시 아래와 같은 에러 메세지가 뜹니다.

안녕하세요. 정말 감사히 NLP4kec 사용하고 있습니다.

사전을 활용하지 않고 분석하는 경우, 아래와 같은 메세지가 뜨지 않고,
잘 분석이 되었는데, 사전을 추가하고 형태소 분석을 시행하니, 다시 Java 에러가 뜹니다 ㅠ

R에서 dictionary71 파일을 열어보니, 한글이 깨져서 나오던데,
혹시 해당 에러를 해결할 수 있는 방법이 있을까요?

감사합니다~.

result71 <- r_parser_r(texts_cs71$content,language = "ko", korDicPath = './dictionary71.txt')

Error in .jcall(obj, "[Ljava/lang/String;", "rTextParserFromRtoR", .jarray(contentVector), :
java.nio.charset.MalformedInputException: Input length = 1
Language : ko

동의어 사전 작성법

패키지 잘 사용하고 있습니다.

사용자 사전은 벡터로 등록한후 텍스트 쓰기를 통해 등록하여 사용하니 적용할 수 있었습니다.

동의어 사전은 어떤 구조의 데이터로 생산하고 등록하여하 할지 사용법을 알 수 있으면 좋겠네요

아래는 사용자 사전 등록에 사용했던 코드입니다.

userWord <- c("동의어", "사전")

write.table(
x = userWord,
quote = TRUE,
file = './userDIC.txt',
row.names = FALSE,
col.names = FALSE,
fileEncoding = "UTF-8")

file_parser_r을 통한 df 형태소 추출 중 오류

안녕하세요. NLP4kec 패키지 배우려는 연구자입니다.

나성호님(https://github.com/MrKevinNa/TextMining/blob/master/Step3%20Create%20xlsx%20file%20and%20Parsing.R ) github을 참조하여 작업하던 도중, 기존의 text_parser 대신 file_parser_r 명령어로 xlsx 파일을 추출하려 했는데 에러 메시지가 나옵니다. 혹시 도움이 가능하시다면, 해결을 부탁 드려도 될런지요.

parsed <- file_parser_r(tmdf1, language = "ko")

Error in .jcall(obj, "[Ljava/lang/String;", "rTextParserToR", as.character(path), :

method rTextParserToR with signature ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; not found

2018-02-14 8 22 31

r_parser_r 사용시 java.lang.IllegalStateException: unread block data 에러에 대한 문의

개발자님, 늘 감사드립니다.

Error in .jcall(obj, "[Ljava/lang/String;", "rTextParserFromRtoR", .jarray(contentVector), :
java.lang.IllegalStateException: unread block data
Calls: r_parser_r -> .jcall -> .jcheck
Execution halted
tar: Removing leading `/' from member names

HPC 서버 상에서 대용량 1,000만건 가량의 한글 rows를 돌리면, 위와 같은 에러 메시지가 뜹니다.

혹시 해결 방법을 제안해 주실 수 있을까 싶어 부탁드립니다.

고맙습니다.

개발자님 HPC 서버환경에서 사용하다 에러가 생겨 문의드립니다.

Error in .jcall(obj, "[Ljava/lang/String;", "rTextParserFromRtoR", .jarray(contentVector), :
method rTextParserFromRtoR with signature ([ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; not found
Calls: r_parser_r -> .jcall
Execution halted
tar: Removing leading `/' from member names

대학 HPC 서버에서 작업(램 1000Gb)을 하고 있습니다. 텍스트 데이터는 평균 10단어 정도의 글이 300만건 정도 됩니다.

자체 dictionary를 파싱 때 사용하고 있는데, 다른 이슈의 답변과 같이 "UTF-8"로 텍스트 파일을 다시 바꾸어 몇번 다시 실행을 해봐도, 에러가 나는 상황입니다.

단, 차이는 개발자님 깃허브에 다운 받은 NLP4kec_1.4.0.tar를 사용하고 있는데, 서버의 R은 3.6.0 버전입니다.
(테스트로 한문장을 r_parser_r로 하면, 성공적으로 파싱이 되는 상황입니다.)

KoNLP, Rmecab Ko 등 다양한 패키지를 써봤지만, 효율과 여러 측면에서 NLP4kec가 여전히 최고인 것 같습니다. 늘 감사드립니다.

P.S. 혹시 패키지 구버전 (R 3.6.0 호환)을 다운로드 할 수 있는 방법이 있으면 부탁드립니다^^

r_parser_r 에러 - java.lang.NoSuchMethodError

안녕하세요.
패키지 사용중 에러가 발생해서 문의드립니다.

예를 들어 r_parser_r(c("아버지가 방에 들어가신다.", "우리집은 부자에요."), useEn = F, language = "ko")을 실행하면 다음과 같은 에러 메시지가 뜹니다.


Language : ko
Total Rows : 2
Error in .jcall(obj, "[Ljava/lang/String;", "rTextParserFromRtoR", .jarray(contentVector), :
java.lang.NoSuchMethodError: 'java.lang.Object[] scala.Predef$.refArrayOps(java.lang.Object[])'

사용 환경 은 우분투 20.04이고 Java는 설치했습니다.
참고로 Java는 다음과 같이 설치했습니다.
apt install -y default-jdk \ && update-alternatives --config java \ && R CMD javareconf

혹시 java가 오라클에서 다운받아 설치하지 않아 생기는 문제일까요?
해결방법이 있을까요??

안녕하세요. 감사히 사용하는 도중에 Error in Jcall이 발생하였습니다.

안녕하세요.
NLP4kec 감사히 활용하고 있습니다.

다름아니라, MAC에서 코딩하다 Window 환경으로 넘어왔는데,
기존에는 잘 되던, r_parser_r 함수가 실행되지 않아 문의드립니다.

아래와 같이 코딩하였으며, text$content는 data frame에 chr 입니다.

library(NLP4kec)
parsed <- r_parser_r(texts$content, language = 'ko')
length(x = parsed)

아래와 같은 에러가 뜨면서, 형태소 분석이 되지 않습니다.

Error in .jcall(obj, "[Ljava/lang/String;", "rTextParserFromRtoR", .jarray(contentVector), :
java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

texts$content는 아래와 같이 구성되어 있습니다.
[1] "눈치보기식출퇴근,보이지않는시간관련압박등"
[2] "인재존중,동기유발적HR제도를기획단계부터찾아보기어렵습니다.기획부서중심이아닌직원중심제도의재설계와담당자의인식전환이가장시급합니다.최근회사가조직문화개선에노력하면서많은부분이개선되고있습니다.지금과같은이슈별선별적인TOP-DOWN방식의개선이상당히효과적이라봅니다.앞으로더욱많은변화가있기를진심으로바랍니다.회사의발전을위해정말중요한부분입니다.꼭부탁드립니다."

java.lang.ClassNotFoundException 에러발생

library(rJava)
library(NLP4kec)
NLP4kec::r_parser_r(dt$content,language = "ko")
NLP4kec::r_parser_r(dt$content, language = "ko")에서 다음과 같은 에러가 발생했습니다:
java.lang.ClassNotFoundException

라는 에러가 발생합니다....
시스템 경로설정까지했는데 뭐가 문제일까요..

Sys.getenv("JAVA_HOME")
[1] "C:\Program Files\Java\jre1.8.0_311"

도움부탁드립니다

Centos Rstudio 사용 중 org.bitbucket.eunjeon.seunjeon.Pos$ 오류입니다

안녕하세요. Centos Server R Studio에서 작업하다가 NLP4kec 패키지의 r_parser_r 함수 사용 중에
다음과 같은 오류가 발생했습니다. 제 노트북 Window에서는 이상없이 잘 돌아갔었습니다.

Error in .jcall(obj, "[Ljava/lang/String;", "rTextParserFromRtoR", .jarray(contentVector), :
java.lang.NoClassDefFoundError: Could not initialize class org.bitbucket.eunjeon.seunjeon.Pos$

확인 부탁드립니다. 감사합니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.