diff --git a/README.md b/README.md index 9dd1135..8550213 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Split Korean text into sentences using heuristic algorithm. ``` - Gradle ```console - +implementation 'io.github.sangdee:kss-java:2.6.0' ```

@@ -39,7 +39,7 @@ ArrayList splitSentences( - You can segment text to sentences with this method. ```java -import kss.core.Kss; +import kss.Kss; Kss kss = new Kss(); String text = "회사 동료 분들과 다녀왔는데 분위기도 좋고 음식도 맛있었어요 다만, 강남 토끼정이 강남 쉑쉑버거 골목길로 쭉 올라가야 하는데 다들 쉑쉑버거의 유혹에 넘어갈 뻔 했답니다 강남역 맛집 토끼정의 외부 모습."; @@ -58,11 +58,11 @@ kss.splitSentences(text); - Informal articles (SNS, Blogs, Messages, ...) : recommend `useHeuristic=true` ```java -import kss.core.Kss; -Kss kss = new Kss(); -String text = "미리 예약을 할 수 있는 시스템으로 합리적인 가격에 여러 종류의 생선, 그리고 다양한 부위를 즐길 수 있기 때문이다. 계절에 따라 모둠회의 종류는 조금씩 달라지지만 자주 올려주는 참돔 마스까와는 특히 맛이 매우 좋다. 일반 모둠회도 좋지만 좀 더 특별한 맛을 즐기고 싶다면 특수 부위 모둠회를 추천한다 제철 생선 5~6가지 구성에 평소 접하지 못했던 부위까지 색다르게 즐길 수 있다."; -kss.splitSentences(text, false); + +Kss kss=new Kss(); + String text="미리 예약을 할 수 있는 시스템으로 합리적인 가격에 여러 종류의 생선, 그리고 다양한 부위를 즐길 수 있기 때문이다. 계절에 따라 모둠회의 종류는 조금씩 달라지지만 자주 올려주는 참돔 마스까와는 특히 맛이 매우 좋다. 일반 모둠회도 좋지만 좀 더 특별한 맛을 즐기고 싶다면 특수 부위 모둠회를 추천한다 제철 생선 5~6가지 구성에 평소 접하지 못했던 부위까지 색다르게 즐길 수 있다."; + kss.splitSentences(text,false); ``` ```java ["미리 예약을 할 수 있는 시스템으로 합리적인 가격에 여러 종류의 생선, 그리고 다양한 부위를 즐길 수 있기 때문이다.", @@ -72,14 +72,15 @@ kss.splitSentences(text, false); ### 2.3. Brackets and quotation marks processing - Kss provides a technique for not segmenting sentences enclosed in brackets (괄호) or quotation marks (따옴표). + ```java -import kss.core.Kss; +import kss.Kss; -Kss kss = new Kss(); -String text = "그가 말했다. '거기는 가지 마세요. 위험하니까요. 알겠죠?' 그러자 그가 말했다. 알겠어요."; +Kss kss=new Kss(); + String text="그가 말했다. '거기는 가지 마세요. 위험하니까요. 알겠죠?' 그러자 그가 말했다. 알겠어요."; -kss.splitSentences(text) -["그가 말했다.", "'거기는 가지 마세요. 위험하니까요. 알겠죠?' 그러자 그가 말했다.", "알겠어요."] + kss.splitSentences(text) + ["그가 말했다.","'거기는 가지 마세요. 위험하니까요. 알겠죠?' 그러자 그가 말했다.","알겠어요."] ``` #### 2.3.1. Several options to optimize recursion @@ -90,14 +91,14 @@ kss.splitSentences(text) - You can turn off calibration using the `maxRecoverLength` parameter. (default is 20,000) ```java -import kss.core.Kss; -Kss kss = new Kss(); -String text = "VERY_LONG_TEXT"; -splitSentences(text, true, true, 5); +Kss kss=new Kss(); + String text="VERY_LONG_TEXT"; + + splitSentences(text,true,true,5); // you can adjust recursion depth using `maxRecoverStep` (default is 5) -splitSentences(text, true, true, 5, 20000); + splitSentences(text,true,true,5,20000); // you can turn it off when you input very long text using `maxRecoverLength` (default is 20000) ``` @@ -106,16 +107,16 @@ splitSentences(text, true, true, 5, 20000); - Set `useQuotesBracketsProcessing=false` to turn it off. ```java -import kss.core.Kss; -Kss kss = new Kss(); -String text = "그가 말했다. (거기는 가지 마세요. 위험하니까요. 알겠죠?) 그러자 그가 말했다. 알겠어요."; - -kss.splitSentences(text); -['그가 말했다.', '(거기는 가지 마세요. 위험하니까요. 알겠죠?) 그러자 그가 말했다.', '알겠어요.'] - -kss.splitSentences(text, true, false); -['그가 말했다.', '(거기는 가지 마세요.', '위험하니까요.', '알겠죠?', ') 그러자 그가 말했다.', '알겠어요.'] + +Kss kss=new Kss(); + String text="그가 말했다. (거기는 가지 마세요. 위험하니까요. 알겠죠?) 그러자 그가 말했다. 알겠어요."; + + kss.splitSentences(text); + ['그가 말했다.','(거기는 가지 마세요. 위험하니까요. 알겠죠?) 그러자 그가 말했다.','알겠어요.'] + + kss.splitSentences(text,true,false); + ['그가 말했다.','(거기는 가지 마세요.','위험하니까요.','알겠죠?',') 그러자 그가 말했다.','알겠어요.'] ```

