티스토리 뷰
Spring Boot / Gradle 기반 서비스에 Open Korean Text 한국어 형태소 분석기 적용
# Open Korean Text
트위터에서 개발된 오픈소스 한국어 처리기이지만, 이제는 Open Korean Text 오픈소스로 변경되었다.
스칼라로 쓰인 Java 한국어 처리 라이브러리이며, 텍스트 정규화 형태소 분석기이다.
# 라이브러리 다운로드 및 라이브러리 적용
- Open Korean Text 라이브러리 다운로드
파일 다운로드 및 압축 해제
open-korean-text-2.1.0.jar 파일을 프로젝트 라이브러리 폴더에 복사
# Gradle build.gradle 설정
Scala 라이브러리를 추가
트위터 한국어 라이브러리 추가
Open Korean Text 라이브러리 추가 시 트위터 라이브러리가 없을 경우 오류 남.
repositories { maven { url 'https://jitpack.io' } } dependencies { implementation files('lib/open-korean-text-2.1.0.jar') implementation 'org.scala-lang:scala-library:2.12.4' implementation 'com.twitter.penguin:korean-text:4.4.4' }
# com.twitter.penguin:korean-text 미적용시 발생하는 오류
Gradle build.gradle 설정에 com.twitter.penguin:korean-text를 미적용 하니 아래와 같은 문제가 발생했다.
open-korean-text 라이브러리는 트위터 라이브러리 의존성을 가지고 있는듯 하다.
# Open Korean Text 테스트
Spring Boot 테스트 진행
@SpringBootTest @ActiveProfiles("local-live") @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) // DB 사용 설정 @RunWith(SpringRunner.class) public class OpenKoreanTextTest { private static final Logger log = LoggerFactory.getLogger(OpenKoreanTextTest.class); @Test public void Test() { String text = "BTS방탄소년단야동#방소 "; // Normalize CharSequence normalized = OpenKoreanTextProcessorJava.normalize(text); System.out.println(normalized); // Tokenize Seq<KoreanTokenizer.KoreanToken> tokens = OpenKoreanTextProcessorJava.tokenize(normalized); System.out.println(OpenKoreanTextProcessorJava.tokensToJavaStringList(tokens)); System.out.println(OpenKoreanTextProcessorJava.tokensToJavaKoreanTokenList(tokens)); // Phrase extraction List<KoreanPhraseExtractor.KoreanPhrase> phrases = OpenKoreanTextProcessorJava.extractPhrases(tokens, true, true); System.out.println(phrases); phrases = OpenKoreanTextProcessorJava.extractPhrases(tokens, false, true); System.out.println(phrases); phrases = OpenKoreanTextProcessorJava.extractPhrases(tokens, true, false); System.out.println(phrases); } }
실행 결과
// OpenKoreanTextTest 테스트 BTS방탄소년단야동#방소 [BTS, 방탄소년단, 야동, #, 방소] [BTS(Alpha: 0, 3), 방탄소년단(Noun: 3, 5), 야동(Noun: 8, 2), #(Punctuation: 10, 1), 방소(Noun: 11, 2)] [방소(Noun: 11, 2), BTS(Noun: 0, 3), 방탄소년단(Noun: 3, 5)] [BTS방탄소년단야동(Noun: 0, 10), 방소(Noun: 11, 2), BTS(Noun: 0, 3), 방탄소년단(Noun: 3, 5), 야동(Noun: 8, 2)] [방소(Noun: 11, 2), BTS(Noun: 0, 3), 방탄소년단(Noun: 3, 5)]
# Open Korean Text 적용기
데이터 분석 설계하는 곳에서 open-korean-text 사용하기에 나도 동일한 OKT(Open Korean Text) 적용했다.
Java 라이브로리가 있다고 해서 적용을 해보니 Gradle 등록된 라이브러리가 아니였으며, 또 Scala 개발된 라이브러리 였다.
적용하기 힘들었다. 힘들다기 보다는 다 찾아 가는것이 살짝 귀찮아 졌다.
직접 라이브러리를 찾아 다운로드 후 프로젝트에 적용하고 스칼라 라이브러리 등록 하고 테스트 했더니
트위터 라이브러리가 또 필요해 졌다. 트위터에서 파생되 나온 라이브러리인지 꼭 필요했다. 그래서 모두 적용했다.
적용 후 테스트 실행을 해보니 나름 만족했다.
트위터에서 개발된 것이라 그런지 검색 제외 필터 기능과 해시태그 분석이 가능해서 좋핬다.
지금 Komoran과 OKR(Open Korean Text) 두개 모두 적용후 테스트 중에 있다.
두 기능을 모두 장단점을 파악 하기 위해 테스트 진행중에 있다. 하나를 선택 해야 한다. ㅎㅎㅎ
관리 측면에서 계속 발생하는 한글 자연어 형태소 분석을 진행하게 될것 같은데
사전등록 / 제어 단어 필터 / 실시간 처리는 어떻게 해야 할지 많은 생각이 든다.
자연어 형태소 분석을 하면서 우리는 많은 문장과 단어를 축약해서 사용하고 있다는걸 느끼게 됐다.
축약된 단어를 사용하기는 편하지만 그 단어의 순수 의미를 잃어버리는것 같아 아쉬움이 남는다.
참고로 난 엄마 라는 단어가 참 좋은데~ 왜? 다들 맘 이라고 부르는지 살짝 이해가 안되네 ㅎㅎㅎㅎ
'DEV > Spring Boot' 카테고리의 다른 글
Komoran 한국어 형태소 분석기 적용 (0) | 2019.08.13 |
---|---|
Windows Server 서비스에 Tomcat 등록 및 확인 (0) | 2019.08.09 |
Windows Server Java 및 Tomcat 설치 및 설정 (0) | 2019.08.09 |
Spring Boot 서비스 배포 War 만들기 (IntelliJ IDE 사용) (0) | 2019.08.09 |
Spring Boot Gradle Mybatis Logback 설정 (0) | 2019.08.01 |
- Total
- Today
- Yesterday
- 얼리버드
- Swift
- 구글
- Intellij
- 애널리틱스
- Android
- log
- 웹마스터도구
- gradle
- KOMORAN
- 한국어
- 카카오뱅크 체크카드
- 블로그
- 체크카드
- 딸 사랑
- mybatis
- 티스도리
- 구글 웹마스터 도구
- tomcat
- 좋은아빠
- 딸을 사랑하는 방법
- 네이버 웹마스터도구
- 형태소 분석기
- logback
- 좋은 글
- open korean text
- elasticsearch
- 카카오뱅크
- Kotlin
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |