R 클라이언트(RBareun)
R에서 바른 사용하기
RBareun 으로 형태소 분석·맞춤법 교정·동형이의어 의미 구분·우리말샘 음소 검색을 씁니다.
- 저장소: RBareun
- 현재 버전: 1.3.0
설치
CRAN 에는 아직 등록되지 않았습니다. 깃허브에서 받습니다.
install.packages(c("curl", "httr", "jsonlite"))
library(devtools)
devtools::install_github("bareun-nlp/RBareun")
준비물
- 실행 중인 바른 서버. 로컬 설치본은 5658, 도커는 5656 이 기본 포트입니다.
- API 키.
koba-로 시작합니다. 발급 방법
맞춤법 교정과 우리말샘 음소 검색은 맞춤법 교정 기능이 포함된 서버에서만 됩니다.
형태소 분석
t <- tagger("결과를 문자열로 바꾼다.")
pos(t)
#> [[1]]
#> [1] "결과/NNG" "를/JKO" "문자열/NNG" "로/JKB" "바꾸/VV" "ㄴ다/EF" "./SF"
morphs(t)
#> [[1]]
#> [1] "결과" "를" "문자열" "로" "바꾸" "ㄴ다" "."
nouns(t)
#> [[1]]
#> [1] "결과" "문자열"
verbs(t)
#> [[1]]
#> [1] "바꾸"
여러 문장은 줄바꿈으로 나눠 넣습니다.
사용자 사전
여럿을 주면 앞에 온 것이 우선합니다. 사전을 만드는 방법은 사용자 사전 API 를 보세요.
맞춤법 교정
r <- correct_grammar("이거 안되요. 학교에 갔읍니다.")
revised_text(r)
#> [1] "이거 안되요. 학교에 갔습니다."
revisions(r)
#> origin revised category help
#> 1 갔읍니다. 갔습니다. STANDARD STANDARD-읍니다
교정기 옵션도 줄 수 있습니다.
자세한 내용은 맞춤법 검사 API 를 보세요.
동형이의어 의미 구분
같은 글자가 여러 뜻을 가질 때 어느 뜻인지 골라 줍니다.
t <- tagger("나는 밤에 밤을 먹었다.", with_sense = TRUE)
senses(t)
#> sentence morph tag sense_no meaning probability
#> 1 1 밤 NNG 2 밤나무의 열매. ... 0.5513565
#> 3 1 먹 VV 2 음식 따위를 입을 통하여 ... 0.9777783
조사·어미처럼 의미를 갖지 않는 형태소에는 원래 붙지 않으므로, 대부분의 형태소는 표에 나오지 않습니다. 동형이의어 의미 구분 API 참고.
우리말샘 음소 검색
완성형 한글로는 "초성이 ㅅ 이고 종성이 ㄴ 인 음절" 같은 조건을 쓸 수 없습니다.
dict_words(search_dict("{ㅅ//ㄴ}다", pos = "동사"))
#> [1] "신다"
dict_words(search_dict("아지", anchor = "suffix", limit = 5))
#> [1] "아지" "가아지" "강아지" "개아지" "갱아지"
anchor 는 word(기본)·prefix·suffix·contains 중에 고릅니다.
패턴 문법은 우리말샘 음소 검색 API 를 보세요.
오류 처리
서버 호출이 실패하면 종류를 구분할 수 있는 조건(condition)이 올라옵니다.
tryCatch(
correct_grammar("문장"),
bareun_auth_error = function(e) message("API 키를 확인하세요"),
bareun_connection_error = function(e) message("서버 주소를 확인하세요")
)
| 클래스 | 언제 |
|---|---|
bareun_connection_error |
서버에 닿지 못함. 주소 오타·미기동·방화벽 |
bareun_auth_error |
API 키가 없거나 유효하지 않음, 라이선스 만료 |
bareun_unimplemented_error |
그 서버가 제공하지 않는 기능 |
bareun_server_error |
서버 내부 오류 |
bareun_request_error |
그 밖의 요청 오류 |
bareun_argument_error |
인자가 잘못됨. 서버를 부르기 전에 걸립니다 |
1.2.0 에서 달라진 것
| 1.2.0 | 1.3.0 |
|---|---|
| 형태소 분석·사용자 사전 | + 교정·의미 구분·음소 검색 |
| 오류가 모두 같은 모양 | 조건 클래스로 구분 |
| 테스트 없음 | testthat 50건 |
기존 함수의 사용법은 그대로입니다. tagger() 에 with_sense 와
custom_dict_names 인자가 늘었습니다.
자주 묻는 질문
Q. CRAN 에서 설치할 수 없나요?
A. 아직 등록되지 않았습니다. devtools::install_github() 로 설치하세요.
Q. 교정 함수를 불렀더니 "제공하지 않습니다" 오류가 납니다.
A. 맞춤법 교정 기능이 없는 서버입니다. 교정과 음소 검색은 교정 기능이 포함된
서버에서만 동작합니다. bareun_unimplemented_error 로 구분할 수 있습니다.
Q. with_sense = TRUE 로 했는데 senses() 가 비어 있습니다.
A. 서버에 의미 구분 모델이 실려 있어야 합니다. 그리고 중의성이 없는 형태소에는
의미가 붙지 않으므로, 짧은 문장에서는 비어 있을 수 있습니다.
도움이 되었나요?