@@ -136,12 +137,13 @@ kss.splitSentences(text, true, false); ### 3.1. Set maximum length of chunks via `maxLength` - `splitChunks` combine sentences into chunks of a `maxlength` or less. - You can set the maximum length of one chunk to `maxLength`. + ```java -import kss.core.Kss; +import kss.Kss; -Kss kss = new Kss(); -String text = "NoSQL이라고 하는 말은 No 'English'라고 하는 말과 마찬가지다. 세상에는 영어 말고도 수많은 언어가 존재한다. MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다. 그럼에도 이 두 쿼리 언어는 같은 NoSQL 카테고리에 속한다. 어쨌거나 SQL이 아니기 때문이다. 또한 NoSQL이 No RDBMS를 의미하지는 않는다. BerkleyDB같은 예외가 있기 때문이다. 그리고 No RDBMS가 NoSQL인 것도 아니다. SQL호환 레이어를 제공하는 KV-store라는 예외가 역시 존재한다. 물론 KV-store의 특징상 range query를 where절에 넣을 수 없으므로 완전한 SQL은 못 되고 SQL의 부분집합 정도를 제공한다."; -kss.splitChunks(text, 128); +Kss kss=new Kss(); + String text="NoSQL이라고 하는 말은 No 'English'라고 하는 말과 마찬가지다. 세상에는 영어 말고도 수많은 언어가 존재한다. MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다. 그럼에도 이 두 쿼리 언어는 같은 NoSQL 카테고리에 속한다. 어쨌거나 SQL이 아니기 때문이다. 또한 NoSQL이 No RDBMS를 의미하지는 않는다. BerkleyDB같은 예외가 있기 때문이다. 그리고 No RDBMS가 NoSQL인 것도 아니다. SQL호환 레이어를 제공하는 KV-store라는 예외가 역시 존재한다. 물론 KV-store의 특징상 range query를 where절에 넣을 수 없으므로 완전한 SQL은 못 되고 SQL의 부분집합 정도를 제공한다."; + kss.splitChunks(text,128); ``` ```java [ChunkWithIndex(start=0, text="NoSQL이라고 하는 말은 No 'English'라고 하는 말과 마찬가지다. 세상에는 영어 말고도 수많은 언어가 존재한다. MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다."), @@ -153,12 +155,13 @@ kss.splitChunks(text, 128); ### 3.2. Overlap sentences across chunks - If `overlap` is `true`, text will be chunked similar with sliding window. - Each chunk allows for duplicate sentences if you turn this feature on. + ```java -import kss.core.Kss; +import kss.Kss; -Kss kss = new Kss(); -String text = "NoSQL이라고 하는 말은 No 'English'라고 하는 말과 마찬가지다. 세상에는 영어 말고도 수많은 언어가 존재한다. MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다. 그럼에도 이 두 쿼리 언어는 같은 NoSQL 카테고리에 속한다. 어쨌거나 SQL이 아니기 때문이다. 또한 NoSQL이 No RDBMS를 의미하지는 않는다. BerkleyDB같은 예외가 있기 때문이다. 그리고 No RDBMS가 NoSQL인 것도 아니다. SQL호환 레이어를 제공하는 KV-store라는 예외가 역시 존재한다. 물론 KV-store의 특징상 range query를 where절에 넣을 수 없으므로 완전한 SQL은 못 되고 SQL의 부분집합 정도를 제공한다."; -kss.splitChunks(text, 128, false, true); // text maxLength, overlap, useHeuristic, +Kss kss=new Kss(); + String text="NoSQL이라고 하는 말은 No 'English'라고 하는 말과 마찬가지다. 세상에는 영어 말고도 수많은 언어가 존재한다. MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다. 그럼에도 이 두 쿼리 언어는 같은 NoSQL 카테고리에 속한다. 어쨌거나 SQL이 아니기 때문이다. 또한 NoSQL이 No RDBMS를 의미하지는 않는다. BerkleyDB같은 예외가 있기 때문이다. 그리고 No RDBMS가 NoSQL인 것도 아니다. SQL호환 레이어를 제공하는 KV-store라는 예외가 역시 존재한다. 물론 KV-store의 특징상 range query를 where절에 넣을 수 없으므로 완전한 SQL은 못 되고 SQL의 부분집합 정도를 제공한다."; + kss.splitChunks(text,128,false,true); // text maxLength, overlap, useHeuristic, ``` ```java [ChunkWithIndex(start=0, text="NoSQL이라고 하는 말은 No 'English'라고 하는 말과 마찬가지다. 세상에는 영어 말고도 수많은 언어가 존재한다. MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다."), @@ -172,12 +175,13 @@ kss.splitChunks(text, 128, false, true); // text maxLength, overlap, useHeuristi ### 3.3. Use every options used in `splitSentences` - You can use the EVERY options used in `splitSentences`. - For example, if you want to turn off the processing about quotation marks, you can set `useQuotesBracketsProcessing` the same as split_sentences. + ```java -import kss.core.Kss; +import kss.Kss; -Kss kss = new Kss(); -String text = "NoSQL이라고 하는 말은 No 'English'라고 하는 말과 마찬가지다. 세상에는 영어 말고도 수많은 언어가 존재한다. MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다. 그럼에도 이 두 쿼리 언어는 같은 NoSQL 카테고리에 속한다. 어쨌거나 SQL이 아니기 때문이다. 또한 NoSQL이 No RDBMS를 의미하지는 않는다. BerkleyDB같은 예외가 있기 때문이다. 그리고 No RDBMS가 NoSQL인 것도 아니다. SQL호환 레이어를 제공하는 KV-store라는 예외가 역시 존재한다. 물론 KV-store의 특징상 range query를 where절에 넣을 수 없으므로 완전한 SQL은 못 되고 SQL의 부분집합 정도를 제공한다."; -splitChunks(text, 128, false, true, false); // text maxLength, overlap, useHeuristic, useQuotesBracketsProcessing, +Kss kss=new Kss(); + String text="NoSQL이라고 하는 말은 No 'English'라고 하는 말과 마찬가지다. 세상에는 영어 말고도 수많은 언어가 존재한다. MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다. 그럼에도 이 두 쿼리 언어는 같은 NoSQL 카테고리에 속한다. 어쨌거나 SQL이 아니기 때문이다. 또한 NoSQL이 No RDBMS를 의미하지는 않는다. BerkleyDB같은 예외가 있기 때문이다. 그리고 No RDBMS가 NoSQL인 것도 아니다. SQL호환 레이어를 제공하는 KV-store라는 예외가 역시 존재한다. 물론 KV-store의 특징상 range query를 where절에 넣을 수 없으므로 완전한 SQL은 못 되고 SQL의 부분집합 정도를 제공한다."; + splitChunks(text,128,false,true,false); // text maxLength, overlap, useHeuristic, useQuotesBracketsProcessing, ```