Index: solr/example/solr/collection1/conf/schema.xml =================================================================== --- solr/example/solr/collection1/conf/schema.xml (������ 1521434) +++ solr/example/solr/collection1/conf/schema.xml (�۾� �纻) @@ -1004,18 +1004,23 @@ - + - + - + - + - + Index: lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestKoreanAnalyzer.java =================================================================== --- lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestKoreanAnalyzer.java (������ 1521434) +++ lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestKoreanAnalyzer.java (�۾� �纻) @@ -2,6 +2,7 @@ /* * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 @@ -32,15 +33,44 @@ public void testBasics() throws IOException { - assertAnalyzesTo(new KoreanAnalyzer(TEST_VERSION_CURRENT), "자바로 전부 제작된 텍스트 검색 엔진 라이브러리", - new String[]{"자바로", "자바", "전부", "제작된", "제작", "텍스트", "검색", "엔진", "라이브러리"}, - new int[]{0, 0, 4, 7, 7, 11, 15, 18, 21}, - new int[]{3, 2, 6, 10, 9, 14, 17, 20, 26}, - new int[]{1, 0, 1, 1, 0, 1, 1, 1, 1} + assertAnalyzesTo(new KoreanAnalyzer(TEST_VERSION_CURRENT), "\uC790\uBC14\uB85C \uC804\uBD80 \uC81C\uC791\uB41C \uD14D\uC2A4\uD2B8 \uAC80\uC0C9 \uC5D4\uC9C4 \uB77C\uC774\uBE0C\uB7EC\uB9AC", + new String[]{"\uC790\uBC14", "\uC804\uBD80", "\uC81C\uC791", "\uD14D\uC2A4\uD2B8", "\uAC80\uC0C9", "\uC5D4\uC9C4", "\uB77C\uC774\uBE0C\uB7EC\uB9AC"}, + new int[]{0, 4, 7, 11, 15, 18, 21}, + new int[]{2, 6, 9, 14, 17, 20, 26}, + new int[]{1, 1, 1, 1, 1, 1, 1} ); } + public void testCompoundNoun() throws IOException { + + KoreanAnalyzer analyzer = new KoreanAnalyzer(TEST_VERSION_CURRENT); + analyzer.setOriginCNoun(true); + analyzer.setHasOrigin(false); + + assertAnalyzesTo(analyzer, "빅데이터", + new String[]{"빅데이터","빅", "데이터"}, + new int[]{0,0, 1}, + new int[]{4,1, 4}, + new int[]{1,0, 1} + ); + + } + + public void testCompoundNoun1() throws IOException { + + KoreanAnalyzer analyzer = new KoreanAnalyzer(TEST_VERSION_CURRENT); + analyzer.setOriginCNoun(false); + + assertAnalyzesTo(analyzer, "\uBE45\uB370\uC774\uD130", + new String[]{"\uBE45", "\uB370\uC774\uD130"}, + new int[]{0, 1}, + new int[]{1, 4}, + new int[]{1, 1} + ); + + } + /** * TEST FAIL: useCharFilter=false text='\u02ac0\ucb2c\u2606 ' * @@ -57,7 +87,7 @@ public void testOutput() throws IOException { - String korean = "자바로 전부 제작된 텍스트 검색 엔진 라이브러리"; + String korean = "\uC790\uBC14\uB85C \uC804\uBD80 \uC81C\uC791\uB41C \uD14D\uC2A4\uD2B8 \uAC80\uC0C9 \uC5D4\uC9C4 \uB77C\uC774\uBE0C\uB7EC\uB9AC"; Analyzer analyzer = new KoreanAnalyzer(TEST_VERSION_CURRENT); TokenStream stream = analyzer.tokenStream("dummy", new StringReader(korean)); Index: lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestMorphologicalAnalyzer.java =================================================================== --- lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestMorphologicalAnalyzer.java (������ 0) +++ lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestMorphologicalAnalyzer.java (������ 0) @@ -0,0 +1,166 @@ +package org.apache.lucene.analysis.ko; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.lucene.analysis.ko.morph.AnalysisOutput; +import org.apache.lucene.analysis.ko.morph.CompoundEntry; +import org.apache.lucene.analysis.ko.morph.MorphAnalyzer; +import org.apache.lucene.analysis.ko.morph.MorphException; + +import junit.framework.TestCase; + +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class TestMorphologicalAnalyzer extends TestCase { + + /** + * An example sentence, test removal of particles + * MorphAnalyzer has a input string after being tokenized by KoreanTokenizer + * @throws Exception throw exception + */ + public void testMorphAnalyze() throws Exception { + + MorphAnalyzer morphAnalyzer = new MorphAnalyzer(); + + assertEquals(extractStem(morphAnalyzer, "냉방을"), "냉방"); + + assertEquals(extractStem(morphAnalyzer, "하고"), "하"); + + assertEquals(extractStem(morphAnalyzer, "전기를"), "전기"); + + assertEquals(extractStem(morphAnalyzer, "만들고"), "만들"); + + assertEquals(extractStem(morphAnalyzer, "공장을"), "공장"); + + assertEquals(extractStem(morphAnalyzer, "가동하는"), "가동"); + + assertEquals(extractStem(morphAnalyzer, "가스"), "가스"); + + assertEquals(extractStem(morphAnalyzer, "서민에게는"), "서민"); + + assertEquals(extractStem(morphAnalyzer, "필수"), "필수"); + + assertEquals(extractStem(morphAnalyzer, "생활"), "생활"); + + assertEquals(extractStem(morphAnalyzer, "에너지이다"), "에너지"); + } + + /** + * + * @param morphAnalyzer the Korean Morphlogical Analyzer + * @param input the input phrase + * @return the stem extracted from the input + * @throws MorphException throw exception + */ + private String extractStem(MorphAnalyzer morphAnalyzer, String input) throws MorphException { + + List results = morphAnalyzer.analyze(input); + + // if fail to analyze, return the input + if(results.size()==0) return input; + + // It is likely to be more than one result because of the ambiguity of the input phrase. + // The result is ordered by the analyzing score + // the first result has the most high score of the results. + return results.get(0).getStem(); + } + + /** + * An compound noun being segmented by a unit word + * @throws Exception throw exception + */ + public void testCompoundNoun() throws Exception { + + MorphAnalyzer morphAnalyzer = new MorphAnalyzer(); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "과학기술연구과제가"), + new String[]{"과학","기술","연구","과제"}); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "대형화되고"), + new String[]{"대형화"}); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "연구개발주기가"), + new String[]{"연구","개발","주기"}); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "단축되면서"), + new String[]{"단축"}); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "기술을"), + new String[]{"기술"}); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "평가하는"), + new String[]{"평가"}); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "기준이"), + new String[]{"기준"}); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "달라지고"), + new String[]{"달라지"}); + + assertArrayEquals(splitByUnitWord(morphAnalyzer, "있다"), + new String[]{"있"}); + + } + + /** + * + * @param morphAnalyzer the Korean Morphlogical Analyzer + * @param input the input text to be segmented by unit word + * @return the segmented texts + * @throws Exception throw exception + */ + private String[] splitByUnitWord(MorphAnalyzer morphAnalyzer, String input) throws Exception { + + List results = morphAnalyzer.analyze(input); + + // if fail to analyze, return the input + if(results.size()==0) return new String[]{input}; + + AnalysisOutput output = results.get(0); + + if(output.getCNounList().size()<2) + return new String[] {output.getStem()}; + + List nounList = new ArrayList(); + for(CompoundEntry entry : output.getCNounList()) { + nounList.add(entry.getWord()); + } + + return (String[])nounList.toArray(new String[0]); + + } + + /** + * + * @param sources source text + * @param targets target text + * @throws Exception throw exception + */ + private void assertArrayEquals(String[] sources, String[] targets) throws Exception { + + assertEquals(sources.length, targets.length); + + for(int i=0; i< sources.length;i++) { + assertEquals(sources[i], targets[i]); + } + + } + + +} �Ӽ� ����: lucene\analysis\arirang\src\test\org\apache\lucene\analysis\ko\TestMorphologicalAnalyzer.java ___________________________________________________________________ �߰�: svn:mime-type + text/plain Index: lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestCompoundSegment.java =================================================================== --- lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestCompoundSegment.java (������ 0) +++ lucene/analysis/arirang/src/test/org/apache/lucene/analysis/ko/TestCompoundSegment.java (������ 0) @@ -0,0 +1,85 @@ +package org.apache.lucene.analysis.ko; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.lucene.analysis.ko.morph.AnalysisOutput; +import org.apache.lucene.analysis.ko.morph.CompoundEntry; +import org.apache.lucene.analysis.ko.morph.CompoundNounAnalyzer; +import org.apache.lucene.analysis.ko.morph.MorphAnalyzer; + +import junit.framework.TestCase; + +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class TestCompoundSegment extends TestCase { + + + /** + * segment a compound noun into unit nouns + * @throws Exception throw exception + */ + public void testSegmentCompound() throws Exception { + + CompoundNounAnalyzer analyzer = new CompoundNounAnalyzer(); + + assertArrayEquals(splitByUnitWord(analyzer, "연구개발과제") + ,new String[]{"연구","개발","과제"}); + + assertArrayEquals(splitByUnitWord(analyzer, "연구개발주기가") + ,new String[]{"연구","개발","주기","가"}); + } + + /** + * + * @param analyzer the Compound noun segment Analyzer + * @param input the input text to be segmented by unit word + * @return the segmented texts + * @throws Exception throw exception + */ + private String[] splitByUnitWord(CompoundNounAnalyzer analyzer, String input) throws Exception { + + List results = analyzer.analyze(input); + + List nounList = new ArrayList(); + for(CompoundEntry entry : results) { + nounList.add(entry.getWord()); + } + + return (String[])nounList.toArray(new String[0]); + + } + + /** + * + * @param sources source text + * @param targets target text + * @throws Exception throw exception + */ + private void assertArrayEquals(String[] sources, String[] targets) throws Exception { + + assertEquals(sources.length, targets.length); + + for(int i=0; i< sources.length;i++) { + assertEquals(sources[i], targets[i]); + } + + } + + +} �Ӽ� ����: lucene\analysis\arirang\src\test\org\apache\lucene\analysis\ko\TestCompoundSegment.java ___________________________________________________________________ �߰�: svn:mime-type + text/plain Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/DictionaryUtil.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/DictionaryUtil.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/DictionaryUtil.java (�۾� �纻) @@ -72,10 +72,17 @@ dictionary.add(entry.getWord(), entry); } - for(String compound: compounds) { + for(String compound: compounds) + { String[] infos = compound.split("[:]+"); - if(infos.length!=2) continue; - WordEntry entry = new WordEntry(infos[0].trim(),"20000000X".toCharArray()); + if(infos.length!=3&&infos.length!=2) continue; + + WordEntry entry = null; + if(infos.length==2) + entry = new WordEntry(infos[0].trim(),"20000000X".toCharArray()); + else + entry = new WordEntry(infos[0].trim(),("200"+infos[2]+"0X").toCharArray()); + entry.setCompounds(compoundArrayToList(infos[1], infos[1].split("[,]+"))); dictionary.add(entry.getWord(), entry); } @@ -99,7 +106,11 @@ if(entry==null) return null; if(entry.getFeature(WordEntry.IDX_NOUN)=='1'|| - entry.getFeature(WordEntry.IDX_BUSA)=='1') return entry; + entry.getFeature(WordEntry.IDX_NOUN)=='2'|| + entry.getFeature(WordEntry.IDX_BUSA)=='1' + ) + return entry; + return null; } @@ -112,7 +123,14 @@ return null; } - public static WordEntry getCNoun(String key) throws MorphException { + /** + * + * return all noun including compound noun + * @param key the lookup key text + * @return WordEntry + * @throws MorphException throw exception + */ + public static WordEntry getAllNoun(String key) throws MorphException { WordEntry entry = getWord(key); if(entry==null) return null; @@ -173,7 +191,7 @@ return null; } - public static WordEntry getUncompound(String key) throws MorphException { + public synchronized static WordEntry getUncompound(String key) throws MorphException { try { if(uncompounds==null) { @@ -193,7 +211,7 @@ return uncompounds.get(key); } - public static String getCJWord(String key) throws MorphException { + public synchronized static String getCJWord(String key) throws MorphException { try { if(cjwords==null) { @@ -273,9 +291,9 @@ /** * - * @param map - * @param type 1: josa, 2: eomi - * @throws MorphException + * @param map map + * @param dic 1: josa, 2: eomi + * @throws MorphException excepton */ private static synchronized void readFile(HashMap map, String dic) throws MorphException { Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/SyllableUtil.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/SyllableUtil.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/SyllableUtil.java (�۾� �纻) @@ -78,7 +78,7 @@ * 영자 또는 숫자일 경우는 모두 해당이 안되므로 가장 마지막 글자인 '힣' 의 음절특성을 반환한다. * * @param idx '가'(0xAC00)이 0부터 유니코드에 의해 한글음절을 순차적으로 나열한 값 - * @throws Exception + * @throws MorphException throw exceptioin */ public static char[] getFeature(int idx) throws MorphException { @@ -94,7 +94,7 @@ /** * 각 음절의 특성을 반환한다. * @param syl 음절 하나 - * @throws Exception + * @throws MorphException throw exception */ public static char[] getFeature(char syl) throws MorphException { @@ -106,7 +106,7 @@ /** * 음절정보특성을 파일에서 읽는다. * - * @throws Exception + * @throws MorphException throw exception */ private static List getSyllableFeature() throws MorphException { Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/NounUtil.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/NounUtil.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/NounUtil.java (�۾� �纻) @@ -18,6 +18,7 @@ */ import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.lucene.analysis.ko.morph.AnalysisOutput; @@ -41,9 +42,9 @@ * * 어간부가 음/기 로 끝나는 경우 * - * @param o - * @param candidates - * @throws MorphException + * @param o the analyzed output + * @param candidates candidates + * @throws MorphException throw exception */ public static boolean analysisMJ(AnalysisOutput o, List candidates) throws MorphException { @@ -95,9 +96,9 @@ /** * 용언 + '음/기' + 조사(PTN_VMXMJ) - * @param o - * @param candidates - * @throws MorphException + * @param o the analyzed output + * @param candidates candidates + * @throws MorphException throw exception */ public static boolean analysisVMJ(AnalysisOutput o, List candidates) throws MorphException { @@ -120,9 +121,9 @@ /** * 용언 + '아/어' + 보조용언 + '음/기' + 조사(PTN_VMXMJ) - * @param o - * @param candidates - * @throws MorphException + * @param o the analyzed output + * @param candidates candidates + * @throws MorphException throw exception */ public static boolean analysisVMXMJ(AnalysisOutput o, List candidates) throws MorphException { @@ -165,9 +166,9 @@ /** * 체언 + 용언화접미사 + '음/기' + 조사 (PTN_NSMJ) - * @param o - * @param candidates - * @throws MorphException + * @param o the analyzed output + * @param candidates candidates + * @throws MorphException throw exception */ public static boolean analysisNSMJ(AnalysisOutput o, List candidates) throws MorphException { @@ -302,10 +303,10 @@ * 복합명사에서 단위명사를 분리해낸다. * 리스트의 가장 마지막에 위치한 단어가 최장단어이다. * @param str 복합명사 - * @param pos + * @param pos the analysing start point * @param o 분석결과 * return 단위명사 리스트 - * @throws MorphException + * @throws MorphException throw exception */ private static List findNouns(String str, int pos, AnalysisOutput o) throws MorphException { @@ -330,7 +331,7 @@ for(int i=1;i()); + output.setCNoun(Collections.EMPTY_LIST); output.setScore(AnalysisOutput.SCORE_CORRECT); } Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/FileUtil.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/FileUtil.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/FileUtil.java (�۾� �纻) @@ -44,7 +44,7 @@ * @param filename The name of the file (relative to the classpath) that is * to be retrieved. * @return A file object representing the requested filename - * @throws Exception Thrown if the classloader can not be found or if + * @throws MorphException Thrown if the classloader can not be found or if * the file can not be found in the classpath. */ public static File getClassLoaderFile(String filename) throws MorphException { @@ -96,9 +96,8 @@ * @param fName the file to read, must not be null * @param encoding the encoding to use, null means platform default * @return the list of Strings representing each line in the file, never null - * @throws MorphException - * @throws IOException - * @throws Exception + * @throws MorphException throw exception + * @throws IOException throw exception * @throws java.io.UnsupportedEncodingException if the encoding is not supported by the VM * @since Commons IO 1.1 */ Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/MorphUtil.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/MorphUtil.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/MorphUtil.java (�۾� �纻) @@ -48,7 +48,7 @@ /** * 한글 한글자를 초성/중성/종성의 배열로 만들어 반환한다. - * @param c + * @param c the character to be decomposed */ public static char[] decompose(char c) { char[] result = null; @@ -101,8 +101,8 @@ /** * 형태소 유형 출력을 위한 문자열을 생성한다. - * @param word - * @param type + * @param word word to be printed + * @param type the type of the input word */ public static String buildTypeString(String word, char type) { StringBuffer sb = new StringBuffer(); @@ -138,9 +138,9 @@ /** * 용언 + '음/기' + '이' + 어미, 체언 + '에서/부터/에서부터' + '이' + 어미 - * @param output - * @param candidates - * @throws MorphException + * @param output the output text + * @param candidates the candidates + * @throws MorphException throw exception */ public static void buildPtnCM(AnalysisOutput output, List candidates) throws MorphException { Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/EomiUtil.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/EomiUtil.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/EomiUtil.java (�۾� �纻) @@ -36,8 +36,8 @@ /** * 가장 길이가 긴 어미를 분리한다. - * @param term - * @throws MorphException + * @param term term + * @throws MorphException exception */ public static String[] longestEomi(String term) throws MorphException { @@ -270,9 +270,9 @@ /** * 어간만 변하는 경우 - * @param results - * @param stem - * @param ending + * @param results results + * @param stem stem + * @param ending ending */ private static void irregularStem(List results, String stem, String ending) { @@ -330,9 +330,9 @@ /** * 어미만 변하는 경우 - * @param results - * @param stem - * @param ending + * @param results results + * @param stem stem + * @param ending ending */ private static void irregularEnding(List results, String stem, String ending) { if(ending.startsWith("ㅆ")) return; @@ -367,9 +367,9 @@ /** * 어간과 어미가 모두 변하는 경우 - * @param results - * @param stem - * @param ending + * @param results results + * @param stem stem + * @param ending ending */ private static void irregularAO(List results, String stem, String ending) { Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/KoreanEnv.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/KoreanEnv.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/KoreanEnv.java (�۾� �纻) @@ -99,7 +99,6 @@ * Given a property file name, load the property file and return an object * representing the property values. * - * @param propertyFile The name of the property file to load. * @param def Default property values, or null if there are no defaults. * @return The loaded SortedProperties object. */ Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/IrregularUtil.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/IrregularUtil.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/IrregularUtil.java (�۾� �纻) @@ -128,9 +128,9 @@ /** * ㅂ 불규칙 원형을 복원한다. (돕다, 곱다) - * @param start - * @param end - * @throws MorphException + * @param start start text + * @param end end text + * @throws MorphException throw exception */ private static String[] restoreBIrregular(String start, String end) throws MorphException { @@ -162,9 +162,9 @@ /** * ㄷ 불규칙 원형을 복원한다. (깨닫다, 묻다) - * @param start - * @param end - * @throws MorphException + * @param start start text + * @param end end text + * @throws MorphException throw exception */ private static String[] restoreDIrregular(String start, String end) throws MorphException { if(start==null||"".equals(start)) return null; @@ -188,9 +188,9 @@ /** * ㅅ 불규칙 원형을 복원한다. (긋다--그어) - * @param start - * @param end - * @throws MorphException + * @param start start text + * @param end end text + * @throws MorphException throw exception */ private static String[] restoreSIrregular(String start, String end) throws MorphException { if(start==null||"".equals(start)) return null; @@ -215,9 +215,9 @@ /** * 르 불규칙 원형을 복원한다. (흐르다-->흘러) * "따르다"는 ㄹ불규칙이 아니지만.. 인 것처럼 처리한다. - * @param start - * @param end - * @throws MorphException + * @param start start text + * @param end end text + * @throws MorphException throw exception */ private static String[] restoreLIrregular(String start, String end) throws MorphException { @@ -249,9 +249,9 @@ /** * ㄹ불규칙 원형을 복원한다. (길다-->긴, 알다-->안) * 어간의 끝소리인 ‘ㄹ’이 ‘ㄴ’, ‘ㄹ’, ‘ㅂ’, ‘오’, ‘시’ 앞에서 탈락하는 활용의 형식 - * @param start - * @param end - * @throws MorphException + * @param start start text + * @param end end text + * @throws MorphException throw excetion */ private static String[] restoreELIrregular(String start, String end) throws MorphException { @@ -271,9 +271,9 @@ /** * 러 불규칙 원형을 복원한다. (이르다->이르러, 푸르다->푸르러) - * @param start - * @param end - * @throws MorphException + * @param start start text + * @param end end text + * @throws MorphException throw exception */ private static String[] restoreRUIrregular(String start, String end) throws MorphException { @@ -301,9 +301,9 @@ /** * ㅎ 탈락 원형을 복원한다. (까맣다-->까만,까매서) - * @param start - * @param end - * @throws MorphException + * @param start start text + * @param end end text + * @throws MorphException throw exception */ private static String[] restoreHIrregular(String start, String end) throws MorphException { if(start==null||"".equals(start)||end==null||"".equals(end)) return null; @@ -334,9 +334,9 @@ /** * 으 탈락 원형을 복원한다. (뜨다->더, 크다-커) - * @param start - * @param end - * @throws MorphException + * @param start start text + * @param end end text + * @throws MorphException throw exception */ private static String[] restoreUIrregular(String start, String end) throws MorphException { if(start==null||"".equals(start)) return null; Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/VerbUtil.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/VerbUtil.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/utils/VerbUtil.java (�۾� �纻) @@ -105,11 +105,13 @@ success = true; } if(!success) return false; - - if(success&&DictionaryUtil.getNoun(o.getStem())!=null) { + + WordEntry entry = null; + if(success&&(entry=DictionaryUtil.getAllNoun(o.getStem()))!=null) { + if(entry.getFeature(WordEntry.IDX_NOUN)=='2') { + o.setCNoun(entry.getCompounds()); + } o.setScore(AnalysisOutput.SCORE_CORRECT); -// }else { -// NounUtil.confirmCNoun(o); } o.setPatn(PatternConstants.PTN_NJCM); @@ -122,8 +124,8 @@ /** * 어미부와 어간부가 분리된 상태에서 용언화접미사가 결합될 수 있는지 조사한다. * @param o 어미부와 어간부가 분리된 결과 - * @param candidates - * @throws MorphException + * @param candidates candidates + * @throws MorphException throw exception */ public static boolean ananlysisNSM(AnalysisOutput o, List candidates) throws MorphException { @@ -196,7 +198,11 @@ if(o.getVsfx().equals("하")&&entry.getFeature(WordEntry.IDX_DOV)!='1') return false; if(o.getVsfx().equals("되")&&entry.getFeature(WordEntry.IDX_BEV)!='1') return false; + o.setScore(AnalysisOutput.SCORE_CORRECT); + if(entry.getFeature(WordEntry.IDX_NOUN)=='2') { + o.setCNoun(entry.getCompounds()); + } candidates.add(o); Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/IndexWord.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/IndexWord.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/IndexWord.java (�۾� �纻) @@ -22,10 +22,18 @@ */ public class IndexWord { + // the word to be indexed private String word; + // the offset from the start of input text private int offset = 0; + + // when the input text is a chinese text, the korean sound text of it is extracted as a index word. + private int increment = 1; + // the derived korean sound text has the type + private String type; + public IndexWord() { } @@ -35,6 +43,16 @@ this.offset = pos; } + public IndexWord(String word, int pos, int inc) { + this(word, pos); + this.increment = inc; + } + + public IndexWord(String word, int pos, int inc, String t) { + this(word, pos, inc); + this.type = t; + } + public String getWord() { return word; } @@ -50,4 +68,20 @@ public void setOffset(int offset) { this.offset = offset; } + + public int getIncrement() { + return increment; + } + + public void setIncrement(int increment) { + this.increment = increment; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } } Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/KoreanAnalyzer.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/KoreanAnalyzer.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/KoreanAnalyzer.java (�۾� �纻) @@ -54,7 +54,7 @@ private boolean bigrammable = true; - private boolean hasOrigin = true; + private boolean hasOrigin = false; private boolean exactMatch = false; Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/KoreanFilter.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/KoreanFilter.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/KoreanFilter.java (�۾� �纻) @@ -18,6 +18,7 @@ */ import java.io.IOException; + import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -26,6 +27,7 @@ import java.util.List; import java.util.Map; +import org.apache.lucene.analysis.Token; import org.apache.lucene.analysis.TokenFilter; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.ko.morph.AnalysisOutput; @@ -38,6 +40,8 @@ import org.apache.lucene.analysis.ko.morph.WordSpaceAnalyzer; import org.apache.lucene.analysis.ko.utils.DictionaryUtil; import org.apache.lucene.analysis.ko.utils.HanjaUtils; +import org.apache.lucene.analysis.ko.IndexWord; +import org.apache.lucene.analysis.ko.KoreanTokenizer; import org.apache.lucene.analysis.standard.ClassicTokenizer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; @@ -55,7 +59,7 @@ private boolean bigrammable = true; - private boolean hasOrigin = true; + private boolean hasOrigin = false; private boolean originCNoun = true; @@ -163,21 +167,16 @@ clearAttributes(); IndexWord iw = morphQueue.removeFirst(); - int pos = iw.getOffset(); termAtt.copyBuffer(iw.getWord().toCharArray(), 0, iw.getWord().length()); - offsetAtt.setOffset(tokStart+pos, tokStart + pos + iw.getWord().length()); - - if(!isFirst && iw.getOffset()==0) { - posIncrAtt.setPositionIncrement(0); -// posLenAtt.setPositionLength(iw.getWord().length()); - } - + offsetAtt.setOffset(iw.getOffset(), iw.getOffset() + iw.getWord().length()); + posIncrAtt.setPositionIncrement(iw.getIncrement()); + } /** * 한글을 분석한다. - * @throws MorphException + * @throws MorphException exception */ private void analysisKorean(String input) throws MorphException { @@ -188,95 +187,107 @@ if(hasOrigin) map.put(input, new IndexWord(input,0)); if(outputs.get(0).getScore()>=AnalysisOutput.SCORE_COMPOUNDS) { - extractKeyword(outputs, map); + extractKeyword(outputs.subList(0, 1),offsetAtt.startOffset(), map); } else { - try { + + try{ List list = wsAnal.analyze(input); - List results = new ArrayList(); - if(list.size()>1) { + List results = new ArrayList(); + if(list.size()>1 && wsAnal.getOutputScore(list)>AnalysisOutput.SCORE_ANALYSIS) { + int offset = 0; for(AnalysisOutput o : list) { - if(hasOrigin) map.put(o.getSource(), new IndexWord(o.getSource(),0)); + if(hasOrigin) map.put(o.getSource(), new IndexWord(o.getSource(),offsetAtt.startOffset()+offset,1)); results.addAll(morph.analyze(o.getSource())); - } + offset += o.getSource().length(); + } } else { - results.addAll(list); + results.add(outputs.get(0)); } - - extractKeyword(results, map); - } catch(Exception e) { - extractKeyword(outputs, map); + extractKeyword(results, offsetAtt.startOffset(), map); + }catch(Exception e) { + extractKeyword(outputs.subList(0, 1), offsetAtt.startOffset(), map); } + } - + Iterator iter = map.keySet().iterator(); while(iter.hasNext()) { - String text = iter.next(); - if(text.length()<=1) continue; + String text = iter.next(); morphQueue.add(map.get(text)); } } - private void extractKeyword(List outputs, Map map) throws MorphException { + private void extractKeyword(List outputs, int startoffset, Map map) throws MorphException { - for(AnalysisOutput output : outputs) { + int pos = 0; + for(AnalysisOutput output : outputs) + { + if(output.getPos()==PatternConstants.POS_VERB) continue; - if(output.getPos()!=PatternConstants.POS_VERB) { - if(originCNoun || (!originCNoun&&output.getCNounList().size()==0)) { - map.put(output.getStem(), new IndexWord(output.getStem(),0)); - } -// }else { -// map.put(output.getStem()+"다", new Integer(1)); - } - - if(exactMatch) continue; - if(output.getScore()>=AnalysisOutput.SCORE_COMPOUNDS) { List cnouns = output.getCNounList(); - int start = 0; - - for(int jj=0;jj1) map.put(cnoun.getWord(), new IndexWord(cnoun.getWord(), start)); - - if(jj==0 && cnoun.getWord().length()==1) { - map.put(cnoun.getWord()+cnouns.get(jj+1).getWord(), new IndexWord(cnoun.getWord(), start)); - } else if(jj>1 && cnoun.getWord().length()==1) { - String iw = cnouns.get(jj-1).getWord()+cnoun.getWord(); - map.put(iw, new IndexWord(iw, start-cnouns.get(jj-1).getWord().length())); + if(!cnoun.isExist()) + { + if(jj!=0&&prevExist) startoffset+=10; + addBiagramToMap(cnoun.getWord(),startoffset+pos,map); } + else + { + int inc = 1; + if(originCNoun && jj==0) inc = 0; + + if(jj!=0&&!prevExist) startoffset++; + map.put(cnoun.getWord(), new IndexWord(cnoun.getWord(),startoffset+pos,inc)); + } - start += cnoun.getWord().length(); + prevExist = cnoun.isExist(); + pos += cnoun.getWord().length(); } - - } else if(bigrammable) { - addBiagramToMap(output.getStem(),map); + } + else if(bigrammable) + { + addBiagramToMap(output.getStem(),pos,map); + pos += output.getStem().length(); } + } + } - private void addBiagramToMap(String input, Map map) { - + private void addBiagramToMap(String input, int startoffset, Map map) { int offset = 0; int strlen = input.length(); - while(offsetstrlen?strlen:offset+2); - map.put(text, new IndexWord(text, offset)); + map.put(text, new IndexWord(text,startoffset+offset,inc)); offset++; - } + } } } @@ -292,8 +303,8 @@ /** * 한자는 2개이상의 한글 음으로 읽혀질 수 있다. * 두음법칙이 아님. - * @param term - * @throws MorphException + * @param term term + * @throws MorphException exception */ private void analysisChinese(String term) throws MorphException { @@ -376,7 +387,7 @@ private List confirmCNoun(String input) throws MorphException { - WordEntry cnoun = DictionaryUtil.getCNoun(input); + WordEntry cnoun = DictionaryUtil.getAllNoun(input); if(cnoun!=null && cnoun.getFeature(WordEntry.IDX_NOUN)=='2') { return cnoun.getCompounds(); } Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/SpaceOutput.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/SpaceOutput.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/SpaceOutput.java (�۾� �纻) @@ -69,7 +69,7 @@ /** * - * @param word + * @param word input word */ public void addNRWord(String word) { addNRWord(word, AnalysisOutput.SCORE_CORRECT); @@ -77,8 +77,8 @@ /** * - * @param word - * @param score + * @param word input word + * @param score input score */ public void addNRWord(String word, int score) { AnalysisOutput output = new AnalysisOutput(word,null,null,PatternConstants.PTN_N,score); Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/CompoundNounAnalyzer.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/CompoundNounAnalyzer.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/CompoundNounAnalyzer.java (�۾� �纻) @@ -18,11 +18,16 @@ */ import java.util.ArrayList; + import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; import org.apache.lucene.analysis.ko.utils.DictionaryUtil; +import org.apache.lucene.analysis.ko.morph.CompoundEntry; +import org.apache.lucene.analysis.ko.morph.MorphException; +import org.apache.lucene.analysis.ko.morph.PatternConstants; +import org.apache.lucene.analysis.ko.morph.WordEntry; /** * 복합명사를 분해한다. @@ -47,6 +52,10 @@ public List analyze(String input) throws MorphException { + WordEntry entry = DictionaryUtil.getAllNoun(input); + if(entry!=null && entry.getCompounds().size()>0) + return entry.getCompounds(); + return analyze(input,true); } @@ -54,274 +63,291 @@ public List analyze(String input, boolean isFirst) throws MorphException { int len = input.length(); - if(len<3) return new ArrayList(); + if(len<3) return new ArrayList(); - List outputs = new ArrayList(); + List outputs = new ArrayList(); + analyze(input, outputs, isFirst); + + return outputs; + + } + + public boolean analyze(String input, List outputs, boolean isFirst) throws MorphException { + + int len = input.length(); + boolean success = false; + switch(len) { case 3 : - analyze3Word(input,outputs,isFirst); + success = analyze3Word(input,outputs,isFirst); break; case 4 : - analyze4Word(input,outputs,isFirst); + success = analyze4Word(input,outputs,isFirst); break; case 5 : - analyze5Word(input,outputs,isFirst); + success = analyze5Word(input,outputs,isFirst); break; - case 6 : - analyze6Word(input,outputs,isFirst); - break; +// case 6 : +// analyze6Word(input,outputs,isFirst); +// break; default : - analyzeLongText(input,outputs,isFirst); + success = analyzeLongText(input,outputs,isFirst); } - - return outputs; + return success; } - - private void analyze3Word(String input,List outputs, boolean isFirst) throws MorphException { + + private boolean analyze3Word(String input,List outputs, boolean isFirst) throws MorphException { int[] units1 = {2,1}; CompoundEntry[] entries1 = analysisBySplited(units1,input,isFirst); if(entries1!=null && entries1[0].isExist()&&entries1[1].isExist()) { outputs.addAll(Arrays.asList(entries1)); - return; + return true; } int[] units2 = {1,2}; CompoundEntry[] entries2 = analysisBySplited(units2,input,isFirst); if(entries2!=null && entries2[0].isExist()&&entries2[1].isExist()) { outputs.addAll(Arrays.asList(entries2)); + return true; } - } + return false; + } - private void analyze4Word(String input,List outputs, boolean isFirst) throws MorphException { + private boolean analyze4Word(String input,List outputs, boolean isFirst) throws MorphException { if(!isFirst) { int[] units0 = {1,3}; CompoundEntry[] entries0 = analysisBySplited(units0,input,isFirst); if(entries0!=null && entries0[0].isExist()&&entries0[1].isExist()) { outputs.addAll(Arrays.asList(entries0)); - return; + return true; } } int[] units2 = {1,2,1}; - CompoundEntry[] entries2 = analysisBySplited(units2,input,isFirst); + CompoundEntry[] entries2 = analysisBySplited(units2,input,isFirst); if(entries2!=null && entries2[0].isExist()&&entries2[1].isExist()&&entries2[2].isExist()) { outputs.addAll(Arrays.asList(entries2)); - return; + return true; } int[] units1 = {2,2}; CompoundEntry[] entries1 = analysisBySplited(units1,input,isFirst); if(entries1!=null && entries1[0].isExist()&&entries1[1].isExist()) { outputs.addAll(Arrays.asList(entries1)); - return; + return true; } if(!exactMach&&entries1!=null && (entries1[0].isExist()||entries1[1].isExist())) { outputs.addAll(Arrays.asList(entries1)); + return true; } + + return false; } - private void analyze5Word(String input,List outputs, boolean isFirst) throws MorphException { + private boolean analyze5Word(String input,List outputs, boolean isFirst) throws MorphException { int[] units1 = {2,3}; CompoundEntry[] entries1 = analysisBySplited(units1,input,isFirst); if(entries1!=null && entries1[0].isExist()&&entries1[1].isExist()) { outputs.addAll(Arrays.asList(entries1)); - return; + return true; } int[] units2 = {3,2}; CompoundEntry[] entries2 = analysisBySplited(units2,input,isFirst); if(entries2!=null && entries2[0].isExist()&&entries2[1].isExist()) { outputs.addAll(Arrays.asList(entries2)); - return; + return true; } int[] units_1 = {4,1}; CompoundEntry[] entries_1 = analysisBySplited(units_1,input,isFirst); - if(entries_1!=null && entries_1[0].isExist()&&entries_1[1].isExist()) { + if(entries_1!=null && entries_1[0].isExist()&&entries_1[1].isExist()) { outputs.addAll(Arrays.asList(entries_1)); - return; + return true; } int[] units3 = {2,2,1}; CompoundEntry[] entries3 = analysisBySplited(units3,input,isFirst); - if(entries3!=null && entries3[0].isExist()&&entries3[1].isExist()&&entries3[2].isExist()) { + if(entries3!=null && entries3[0].isExist()&&entries3[1].isExist()&&entries3[2].isExist()) { outputs.addAll(Arrays.asList(entries3)); - return; + return true; } int[] units4 = {2,1,2}; CompoundEntry[] entries4 = analysisBySplited(units4,input,isFirst); - if(entries4!=null && entries4[0].isExist()&&entries4[1].isExist()&&entries4[2].isExist()) { + if(entries4!=null && entries4[0].isExist()&&entries4[1].isExist()&&entries4[2].isExist()) { outputs.addAll(Arrays.asList(entries4)); - return; + return true; } if(!exactMach&&entries1!=null && (entries1[0].isExist()||entries1[1].isExist())) { outputs.addAll(Arrays.asList(entries1)); - return; + return true; } if(!exactMach&&entries2!=null && (entries2[0].isExist()||entries2[1].isExist())) { outputs.addAll(Arrays.asList(entries2)); - return; + return true; } + boolean is = false; if(!exactMach&&entries3!=null && (entries3[0].isExist()||entries3[1].isExist())) { - outputs.addAll(Arrays.asList(entries3)); - } + outputs.addAll(Arrays.asList(entries3)); + is = true; + } if(!exactMach&&entries4!=null && (entries4[0].isExist()||entries4[2].isExist())) { - outputs.addAll(Arrays.asList(entries4)); - } + outputs.addAll(Arrays.asList(entries4)); + is = true; + } + + return is; } - - private void analyze6Word(String input,List outputs, boolean isFirst) throws MorphException { + + private boolean analyzeLongText(String input,List outputs, boolean isFirst) throws MorphException { - int[] units3 = {2,4}; - CompoundEntry[] entries3 = analysisBySplited(units3,input,isFirst); - if(entries3!=null && entries3[0].isExist()&&entries3[1].isExist()) { - outputs.addAll(Arrays.asList(entries3)); - return; - } + int len = input.length(); - int[] units4 = {4,2}; - CompoundEntry[] entries4 = analysisBySplited(units4,input,isFirst); - if(entries4!=null && entries4[0].isExist()&&entries4[1].isExist()) { - outputs.addAll(Arrays.asList(entries4)); - return; - } + // ignore less than 3 letters or more than 20 letters. + if(len<3 || len>20) return false; + + boolean hasSuffix = DictionaryUtil.existSuffix(input.substring(len-1)); + int pos = caculatePos(input, hasSuffix); + if(pos<1) return false; // fail to search a valid word segment - int[] units2 = {3,3}; - CompoundEntry[] entries2 = analysisBySplited(units2,input,isFirst); - if(entries2!=null && entries2[0].isExist()&&entries2[1].isExist()) { - outputs.addAll(Arrays.asList(entries2)); - return; + if(pos==input.length()) { + if(hasSuffix) { + outputs.add( + new CompoundEntry(input.substring(0,len-1), 0, true,PatternConstants.POS_NOUN)); + outputs.add( + new CompoundEntry(input.substring(len-1), 0, true,PatternConstants.POS_NOUN)); + } else { + outputs.add( + new CompoundEntry(input, 0, true,PatternConstants.POS_NOUN)); + + } + + return true; } - int[] units6 = {3,2,1}; - CompoundEntry[] entries6 = analysisBySplited(units6,input,isFirst); - if(entries6!=null && entries6[0].isExist()&&entries6[1].isExist()) { - outputs.addAll(Arrays.asList(entries6)); - return; - } + int score = 0; + List results = new ArrayList(); + + String prev = input.substring(0,pos); + String rear = input.substring(pos); - int[] units7 = {2,3,1}; - CompoundEntry[] entries7 = analysisBySplited(units7,input,isFirst); - if(entries7!=null && entries7[0].isExist()&&entries7[1].isExist()) { - outputs.addAll(Arrays.asList(entries7)); - return; + boolean pSucess = false; + boolean rSuccess = false; + + WordEntry prvEntry = DictionaryUtil.getAllNoun(prev); + if(prvEntry==null) { + pSucess = analyze(prev, results, false); + } else { + pSucess = true; + if(prvEntry.getFeature(WordEntry.IDX_NOUN)=='2') + results.add(prvEntry.getCompounds()); + else + results.add(new CompoundEntry(prev, 0, true,PatternConstants.POS_NOUN)); } - int[] units1 = {2,2,2}; - CompoundEntry[] entries1 = analysisBySplited(units1,input,isFirst); - if(entries1!=null && entries1[0].isExist()&&entries1[1].isExist()&&entries1[2].isExist()) { - outputs.addAll(Arrays.asList(entries1)); - return; - } - - int[] units5 = {2,1,2,1}; - CompoundEntry[] entries5 = analysisBySplited(units5,input,isFirst); - if(entries5!=null && entries5[0].isExist()&&entries5[1].isExist()&&entries5[2].isExist()&&entries5[3].isExist()) { - outputs.addAll(Arrays.asList(entries5)); - return; + WordEntry rearEntry = DictionaryUtil.getAllNoun(rear); + if(rearEntry==null) { + rSuccess = analyze(rear, results, false); + } else { + rSuccess = true; + if(rearEntry.getFeature(WordEntry.IDX_NOUN)=='2') + results.add(rearEntry.getCompounds()); + else + results.add(new CompoundEntry(rear, 0, true,PatternConstants.POS_NOUN)); } + + if(pSucess&&!rSuccess) { + results.add(new CompoundEntry(rear, 0, false,PatternConstants.POS_NOUN)); + } - if(!exactMach&&entries1!=null && canCompound(entries1,2*score)) { - outputs.addAll(Arrays.asList(entries1)); - return; + if(!pSucess&&rSuccess) { + results.add(new CompoundEntry(prev, 0, false,PatternConstants.POS_NOUN)); } - if(!exactMach&&entries2!=null && (entries2[0].isExist()||entries2[1].isExist())) { - outputs.addAll(Arrays.asList(entries2)); - return; + if(!pSucess&&!rSuccess) { + return false; } - if(!exactMach&&entries3!=null && (entries3[0].isExist()||entries3[1].isExist())) { - outputs.addAll(Arrays.asList(entries3)); - return; - } + outputs.addAll(results); - if(!exactMach&&entries4!=null && (entries4[0].isExist()||entries4[1].isExist())) { - outputs.addAll(Arrays.asList(entries4)); - } - + return true; } - private void analyzeLongText(String input,List outputs, boolean isFirst) throws MorphException { + /** + * calculate the position at which the long input should be divided into two segments. + * @param input the input string + * @return the position + * @throws MorphException throw + */ + private int caculatePos(String input, boolean hasSuffix) throws MorphException { - int pos = input.length()/2; - if(input.length()%2==1) pos++; + int pos = -1; + int len = input.length(); - if(input.length()>20) return; // 20글자 이상의 복합명사는 무시함. - - int score = 0; - List results = new ArrayList(); - boolean hasContain = false; - - for(int i=pos;i>=2;i--) { + int maxlen = 0; + for(int i=len-2;i>=0;i--) { - String prev = input.substring(0,i); - String rear = input.substring(i); + String text = input.substring(i); + String prvText = input.substring(0,i+1); - List candidates = new ArrayList(); + int curmax = maxWord(text, hasSuffix, prvText); - CompoundEntry prevEntry = analyzeSingle(prev); - if(prevEntry.isExist()) { - candidates.add(prevEntry); - } else { - List list = analyze(prev, true); - if(list.size()==0) { - candidates.add(prevEntry); - } else { - candidates.addAll(list); - } + if(curmax>maxlen) { + maxlen = curmax; + if(i==0) pos = curmax; + else pos = i; } + } + + return pos; + } + + /** + * find the max length of a word contained in a input text + * @param text input text + * @param hasSuffix whether the input text is including a suffix character at the end + * @return the max length + * @throws MorphException throw exception + */ + private int maxWord(String text, boolean hasSuffix, String prvText) throws MorphException { + + int maxlen = 0; + boolean existPrv = false; + + // if previous text exist in the dictionary. + if(prvText.length()>=2) + existPrv = (DictionaryUtil.getNoun(prvText.substring(prvText.length()-2))!=null); + if(!existPrv&&prvText.length()>=3) + existPrv = (DictionaryUtil.getNoun(prvText.substring(prvText.length()-3))!=null); + + for(int i=text.length();i>1;i--) { - CompoundEntry e = candidates.get(candidates.size()-1); - if(!hasContain&&containWord(e.getWord(),input,i)) { - i -= e.getWord().length()-1; - hasContain=true; - continue; - } - - CompoundEntry rearEntry = analyzeSingle(rear); - if(rearEntry.isExist()||rear.length()==3) { - candidates.add(rearEntry); - } else { - List list = analyze(rear, false); - - if(list.size()==0) { - if(!e.isExist()) - candidates.set(candidates.size()-1, analyzeSingle(e.getWord()+rearEntry.getWord())); - else - candidates.add(rearEntry); - } else { - if(!e.isExist()) - candidates.set(candidates.size()-1, analyzeSingle(e.getWord()+list.remove(0).getWord())); - candidates.addAll(list); - } - } + String seg = text.substring(0,i); + WordEntry entry = DictionaryUtil.getWordExceptVerb(seg); + if(entry==null) continue; - int eval = evaluation(candidates); - - if(results==null || scorecandidates.size()) ) { - results = candidates; - score = eval; - } - - if(eval==110) break; - } - - outputs.addAll(results); + int len = 0; + if(i==text.length()-1 && hasSuffix && !existPrv) + len = i+1; + else + len = i; + + if(len>maxlen) maxlen = len; + } + return maxlen; } private int evaluation(List candidates) { @@ -363,119 +389,7 @@ } -// private void analyzeLongText(String input,List outputs, boolean isFirst) throws MorphException { -// -// if(exactMach) return; -// -// String[] words = splitByLongestWord(input); -// -// if(words==null) return; -// -// if(isFirst&&words[0]!=null&&words[0].length()==1&&!DictionaryUtil.existPrefix(words[0])) return; -// if(words[2]!=null&&words[2].length()==1&&!DictionaryUtil.existSuffix(words[2])) return; -// -// CompoundEntry e1 = null; -// List list1 = null; -// boolean success1 = false; -// if(words[0]!=null) { -// e1 = analyzeSingle(words[0]); -// if(!e1.isExist()) list1 = analyze(words[0],false); -// } -// -// CompoundEntry e2 = null; -// List list2 = null; -// boolean success2 = false; -// if(words[2]!=null) { -// e2 = analyzeSingle(words[2]); -// if(!e2.isExist()) list2 = analyze(words[2],false); -// } -// -// if(list1!=null&&list1.size()>0) { -// outputs.addAll(list1); -// }else if(e1!=null){ -// outputs.add(e1); -// } -// -// outputs.add(analyzeSingle(words[1])); -// -// if(list2!=null&&list2.size()>0) { -// outputs.addAll(list2); -// }else if(e2!=null){ -// outputs.add(e2); -// } -// } - -// private String[] splitByLongestWord(String input) throws MorphException { -// -// int pos = 0; -// String lngWord = ""; -// int last = input.length()-1; -// boolean ftry = true; -// -// for(int i=0;i analyze(String input, int pos) throws MorphException { @@ -248,10 +248,10 @@ * 용언 + '음/기' + 조사 (PTN_VMJ) * 용언 + '아/어' + 보조용언 + '음/기' + 조사(PTN_VMXMJ) * - * @param stem - * @param end - * @param candidates - * @throws MorphException + * @param stem stem + * @param end end + * @param candidates candidates + * @throws MorphException exception */ public void analysisWithJosa(String stem, String end, List candidates) throws MorphException { @@ -296,10 +296,10 @@ * 5. 도움이다 : 용언 + '음/기' + '이' + 어미 (PTN_VMCM)
* 6. 도와주다 : 용언 + '아/어' + 보조용언 + 어미 (PTN_VMXM)
* - * @param stem - * @param end - * @param candidates - * @throws CloneNotSupportedException + * @param stem stem + * @param end end + * @param candidates candidates + * @throws MorphException exception */ public void analysisWithEomi(String stem, String end, List candidates) throws MorphException { @@ -373,13 +373,13 @@ * 복합명사인지 조사하고, 복합명사이면 단위명사들을 찾는다. * 복합명사인지 여부는 단위명사가 모두 사전에 있는지 여부로 판단한다. * 단위명사는 2글자 이상 단어에서만 찾는다. - * @throws MorphException + * @throws MorphException exception */ public boolean confirmCNoun(AnalysisOutput o) throws MorphException { if(o.getStem().length()<3) return false; - WordEntry cnoun = DictionaryUtil.getCNoun(o.getStem()); + WordEntry cnoun = DictionaryUtil.getAllNoun(o.getStem()); if(cnoun!=null && cnoun.getFeature(WordEntry.IDX_NOUN)=='2') { o.addCNoun(cnoun.getCompounds()); o.setScore(AnalysisOutput.SCORE_CORRECT); Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/WordEntry.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/WordEntry.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/WordEntry.java (�۾� �纻) @@ -18,6 +18,9 @@ */ import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; public class WordEntry { @@ -43,7 +46,7 @@ */ private char[] features; - private List compounds = new ArrayList(); + private List compounds = Collections.EMPTY_LIST; public WordEntry() { Index: lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/WordSpaceAnalyzer.java =================================================================== --- lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/WordSpaceAnalyzer.java (������ 1521434) +++ lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/morph/WordSpaceAnalyzer.java (�۾� �纻) @@ -18,6 +18,7 @@ */ import java.util.ArrayList; + import java.util.Collections; import java.util.HashMap; import java.util.Iterator; @@ -28,6 +29,14 @@ import org.apache.lucene.analysis.ko.utils.MorphUtil; import org.apache.lucene.analysis.ko.utils.SyllableUtil; import org.apache.lucene.analysis.ko.utils.VerbUtil; +import org.apache.lucene.analysis.ko.morph.AnalysisOutput; +import org.apache.lucene.analysis.ko.morph.CompoundEntry; +import org.apache.lucene.analysis.ko.morph.MorphAnalyzer; +import org.apache.lucene.analysis.ko.morph.MorphException; +import org.apache.lucene.analysis.ko.morph.PatternConstants; +import org.apache.lucene.analysis.ko.morph.WSOuputComparator; +import org.apache.lucene.analysis.ko.morph.WSOutput; +import org.apache.lucene.analysis.ko.morph.WordEntry; public class WordSpaceAnalyzer { @@ -38,9 +47,9 @@ morphAnal.setExactCompound(false); } - public List analyze(String input) throws MorphException { + public List analyze(String input) throws MorphException { - List stack = new ArrayList(); + List stack = new ArrayList(); WSOutput output = new WSOutput(); @@ -48,34 +57,34 @@ int sgCount = -9; - Map fCounter = new HashMap(); + Map fCounter = new HashMap(); - for(int i=0;i iter = DictionaryUtil.findWithPrefix(prefix); + Iterator iter = DictionaryUtil.findWithPrefix(prefix); - List candidates = new ArrayList(); + List candidates = new ArrayList(); WordEntry entry = null; - if(input.charAt(i)=='있' || input.charAt(i)=='없' || input.charAt(i)=='앞') { + if(input.charAt(i)=='\uC788' || input.charAt(i)=='\uC5C6' || input.charAt(i)=='\uC55E') { addSingleWord(input.substring(wStart,i), candidates); - // 다음 음절이 2음절 이상 단어에 포함되어 있고 마지막 음절이 아니라면 띄워쓰기 위치가 아닐 가능성이 크다. - // 부사, 관형사, 감탄사 등 단일어일 가능성인 경우 띄워쓰기가 가능하나, - // 이 경우는 다음 음절을 조사하여 + // 다음 음절이 2음절 이상 단어에 포함되어 있고 마지막 음절이 아니라면 띄워쓰기 위치가 아닐 가능성이 크다. + // 부사, 관형사, 감탄사 등 단일어일 가능성인 경우 띄워쓰기가 가능하나, + // 이 경우는 다음 음절을 조사하여 } else if(i!= input.length()-1 && iter.hasNext()) { // 아무짓도 하지 않음. sgCount = i; } else if(!iter.hasNext() && - (entry=DictionaryUtil.getBusa(input.substring(wStart,i+1)))!=null) { + (entry=DictionaryUtil.getBusa(input.substring(wStart,i+1)))!=null) { candidates.add(buildSingleOutput(entry)); - // 현 음절이 조사나 어미가 시작되는 음절일 가능성이 있다면... + // 현 음절이 조사나 어미가 시작되는 음절일 가능성이 있다면... } else if(f[SyllableUtil.IDX_EOGAN]=='1'||f[SyllableUtil.IDX_JOSA1]=='1'){ if(f[SyllableUtil.IDX_JOSA1]=='1') candidates.addAll(anlysisWithJosa(input.substring(wStart), i-wStart)); @@ -84,7 +93,7 @@ candidates.addAll(anlysisWithEomi(input.substring(wStart), i-wStart)); } - // 호보가 될 가능성이 높은 순으로 정렬한다. + // 후보가 될 가능성이 높은 순으로 정렬한다. Collections.sort(candidates, new WSOuputComparator()); // 길이가 가장 긴 단어를 단일어로 추가한다. @@ -93,7 +102,7 @@ // 분석에 실패한 단어를 analysisCompouns(candidates); - // 호보가 될 가능성이 높은 순으로 정렬한다. + // 후보가 될 가능성이 높은 순으로 정렬한다. Collections.sort(candidates, new WSOuputComparator()); int reseult = validationAndAppend(output, candidates, input); @@ -106,7 +115,7 @@ else index = index + 1; i = index; wStart = output.getLastEnd(); - fCounter.put(output.getLastEnd(), index); + fCounter.put(output.getLastEnd(), index); } } @@ -124,27 +133,42 @@ morphAnal.confirmCNoun(o); } - + return output.getPhrases(); } /** + * calculate the score which is the worst score of the derived word scores + * @param list input + * @return calculated score + */ + public static int getOutputScore(List list) { + + int score = 100; + for(AnalysisOutput o : list) { + if(o.getScore() anlysisWithJosa(String snipt, int js) throws MorphException { + private List anlysisWithJosa(String snippet, int js) throws MorphException { - List candidates = new ArrayList(); + List candidates = new ArrayList(); if(js<1) return candidates; - int jend = findJosaEnd(snipt, js); + int jend = findJosaEnd(snippet, js); if(jend==-1) return candidates; // 타당한 조사가 아니라면... - String input = snipt.substring(0,jend); + String input = snippet.substring(0,jend); boolean josaFlag = true; @@ -157,7 +181,7 @@ char[] feature = SyllableUtil.getFeature(josa.charAt(0)); if(josaFlag&&feature[SyllableUtil.IDX_JOSA1]=='1') { - morphAnal.analysisWithJosa(stem,josa,candidates); + morphAnal.analysisWithJosa(stem,josa,candidates); } if(josaFlag&&feature[SyllableUtil.IDX_JOSA2]=='0') josaFlag = false; @@ -168,7 +192,7 @@ if(input.length()==1) { AnalysisOutput o =new AnalysisOutput(input,null,null,PatternConstants.POS_NOUN, - PatternConstants.PTN_N,AnalysisOutput.SCORE_ANALYSIS); + PatternConstants.PTN_N,AnalysisOutput.SCORE_ANALYSIS); candidates.add(o); } @@ -180,37 +204,37 @@ /** * 조사의 첫음절부터 조사의 2음절이상에 사용될 수 있는 음절을 조사하여 * 가장 큰 조사를 찾는다. - * @param snipt - * @param jstart - * @return jend - * @throws MorphException + * @param snippet snippet + * @param jstart josa start position + * @return position + * @throws MorphException throw exception */ - private int findJosaEnd(String snipt, int jstart) throws MorphException { + private int findJosaEnd(String snippet, int jstart) throws MorphException { int jend = jstart; // [것을]이 명사를 이루는 경우는 없다. - if(snipt.charAt(jstart-1)=='것'&&(snipt.charAt(jstart)=='을')) return jstart+1; + if(snippet.charAt(jstart-1)=='것'&&(snippet.charAt(jstart)=='을')) return jstart+1; - if(snipt.length()>jstart+2&&snipt.charAt(jstart+1)=='스') { // 사랑스러운, 자랑스러운 같은 경우르 처리함. - char[] chrs = MorphUtil.decompose(snipt.charAt(jstart+2)); + if(snippet.length()>jstart+2&&snippet.charAt(jstart+1)=='스') { // 사랑스러운, 자랑스러운 같은 경우르 처리함. + char[] chrs = MorphUtil.decompose(snippet.charAt(jstart+2)); if(chrs.length>=2&&chrs[0]=='ㄹ'&&chrs[1]=='ㅓ') return -1; } // 조사의 2음절로 사용될 수 마지막 음절을 찾는다. - for(int i=jstart+1;i=jstart;i--) { - String str = snipt.substring(jstart,i+1); - if(DictionaryUtil.existJosa(str) && !findNounWithinStr(snipt,i,i+2) && - !isNounPart(snipt,jstart)) { + String str = snippet.substring(jstart,i+1); + if(DictionaryUtil.existJosa(str) && !findNounWithinStr(snippet,i,i+2) && + !isNounPart(snippet,jstart)) { jend = i; hasJosa = true; break; @@ -225,8 +249,8 @@ /** * 향후 계산이나 원 문자열을 보여주기 위해 source string 을 저장한다. - * @param source - * @param candidates + * @param source input text + * @param candidates candidates */ private void fillSourceString(String source, List candidates) { @@ -238,7 +262,7 @@ /** * 목록의 1번지가 가장 큰 길이를 가진다. - * @param candidates + * @param candidates candidates */ private void appendSingleWord(List candidates) throws MorphException { @@ -258,11 +282,11 @@ if(source.length()<5) return; AnalysisOutput o =new AnalysisOutput(source,null,null,PatternConstants.POS_NOUN, - PatternConstants.PTN_N,AnalysisOutput.SCORE_ANALYSIS); + PatternConstants.PTN_N,AnalysisOutput.SCORE_ANALYSIS); o.setSource(source); morphAnal.confirmCNoun(o); if(o.getScore()==AnalysisOutput.SCORE_CORRECT) candidates.add(o); - } + } } private void addSingleWord(String source, List candidates) throws MorphException { @@ -273,7 +297,7 @@ candidates.add(buildSingleOutput(entry)); } else { AnalysisOutput o =new AnalysisOutput(source,null,null,PatternConstants.POS_NOUN, - PatternConstants.PTN_N,AnalysisOutput.SCORE_ANALYSIS); + PatternConstants.PTN_N,AnalysisOutput.SCORE_ANALYSIS); o.setSource(source); morphAnal.confirmCNoun(o); candidates.add(o); @@ -283,16 +307,16 @@ } - private List anlysisWithEomi(String snipt, int estart) throws MorphException { + private List anlysisWithEomi(String snipt, int estart) throws MorphException { - List candidates = new ArrayList(); + List candidates = new ArrayList(); - int eend = findEomiEnd(snipt,estart); + int eend = findEomiEnd(snipt,estart); // 동사앞에 명사분리 int vstart = 0; for(int i=estart-1;i>=0;i--) { - Iterator iter = DictionaryUtil.findWithPrefix(snipt.substring(i,estart)); + Iterator iter = DictionaryUtil.findWithPrefix(snipt.substring(i,estart)); if(iter.hasNext()) vstart=i; else break; } @@ -306,8 +330,8 @@ while(true) { // ㄹ,ㅁ,ㄴ 이기때문에 어미위치를 뒤로 잡았는데, 용언+어미의 형태가 아니라면.. 어구 끝을 하나 줄인다. String input = snipt.substring(vstart,eend); - anlysisWithEomiDetail(input, candidates); - if(candidates.size()==0) break; + anlysisWithEomiDetail(input, candidates); + if(candidates.size()==0) break; if(("ㄹ".equals(candidates.get(0).getEomi()) || "ㅁ".equals(candidates.get(0).getEomi()) || "ㄴ".equals(candidates.get(0).getEomi())) && @@ -355,7 +379,7 @@ } private void anlysisWithEomiDetail(String input, List candidates ) - throws MorphException { + throws MorphException { boolean eomiFlag = true; @@ -373,11 +397,11 @@ String stem = input.substring(0,i); String eomi = input.substring(i); - feature = SyllableUtil.getFeature(eomi.charAt(0)); + feature = SyllableUtil.getFeature(eomi.charAt(0)); if(eomiFlag) { morphAnal.analysisWithEomi(stem,eomi,candidates); - } + } if(eomiFlag&&feature[SyllableUtil.IDX_EOMI2]=='0') eomiFlag = false; @@ -389,33 +413,36 @@ /** * 어미의 첫음절부터 어미의 1음절이상에 사용될 수 있는 음절을 조사하여 * 가장 큰 조사를 찾는다. + * @param snippet snippet + * @return start position + * @throws MorphException throw exception */ - private int findEomiEnd(String snipt, int estart) throws MorphException { + private int findEomiEnd(String snippet, int estart) throws MorphException { int jend = 0; String tail = null; - char[] chr = MorphUtil.decompose(snipt.charAt(estart)); + char[] chr = MorphUtil.decompose(snippet.charAt(estart)); if(chr.length==3 && (chr[2]=='ㄴ')) { - tail = '은'+snipt.substring(estart+1); + tail = '은'+snippet.substring(estart+1); }else if(chr.length==3 && (chr[2]=='ㄹ')) { - tail = '을'+snipt.substring(estart+1); + tail = '을'+snippet.substring(estart+1); }else if(chr.length==3 && (chr[2]=='ㅂ')) { - tail = '습'+snipt.substring(estart+1); + tail = '습'+snippet.substring(estart+1); }else { - tail = snipt.substring(estart); - } + tail = snippet.substring(estart); + } // 조사의 2음절로 사용될 수 마지막 음절을 찾는다. int start = 0; for(int i=1;i0;i--) { // 찾을 수 없더라도 1음절은 반드시 반환해야 한다. - String str = tail.substring(0,i+1); + String str = tail.substring(0,i+1); char[] chrs = MorphUtil.decompose(tail.charAt(i)); if(DictionaryUtil.existEomi(str) || (i<2&&chrs.length==3&&(chrs[2]=='ㄹ'||chrs[2]=='ㅁ'||chrs[2]=='ㄴ'))) { // ㅁ,ㄹ,ㄴ이 연속된 용언은 없다, 사전을 보고 확인을 해보자 @@ -428,11 +455,16 @@ } - /** - * validation 후 후보가 될 가능성이 높은 최상위 것을 결과에 추가한다. - */ +/** + * validation 후 후보가 될 가능성이 높은 최상위 것을 결과에 추가한다. + * @param output output + * @param candidates candates + * @param input input + * @return valid position + * @throws MorphException throw exception + */ private int validationAndAppend(WSOutput output, List candidates, String input) - throws MorphException { + throws MorphException { if(candidates.size()==0) return 0; @@ -445,10 +477,10 @@ String pjend = po!=null&&po.getStem().length()>0 ? po.getSource().substring(po.getStem().length()) : null; char ja = 'x'; // 임의의 문자 - if(po!=null&&(po.getPatn()==PatternConstants.PTN_VM||po.getPatn()==PatternConstants.PTN_VMCM||po.getPatn()==PatternConstants.PTN_VMXM)) { + if(po!=null&&(po.getPatn()==PatternConstants.PTN_VM||po.getPatn()==PatternConstants.PTN_VMCM||po.getPatn()==PatternConstants.PTN_VMXM)) { char[] chs = MorphUtil.decompose(po.getEomi().charAt(po.getEomi().length()-1)); if(chs.length==3) ja=chs[2]; - else if(chs.length==1) ja=chs[0]; + else if(chs.length==1) ja=chs[0]; } int nEnd = output.getLastEnd()+o.getSource().length(); @@ -466,14 +498,14 @@ } //============================================= - if(o.getPos()==PatternConstants.POS_NOUN && MorphUtil.hasVerbOnly(o.getStem())) { + if(o.getPos()==PatternConstants.POS_NOUN && MorphUtil.hasVerbOnly(o.getStem())) { output.removeLast(); return -1; }else if(nEnd2) { - if(!(correct&&o.getPatn()==PatternConstants.PTN_N)) morphAnal.confirmCNoun(o); - if(o.getScore()==AnalysisOutput.SCORE_CORRECT) changed=true; + if(!(correct&&o.getPatn()==PatternConstants.PTN_N)) morphAnal.confirmCNoun(o); + if(o.getScore()==AnalysisOutput.SCORE_CORRECT) changed=true; } } } - + /** - * 문자열에 - * @param str 분석하고자 하는 전체 문자열 + * + * @param str 분석하고자 하는 전체 문자열 * @param ws 문자열에서 명사를 찾는 시작위치 * @param es 문자열에서 명사를 찾는 끝 위치 - * @return found noun - * @throws MorphException + * @return if founded + * @throws MorphException throw exception */ private boolean findNounWithinStr(String str, int ws, int es) throws MorphException { @@ -545,7 +578,7 @@ for(int i=es;i=0;i--) { if(DictionaryUtil.getWordExceptVerb(str.substring(i,jstart+1))!=null) return true; + } + return false; + } private void printCandidate(WSOutput output) { @@ -572,5 +608,6 @@ System.out.print(o.toString()+"("+o.getScore()+")| "); } System.out.println("<=="); - } + + } } Index: lucene/analysis/arirang/src/resources/org/apache/lucene/analysis/ko/dic/total.dic =================================================================== --- lucene/analysis/arirang/src/resources/org/apache/lucene/analysis/ko/dic/total.dic (������ 1521434) +++ lucene/analysis/arirang/src/resources/org/apache/lucene/analysis/ko/dic/total.dic (�۾� �纻) @@ -21,15 +21,10 @@ 가각본,100000000X 가감,100110000X 가감산,100110000X -가건물,100000000X 가게,100000000X -가게문,100000000X -가게채,100000000X 가겟방,100000000X 가겟집,100000000X 가격,100100000X -가격대,100000000X -가격표,100000000X 가결,100110000X 가결의,100110000X 가경,100100000X @@ -196,8 +191,6 @@ 가매지,010000000X 가맹,100110000X 가면,100000000X -가면극,100000000X -가면무,100000000X 가멸,010000000X 가명,100000000X 가묘,100000000X @@ -240,7 +233,7 @@ 가살스럽,010000000B 가상,10111000X 가상극,100000000X -가석방,10111000X +가석방,10011000X 가선,100100000X 가설,100110000X 가설적,100000000X @@ -262,7 +255,7 @@ 가슴아프,010000000X 가슴앓이,100100000X 가슴지느러미,100000000X -가슴츠레하,001100000X +가슴츠레하,010000000X 가슴통,100000000X 가슴팍,100000000X 가슴패기,100000000X @@ -329,8 +322,6 @@ 가일,100000000X 가일층,101100000X 가입,100110000X -가입비,100000000X -가입자,100000000X 가자,100110000X 가자미,100000000X 가작,100110000X @@ -342,7 +333,6 @@ 가절,100110000X 가점,100110000X 가정,100110000X -가정법원,100000000X 가정부,100000000X 가제,100110000X 가제본,100110000X @@ -352,12 +342,8 @@ 가조기,100000000X 가조인,100110000X 가족,100000000X -가족용,100000000X -가족적,100000000X 가주,100000000X -가주소,100000000X 가죽,100000000X -가죽신,100000000X 가중,100110000X 가중치,100000000X 가지,110100000X @@ -528,7 +514,7 @@ 각항,100000000X 각혈,100100000X 각형,100000000X -간,101100000X +간,100100000X 간각,100100000X 간간,100100000X 간간이,001000000X @@ -616,7 +602,6 @@ 간언,100100000X 간여,100100000X 간염,100000000X -간염보균자,100000000X 간요,101100000X 간웅,100000000X 간원,100100000X @@ -778,7 +763,6 @@ 감당,100100000X 감도,100110000X 감독,100110000X -감독관청,100000000X 감독원,100000000X 감돌,010000000X 감돌아들,100000000X @@ -840,7 +824,7 @@ 감압,100110000X 감액,100110000X 감언,100000000X -감언이설,100000000X +감언이설,100100000X 감염,100110000X 감영,100000000X 감오,100100000X @@ -1017,8 +1001,6 @@ 강우,100100000X 강우량,100000000X 강의,100100000X -강의실,100000000X -강의평가서,100000000X 강인,100100000X 강자,100110000X 강장,100100000X @@ -1062,7 +1044,6 @@ 갖가지,100000000X 갖다주,010000000X 갖은,001000000X -갖저고리,100000000X 갖추,011000000X 갖추갖추,001000000X 같,010000000X @@ -1077,89 +1058,59 @@ 개간,100110000X 개강,100100000X 개개,100000000X -개개인,100000000X 개경,100000000X -개고기,100000000X -개고사리,100000000X 개골산,100000000X 개과,100100000X 개과천선,100100000X 개관,100110000X -개관적,100000000X 개괄,100110000X 개교,100110000X 개구,100100000X 개구리,100000000X -개구리때,100000000X -개구리밥,100000000X 개구멍,100000000X 개구장이,100000000X 개구쟁이,100000000X 개국,100110000X 개굴개굴,100000000X 개그,100100000X -개그맨,100000000X 개근,100100000X 개금불사,100100000X -개기월식,100000000X -개기일식,100000000X 개나리,100000000X 개나발,100000000X 개념,100000000X -개념화,100110000X 개다리상제,100000000X 개다리소반,100000000X 개다리출신,100000000X 개떡같,010000000X -개떡수제비,100000000X 개똥,100000000X -개똥벌레,100000000X -개똥지빠귀,100000000X 개략,100100000X 개량,100110000X 개량복,100000000X 개런티,100000000X 개론,100100000X 개막,100110000X -개막식,100000000X 개망나니,100000000X -개망신,100100000X -개머루덩굴,100000000X 개머리쇠,100000000X 개명,100110000X 개문,100110000X 개문납적,100100000X 개미,100000000X -개미굴,100000000X 개발,100110000X -개발도상국,100000000X -개발자,100000000X -개밥도둑,100000000X 개방,100110000X -개방적,100000000X -개방화,100110000X 개벽,100100000X 개변,100110000X 개별,100100000X -개별화,100110000X -개별화물,100000000X 개복,100110000X 개봉,100110000X -개봉관,100000000X -개불상놈,100000000X 개비,100110000X 개사,100110000X -개사냥,100000000X 개산,100110000X 개상반,100000000X 개새끼,100000000X 개서,100110000X 개선,100110000X -개선문,100000000X -개선안,100000000X 개설,100110000X 개성,100100000X -개성적,101000000X 개소,100110000X 개수,100110000X 개수대,100110000X @@ -1176,19 +1127,14 @@ 개업,100100000X 개역,100110000X 개연,100100000X -개연성,100000000X 개요,100000000X 개운,100110000X 개운찮,010000000X 개울,100000000X -개울가,100000000X -개울물,100000000X 개원,100110000X 개으르,010000000L 개의,100100000X 개인,100110000X -개인용,100000000X -개인전,100000000X 개입,100110000X 개자리두둑,100000000X 개작,100110000X @@ -1197,32 +1143,23 @@ 개전,100110000X 개점,100110000X 개정,100110000X -개정령,100000000X -개정안,100000000X -개정판,100000000X 개제,100110000X 개조,100110000X 개종,100110000X -개죽음,100100000X 개중,100000000X 개지,100100000X 개진,100110000X 개집,100000000X 개찬,100110000X 개찰,100100000X -개찰구,100000000X 개창,100100000X 개척,100110000X -개척자,100000000X -개척지,100000000X 개천,100000000X -개천절,100000000X 개체,100100000X 개최,1001`0000X 개축,100110000X 개칭,100110000X 개코같,010000000X -개코망신,100100000X 개키,010000000X 개탄,100100000X 개토,100100000X @@ -1236,13 +1173,7 @@ 개학,100100000X 개항,100110000X 개헌,100110000X -개헌안,100000000X -개헤엄,100000000X 개혁,100110000X -개혁법안,100000000X -개혁안,100000000X -개혁자,100000000X -개혁파,100000000X 개화,100110000X 개황,100100000X 개회,100110000X @@ -1251,11 +1182,7 @@ 객거,100100000X 객고,100100000X 객공,100000000X -객공잡이,100000000X 객관,100000000X -객관성,100000000X -객관적,100000000X -객관화,100110000X 객귀,100000000X 객기,100000000X 객기부리,010000000X @@ -1279,7 +1206,6 @@ 객정,100000000X 객주,100000000X 객지,100000000X -객지살이,100100000X 객쩍,010000000X 객차,100000000X 객체,100000000X @@ -1291,11 +1217,8 @@ 객회,100000000X 갤러리,100000000X 갭,100000000X -갯가,100000000X -갯마을,100000000X -갯바위,100000000X +갯가,100000000 갯발,100000000X -갯버들,100000000X 갯벌,100000000X 갱,100000000X 갱내,100000000X @@ -1313,7 +1236,7 @@ 갱지,100000000X 갸륵,100100000X 갸름,100100000X -갸우뚱,100100000X +갸우뚱하,010000000X 갸우뚱거리,010000000X 갸우뚱대,010000000X 갸웃,100100000X @@ -1367,16 +1290,11 @@ 거들먹거리,010000000X 거들먹대,010000000X 거들먹이,010000000X -거들치마,100000000X 거듭,001110000X 거듭나,010000000X -거듭제곱,100100000X 거뜬,100100000X 거라,001000000X 거래,100110000X -거래량,100000000X -거래소,100000000X -거래처,100000000X 거량,100100000X 거례,100100000X 거론,100110000X @@ -1386,10 +1304,8 @@ 거르,010000000L 거름,100000000X 거리,110000000X -거리감,100000000X 거리끼,010000000X 거리낌,100000000X -거리응원단,100000000X 거마,100000000X 거마비,100000000X 거만,100100000X @@ -1407,24 +1323,17 @@ 거무죽죽,001100000X 거무튀튀,001100000X 거문고,100000000X -거문고자리유성군,100000000X 거물,100000000X 거뭇,100100000X 거뭇거뭇,001100000X 거미,100000000X -거미줄,100000000X 거볍,010000000B 거봉,100000000X 거봐,001000000X 거봐라,001000000X 거부,100110000X -거부감,100000000X -거부권,100000000X 거북,100100000X -거북살,100000000X -거북상,100000000X 거북선,100000000X -거북이,100000000X 거분하,010000000X 거불거리,010000000X 거사,100100000X @@ -1439,7 +1348,6 @@ 거스러미,100000000X 거스르,010000000L 거스름,100000000X -거스름돈,100000000X 거슬러올라가,0100000000X 거슬리,0100000000X 거슴츠레,001100000X @@ -1462,29 +1370,23 @@ 거장,100000000X 거저,101000000X 거저리,100000000X -거저먹다,010000000X +거저먹,010000000X 거적,100000000X 거절,100110000X 거점,100000000X 거제,100100000X 거조,100000000X 거족,100000000X -거족적,101000000X 거좌,100100000X 거죄,100000000X 거주,100110000X -거주지,100000000X 거죽,100000000X 거중,100100000X 거중기,100000000X 거즈,100000000X 거증,100110000X 거지,100100000X -거지반,101000000X 거짓,100010000X -거짓말,100100000X -거짓말쟁이,100000000X -거짓부렁,100000000X 거찰,100000000X 거참,001000000X 거창,100100000X @@ -1514,19 +1416,14 @@ 거하,010000000X 거행,100110000X 걱정,100110000X -걱정거리,100000000X -걱정꾸러기,100000000X 건,100000000X -건가래질,100000000X 건각,100000000X 건갈이,100100000X 건강,100100000X -건강말,100000000X 건건하,010000000X 건고,100100000X 건곤,100000000X 건국,100110000X -건국유공자,100000000X 건군,100100000X 건너,010000000X 건너가,010000000X @@ -1547,7 +1444,6 @@ 건네받,010000000X 건네주,010000000X 건달,100000000X -건달패,100000000X 건더기,100000000X 건드리,010000000X 건들거리,010000000X @@ -1566,21 +1462,16 @@ 건배,100100000X 건사,100110000X 건설,100110000X -건설부,100000000X -건설업,100000000X 건성,100000000X 건성건성,001000000X 건수,100000000X 건습,100000000X -건습구습도계,100000000X 건승,100100000X 건식,100100000X 건실,100100000X 건아,100000000X 건어,100000000X -건어물,100000000X 건의,100110000X -건의서,100000000X 건장,100100000X 건재,100100000X 건전,100100000X @@ -1588,21 +1479,15 @@ 건져내,010000000X 건져올리,010000000X 건조,100110000X -건조기,100000000X 건지,010000000X 건책,100100000X 건천,100000000X 건초,100000000X 건축,100110000X -건축가,100000000X -건축물,100000000X -건축사,100000000X -건축업,100000000X 건치,100000000X 건투,100100000X 건판,100000000X 건평,100000000X -건포도,100000000X 건학,100110000X 걷,010000000D 걷어내,010000000X @@ -1673,19 +1558,14 @@ 검누르,010000000R 검댕,100000000X 검도,100100000X -검도복,100000000X 검둥이,100000000X 검문,100100000X -검문소,100000000X -검바늘골,100000000X 검박,100100000X -검버섯,100000000X 검불,100000000X 검불덤불,001000000X 검붉,010000000X 검뿌옇,010000000H 검사,100110000X -검사장,100000000X 검산,100100000X 검색,100110000X 검소,100100000X @@ -1712,7 +1592,6 @@ 검지,100100000X 검진,100100000X 검찰,100110000X -검찰청사,100000000X 검출,100110000X 검침,100100000X 검토,100110000X @@ -1756,8 +1635,6 @@ 겉핥,010000000X 겉흙,100000000X 게,001000000X -게감정,100000000X -게거품,100000000X 게걸,100000000X 게걸거리,010000000X 게구이,100000000X @@ -1771,14 +1648,10 @@ 게슴츠레,001100000X 게시,100110000X 게시리,001000000X -게시물,100000000X -게시판,100000000X 게양,100110000X 게우,010000000X 게으르,010000000L 게으름,100000000X -게으름뱅이,100000000X -게으름피우,010000000X 게을러빠지,010000000X 게을러지,010000000X 게을러터지,010000000X @@ -1804,8 +1677,6 @@ 겨우내,001000000X 겨우살이,100100000X 겨울,100000000X -겨울잠,100000000X -겨울철,100000000X 겨워하,010000000X 겨자,100000000X 격,100100000X @@ -1817,7 +1688,6 @@ 격랑,100000000X 격려,100110000X 격렬,100100000X -격렬히,001000000X 격례,100000000X 격론,100100000X 격류,100000000X @@ -1828,7 +1698,6 @@ 격물,100100000X 격발,100110000X 격변,100100000X -격변화,100110000X 격분,100110000X 격상,100110000X 격세,100100000X @@ -1837,7 +1706,7 @@ 격앙,100110000X 격양가,100000000X 격언,100000000X -격음화현상,100000000X +격음화,100000000X 격의,100000000X 격일,100100000X 격자,100100000X @@ -1877,7 +1746,6 @@ 견본,100000000X 견사,100000000X 견습,100100000X -견습공,100000000X 견식,100000000X 견실,100110000X 견우성,100000000X @@ -1915,29 +1783,22 @@ 결루,100110000X 결리,010000000X 결막,100000000X -결막염,100000000X 결말,100000000X 결명자,100000000X 결박,100110000X 결백,100100000X 결벽,100100000X -결벽증,100000000X 결별,100100000X 결부,100110000X 결빙,100110000X 결사,100100000X -결사적,100000000X 결산,100110000X -결산표,100000000X 결석,100100000X -결석계,100100000X 결선,100100000X 결성,100110000X 결속,100110000X 결손,100000000X 결승,100100000X -결승선,100000000X -결승전,100000000X 결시,100100000X 결식,100100000X 결신,100100000X @@ -1949,8 +1810,6 @@ 결연,100110000X 결원,100110000X 결의,100110000X -결의문,100000000X -결의안,100000000X 결장,100100000X 결재,100110000X 결전,100100000X @@ -1971,7 +1830,6 @@ 결핵,100000000X 결행,100110000X 결혼,100100000X -결혼식,100100000X 겸,100100000X 겸덕,100000000X 겸무,100100000X @@ -1990,17 +1848,14 @@ 겸찰,100100000X 겸하,010000000X 겹,110000000B -겹간통,100000000X 겹겹,100000000X 겹겹이,001000000X 겹그림씨,100000000X 겹받침,100000000X -겹사돈,100000000X 겹쳐지,010000000X 겹치,010000000X 경,100100000X 경각,100100000X -경각심,100000000X 경간,100100000X 경감,100110000X 경개,100100000X @@ -2008,28 +1863,20 @@ 경거망동,100100000X 경건,100100000X 경계,100100000X -경계선,100000000X -경계심,100000000X -경계적,100000000X 경고,100100000X 경골,100000000X -경공업,100000000X 경과,100110000X 경관,100000000X 경구,100000000X 경국,100100000X -경금속,100000000X 경급,100000000X 경기,100100000X -경기관총,100100000X -경기장,100100000X 경내,100000000X 경년,100100000X 경단,100000000X 경당,100000000X 경대,100100000X 경도,100110000X -경동맥,100000000X 경락,100100000X 경랍,100000000X 경량,100000000X @@ -2037,18 +1884,14 @@ 경련,100100000X 경례,100100000X 경로,100100000X -경로당,100000000X -경로석,100000000X 경륜,100100000X 경리,100100000X 경마,100100000X -경마장,100000000X 경망,100100000X 경매,100110000X 경멸,100100000X 경모,100100000X 경무,100000000X -경무장,100100000X 경문,100000000X 경물,100000000X 경미,100100000X @@ -2056,20 +1899,13 @@ 경방,100100000X 경배,100110000X 경범,100000000X -경범죄,100000000X 경보,100000000X 경복,100110000X 경부,100100000X 경분,100100000X 경비,100100000X -경비대,100100000X -경비원,100100000X -경비정,100100000X -경비행기,100000000X 경사,100100000X -경사도,100100000X 경사롭,010000000B -경사면,100000000X 경사지,010000000B 경상,100100000X 경색,100110000X @@ -2078,7 +1914,6 @@ 경성,100100000X 경세,100100000X 경솔,100100000X -경솔함,100000000X 경쇠,100000000X 경수,100100000X 경수로,100000000X @@ -2091,10 +1926,6 @@ 경연,100100000X 경염,100100000X 경영,100110000X -경영인,100000000X -경영자,100000000X -경영주,100000000X -경영진,100000000X 경외,100110000X 경우,100000000X 경운,100100000X @@ -2103,32 +1934,18 @@ 경원시,100100000X 경위,100100000X 경유,100110000X -경음악,100000000X -경음화,100110000X 경의,100100000X 경이,100100000X 경이롭,010000000B 경이적,100000000X 경작,100110000X -경작지,100000000X 경장,100100000X 경쟁,100100000X -경쟁력,100000000X -경쟁률,100000000X -경쟁사,100000000X -경쟁심,100000000X -경쟁자,100000000X 경적,100100000X 경적필패,100000000X 경전,100100000X 경정,100110000X 경제,100110000X -경제권,100000000X -경제기획원,100000000X -경제력,100000000X -경제인,100000000X -경제적,101000000X -경제학,100000000X 경조,100100000X 경조부박,100100000X 경조사,100000000X @@ -2140,8 +1957,6 @@ 경질,100110000X 경차,100000000X 경찰,100000000X -경찰관,100000000X -경찰서,100000000X 경창,100000000X 경책,100100000X 경척,100000000X @@ -2170,8 +1985,6 @@ 경혈,100000000X 경협,100000000X 경호,100100000X -경호실,100100000X -경호원,100100000X 경혹,100110000X 경화,100110000X 경화유,100000000X @@ -2199,16 +2012,12 @@ 계교,100100000X 계급,100000000X 계기,100100000X -계기판,100000000X 계단,100000000X 계도,100110000X 계동,100000000X 계란,100000000X 계략,100000000X 계량,100110000X -계량기,100000000X -계량컵,100000000X -계량화,100110000X 계루,100110000X 계류,100110000X 계림,100000000X @@ -2223,9 +2032,6 @@ 계부,100000000X 계사,100100000X 계산,100110000X -계산기,100000000X -계산서,100000000X -계산속,100110000X 계상,100110000X 계상일,100000000X 계선,100110000X @@ -2235,14 +2041,8 @@ 계승,100110000X 계시,110110000X 계약,100110000X -계약금,100000000X -계약서,100000000X -계약설,100000000X 계엄,100100000X -계엄령,100000000X 계열,100000000X -계열사,100000000X -계열화,100110000X 계원,100000000X 계율,100000000X 계이름,100000000X @@ -2265,22 +2065,17 @@ 계천,100000000X 계측,100100000X 계층,100000000X -계층적,100000000X -계층화,100110000X 계통,100110000X 계투,100100000X 계파,100000000X 계표,100110000X 계피,100000000X 계획,100110000X -계획서,100110000X -계획성,100000000X 계후,100100000X 곗돈,100000000X 고,110110000X 고가,100100000X 고가교,100000000X -고가품,100000000X 고간,100100000X 고갈,100110000X 고개,100100000X @@ -2296,14 +2091,11 @@ 고결,100110000X 고경,100100000X 고고,100100000X -고고학,100000000X 고공,100000000X 고과,100100000X 고관,100100000X 고관대작,100100000X 고교,100100000X -고교생,100100000X -고교연맹전,100100000X 고구,100100000X 고구려,100000000X 고구마,100000000X @@ -2314,10 +2106,7 @@ 고금,100000000X 고금리,100000000X 고급,100100000X -고급품,100000000X -고급화,100110000X 고기,110100000X -고기압,100000000X 고기잡이,100100000X 고깃덩어리,100100000X 고깃배,100000000X @@ -2334,11 +2123,8 @@ 고담,100100000X 고당,100000000X 고대,100110000X -고대극,100110000X 고대로,001000000X -고대인,100000000X 고도,100100000X -고도화,100110000X 고독,100100000X 고동,100100000X 고동색,100000000X @@ -2386,8 +2172,6 @@ 고릴라,100000000X 고립,100110000X 고립무원,100100000X -고립화,100110000X -고마움,100000000X 고막,100000000X 고만,001100000X 고만고만,001100000X @@ -2403,23 +2187,14 @@ 고묘,100100000X 고무,100110000X 고무래,100000000X -고무신,100000000X -고무신짝,100000000X -고무적,100000000X -고무줄,100000000X 고문,100100000X 고물,100000000X -고물거리,010000000X -고물상,100000000X 고민,100110000X 고발,100110000X -고발장,100000000X 고배,100100000X 고백,100100000X 고변,100100000X 고별,100100000X -고별사,100000000X -고별식,100000000X 고보,100000000X 고본,100000000X 고봉,100110000X @@ -2442,17 +2217,10 @@ 고색,100000000X 고색창연,100100000X 고생,100110000X -고생문,100000000X -고생물,100000000X 고서,100000000X -고서점,100000000X 고성,100000000X -고성능,100000000X -고성방가,100100000X 고소,100110000X -고소장,100000000X 고속,100000000X -고속화,100110000X 고송,100000000X 고수,100110000X 고수레,100100000X @@ -2469,10 +2237,8 @@ 고시조,100000000X 고심,100110000X 고아,100100000X -고아원,100000000X 고안,100110000X 고압,100100000X -고압계,100000000X 고액,100000000X 고약,100100000X 고양,100110000X @@ -2485,12 +2251,9 @@ 고온,100000000X 고요,100100000X 고용,100110000X -고용자,100110000X -고용주,100000000X 고우,100000000X 고원,100100000X 고위,100000000X -고위직,100000000X 고유,100100000X 고육책,100000000X 고율,100000000X @@ -2514,24 +2277,19 @@ 고적,100100000X 고적대,100000000X 고전,100100000X -고전주의,100000000X 고정,100110000X 고제,100100000X 고조,100110000X 고조모,100000000X 고졸,100100000X -고종사촌,100000000X 고즈넉,100100000X 고증,100110000X 고지,100110000X -고지서,100000000X 고지식,100100000X 고질,100000000X -고질화,100110000X 고집,100100000X 고집부리,010000000X -고집쟁이,100000000X -고차원적,100000000X +고차원,100000000X 고착,100110000X 고착화,100110000X 고찰,100110000X @@ -2539,14 +2297,11 @@ 고창,100110000X 고철,100000000X 고체,100100000X -고체화,100110000X 고쳐나가,010000000X 고쳐먹,010000000X 고초,100100000X 고추,100100000X 고추세우,010000000X -고추장,100000000X -고추장볶이,100000000X 고축,100100000X 고춧가루,100000000X 고충,100000000X @@ -2558,8 +2313,6 @@ 고택,100000000X 고통,100000000X 고투,100100000X -고판본,100000000X -고품격,100000000X 고풍,100000000X 고프,010000000X 고하,010000000X @@ -2575,11 +2328,9 @@ 고향,100000000X 고헐,100000000X 고혈,100100000X -고혈압,100000000X 고형,100000000X 고혼,100000000X 고화,100110000X -고화질,100000000X 고환,100100000X 고흥,100000000X 고희,100000000X @@ -2594,14 +2345,11 @@ 곡류,100100000X 곡률,100000000X 곡마,100000000X -곡마단,100000000X 곡면,100000000X -곡면체,100000000X 곡명,100000000X 곡목,100000000X 곡물,100000000X 곡선,100000000X -곡선미,100000000X 곡성,100000000X 곡수,100000000X 곡식,100000000X @@ -2647,7 +2395,6 @@ 곤방,100000000X 곤보,100000000X 곤봉,100000000X -곤봉딱정벌레,100000000X 곤색,100100000X 곤시,100000000X 곤욕,100000000X @@ -2680,9 +2427,7 @@ 골,110000000X 골간,100000000X 골감,100000000X -골개고사리,100000000X 골격,100000000X -골격근,100000000X 골계,100000000X 골골,100100000X 골골거리,010000000X @@ -2703,11 +2448,8 @@ 골리,010000000X 골마루,100000000X 골막,100000000X -골막염,100000000X 골머리,100000000X 골목,100000000X -골목길,100000000X -골목쟁이,100000000X 골몰,100100000X 골무,100000000X 골문,100000000X @@ -2730,7 +2472,6 @@ 골재,100000000X 골절,100110000X 골조,100000000X -골조직,100000000X 골질,100000000X 골짜기,100000000X 골짝,100000000X @@ -2750,7 +2491,6 @@ 골퍼,100000000X 골품,100000000X 골프,100000000X -골프장,100000000X 곪,010000000X 곪아터지,010000000X 곯,010000000X @@ -2760,7 +2500,6 @@ 곰국,100000000X 곰뱅이,100000000X 곰보,100000000X -곰비늘고사리,100000000X 곰삭,010000000X 곰삭히,100000000X 곰살갑,010000000B @@ -2807,26 +2546,19 @@ 공,100100000X 공가,100000000X 공간,100100000X -공간미,100000000X -공간성,100000000X -공간적,101000000X +공감각,100000000X +공감대,100000000X 공갈,100100000X 공갈치,010000000X 공감,100110000X -공감각,100000000X -공감대,100000000X 공개,100110000X -공개장,100000000X -공개적,100000000X 공검,100100000X 공것,100000000X 공격,100100000X -공격적,100000000X 공결,100110000X 공겸,100100000X 공경,100100000X 공고,100110000X -공고화,100110000X 공곡,100000000X 공골차,010000000X 공공,100100000X @@ -2839,17 +2571,12 @@ 공구,100100000X 공군,100000000X 공권,100000000X -공권력,100000000X 공규,100000000X 공그르,010000000L 공글리,010000000X 공금,100000000X 공급,100110000X -공급량,100110000X -공급원,100000000X 공기,100100000X -공기업,100000000X -공기총,100000000X 공깃밥,100000000X 공납,100100000X 공납금,100000000X @@ -2860,9 +2587,6 @@ 공대말,100000000X 공덕,100000000X 공동,100100000X -공동작,100100000X -공동체,100000000X -공동화,100110000X 공든탑,100000000X 공들,010000000X 공들이,010000000X @@ -2872,15 +2596,12 @@ 공략,100110000X 공력,100000000X 공로,100100000X -공로자,100000000X 공론,100110000X -공론화,100110000X 공룡,100000000X 공류,100000000X 공륜,100000000X 공률,100000000X 공리,100000000X -공리주의,100000000X 공립,100100000X 공막,100100000X 공매,100100000X @@ -2889,8 +2610,6 @@ 공모,100110000X 공목,100000000X 공무,100000000X -공무국,100000000X -공무원,100000000X 공문,100000000X 공문서,100000000X 공물,100000000X @@ -2909,18 +2628,12 @@ 공보,100000000X 공보처,100000000X 공복,100000000X -공복감,100000000X 공부,100110000X 공분,100110000X 공비,100000000X 공사,100100000X -공사비,100000000X -공사장,100000000X 공산,100000000X 공산당,100000000X -공산물,100000000X -공산품,100000000X -공산화,100110000X 공상,100100000X 공생,100100000X 공서,100100000X @@ -2930,17 +2643,12 @@ 공성,100100000X 공세,100000000X 공소,100100000X -공소권,100000000X -공소장,100000000X 공손,100100000X 공수,100110000X -공수표,100000000X 공술,100100000X 공습,100100000X 공시,100110000X 공식,100100000X -공식적,100000000X -공식화,100110000X 공신,100100000X 공신력,100000000X 공안,100000000X @@ -2950,45 +2658,31 @@ 공양미,100000000X 공언,100100000X 공업,100000000X -공업계,100000000X -공업국,100000000X -공업용,100000000X -공업화,100110000X 공여,100100000X 공역,100100000X 공연,100110000X -공연장,100000000X 공영,100100000X 공예,100000000X -공예품,100000000X 공용,100110000X 공원,100000000X 공위,100100000X 공유,100110000X -공유폴더,100000000X 공의,100110000X 공의롭,010000000B 공의무,100000000X 공이,100000000X 공익,100000000X -공익성,100000000X 공인,100110000X 공일,100000000X 공임,100000000X 공자,100000000X 공작,100100000X -공작물,100000000X -공작선,100000000X -공작원,100000000X 공장,100000000X -공장장,100000000X 공저,100110000X 공적,100100000X 공전,100110000X 공정,100100000X -공정히,001000000X 공제,100110000X -공제금,100000000X 공조,100100000X 공존,100100000X 공죄,100000000X @@ -2996,16 +2690,12 @@ 공죽,100000000X 공준,100000000X 공중,100000000X -공중볼,100000000X 공증,100110000X -공증인,100000000X 공지,100110000X 공직,100100000X -공직자,100000000X 공진회,100000000X 공짜,100000000X 공차,100000000X -공창제도,100000000X 공채,100110000X 공책,100000000X 공처,100000000X @@ -3018,18 +2708,14 @@ 공치사,100100000X 공탁,100100000X 공통,100110000X -공통점,100000000X 공판,100100000X 공판정,100000000X 공편,100100000X 공평,101110000X -공평히,001000000X 공포,100110000X -공포감,100110000X 공표,100110000X 공하,110110000X 공학,100100000X -공학적,100000000X 공한,100100000X 공한지,100000000X 공함,100100000X @@ -3050,10 +2736,8 @@ 곶감,100000000X 과,100100000X 과감,100100000X -과감히,001000000X 과객,100000000X 과거,100100000X -과거사,100000000X 과격,100100000X 과꽃,100000000X 과납,100100000X @@ -3071,32 +2755,24 @@ 과로,100100000X 과료,100000000X 과립,100000000X -과립화,100110000X 과묵,100100000X 과민,100100000X 과밀,100100000X -과밀화,100110000X 과반,100000000X 과반수,100000000X 과방,100000000X 과보,100000000X 과부,100000000X -과부댁,100000000X -과부족,100100000X 과분,100100000X 과산화나트륨,100000000X 과세,100110000X 과소,100100000X 과속,100100000X 과수,100100000X -과수댁,100000000X -과수밭,100100000X -과수원,100000000X 과시,100100000X 과식,100100000X 과신,100100000X 과실,100000000X -과실주,100000000X 과심,100000000X 과액,100000000X 과언,100100000X @@ -3112,18 +2788,15 @@ 과음,100100000X 과인,100100000X 과일,100000000X -과일즙,100000000X 과잉,100110000X 과자,100000000X 과장,100110000X -과장법,100000000X 과적,100110000X 과점,100110000X 과정,100000000X 과제,100100000X 과중,100100000X 과즙,100000000X -과징금,100000000X 과찬,100100000X 과채,100000000X 과태료,100000000X @@ -3131,10 +2804,6 @@ 과핍,100100000X 과하,010000000X 과학,100000000X -과학기술처,100000000X -과학사,100000000X -과학자,100000000X -과학적,100000000X 곽,100000000X 곽란,100000000X 곽새,100000000X @@ -3145,27 +2814,19 @@ 관객,100000000X 관건,100000000X 관계,100110000X -관계관,100000000X -관계법,100000000X -관계자,100000000X 관계찮,010000000X 관골근,100000000X 관공서,100000000X 관공청,100000000X 관광,100100000X -관광객,100000000X -관광지,100000000X 관군,100000000X 관권,100000000X 관급,100100000X 관기,100000000X 관내,100000000X 관념,100100000X -관념론,100000000X -관념적,100000000X 관노,100000000X 관능,100000000X -관능적,100000000X 관대,100100000X 관데,001000000X 관동,100000000X @@ -3173,27 +2834,18 @@ 관두,010000000X 관등,100100000X 관람,100100000X -관람객,100000000X 관력,100000000X 관련,100110000X -관련자,100000000X 관례,100100000X -관례화,100110000X 관록,100000000X 관료,100000000X -관료화,100110000X 관류,100100000X 관리,100110000X -관리소,100000000X -관리인,100000000X -관리자,100000000X -관리직,100000000X 관망,100100000X 관명,100000000X 관목,100000000X 관문,100100000X 관물,100000000X -관물때,100000000X 관민,100000000X 관변,100000000X 관보,100000000X @@ -3209,27 +2861,19 @@ 관소금,100000000X 관속,100000000X 관솔,100000000X -관솔불,100000000X 관습,100000000X -관습범죄인,100000000X -관습화,100110000X 관식,100000000X 관심,100100000X 관심갖,010000000X -관심거리,100000000X -관심사,100000000X 관심쏟,010000000D 관아,100000000X 관악,100000000X -관악기,100000000X 관엄,100100000X 관업,100000000X 관여,100110000X 관영,100000000X 관외,100000000X 관용,100110000X -관용구,100000000X -관용적,100000000X 관운,100000000X 관원,100000000X 관인,100110000X @@ -3240,35 +2884,25 @@ 관저,100000000X 관전,100110000X 관절,100100000X -관절염,100000000X 관점,100000000X 관정,100100000X 관제,100100000X -관제탑,100000000X 관조,100100000X 관중,100110000X 관직,100000000X 관찰,100110000X -관찰도,100000000X 관찰사,100000000X -관찰자,100000000X 관창,100000000X 관철,100110000X 관청,100000000X 관측,100110000X -관측기,100110000X -관측통,100000000X 관통,100110000X -관통상,100000000X 관하,010000000X 관할,100100000X 관항,100000000X 관행,100100000X -관행화,100110000X 관현악,100000000X -관현악단,100000000X 관형사,100000000X -관형사형,100000000X 관형어,100000000X 관혼상제,100000000X 관후,100100000X @@ -3285,16 +2919,8 @@ 광각,100000000X 광겁,100000000X 광견,100000000X -광견병,100000000X 광경,100000000X 광고,100110000X -광고료,100110000X -광고문,100000000X -광고비,100000000X -광고성,100000000X -광고용,100000000X -광고주,100000000X -광공업,100000000X 광구,100100000X 광구발,100100000X 광궤,100000000X @@ -3305,12 +2931,8 @@ 광년,100000000X 광담,100100000X 광대,100100000X -광대불나방,100000000X -광대뼈,100000000X 광도,100000000X -광등뼈,100000000X 광란,100100000X -광란적,100000000X 광량,100100000X 광력,100000000X 광막,100100000X @@ -3323,30 +2945,23 @@ 광무,100000000X 광문,100100000X 광물,100000000X -광물질,100000000X 광배,100000000X 광범,100100000X 광범위,100100000X 광복,100110000X -광복군,100000000X -광복절,100000000X 광부,100000000X 광분,100100000X 광산,100000000X -광산업,100000000X -광산촌,100000000X 광석,100000000X 광선,100000000X 광섬유,100000000X 광속,100000000X -광속도,1000000M0X 광신,100100000X 광압,100000000X 광야,100000000X 광어,100000000X 광업,100000000X 광역,100000000X -광역화,100110000X 광열,100000000X 광염,100000000X 광우병,100000000X @@ -3354,7 +2969,6 @@ 광음,100100000X 광의,100000000X 광인,100000000X -광입자,100000000X 광자,100000000X 광장,100100000X 광주,100000000X @@ -3430,7 +3044,6 @@ 괴팍,100100000X 괴하,010000000X 괴한,100000000X -괴현상,100000000X 괴혈병,100000000X 굄,100000000X 굄새,100000000X @@ -3447,8 +3060,6 @@ 교결,100100000X 교계,100100000X 교과,100000000X -교과목,100000000X -교과서,100000000X 교관,100100000X 교교,100100000X 교구,100100000X @@ -3459,8 +3070,6 @@ 교단,100000000X 교대,100100000X 교도,100100000X -교도관,100000000X -교도소,100000000X 교두보,100000000X 교란,100110000X 교량,100100000X @@ -3474,14 +3083,11 @@ 교모,100000000X 교목,100000000X 교묘,100100000X -교묘히,001000000X 교무,100000000X -교무실,100000000X 교문,100000000X 교미,100100000X 교민,100000000X 교배,100100000X -교배종,100000000X 교번,100100000X 교범,100000000X 교법,100000000X @@ -3490,7 +3096,6 @@ 교본,100000000X 교부,100110000X 교비,100000000X -교비생,100000000X 교빙,100100000X 교사,100110000X 교살,100110000X @@ -3499,8 +3104,6 @@ 교생,100000000X 교섭,100110000X 교수,100110000X -교수대,100000000X -교수진,100000000X 교수형,100000000X 교습,100100000X 교시,100110000X @@ -3520,41 +3123,25 @@ 교월,100000000X 교유,100100000X 교육,100110000X -교육감,100000000X -교육부,100110000X -교육비,100000000X -교육세,100000000X -교육자,100000000X -교육장,100000000X -교육청,100000000X -교육학,100000000X 교의,100000000X 교인,100100000X 교자,100000000X 교자상,100000000X 교잡,100110000X 교장,100000000X -교장실,100000000X 교재,100000000X 교전,100100000X 교점,100000000X 교접,100110000X 교정,100110000X -교정본,100000000X -교정쇄,100000000X -교정술,100000000X -교정지,100000000X 교제,100100000X 교제비,100000000X 교조,100000000X -교조적,100000000X -교조주의,100000000X 교족상,100000000X 교종,100000000X 교주,100100000X 교지,100100000X 교직,100110000X -교직원,100000000X 교차,100110000X 교차로,100000000X 교착,100110000X @@ -3567,11 +3154,6 @@ 교태,100100000X 교태부리,0100000000X 교통,100100000X -교통난,100000000X -교통량,100000000X -교통로,100000000X -교통부,100000000X -교통비,100000000X 교파,100000000X 교편,100000000X 교포,100000000X @@ -3579,16 +3161,13 @@ 교학,100000000X 교합,100100000X 교향곡,100000000X -교향악단,100000000X +교향악,100000000X 교호,100110000X 교화,100110000X 교환,100110000X -교환기,100000000X 교활,100100000X 교황,100000000X 교회,100100000X -교회당,100000000X -교회력,100000000X 교훈,100100000X 구,100100000X 구가,100100000X @@ -3596,17 +3175,14 @@ 구간,100100000X 구갈,100100000X 구감초,100000000X -구강암,100000000X -구강염,100000000X +구강,100000000X 구개음,100000000X -구개음화,100110000X 구걸,100100000X 구검,100110000X 구겨지,010000000X 구격,100100000X 구경,100100000X 구경가,010000000X -구경꾼,100000000X 구경오,010000000X 구경위,100000000X 구계,100100000X @@ -3624,12 +3200,8 @@ 구근,100100000X 구금,100110000X 구급,100100000X -구급약,100000000X -구급차,100000000X 구기,100100000X 구김,100000000X -구김살,100000000X -구김새,100000000X 구깃거리,010000000X 구나,100100000X 구난,100100000X @@ -3637,25 +3209,19 @@ 구년,100000000X 구닥다리,100000000X 구단,100000000X -구단주,100000000X 구답,100100000X 구대,100000000X -구대륙,100000000X 구더기,100000000X 구덕,100100000X 구덩이,100000000X 구도,100100000X 구독,100100000X -구독료,100000000X 구동,100110000X 구두,100000000X 구두끈,100000000X 구두닦이,100000000X 구두법,100000000X 구두쇠,100000000X -구두약,100000000X -구두점,100000000X -구두창,100000000X 구둣발,100000000X 구둣주걱,100000000X 구득,100100000X @@ -3682,13 +3248,10 @@ 구롱,100000000X 구료,100100000X 구루,100100000X -구루병,100000000X 구류,100110000X 구르,010000000L 구르기,100000000X 구름,100000000X -구름골풀,100000000X -구름판,100000000X 구릉,100000000X 구릉지,100000000X 구리,110100000X @@ -3696,16 +3259,10 @@ 구릿,100100000X 구릿빛,100000000X 구매,100110000X -구매력,100000000X -구매자,100000000X 구먼,001000000X 구멍,100000000X -구멍돌도끼,100000000X 구면,100100000X -구면각,100000000X 구명,100110000X -구명구,100000000X -구명정,100000000X 구무,100100000X 구무럭거리,010000000X 구문,100100000X @@ -3746,9 +3303,7 @@ 구설,100000000X 구설수,100000000X 구성,100110000X -구성원,100000000X 구성지,010000000X -구성체,100000000X 구세,100100000X 구세계,100000000X 구세군,100000000X @@ -3764,8 +3319,7 @@ 구슬프,010000000X 구습,100000000X 구승,100110000X -구시,100100000X -구시대,100000000X +구시,100100000 구시렁거리,010000000X 구시렁대,010000000X 구식,100000000X @@ -3784,7 +3338,6 @@ 구완,100100000X 구워삶,010000000X 구원,100110000X -구원병,100000000X 구월,100000000X 구유,100100000X 구음,100000000X @@ -3803,11 +3356,7 @@ 구정,100000000X 구제,100110000X 구조,100110000X -구조대,100000000X -구조물,100000000X 구조불차,100000000X -구조선,100000000X -구조화,100110000X 구존,100100000X 구주,100000000X 구중중,100100000X @@ -3825,9 +3374,6 @@ 구척,100000000X 구청,100000000X 구체,100000000X -구체성,100000000X -구체적,101000000X -구체화,100110000X 구초,100100000X 구축,100110000X 구축함,100000000X @@ -3868,12 +3414,9 @@ 구희,100000000X 국,100000000X 국가,100000000X -국가적,101000000X 국경,100000000X -국경선,100000000X 국경일,100000000X 국고,100000000X -국고금,100000000X 국곰팡이,100000000X 국공립,100000000X 국광,100000000X @@ -3904,43 +3447,31 @@ 국무총리,100000000X 국무회의,100000000X 국문,100100000X -국문과,100000000X -국문학,100000000X 국물,100000000X 국민,100000000X -국민성,100000000X 국반절,100000000X 국밥,100000000X 국방,100000000X -국방부,100000000X -국방색,100000000X -국방성,100000000X 국번,100000000X 국법,100000000X 국보,100000000X 국부,100000000X -국부론,100000000X 국비,100000000X 국빈,100000000X 국사,100000000X 국산,100000000X -국산품,100000000X -국산화,100110000X 국상,100000000X 국서,100000000X 국선,100100000X 국세,100000000X -국세청,100000000X 국소,100000000X 국솥,100000000X 국수,100000000X 국시,100000000X 국악,100000000X 국어,100000000X -국어학,100000000X 국역,100100000X 국영,100110000X -국영화,100110000X 국왕,100000000X 국외,100000000X 국우,100000000X @@ -3948,8 +3479,6 @@ 국원,100000000X 국위,100000000X 국유,100000000X -국유림,100000000X -국유화,100110000X 국은,100000000X 국익,100000000X 국자,100000000X @@ -3960,11 +3489,6 @@ 국전,100000000X 국정,100100000X 국제,100000000X -국제법,100000000X -국제선,100000000X -국제적,101000000X -국제항,100000000X -국제화,100110000X 국졸,100000000X 국채,100000000X 국책,100000000X @@ -3979,14 +3503,11 @@ 국학,100000000X 국한,100110000X 국한문,100000000X -국한문체,100000000X 국호,100000000X 국화,100000000X -국화전,100000000X 국회,100000000X 군,100000000X 군가,100000000X -군가집,100000000X 군것질,100100000X 군견,100000000X 군경,100000000X @@ -4000,9 +3521,7 @@ 군기,100100000X 군납,100110000X 군내,100000000X -군다리미질,100100000X 군단,100000000X -군담소설,100000000X 군대,100000000X 군대군대,001000000X 군대답,100000000X @@ -4015,10 +3534,8 @@ 군락,100000000X 군란,100000000X 군량,100000000X -군량미,100000000X 군력,100000000X 군령,100000000X -군령장,100000000X 군례,100000000X 군록,100000000X 군림,100100000X @@ -4038,10 +3555,8 @@ 군복,100000000X 군부,100000000X 군불,100000000X -군불솥,100000000X 군비,100000000X 군사,100000000X -군사력,100000000X 군살,100000000X 군상,100000000X 군색,100100000X @@ -4058,8 +3573,6 @@ 군영,100000000X 군왕,100000000X 군용,100000000X -군용기,100000000X -군용품,100000000X 군웅,100000000X 군웅할거,100000000X 군율,100000000X @@ -4074,20 +3587,16 @@ 군제,100000000X 군졸,100000000X 군주,100000000X -군주국,100000000X -군주제,100000000X 군중,100000000X 군진,100000000X 군집,100110000X 군청,100000000X -군청색,100000000X 군축,100100000X 군침,100000000X 군핍,100100000X 군함,100000000X 군항,100000000X 군현,100000000X -군현제도,100100000X 군화,100000000X 군획,100000000X 굳,010000000X @@ -4105,7 +3614,6 @@ 굴곡,100100000X 굴광성,100000000X 굴다,100000000X -굴다리,100000000X 굴대,100000000X 굴뚝,100000000X 굴뚝개자리,100000000X @@ -4129,10 +3637,8 @@ 굴절,100110000X 굴종,100110000X 굴지,100100000X -굴지성,100000000X 굴집,100000000X 굴착,100100000X -굴참나무,100000000X 굴터분,100100000X 굴튀김,100000000X 굴하,010000000X @@ -4142,7 +3648,6 @@ 굵다랗,010000000H 굵어지,010000000X 굵은베,100000000X -굵은소금,100000000X 굵직하,010000000X 굵직굵직하,010000000X 굶,010000000X @@ -4183,7 +3688,6 @@ 궁곤,100100000X 궁궐,100000000X 궁극,100000000X -궁극적,100000000X 궁글,010000000X 궁금,100100000X 궁금답답,100100000X @@ -4235,15 +3739,12 @@ 권능,100000000X 권두,100000000X 권력,100000000X -권력자,100000000X 권련,100100000X 권리,100000000X -권리금,100000000X 권말,100000000X 권매,100100000X 권면,100100000X 권모,100000000X -권모술수,100000000X 권법,100000000X 권사,100100000X 권선징악,100100000X @@ -4254,8 +3755,6 @@ 권외,100000000X 권운,100000000X 권위,100000000X -권위자,100000000X -권위주의,100000000X 권유,100100000X 권익,100000000X 권장,100110000X @@ -4280,8 +3779,6 @@ 궤도,100000000X 궤멸,100110000X 궤변,100100000X -궤변가,100000000X -궤변론자,100000000X 궤사,100100000X 궤양,100000000X 궤언,100000000X @@ -4331,7 +3828,6 @@ 귀살스럽,010000000B 귀설,010000000X 귀성,100100000X -귀성객,100000000X 귀소성,100000000X 귀속,100110000X 귀순,100100000X @@ -4342,7 +3838,6 @@ 귀양가,010000000X 귀양보내,010000000X 귀양살,010000000X -귀양살이,100100000X 귀어,100000000X 귀어둡,010000000B 귀엣고리,100000000X @@ -4350,8 +3845,6 @@ 귀여겨듣,010000000D 귀여리,010000000X 귀염,100000000X -귀염둥이,100000000X -귀염성,100000000X 귀엽,010000000B 귀의,100100000X 귀의심,100000000X @@ -4365,8 +3858,6 @@ 귀접이,100100000X 귀정,100100000X 귀족,100000000X -귀족적,100000000X -귀족화,100110000X 귀주머니,100000000X 귀중,100100000X 귀착,100110000X @@ -4380,7 +3871,6 @@ 귀토,100000000X 귀퉁이,100000000X 귀틀,100000000X -귀틀집,100000000X 귀하,111000000X 귀항,100100000X 귀향,100100000X @@ -4404,7 +3894,6 @@ 규모,100000000X 규방,100000000X 규범,100000000X -규범화,100110000X 규산,100000000X 규석,100000000X 규소,100000000X @@ -4418,8 +3907,6 @@ 규준,100000000X 규중,100000000X 규칙,100000000X -규칙적,100000000X -규칙화,100110000X 규탄,100110000X 규합,100110000X 규호,100100000X @@ -4434,14 +3921,12 @@ 균분,100110000X 균열,100110000X 균일,100100000X -균일화,100110000X 균제,100100000X 균질,100100000X 균평,100100000X 균형,100010000X 균형잡,010000000X 균형잡히,010000000X -균형적,100000000X 귤,100000000X 그,001000000X 그간,100000000X @@ -4460,7 +3945,6 @@ 그네뛰기,100000000X 그네뛰,010000000X 그늘,100000000X -그늘개고사리,100000000X 그늘지,010000000X 그다지,001000000X 그대,100000000X @@ -4537,13 +4021,11 @@ 그리스,100000000X 그리스도,100000000X 그리스도교,100000000X -그리스정교회,100000000X 그리워하,010000000X 그린,100000000X 그린벨트,100000000X 그림,100000000X 그림자,100000000X -그림책,100000000X 그립,010000000B 그만,001100000X 그만그만,001100000X @@ -4552,9 +4034,7 @@ 그만큼,001000000X 그만하,010000000X 그물,100000000X -그물망,100000000X 그믐,100000000X -그믐밤,100000000X 그슬,010000000X 그슬리,010000000X 그악,100100000X @@ -4578,31 +4058,24 @@ 극광,100000000X 극구,101000000X 극기,100100000X -극기후,100100000X 극난,100100000X 극단,100000000X -극단적,100000000X -극단화,100110000X 극대,100100000X -극대화,100110000X 극도,100000000X 극동,100000000X 극락,100000000X -극락정토,100000000X 극력,100100000X 극렬,100100000X -극렬히,001000000X 극로,100100000X 극론,100100000X -극망원경,100000000X 극명,100100000X 극묘,100100000X 극미,100100000X -극방정식,100000000X 극복,100110000X 극본,100000000X 극비,100000000X 극빈,100100000X +근섬유초,100000000X 극선,100100000X 극성,100100000X 극성떨,010000000X @@ -4613,16 +4086,15 @@ 극소수,100000000X 극소화,100110000X 극시,100100000X +근시안,100000000X 극심,100100000X 극악,100100000X 극약,100000000X 극언,100100000X -극예술연구회,100000000X 극우,100000000X 극작,100100000X 극작가,100000000X 극장,100000000X -극장가,100000000X 극적,100000000X 극점,100000000X 극존,100100000X @@ -4648,24 +4120,17 @@ 근근히,001000000X 근년,100000000X 근대,100000000X -근대사,100000000X -근대화,100110000X 근동,100000000X 근래,100000000X 근량,100000000X 근력,100000000X 근로,100100000X -근로권,100100000X -근로자,100000000X 근린,100000000X 근면,100100000X 근무,100100000X -근무자,100000000X 근방,100000000X 근본,100000000X 근사,100100000X -근사값,100000000X -근섬유초,100000000X 근성,100000000X 근세,100000000X 근세포,100000000X @@ -4673,7 +4138,6 @@ 근속,100100000X 근수,100000000X 근시,100100000X -근시안,100000000X 근신,100100000X 근실,100100000X 근심,100110000X @@ -4696,8 +4160,6 @@ 근질대,010000000X 근처,100000000X 근친,100100000X -근친상간,100000000X -근친혼,100000000X 근하신년,100000000X 근해,100000000X 근행,100100000X @@ -4728,10 +4190,8 @@ 글쓰,010000000X 글쓴이,100000000X 글씨,100000000X -글씨체,100000000X 글월,100000000X 글자,100000000X -글재주,100000000X 글줄,100000000X 글짓기,100100000X 글쪽지,100000000X @@ -4752,13 +4212,10 @@ 금강,100000000X 금강산,100000000X 금강석,100000000X -금강아지풀,100000000X -금개구리,100000000X 금계,100100000X 금고,100000000X 금관,100000000X 금광,100000000X -금광석,100000000X 금괴,100000000X 금권,100000000X 금궤,100000000X @@ -4777,13 +4234,11 @@ 금렵,100100000X 금령,100000000X 금리,100000000X -금메달,100000000X 금명간,100000000X 금모래,100000000X 금문,100000000X 금물,100000000X 금박,100000000X -금반지,100000000X 금발,100000000X 금방,101000000X 금배지,100000000X @@ -4794,7 +4249,6 @@ 금비,100100000X 금비녀,100000000X 금빛,100000000X -금빛돌비늘,100000000X 금산,100000000X 금상,100000000X 금서,100000000X @@ -4805,7 +4259,6 @@ 금세,101000000X 금세기,100000000X 금속,100000000X -금속성,100000000X 금수,100000000X 금수강산,100000000X 금슬,100000000X @@ -4819,13 +4272,8 @@ 금연,100100000X 금요일,100000000X 금욕,100100000X -금욕주의자,100000000X 금융,100000000X -금융계,100000000X -금융업,100000000X -금융인,100000000X 금은,100000000X -금은방,100000000X 금은보하,101000000X 금의환향,100100000X 금일,100000000X @@ -4841,8 +4289,6 @@ 금주,100100000X 금줄,100000000X 금지,100110000X -금지령,100000000X -금지법,100000000X 금지옥엽,100000000X 금쪽,100000000X 금치산,100000000X @@ -4861,12 +4307,10 @@ 급감,100110000X 급강하,100110000X 급격,100100000X -급경사,100000000X 급구,100100000X 급급,100100000X 급난,100000000X 급등,100100000X -급등세,100100000X 급락,100100000X 급랭,100100000X 급량,100100000X @@ -4882,20 +4326,16 @@ 급보,100100000X 급부,100100000X 급부상,100100000X -급브레이크,100000000X 급비,100100000X 급사,100100000X 급사중,100000000X 급살,100000000X -급상승,100110000X 급서,100100000X 급선무,100100000X 급선회,100100000X 급성,100000000X -급성장,100100000X 급소,100100000X 급속,100100000X -급속도,100000000X 급송,100110000X 급수,100110000X 급습,100110000X @@ -4912,21 +4352,16 @@ 급정거,100100000X 급정지,100100000X 급제,100110000X -급제동,100000000X 급조,100110000X 급증,100110000X 급진,100110000X -급진적,100110000X -급진전,100110000X 급체,100100000X 급파,100110000X 급하,010000000X 급행,100100000X -급회전,100100000X 급훈,100000000X 긋,010000000S 긍정,100110000X -긍정문,100000000X 긍지,100000000X 긍지심,100000000X 긍휼,101100000X @@ -4934,7 +4369,7 @@ 기각,100110000X 기간,100110000X 기갈,100000000X -기갑병,100000000X +기갑,100000000X 기강,100000000X 기개,100000000X 기거,100100000X @@ -4945,21 +4380,12 @@ 기계,100000000X 기계간,100110000X 기계강,100110000X -기계적,101000000X -기계총,100000000X -기계화,100110000X 기고,100110000X 기고만장,100110000X 기골,100000000X 기공,100110000X -기공식,100000000X 기관,100000000X -기관사,100000000X -기관실,100000000X -기관원,100000000X -기관장,100000000X 기관지,100000000X -기관지염,100000000X 기관차,100000000X 기관총,100000000X 기관폐,100000000X @@ -4982,36 +4408,22 @@ 기네스북,100000000X 기녀,100000000X 기념,100110000X -기념관,100000000X -기념비,100000000X -기념식,100000000X -기념일,100000000X -기념장,100000000X -기념제,100000000X -기념품,100000000X 기능,100100000X -기능성,100000000X -기능주의,100000000X 기다랗,010000000H 기다리,010000000X 기단,100100000X 기담,100000000X 기대,110110000X -기대감,100000000X 기대서,010000000X 기대앉,010000000X 기대주,100000000X 기도,100110000X 기독,100000000X 기독교,100000000X -기독교계,100000000X -기독교인,100000000X 기동,100100000X -기동력,100000000X 기두,100100000X 기둥,100000000X 기득,100100000X -기득권,100000000X 기똥차,010000000X 기라성,100000000X 기략,100000000X @@ -5024,11 +4436,8 @@ 기류,100100000X 기르,010000000L 기름,100000000X -기름기,100000000X -기름띠,100000000X 기름지,010000000X -기름치다,010000000X -기름칠,100100000X +기름치,010000000X 기리,010000000X 기린,100000000X 기립,100100000X @@ -5054,32 +4463,19 @@ 기보,100100000X 기복,100100000X 기본,100000000X -기본권,100000000X -기본기,100000000X -기본법,100000000X 기부,100110000X -기부금,100000000X -기부입학제,100000000X 기분,100000000X 기뻐하,010000000X 기쁘,010000000X 기쁨,100000000X 기사,100100000X -기사화,100110000X 기상,100100000X -기상대,100000000X -기상도,100000000X 기상천외,100100000X 기색,100100000X 기생,100100000X -기생집,100100000X -기생충,100000000X 기석,100000000X 기선,100000000X 기성,100100000X -기성복,100000000X -기성품,100000000X -기성회,100000000X 기세,100100000X 기세당당,100100000X 기세부리,010000000X @@ -5087,12 +4483,7 @@ 기수,100100000X 기수법,100000000X 기숙,100100000X -기숙사,100000000X 기술,100110000X -기술원,100000000X -기술자,100000000X -기술적,100000000X -기술진,100000000X 기스면,100000000X 기슭,100000000X 기습,100110000X @@ -5104,8 +4495,6 @@ 기악,100000000X 기안,100110000X 기암,100000000X -기암괴석,100000000X -기암절벽,100000000X 기압,100000000X 기약,100110000X 기어,100100000X @@ -5118,13 +4507,8 @@ 기어오르,010000000L 기어이,001000000X 기억,100110000X -기억력,100000000X 기언,100000000X 기업,100100000X -기업가,100000000X -기업인,100000000X -기업주,100000000X -기업체,100000000X 기여,100110000X 기역,100000000X 기연,100100000X @@ -5132,7 +4516,6 @@ 기예,100100000X 기온,100000000X 기와,100100000X -기와집,100000000X 기왕,101000000X 기용,100110000X 기우,100100000X @@ -5152,15 +4535,12 @@ 기웃거리,010000000X 기웃기웃,001100000X 기원,100100000X -기원전,100000000X -기원후,100000000X 기율,100000000X 기이,100100000X 기인,100110000X 기일,100000000X 기입,100110000X 기자,100000000X -기자단,100000000X 기자재,100000000X 기장,100100000X 기재,100110000X @@ -5172,7 +4552,7 @@ 기절초풍,100100000X 기점,100000000X 기정,100110000X -기정사실화,100110000X +기정사실,100000000X 기제,100100000X 기제사,100000000X 기조,100000000X @@ -5193,11 +4573,9 @@ 기진맥진,100100000X 기질,100000000X 기차,110000000X -기차표,100000000X 기착,100000000X 기척,100000000X 기체,100000000X -기체화,100110000X 기초,100110000X 기축,100110000X 기층,100000000X @@ -5218,17 +4596,13 @@ 기필,100100000X 기필코,001000000X 기하,100000000X -기하학,100000000X 기한,100100000X 기한부,100000000X 기합,100000000X 기항,100100000X 기행,100000000X -기행문,100000000X 기험,100100000X 기형,100000000X -기형아,100000000X -기형적,100000000X 기호,100100000X 기혼,100100000X 기화,100110000X @@ -5249,7 +4623,6 @@ 긴병,100000000X 긴요,100100000X 긴장,100110000X -긴장감,100000000X 긴축,100110000X 긴하,010000000X 긷,010000000D @@ -5391,7 +4764,6 @@ 깔끔,100100000X 깔딱,001000000X 깔때기,100000000X -깔때기홈통,100000000X 깔리,010000000X 깔보,010000000X 깔보이,010000000X @@ -5422,7 +4794,6 @@ 깡똥,001100000X 깡똥깡똥,001100000X 깡마르,010000000L -깡보리밥,100000000X 깡짱,001100000X 깡총깡총,001100000X 깡충,001100000X @@ -5441,7 +4812,6 @@ 깨물,010000000X 깨보숭이,100000000X 깨부수,010000000X -깨소금,100000000X 깨알,100000000X 깨어나,010000000X 깨어지,010000000X @@ -5634,7 +5004,6 @@ 꽁,100100000X 꽁꽁,001100000X 꽁무니,100000000X -꽁보리밥,100000000X 꽁지,100000000X 꽁초,100000000X 꽁치,100000000X @@ -6047,7 +5416,7 @@ 나이테,100000000X 나이트,100000000X 나이티,100000000X -나이팅게일상,100000000X +나이팅게일,100000000X 나이프,100000000X 나인,100110000X 나일론,100000000X @@ -10231,7 +9600,7 @@ 막대기,100000000X 막돼먹,010000000X 막둥이,100000000X -막론하,010000000X +막론,100100000X 막료,100000000X 막막,100100000X 막막강병,100000000X @@ -12075,8 +11444,6 @@ 민족상잔,100000000X 민족적,100000000X 민주,100000000X -민주적,100000000X -민주화,100110000X 민중,100000000X 민첩,100100000X 민초,100000000X @@ -12141,7 +11508,6 @@ 밀접,100100000X 밀주,100100000X 밀집,100110000X -밀짚모자,100000000X 밀착,100110000X 밀쳐놓,010000000X 밀치,010000000X @@ -12506,7 +11872,6 @@ 발맞추,010000000X 발매,100110000X 발명,100110000X -발명왕,100000000X 발모,100100000X 발목,100000000X 발문,100100000X @@ -12633,7 +11998,6 @@ 방관,100100000X 방관자,100000000X 방광,100100000X -방광암,100000000X 방귀,100000000X 방귀뀌,010000000X 방기,100100000X @@ -12646,7 +12010,6 @@ 방면,100110000X 방목,100110000X 방문,100100000X -방문객,100000000X 방미,100100000X 방바닥,100000000X 방방곡곡,100000000X @@ -12883,7 +12246,6 @@ 백주,100000000X 백중,100100000X 백지,100000000X -백지화,100110000X 백치,100000000X 백학,100000000X 백합,100000000X @@ -12929,7 +12291,6 @@ 버선,100000000X 버섯,100000000X 버스,100000000X -버스정류소,100000000X 버짐,100000000X 버찌,100000000X 버클,100000000X @@ -12980,7 +12341,6 @@ 벌거숭이,100000000X 벌게지,010000000X 벌금,100000000X -벌금형,100000000X 벌꿀,100000000X 벌렁,001100000X 벌렁거리,010000000X @@ -13009,7 +12369,6 @@ 범,100100000X 범람,100100000X 범례,100000000X -범발톱,100000000X 범벅,100100000X 범법,100100000X 범부,100000000X @@ -13023,12 +12382,7 @@ 범접,100100000X 범종,100100000X 범죄,100100000X -범죄시,100110000X -범죄예방책,100000000X -범죄자,100000000X -범죄형,100000000X 범주,100100000X -범주화,100110000X 범칙,100100000X 범타,100100000X 범패,100100000X @@ -13140,7 +12494,6 @@ 벽보,100000000X 벽보판,100000000X 벽장,100000000X -벽전화기,100000000X 벽지,100000000X 벽촌,100000000X 벽화,100000000X @@ -13279,9 +12632,6 @@ 병약,100100000X 병어,100100000X 병역,100000000X -병역기피자,100000000X -병역비리,100100000X -병역특례자,100000000X 병영,100000000X 병용,100110000X 병원,100000000X @@ -13292,7 +12642,6 @@ 병작,100100000X 병장,100100000X 병적,100100000X -병적기록부,100000000X 병정,100000000X 병존,100100000X 병졸,100100000X @@ -13378,7 +12727,6 @@ 보색,100000000X 보석,100110000X 보세,100000000X -보세건설장,100000000X 보수,100110000X 보수파,100000000X 보스,100000000X @@ -13428,7 +12776,6 @@ 보태,010000000X 보탬,100000000X 보통,100000000X -보통지방자치단체,100000000X 보퉁이,100000000X 보트,100000000X 보편,100000000X @@ -13441,10 +12788,6 @@ 보학,100000000X 보행,100100000X 보험,100000000X -보험금,100000000X -보험료,100000000X -보험설계사,100000000X -보험외판원,100000000X 보혈,100110000X 보호,100110000X 보호법,100000000X @@ -13459,7 +12802,6 @@ 복교,100110000X 복구,100110000X 복권,100110000X -복권판매소,100000000X 복귀,100110000X 복근,100000000X 복닥거리,010000000X @@ -13479,7 +12821,6 @@ 복부,100000000X 복비,100100000X 복사,100110000X -복사앵두나무,100100000X 복상,100100000X 복상사,100100000X 복색,100000000X @@ -13498,7 +12839,6 @@ 복안,100000000X 복어,100000000X 복역,100100000X -복염색체,100000000X 복용,100100000X 복원,100110000X 복위,100100000X @@ -13536,7 +12876,6 @@ 본가,100000000X 본거지,100000000X 본격,100000000X -본격화,100110000X 본고장,100000000X 본과,100000000X 본관,100000000X @@ -13571,7 +12910,6 @@ 본색,100000000X 본서,100000000X 본선,100000000X -본설계도,100110000X 본성,100000000X 본실,100000000X 본심,100000000X @@ -13581,7 +12919,6 @@ 본위,100000000X 본의,100000000X 본인,100000000X -본인부담금,100000000X 본전,100000000X 본점,100000000X 본지,100000000X @@ -13669,7 +13006,6 @@ 부,100100000X 부가,100110000X 부가가치,100000000X -부가가치생산성,100000000X 부가가치세,100000000X 부각,100110000X 부강,100100000X @@ -13692,7 +13028,6 @@ 부글거리,010000000X 부금,100000000X 부기,100100000X -부끄러움,100000000X 부끄럼,100000000X 부끄럼타,010000000X 부끄럽,010000000B @@ -13753,8 +13088,6 @@ 부마,100100000X 부메랑,100000000X 부모,100000000X -부모님,100000000X -부모덕,100000000X 부목,100000000X 부문,100100000X 부박,100100000X @@ -13883,7 +13216,6 @@ 부탄,100100000X 부통령,100000000X 부패,100110000X -부패방지법,100000000X 부풀,010000000X 부풀리,010000000X 부풀부풀,100000000X @@ -13912,7 +13244,6 @@ 북돋,010000000X 북돋우,010000000X 북동,100000000X -북동쪽,100000000X 북두칠성,100000000X 북미,100000000X 북반구,100000000X @@ -13944,7 +13275,6 @@ 북풍,100000000X 북한,100000000X 북해,100000000X -북핵문제,100010000X 북향,100100000X 분,100100000X 분가,100110000X @@ -13954,7 +13284,6 @@ 분격,100100000X 분과,100100000X 분교,100000000X -분교생,100000000X 분권,100100000X 분규,100000000X 분급,100110000X @@ -13986,14 +13315,12 @@ 분발,100100000X 분방,100100000X 분배,100110000X -분배액,100000000X 분변,100100000X 분별,100100000X 분봉,100100000X 분부,100100000X 분분,100100000X 분비,100110000X -분비물,100000000X 분사,100110000X 분산,100110000X 분서,100100000X @@ -14010,7 +13337,6 @@ 분양,100110000X 분양가,100000000X 분업,100100000X -분업화,100110000X 분연,100100000X 분열,100110000X 분열증,100000000X @@ -14157,7 +13483,6 @@ 불미,100100000X 불발,100110000X 불법,100100000X -불법화,100110000X 불변,100100000X 불볕,100000000X 불볕나,010000000X @@ -14380,16 +13705,12 @@ 비관,100100000X 비관적,100000000X 비교,100110000X -비교발생학,100000000X -비교음악학,100000000X -비교적,001000000X 비구,100000000X 비구니,100000000X 비구름,100000000X 비군사화,100000000X 비굴,100100000X 비극,100000000X -비극적,100000000X 비근,100100000X 비기,010000000X 비껴가,010000000X @@ -14440,7 +13761,6 @@ 비품,100100000X 비하,100100000X 비합리,100100000X -비합리적,010000000X 비행,100100000X 비행기,100000000X 비행기태우,010000000X @@ -14449,6 +13769,7 @@ 비현실적,100000000X 비호,100100000X 비화,100110000X +빅,100000000X 빈곤,100100000X 빈궁,100100000X 빈농,100000000X @@ -14840,9 +14161,6 @@ 사마귀알집,100000000X 사막,100000000X 사망,100100000X -사망률,100000000X -사망신고서,100000000X -사망자,100000000X 사먹,010000000X 사면,100110000X 사멸,100110000X @@ -14852,7 +14170,6 @@ 사무,100100000X 사무관,100000000X 사무국,100000000X -사무국장,100000000X 사무소,100000000X 사무실,100000000X 사무적,100000000X @@ -14935,7 +14252,6 @@ 사용량,100000000X 사용료,100000000X 사용자,100000000X -사용자비용,100000000X 사우나,100000000X 사운,100000000X 사운드,100000000X @@ -15037,7 +14353,7 @@ 사회개량주의,100000000X 사회인,100000000X 사회자,100000000X -사회주의경제권,100000000X +사회주의,100000000X 사회학,100000000X 사회화,100110000X 사후,100100000X @@ -15906,7 +15222,6 @@ 선거,100110000X 선거구,100000000X 선거권,100000000X -선거기탁금,100000000X 선거법,100000000X 선거전,100000000X 선견,100100000X @@ -16297,7 +15612,6 @@ 세간살이,100000000X 세계,100100000X 세계관,100000000X -세계관학,100000000X 세계사,100000000X 세계화,100110000X 세곡,100000000X @@ -16367,8 +15681,6 @@ 세속화,100110000X 세손,100000000X 세수,100100000X -세숫대야,100000000X -세숫비누,100000000X 세습,100110000X 세시,100000000X 세심,100100000X @@ -16544,7 +15856,6 @@ 소반,100000000X 소발기름,100000000X 소방,100110000X -소방대상물,100000000X 소방대원,100000000X 소방차,100000000X 소변,100000000X @@ -16567,9 +15878,6 @@ 소생,100110000X 소서,100100000X 소설,100100000X -소설가,100000000X -소설책,100000000X -소설화,100110000X 소소,100100000X 소속,100110000X 소송,100100000X @@ -16840,7 +16148,6 @@ 손부끄럽,010000000B 손빌리,010000000X 손빨래,100100000X -손빨래질,100000000X 손빼,010000000X 손뼉,100000000X 손뼉치,010000000X @@ -17239,7 +16546,6 @@ 수유기,100000000X 수육,100000000X 수은,100100000X -수은기압계,100000000X 수음,100100000X 수의,100100000X 수의학,100000000X @@ -17667,8 +16973,6 @@ 스펙터클영화,100000000X 스펙트럼,100000000X 스포츠,100000000X -스포츠맨,100000000X -스포츠형,100000000X 스포트라이트,100000000X 스포티,100100000X 스폰서,100000000X @@ -17881,8 +17185,6 @@ 시선,100100000X 시설,100110000X 시설물,100000000X -시설이용료,100000000X -시설투자비,100000000X 시세,100000000X 시소,100000000X 시속,100000000X @@ -17994,7 +17296,6 @@ 시험대,100000000X 시험보,010000000X 시험삼,010000000X -시험장소,100000000X 시험적,100000000X 시험지,100000000X 시험치,010000000X @@ -18026,7 +17327,6 @@ 식물성유,100000000X 식민,100100000X 식민지,100000000X -식민지화,100110000X 식별,100110000X 식별력,100000000X 식비,100000000X @@ -18127,7 +17427,6 @@ 신문,100110000X 신문당,100100000X 신문명,100000000X -신문배달원,100000000X 신문사,100000000X 신문지,100000000X 신문철,100000000X @@ -18469,7 +17768,6 @@ 심포니,100000000X 심포지엄,100000000X 심해,100000000X -심해퇴적물,100000000X 심혈,100000000X 심호흡,100100000X 심혼,100000000X @@ -19009,11 +18307,6 @@ 안기,010000000X 안기울기,100000000X 안내,100110000X -안내서,100000000X -안내소,100000000X -안내전광판,100000000X -안내판,100000000X -안내표지판,100000000X 안녕,100100000X 안달,100100000X 안달복달,100100000X @@ -19402,12 +18695,7 @@ 야경,100100000X 야광,100000000X 야광귀,100000000X -야광표지판,100000000X 야구,100100000X -야구공,100000000X -야구광,100000000X -야구단,100000000X -야구팀,100000000X 야권,100000000X 야근,100100000X 야기,100110000X @@ -19461,7 +18749,6 @@ 야자,100000000X 야적,100110000X 야전,100100000X -야전병원,100000000X 야채,100000000X 야투,100000000X 야트막,100100000X @@ -19481,7 +18768,6 @@ 약동,100110000X 약력,100000000X 약물,100000000X -약물알레르기,100000000X 약방,100000000X 약병,100000000X 약병아리,100000000X @@ -19562,7 +18848,6 @@ 양갱,100000000X 양계,100100000X 양계장,100000000X -양고기죽,100000000X 양곡,100000000X 양공주,100000000X 양국,100000000X @@ -19945,7 +19230,6 @@ 얼굴,100000000X 얼굴값,100000000X 얼굴색,100000000X -얼굴신경통,100000000X 얼굴짝,100000000X 얼기설기,100100000X 얼떨,100100000X @@ -20000,7 +19284,6 @@ 얽히고설키,010000000X 엄,100100000X 엄격,100100000X -엄격대위법,100000000X 엄금,100110000X 엄단,100100000X 엄동,100000000X @@ -20027,7 +19310,6 @@ 엄준,100100000X 엄중,100100000X 엄지,100000000X -엄지손가락,100000000X 엄처시하,100000000X 엄청나,010000000X 엄청스럽,010000000B @@ -20221,7 +19503,6 @@ 여름옷,100000000X 여름철,100000000X 여름타,010000000X -여름휴가철,100000000X 여리,010000000X 여망,100000000X 여명,100000000X @@ -24561,7 +23842,6 @@ 잠잠하,011000000X 잠재,100100000X 잠재력,100000000X -잠재성장력,100000000X 잠재우,010000000X 잠적,100100000X 잠정,100100000X @@ -25796,7 +25076,7 @@ 정공법,100000000X 정관,100100000X 정교,100100000X -정교롭,010000000 +정교롭,010000000B 정구,100100000X 정국,100100000X 정권,100100000X @@ -30545,9 +29825,6 @@ 크로키,100000000X 크롤,100000000X 크리스마스,100000000X -크리스마스실,100000000X -크리스마스이브,100000000X -크리스마스캐럴,100000000X 크리스천,100000000X 크리스털,100000000X 크리켓,100000000X @@ -30644,7 +29921,6 @@ 타,110000000X 타가,100000000X 타개,100110000X -타개책,100000000X 타격,100100000X 타결,100110000X 타계,100100000X @@ -31006,9 +30282,6 @@ 태아,100000000X 태안,100100000X 태양,100000000X -태양계,100000000X -태양력,100000000X -태양열,100000000X 태어나,010000000X 태업,100100000X 태연,100100000X @@ -32240,7 +31513,6 @@ 평년작,100000000X 평단,100100000X 평등,100100000X -평등선거제,100000000X 평등심,100000000X 평란,100110000X 평로,100000000X @@ -32322,7 +31594,6 @@ 폐가,100100000X 폐간,100110000X 폐강,100110000X -폐건전지,100000000X 폐결핵,100000000X 폐경,100000000X 폐경기,100000000X @@ -34370,7 +33641,6 @@ 혼숙,100100000X 혼식,100100000X 혼신,100100000X -혼신결혼,100000000X 혼야,100000000X 혼약,100110000X 혼연,100100000X Index: lucene/analysis/arirang/src/resources/org/apache/lucene/analysis/ko/dic/compounds.dic =================================================================== --- lucene/analysis/arirang/src/resources/org/apache/lucene/analysis/ko/dic/compounds.dic (������ 1521434) +++ lucene/analysis/arirang/src/resources/org/apache/lucene/analysis/ko/dic/compounds.dic (�۾� �纻) @@ -13,11 +13,831 @@ ! See the License for the specific language governing permissions and ! limitations under the License. ! -################### -밤하늘:밤,하늘 -경전철:경,전철 -가서명:가,서명 -가입국:가,입국 -갓김치:갓,김치 -과소비:과,소비 -고투자율:고투자,투자,투자율 \ No newline at end of file +S:R:DBXX +가건물:가,건물:0000 +가게문:가,게문:0000 +가게채:가,게채:0000 +가격대:가격,대:0000 +가격표:가격,표:0000 +가면극:가면,극:0000 +가면무:가면,무:0000 +가입비:가입,비:0000 +가입자:가입,자:0000 +가정법원:가정,법원:0000 +가족용:가족,용:0000 +가족적:가족,적:0000 +가주소:가,주소:0000 +가죽신:가죽,신:0000 +가서명:가,서명:1000 +가입국:가,입국:1000 +간염보균자:간염,보균자:0000 +감독관청:감독,관청:0000 +강의실:강의,실:0000 +강의평가서:강의,평가,서:0000 +개방적:개방,적:0000 +개방화:개방,화:0000 +개별화물:개별,화물:0000 +개인용:개인,용:0000 +개인전:개인,전:0000 +개척자:개척,자:0000 +개척지:개척,지:0000 +개헌안:개헌,안:0000 +개혁법안:개혁,법안:0000 +개혁안:개혁,안:0000 +개혁자:개혁,자:0000 +개혁파:개혁,파:0000 +거래량:거래,량:0000 +거래소:거래,소:0000 +거래처:거래,처:0000 +거리응원단:거리,응원단:0000 +거부감:거부,감:0000 +거부권:거부,권:0000 +거스름돈:거스름,돈:0000 +건국유공자:건국,유공자:0000 +건설부:건설,부:0000 +건설업:건설,업:0000 +건습구습도계:건습구,습도,계:0000 +건축가:건축,가:0000 +건축물:건축,물:0000 +건축사:건축,사:0000 +건축업:건축,업:1000 +검찰청사:검찰,청사:0000 +격음화현상:격음화,현상:0000 +결산표:결산,표:0000 +결석계:결석,계:0000 +결승선:결승,선:0000 +결승전:결승,전:0000 +결의문:결의,문:0000 +결의안:결의,안:0000 +결혼식:결혼,식:1000 +경영인:경영인:0000 +경영자:경영자:0000 +경영주:경영주:0000 +경영진:경영진:0000 +고교연맹전:고교,연맹전:0000 +골프장:골프,장:0000 +곰비늘고사리:곰비늘,고사리:0000 +과소비:과,소비:1000 +관광객:관광,객:0000 +관광지:관광,지:0000 +관습범죄인:관습,범죄,인:0000 +관습화:관습,화:0000 +광고료:광고,료:0000 +광고문:광고,문:0000 +광고비:광고,비:0000 +광고성:광고,성:0000 +광고용:광고,용:0000 +광고주:광고,주:0000 +교육비:교육,비:0000 +교육자:교육,자:0000 +교육장:교육,장:0000 +교육청:교육,청:0000 +교육학:교육,학:0000 +교통난:교통,난:0000 +교통량:교통,량:0000 +교통비:교통,비:0000 +고투자율:고,투자,율:0000 +경전철:경,전철:0000 +갓김치:갓,김치:0000 +갖저고리:갖저고리:0000 +밤하늘:밤,하늘:0000 +개개인:개,개인:0000 +개고기:개,고기:0000 +개고사리:개,고사리:0000 +개관적:개관적:0000 +개구리때:개구리,때:0000 +개구리밥:개구리,밥:0000 +개그맨:개그,맨:0000 +개기월식:개기,월식:0000 +개기일식:개기,일식:0000 +개념화:개념,화:1100 +개떡수제비:개떡수제비:0000 +개똥벌레:개똥,벌레:0000 +개똥지빠귀:개똥,지빠귀:0000 +개막식:개막,식:0000 +개망신:개망신:1000 +개머루덩굴:개머루,덩굴:0000 +개미굴:개미,굴:0000 +개발도상국:개발도상국:0000 +개발자:개발,자:0000 +개밥도둑:개,밥,도둑:0000 +개별화:개별,화:0000 +개봉관:개봉,관:0000 +개불상놈:개,불,상놈:0000 +개사냥:개,사냥:0000 +개선문:개선,문:0000 +개선안:개선,안:0000 +개성적:개성,적:0000 +개연성;개연성:0000 +개울가:개울,가:0000 +개울물:개울,물:0000 +개정령;개정,령:0000 +개정안:개정,안:0000 +개정판:개정,판:0000 +개죽음:개,죽음:0000 +개찰구:개찰,구:0000 +개천절:개천,절:0000 +개코망신:개코,망신:0000 +개헤엄:개,헤엄:0000 +객공잡이:객공,잡이:0000 +객관성:객관,성:0000 +객관적:객관,적:0000 +객관화:객관,화:1100 +객지살이:객지살이:1000 +갯마을:갯,마을:0000 +갯바위:갯,바위:0000 +갯버들:갯,버들:0000 +거들치마:거들,치마:0000 +거듭제곱:거듭,제곱:0000 +거리감:거리,감:0000 +거문고자리유성군:거문고,자리,유성,군:0000 +거미줄:거미,줄:0000 +거북살:거북,살:0000 +거북상:거북,상:0000 +거북이:거북,이:0000 +거족적:거족,적:0000 +거주지:거주,지:0000 +거지반:거지,반:0000 +거짓말:거짓말:1000 +거짓말쟁이:거짓,말,쟁이:0000 +거짓부렁거짓부렁:거짓,부렁:0000 +걱정거리:걱정,거리:0000 +걱정꾸러기:걱정,꾸러기:0000 +건가래질:건,가래,질:0000 +건강말:건강,말:0000 +건달패:건달,패:0000 +건어물:건,어물:0000 +건의서:건의,서:0000 +건조기:건조,기:0000 +건포도:건,포도:0000 +검도복:검도,복:0000 +검문소:검문,소:0000 +검바늘골:검,바늘,골:0000 +검버섯:검,버섯:0000 +검사장:검사,장:0000 +게감정:게,감정:0000 +게거품:게,거품:0000 +게시물:게시,물:0000 +게시판:게시,판:0000 +게으름뱅이:게으름,뱅이:0000 +겨울잠:겨울,잠:0000 +겨울철:겨울,철:0000 +격변화:격변,화,1100 +견습공:견습,공:0000 +결막염:결막,염:0000 +결벽증:결벽,증:0000 +결사적:결사,적:0000 +겹간통:겹,간통:1000 +겹사돈:겹사돈:0000 +경각심:경각,심:0000 +경계선:경계,선:0000 +경계심:경계,심:0000 +경계적:경계,적:0000 +경공업:경,공업:0000 +경금속:경,금속:0000 +경기관총:경,기관총:0000 +경기장:경기,장:0000 +경동맥:경,동맥:0000 +경로당:경로,당:0000 +경로석:경로,석:0000 +경마장:경마,장:0000 +경무장:경무,장:0000 +경범죄:경,범죄:0000 +경비대:경비,대:0000 +경비원:경비,원:0000 +경비정:경비,정:0000 +경비행기:경,비행기:0000 +경사도:경사,도:0000 +경사면:경사,면:0000 +경음악:경,음악:0000 +경음화:경음,화:1100 +경작지:경작,지:0000 +경쟁력:경쟁,력:0000 +경쟁률:경쟁,률:0000 +경쟁사:경쟁,사:0000 +경쟁심:경쟁,심:0000 +경쟁자:경쟁,자:0000 +경제권:경제,권:0000 +경제기획원:경제,기획원:0000 +경제력:경제,력:0000 +경제인:경제,인:0000 +경제적:경제,적:0000 +경제학:경제,학:0000 +경찰관:경찰,관:0000 +경찰서:경찰,서:0000 +경호실:경호,실:0000 +경호원:경호,원:0000 +계기판:계기,판:0000 +계량기:계량,기:0000 +계량컵:계량,컵:0000 +계량화:계량,화:0000 +계산기:계산,기:0000 +계산서:계산,서:0000 +계산속:계산,속:0000 +계약금:계약,금:0000 +계약서:계약,서:0000 +계엄령:계엄,령:0000 +계약설:계약,설:0000 +계열사:계열,사:0000 +계열화:계열,화:0000 +계층적:계층,적:0000 +계층화:계층,화:0000 +계획서:계획,서:0000 +계획성:계획,성:0000 +고가품:고가,품:0000 +고고학:고고,학:0000 +고교생:고교,생:0000 +고급품:고급,품:0000 +고급화:고급,화:0000 +고기압:고,기압:0000 +고대극:고대,극:0000 +고대인:고대,인:0000 +고도화:고도,화:1100 +고립화:고립,화:1100 +고무신:고무,신:0000 +고무신짝:고무,신,짝:0000 +고무적:고무,적:0000 +고무줄:고무,줄:0000 +고물거리:고물,거리:0000 +고물상:고물,상:0000 +고발장:고발,장:0000 +고별사:고별,사:0000 +고별식:고별,식:0000 +고생문:고생,문:0000 +고생물:고,생물:0000 +고서점:고,서점:0000 +고성능:고,성능:0000 +고성방가:고성,방가:0000 +고소장:고소,장:0000 +고속화:고속,화:0000 +고아원:고아,원:0000 +고압계:고압,계:0000 +고용자:고용,자:0000 +고용주:고용,주:0000 +고위직:고위,직:0000 +고전주의:고전,주의:0000 +고종사촌:고종,사촌:0000 +고지서:고지,서:0000 +고질화:고질,화:1100 +고집쟁이:고집,쟁이:0000 +고차원적:고차원,적:0000 +고체화:고체,화:0000 +고추장:고추,장:0000 +고추장볶이:고추,장,볶이:0000 +고판본:고,판본:0000 +고품격:고,품격:0000 +고혈압:고,혈압:0000 +고화질:고,화질:0000 +곡마단:곡마,단:0000 +곡면체:곡면,체:0000 +곡선미:곡선,미:0000 +곤봉딱정벌레:곤봉,딱정,벌레:0000 +골개고사리:골개,고사리:0000 +골격근:골격,근:0000 +골막염:골막,염:0000 +골목길:골목,길:0000 +골목쟁이:골목,쟁이:0000 +골조직:골,조직:0000 +공간미:공간,미:0000 +공간성:공간,성:0000 +공간적:공간,적:0000 +공개장:공개,장:0000 +공개적:공개,적:0000 +공격적:공격,적:0000 +공고화:공고,화:0000 +공권력:공권,력:0000 +공급량:공급,량:0000 +공급원:공급,원:0000 +공기업:공,기업:0000 +공기총:공기,총:0000 +공동작:공동,작:0000 +공동체:공동,체:0000 +공동화:공동,화:0000 +공로자:공로,자:0000 +공론화:공론,화:1100 +공리주의:공리,주의:0000 +공무국:공무,국:0000 +공무원:공무,원:0000 +공복감:공복,감:0000 +공사비:공사,비:0000 +공사장:공사,장:0000 +공산물:공산,물:0000 +공산품:공산,품:0000 +공산화:공산,화:0000 +공소권:공소,권:0000 +공소장:공소,장:0000 +공수표:공,수표:0000 +공식적:공식,적:0000 +공식화:공식,화:0000 +공업계:공업,계:0000 +공업국:공업,국:0000 +공업용:공업,용:0000 +공업화:공업,화:0000 +공연장:공연,장:0000 +공예품:공예,품:0000 +공유폴더:공유,폴더:0000 +공익성:공익,성:0000 +공작물:공작,물:0000 +공작선:공작,선:0000 +공작원:공작,원:0000 +공장장:공장,장:0000 +공제금:공제,금:0000 +공중볼:공중,볼:0000 +공증인:공증,인:0000 +공직자:공직,자:0000 +공창제도:공창,제도:0000 +공통점:공통,점:0000 +공포감:공포,감:0000 +공학적:공학,적:0000 +과거사:과거,사:0000 +과립화:과립,화:1100 +과밀화:과밀,화:1100 +과부댁:과부,댁:0000 +과부족:과,부족:1000 +과수댁:과수,댁:0000 +과수밭:과수,밭:1000 +과수원:과수,원:0000 +과실주:과실,주:0000 +과일즙:과일,즙:0000 +과장법:과장,법:0000 +과징금:과징,금:0000 +과학기술처:과학,기술,처:0000 +과학사:과학,사:0000 +과학자:과학,자:0000 +과학적:과학,적:0000 +관계관:관계,관:0000 +관계법:관계,법:0000 +관계자:관계,자:0000 +관념론:관념,론:0000 +관념적:관념,적:0000 +관능적:관능,적:0000 +관람객:관람,객:0000 +관련자:관련,자:0000 +관례화:관례,화:1100 +관료화:관료,화:1100 +관리소:관리,소:0000 +관리인:관리,인:0000 +관리자:관리,자:0000 +관리직:관리,직:0000 +관물때:관물,때:0000 +관솔불:관솔,불:0000 +관심거리:관심,거리:0000 +관심사:관심,사:0000 +관악기:관,악기:0000 +관용구:관용,구:0000 +관용적:관용,적:0000 +관절염:관절,염:0000 +관제탑:관제,탑:0000 +관찰도:관찰,도:0000 +관찰자:관찰,자:0000 +관측기:관측,기:0000 +관측통:관측,통:0000 +관통상:관통,상:0000 +관행화:관행,화:1100 +관현악단:관현악,단:0000 +관형사형:관형사,형:0000 +광견병:광견,병:0000 +광공업:광,공업:0000 +광대불나방:광대불,나방:0000 +광대뼈:광대,뼈:0000 +광등뼈:광등,뼈:0000 +광란적:광란,적:0000 +광물질:광,물질:0000 +광복군;광복,군:0000 +광복절:광복,절:0000 +광산업:광산,업:0000 +광산촌:광산,촌:0000 +광속도:광,속도:0000 +광역화:광역,화:1100 +광입자:광,입자:0000 +괴현상:괴,현상:0000 +교과목;교과,목:0000 +교과서:교과,서:0000 +교도관:교도,관:0000 +교도소:교도,소:0000 +교무실:교무,실:0000 +교배종:교배,종:0000 +교비생:교비,생:0000 +교수대:교수,대:0000 +교수진:교수,진:0000 +교육감:교육,감:0000 +교육부:교육,부:0000 +교육세:교육,세:0000 +교장실:교장,실:0000 +교정본:교정,본:0000 +교정쇄:교정,쇄:0000 +교정술:교정,술:0000 +교정지:교정,지:0000 +교조적:교조,적:0000 +교조주의:교조,주의:0000 +교직원:교직,원:0000 +교통로:교통,로:0000 +교통부:교통,부:0000 +교향악단:교향악,단:0000 +교환기:교환,기:0000 +교회당:교회,당:0000 +교회력:교회,력:0000 +구강암:구강,암:0000 +구강염:구강,염:0000 +구개음화:구개음,화:1100 +구경꾼:구경,꾼:0000 +구급약:구급,약:0000 +구급차:구급,차:0000 +구김살:구김,살:0000 +구김새:구김,새:0000 +구단주:구단,주:0000 +구대륙:구,대륙:0000 +구독료:구독,료:0000 +구두약:구두,약:0000 +구두점:구두,점:0000 +구두창:구두,창:0000 +구루병:구루,병:0000 +구름골풀:구름골,풀:0000 +구름판:구름,판:0000 +구매력:구매,력:0000 +구매자:구매,자:0000 +구멍돌도끼:구멍,돌,도끼:0000 +구면각:구면,각:0000 +구명구:구명,구:0000 +구명정:구명,정:0000 +구성원:구성,원:0000 +구성체:구성,체:0000 +구시대:구,시대:0000 +구원병:구원,병:0000 +구조대:구조,대:0000 +구조물:구조,물:0000 +구조선:구조,선:0000 +구조화:구조,화:1100 +구체성:구체,성:0000 +구체적:구체,적:0000 +구체화:구체,화:1100 +국가적:국가,적:0000 +국경선:국경,선:0000 +국고금:국고,금:0000 +국문과:국문,과:0000 +국문학:국문,학:0000 +국민성:국민,성:0000 +국방부:국방,부:0000 +국방색:국방,색:0000 +국방성:국방,성:0000 +국부론:국부,론:0000 +국산품:국산,품:0000 +국산화:국산,화:1100 +국세청:국세,청:0000 +국어학:국어,학:0000 +국영화:국영,화:1100 +국유림:국유,림:0000 +국유화:국유,화:1100 +국제법:국제,법:0000 +국제선:국제,선:0000 +국제적:국제,적:0000 +국제항:국제,항:0000 +국제화:국제,화:1100 +국한문체:국,한문,체:0000 +국화전:국화,전:0000 +군가집:군가,집:0000 +군다리미질:군,다리미,질:1000 +군담소설:군담,소설:0000 +군량미:군량,미:0000 +군령장:군령,장:0000 +군불솥:군불,솥:0000 +군사력:군사,력:0000 +군용기:군용,기:0000 +군용품:군용,품:0000 +군주국:군주,국:0000 +군주제:군주,제:0000 +군청색:군청,색:0000 +군현제도:군현,제도:1000 +굴다리:굴,다리:0000 +굴지성:굴지,성:0000 +굴참나무:굴,참나무:0000 +굵은소금:굵은,소금:0000 +궁극적:궁극,적:0000 +권력자:권력,자:0000 +권리금:권리,금:0000 +권모술수:권모,술수:0000 +권위자:권위,자:0000 +권위주의:권위,주의:0000 +궤변가:궤변,가:0000 +궤변론자:궤변,론자:0000 +귀성객:귀성,객:0000 +귀양살이:귀양,살이:1000 +귀염둥이:귀염,둥이:0000 +귀염성:귀염,성:0000 +귀족적:귀족,적:0000 +귀족화:귀족,화:1100 +귀틀집:귀틀,집:0000 +규범화:규범,화:1100 +규칙적:규칙,적:0000 +규칙화:규칙,화:1100 +균일화:균일,화:1100 +균형적:균형,적:0000 +그늘개고사리:그늘,개,고사리:0000 +그리스정교회:그리스,정교회:0000 +그림책:그림,책:0000 +그물망:그물,망:0000 +그믐밤:그믐,밤:0000 +극기후:극,기후:1000 +극단적:극단,적:0000 +극단화:극단,화:1100 +극대화:극대,화:1100 +극락정토:극락,정토:0000 +극망원경:극,망원경:0000 +극방정식:극,방정식:0000 +극예술연구회:극예술,연구회:0000 +극장가:극장,가:0000 +근대사:근대,사:0000 +근대화:근대,화:1100 +근로권:근로,권:1000 +근로자:근로,자:0000 +근무자:근무,자:0000 +근사값:근사,값:0000 +근친상간:근친,상간:0000 +근친혼:근친,혼:0000 +글씨체:글씨,체:0000 +글재주:글,재주:0000 +금강아지풀:금,강아지,풀:0000 +금개구리:금,개구리:0000 +금광석:금광,석:0000 +금메달:금,메달:0000 +금반지:금,반지:0000 +금빛돌비늘:금빛,돌,비늘:0000 +금속성:금속성:0000 +금욕주의자:금욕,주의자:0000 +금융계:금융,계:0000 +금융업:금융,업:0000 +금융인:금융,인:0000 +금은방:금은,방:0000 +금지령:금지,령:0000 +금지법:금지,법:0000 +급경사:급,경사:0000 +급등세:급등,세:1000 +급브레이크:급,브레이크:0000 +급상승:급,상승:1100 +급성장:급,성장:1000 +급속도:급,속도:0000 +급제동:급,제동:0000 +급진적:급,진적:1100 +급회전:급,회전:0000 +긍정문:긍정,문:0000 +긍지심:긍지,심:0000 +기갑병:기갑,병:0000 +기계적:기계,적:0000 +기계총:기계,총:0000 +기계화:기계,화:1100 +기공식:기공,식:0000 +기관사:기관,사:0000 +기관실:기관,실:0000 +기관원:기관,원:0000 +기관장:기관,장:0000 +기관지염:기관지,염:0000 +기념관:기념,관:0000 +기념비:기념,비:0000 +기념식:기념,식:0000 +기념일:기념,일:0000 +기념장:기념,장:0000 +기념제:기념,제:0000 +기념품:기념,품:0000 +기능성:기능,성:0000 +기능주의:기능,주의:0000 +기대감:기대,감:0000 +기독교계:기독교,계:0000 +기독교인:기독교,인:0000 +기동력:기동,력:0000 +기득권:기득,권:0000 +기름기:기름,기:0000 +기름띠:기름,띠:0000 +기름칠:기름,칠:1000 +기본권:기본,권:0000 +기본기:기본,기:0000 +기본법:기본,법:0000 +기부금:기부,금:0000 +기부입학제:기부,입학,제:0000 +기사화:기사,화:1100 +기상대:기상,대:0000 +기상도:기상,도:0000 +기생집:기생,집:0000 +기생충:기생,충:0000 +기성복:기성,복:0000 +기성품:기성,품:0000 +기성회:기성,회:0000 +기숙사:기숙,사:0000 +기술원:기술,원:0000 +기술자:기술,자:0000 +기술적:기술,적:0000 +기술진:기술,진:0000 +기암괴석:기암,괴석:0000 +기암절벽:기암,절벽:0000 +기억력:기억,력:0000 +기업가:기업,가:0000 +기업인:기업,인:0000 +기업주:기업,주:0000 +기업체:기업,체:0000 +기와집:기와,집:0000 +기원전:기원,전:0000 +기원후:기원,후:0000 +기자단:기자,단:0000 +기정사실화:기정,사실,화:1100 +기차표:기차,표:0000 +기체화:기체,화:1100 +기하학:기하,학:0000 +기행문:기행,문:0000 +기형아:기형,아:0000 +기형적:기형,적:0000 +긴장감:긴장,감:0000 +깔때기홈통:깔때기,홈통:0000 +깡보리밥:깡,보리밥:0000 +깨소금:깨,소금:0000 +꽁보리밥:꽁,보리밥:0000 +나이팅게일상:나이팅게일,상:0000 +나체상:나체,상:0000 +나체화:나체,화:0000 +나팔수:나팔,수:0000 +낙관론:낙관,론:0000 +날다람쥐:날,다람쥐:0000 +남극권:남극,권:0000 +낭만주의자:낭만,주의자:0000 +내종사촌:내종,사촌:0000 +냉동실:냉동,실:0000 +냉동육:냉동,육:0000 +냉동차:냉동,차:0000 +냉방기:냉방,기:0000 +냉방차:냉방,차:0000 +냉장고:냉장,고:0000 +냉장실:냉장,실:0000 +냉장육:냉장,육:0000 +노동계:노동,계:0000 +노동권:노동,권:0000 +노동량:노동,량:0000 +노동력:노동,력:0000 +노동법:노동,법:0000 +노동부:노동,부:0000 +노동자:노동,자:0000 +노동절:노동,절:0000 +논리성:논리,성:0000 +논리정연:논리,정연:1000 +논리학:논리,학:0000 +논리화:논리,화:1100 +농구대:농구,대:0000 +농구화:농구,화:0000 +농림수산부:농림,수산부:0000 +농림업:농림,업:0000 +농업용:농업,용:0000 +능력급:능력,급:0000 +능력형:능력,형:0000 +능률적:능률,적:0000 +능률화:능률,화:1100 +다양화:다양,화:1100 +단결권:단결,권:0000 +단결력:단결,력:0000 +단계적:단계,적:0000 +단세포적:단세포,적:0000 +단순화:단순,화:1100 +단체복:단체,복:0000 +단체장:단체,장:0000 +당뇨병:당뇨,병:0000 +대량관찰법:대량,관찰법:0000 +대량화:대량,화:1100 +대설주의보:대설,주의보:0000 +대학교:대학,학교:0000 +대학생:대학,학생:0000 +대학원:대학,원:0000 +대형화:대형,화:1100 +대혼란:대,혼란:0000 +대환영:대,환영:1000 +대활약:대,활약:0000 +도로교통법:도로,교통,법:0000 +도로표지판:도로,표지,판:0000 +도매상:도매,상:0000 +도매업:도매,업:0000 +도서관:도서,관:0000 +도서상품권:도서,상품,권:0000 +도서실:도서,실:0000 +동맥경화증:동맥,경화,증:0000 +동물성유:동물,성,유:0000 +동물원:동물,원:0000 +동물적:동물,적:0000 +동물해부학:동물,해부,학:0000 +동성연애자:동성,연애,자:0000 +만화가:만화,가:0000 +만화책:만화,책:0000 +매춘부:매춘,부:0000 +매춘업소:매춘,업소:0000 +매출액:매출,액:0000 +매표소:매표,소:0000 +매혹적:매혹,적:0000 +맹장염:맹장,염:0000 +목욕실:목욕,실:0000 +목욕탕:목욕,탕:0000 +무기징역형:무기,징역,형:0000 +무언무용극:무언,무용,극:0000 +무용가:무용,가:0000 +무용단:무용,단:0000 +무용화:무용,화:1100 +무의식심리학:무의식,심리,학:0000 +문화부:문화,부:0000 +문화원:문화,원:0000 +문화월드컵:문화,월드컵:1000 +문화인:문화,인:0000 +문화재:문화,재:0000 +문화재청:문화,재,청:1100 +민주적:민주,적:0000 +민주화:민주,화:1100 +밀짚모자:밀짚,모자:0000 +발명왕:발명,왕:0000 +방광암:방광,암:0000 +방문객:방문,객:0000 +백지화:백지,화:1100 +버스정류소:버스,정류소:0000 +벌금형:벌금,형:0000 +범발톱:범,발톱:0000 +범죄시:범죄,시:1100 +범죄예방책:범죄,예방,책:0000 +범죄자:범죄,자:0000 +범죄형:범죄,형:0000 +범주화:범주,화:1100 +벽전화기:벽,전화기:0000 +병역기피자:병역,기피자:0000 +병역비리:병역,비리:1000 +병역특례자:병역,특례자:0000 +병적기록부:병적,기록,부:0000 +보세건설장:보세,건설,장:0000 +보통지방자치단체:보통,지방,자치,단체:0000 +보험금:보험,금:0000 +보험료:보험,료:0000 +보험설계사:보험,설계사:0000 +보험외판원:보험,외판원:0000 +복권판매소:복권,판매소:0000 +복사앵두나무:복사,앵두,나무:1000 +복염색체:복,염색체:0000 +본격화:본격,화:1100 +본설계도:본,설계도:1100 +본인부담금:본인,부담금:0000 +부가가치생산성:부가가치,생산성:0000 +부모님:부모,님:0000 +부모덕:부모,덕:0000 +부패방지법:부패,방지,법:0000 +북동쪽:북쪽,동쪽:0000 +북핵문제:북핵,문제:0000 +분교생:분교,생:0000 +분배액:분배,액:0000 +분비물:분비,물:0000 +분업화:분업,화:1100 +불법화:불법,화:1100 +비교발생학:비교,발생학:0000 +비교음악학:비교,음악학:0000 +비교적:비교,적:001000000X +비극적:비극,적:0000 +비합리적:비,합리적:0000 +빅데이터:빅,데이터:0000 +사망률:사망,률:0000 +사망신고서:사망,신고서:0000 +사망자:사망,자:0000 +사무국장:사무국,국장:0000 +사용자비용:사용자,비용:0000 +사회주의경제권:사회주의,경제,권:0000 +선거기탁금:선거,기탁,금:0000 +세계관학:세계관,학:0000 +세숫대야:세수,대야:0000 +세숫비누:세수,비누:0000 +소방대상물:소방,대상,물:0000 +소설가:소설,가:0000 +소설책:소설,책:0000 +소설화:소설,화:1100 +손빨래질:손,빨래,질:0000 +수은기압계:수은,기압,계:0000 +스포츠맨:스포츠,맨:0000 +스포츠형:스포츠,형:0000 +시설이용료:시설,이용,료:0000 +시설투자비:시설,투자,비:0000 +식민지화:식민지,화:1100 +신문배달원:신문,배달,원:0000 +심해퇴적물:심해,퇴적,물:0000 +안내서:안내,서:0000 +안내소:안내,소:0000 +안내전광판:안내,전광,판:0000 +안내판:안내,판:0000 +안내표지판:안내,표지,판:0000 +야광표지판:야광,표지,판:0000 +야구공:야구,공:0000 +야구광:야구,광:0000 +야구단:야구,단:0000 +야구팀:야구,팀:0000 +야전병원:야전,병원:0000 +약물알레르기:약물,알레르기:0000 +양고기죽:양고기,죽:0000 +얼굴신경통:얼굴,신경통:0000 +엄격대위법:엄격,대위법:0000 +엄지손가락:엄지,손가락:0000 +여름휴가철:여름,휴가철:0000 +잠재성장력:잠재,성장력:0000 +크리스마스실:크리스마스,실:0000 +크리스마스이브:크리스마스,이브:0000 +크리스마스캐럴:크리스마스,캐럴:0000 +타개책:타개,책:0000 +태양계:태양,계:0000 +태양력:태양,력:0000 +태양열:태양,열:0000 +평등선거제:평등,선거,제:0000 +폐건전지:폐,건전지:0000 +혼신결혼:혼신,결혼:0000 \ No newline at end of file