You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2013/05/06 00:26:36 UTC
svn commit: r1479410 [10/10] - in
/lucene/dev/branches/lucene4956/lucene/analysis/arirang: ./
src/java/org/apache/lucene/analysis/kr/
src/java/org/apache/lucene/analysis/kr/morph/
src/java/org/apache/lucene/analysis/kr/tagging/ src/java/org/apache/luce...
Modified: lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/kr/utils/Utilities.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/kr/utils/Utilities.java?rev=1479410&r1=1479409&r2=1479410&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/kr/utils/Utilities.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/kr/utils/Utilities.java Sun May 5 22:26:35 2013
@@ -23,118 +23,117 @@ import org.apache.lucene.analysis.kr.mor
public class Utilities {
- public static String arrayToString(String[] strs) {
- StringBuffer sb = new StringBuffer();
- for(String str:strs) {
- sb.append(str);
- }
- return sb.toString();
- }
-
- public static AnalysisOutput cloneOutput(AnalysisOutput o) throws MorphException {
- try {
- return o.clone();
- } catch (CloneNotSupportedException e) {
- throw new MorphException(e.getMessage(),e);
- }
- }
-
- public static String buildOutputString(AnalysisOutput o) {
-
+ public static String arrayToString(String[] strs) {
+ StringBuffer sb = new StringBuffer();
+ for(String str:strs) {
+ sb.append(str);
+ }
+ return sb.toString();
+ }
+
+ public static AnalysisOutput cloneOutput(AnalysisOutput o) throws MorphException {
+ try {
+ return o.clone();
+ } catch (CloneNotSupportedException e) {
+ throw new MorphException(e.getMessage(),e);
+ }
+ }
+
+ public static String buildOutputString(AnalysisOutput o) {
+
- StringBuffer buff = new StringBuffer();
-
- buff.append(MorphUtil.buildTypeString(o.getStem(),o.getPos()));
- if(o.getNsfx()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getNsfx(),PatternConstants.POS_SFX_N));
-
- if(o.getPatn()==PatternConstants.PTN_NJ || o.getPatn()==PatternConstants.PTN_ADVJ) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
- }else if(o.getPatn()==PatternConstants.PTN_NSM) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getVsfx(),PatternConstants.POS_SFX_V));
- if(o.getPomi()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
- }else if(o.getPatn()==PatternConstants.PTN_NSMJ) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getVsfx(),PatternConstants.POS_SFX_V));
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
- }else if(o.getPatn()==PatternConstants.PTN_NSMXM) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getVsfx(),PatternConstants.POS_SFX_V));
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_COPULA));
- buff.append(",").append(MorphUtil.buildTypeString(o.getXverb(),PatternConstants.POS_XVERB));
- if(o.getPomi()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
- }else if(o.getPatn()==PatternConstants.PTN_NJCM) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_SFX_V));
- if(o.getPomi()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
- }else if(o.getPatn()==PatternConstants.PTN_NSMXMJ) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getVsfx(),PatternConstants.POS_SFX_V));
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(1),PatternConstants.POS_COPULA));
- buff.append(",").append(MorphUtil.buildTypeString(o.getXverb(),PatternConstants.POS_XVERB));
- if(o.getPomi()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
- }else if(o.getPatn()==PatternConstants.PTN_VM) {
- if(o.getPomi()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
- }else if(o.getPatn()==PatternConstants.PTN_VMJ) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
- }else if(o.getPatn()==PatternConstants.PTN_VMCM) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(1),PatternConstants.POS_SFX_N));
- if(o.getPomi()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
- }else if(o.getPatn()==PatternConstants.PTN_VMXM) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_COPULA));
- buff.append(",").append(MorphUtil.buildTypeString(o.getXverb(),PatternConstants.POS_XVERB));
- if(o.getPomi()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
- }else if(o.getPatn()==PatternConstants.PTN_VMXMJ) {
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(1),PatternConstants.POS_COPULA));
- buff.append(",").append(MorphUtil.buildTypeString(o.getXverb(),PatternConstants.POS_XVERB));
- if(o.getPomi()!=null)
- buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
- buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
- }
- return buff.toString();
-
- }
-
- // -----------------------------------------------------------------------
- /**
- * <p>
- * Gets a System property, defaulting to <code>null</code> if the property cannot be read.
- * </p>
- *
- * <p>
- * If a <code>SecurityException</code> is caught, the return value is <code>null</code> and a message is written to
- * <code>System.err</code>.
- * </p>
- *
- * @param property
- * the system property name
- * @return the system property value or <code>null</code> if a security problem occurs
- */
- public static String getSystemProperty(String property) {
- try {
- return System.getProperty(property);
- } catch (SecurityException ex) {
- // we are not allowed to look at this property
- System.err.println("Caught a SecurityException reading the system property '" + property
- + "'; the SystemUtils property value will default to null.");
- return null;
- }
- }
-
+ StringBuffer buff = new StringBuffer();
+
+ buff.append(MorphUtil.buildTypeString(o.getStem(),o.getPos()));
+ if(o.getNsfx()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getNsfx(),PatternConstants.POS_SFX_N));
+
+ if(o.getPatn()==PatternConstants.PTN_NJ || o.getPatn()==PatternConstants.PTN_ADVJ) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
+ }else if(o.getPatn()==PatternConstants.PTN_NSM) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getVsfx(),PatternConstants.POS_SFX_V));
+ if(o.getPomi()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
+ }else if(o.getPatn()==PatternConstants.PTN_NSMJ) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getVsfx(),PatternConstants.POS_SFX_V));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
+ }else if(o.getPatn()==PatternConstants.PTN_NSMXM) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getVsfx(),PatternConstants.POS_SFX_V));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_COPULA));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getXverb(),PatternConstants.POS_XVERB));
+ if(o.getPomi()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
+ }else if(o.getPatn()==PatternConstants.PTN_NJCM) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_SFX_V));
+ if(o.getPomi()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
+ }else if(o.getPatn()==PatternConstants.PTN_NSMXMJ) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getVsfx(),PatternConstants.POS_SFX_V));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(1),PatternConstants.POS_COPULA));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getXverb(),PatternConstants.POS_XVERB));
+ if(o.getPomi()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
+ }else if(o.getPatn()==PatternConstants.PTN_VM) {
+ if(o.getPomi()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
+ }else if(o.getPatn()==PatternConstants.PTN_VMJ) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
+ }else if(o.getPatn()==PatternConstants.PTN_VMCM) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(1),PatternConstants.POS_SFX_N));
+ if(o.getPomi()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
+ }else if(o.getPatn()==PatternConstants.PTN_VMXM) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_COPULA));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getXverb(),PatternConstants.POS_XVERB));
+ if(o.getPomi()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getEomi(),PatternConstants.POS_EOMI));
+ }else if(o.getPatn()==PatternConstants.PTN_VMXMJ) {
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(1),PatternConstants.POS_COPULA));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getXverb(),PatternConstants.POS_XVERB));
+ if(o.getPomi()!=null)
+ buff.append(",").append(MorphUtil.buildTypeString(o.getPomi(),PatternConstants.POS_PEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getElist().get(0),PatternConstants.POS_NEOMI));
+ buff.append(",").append(MorphUtil.buildTypeString(o.getJosa(),PatternConstants.POS_JOSA));
+ }
+ return buff.toString();
+
+ }
+
+ // -----------------------------------------------------------------------
+ /**
+ * <p>
+ * Gets a System property, defaulting to <code>null</code> if the property cannot be read.
+ * </p>
+ *
+ * <p>
+ * If a <code>SecurityException</code> is caught, the return value is <code>null</code> and a message is written to
+ * <code>System.err</code>.
+ * </p>
+ *
+ * @param property
+ * the system property name
+ * @return the system property value or <code>null</code> if a security problem occurs
+ */
+ public static String getSystemProperty(String property) {
+ try {
+ return System.getProperty(property);
+ } catch (SecurityException ex) {
+ // we are not allowed to look at this property
+ System.err.println("Caught a SecurityException reading the system property '" + property
+ + "'; the SystemUtils property value will default to null.");
+ return null;
+ }
+ }
}
Modified: lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/kr/utils/VerbUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/kr/utils/VerbUtil.java?rev=1479410&r1=1479409&r2=1479410&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/kr/utils/VerbUtil.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/kr/utils/VerbUtil.java Sun May 5 22:26:35 2013
@@ -28,277 +28,276 @@ import org.apache.lucene.analysis.kr.mor
public class VerbUtil {
- public static final Map verbSuffix = new HashMap();
-
- public static final Map XVerb = new HashMap();
-
- static {
- String[] suffixs = {
- "ì´","í","ë","ë´", "ë", "ì¤ë½","ìí¤","ì","ì","ê°","ë¹í","ë§í","ë리","ë°","ì§"};
- for(int i=0;i<suffixs.length;i++) verbSuffix.put(suffixs[i], suffixs[i]);
-
- String[] xverbs = {"ì¤","ë´","주","ë³´","ì§","ì¤ë¥´","ì¬ë¦¬"};
- for(int i=0;i<xverbs.length;i++) XVerb.put(xverbs[i], xverbs[i]);
- }
-
- /**
- * ì´ê°ì´ ì©ì¸íì 미ì¬ë¡ ëëë©´ index 를 ë°ííë¤. ìëë©´ -1ì ë°ííë¤.
- * @param result
- * @return
- */
- public static int endsWithVerbSuffix(String stem) {
- int len = stem.length();
- if(len<2) return -1;
- int start = 2;
- if(len==2) start = 1;
- for(int i=start;i>0;i--) { // suffix ì ê°ì¥ 긴 ê¸ììê° 2ì´ë¤.
- if(verbSuffix.get(stem.substring(len-i))!=null) return (len-i);
- }
- return -1;
- }
+ public static final Map verbSuffix = new HashMap();
+
+ public static final Map XVerb = new HashMap();
+
+ static {
+ String[] suffixs = {
+ "ì´","í","ë","ë´", "ë", "ì¤ë½","ìí¤","ì","ì","ê°","ë¹í","ë§í","ë리","ë°","ì§"};
+ for(int i=0;i<suffixs.length;i++) verbSuffix.put(suffixs[i], suffixs[i]);
+
+ String[] xverbs = {"ì¤","ë´","주","ë³´","ì§","ì¤ë¥´","ì¬ë¦¬"};
+ for(int i=0;i<xverbs.length;i++) XVerb.put(xverbs[i], xverbs[i]);
+ }
+
+ /**
+ * ì´ê°ì´ ì©ì¸íì 미ì¬ë¡ ëëë©´ index 를 ë°ííë¤. ìëë©´ -1ì ë°ííë¤.
+ * @param result
+ * @return
+ */
+ public static int endsWithVerbSuffix(String stem) {
+ int len = stem.length();
+ if(len<2) return -1;
+ int start = 2;
+ if(len==2) start = 1;
+ for(int i=start;i>0;i--) { // suffix ì ê°ì¥ 긴 ê¸ììê° 2ì´ë¤.
+ if(verbSuffix.get(stem.substring(len-i))!=null) return (len-i);
+ }
+ return -1;
+ }
- /**
- * ì´ê°ë¶ì ë³´ì¡°ì©ì¸ [í,ë,ì¤,ë´,주,ì§]ê° ìëì§ ì¡°ì¬íë¤.
- * @param stem
- * @return
- */
- public static int endsWithXVerb(String stem) {
- int len = stem.length();
- if(len<2) return -1;
- int start = 2;
- if(len==2) start = 1;
- for(int i=start;i>0;i--) { //xverbs ì ê°ì¥ 긴 ê¸ììë 2ì´ë¤.
- if(XVerb.get(stem.substring(len-i))!=null) return (len-i);
- }
- return -1;
- }
+ /**
+ * ì´ê°ë¶ì ë³´ì¡°ì©ì¸ [í,ë,ì¤,ë´,주,ì§]ê° ìëì§ ì¡°ì¬íë¤.
+ * @param stem
+ * @return
+ */
+ public static int endsWithXVerb(String stem) {
+ int len = stem.length();
+ if(len<2) return -1;
+ int start = 2;
+ if(len==2) start = 1;
+ for(int i=start;i>0;i--) { //xverbs ì ê°ì¥ 긴 ê¸ììë 2ì´ë¤.
+ if(XVerb.get(stem.substring(len-i))!=null) return (len-i);
+ }
+ return -1;
+ }
- public static boolean verbSuffix(String stem) {
+ public static boolean verbSuffix(String stem) {
- return verbSuffix.get(stem)!=null;
-
- }
+ return verbSuffix.get(stem)!=null;
+
+ }
- public static boolean constraintVerb(String start, String end) {
-
- char[] schs = MorphUtil.decompose(start.charAt(start.length()-1));
- char[] echs = MorphUtil.decompose(end.charAt(0));
-
- if(schs.length==3&&schs[2]=='ã¹'&&echs[0]=='ã¹') return false;
-
- return true;
- }
+ public static boolean constraintVerb(String start, String end) {
+
+ char[] schs = MorphUtil.decompose(start.charAt(start.length()-1));
+ char[] echs = MorphUtil.decompose(end.charAt(0));
+
+ if(schs.length==3&&schs[2]=='ã¹'&&echs[0]=='ã¹') return false;
+
+ return true;
+ }
- /**
- * 3. íêµììì´ë¤ : ì²´ì¸ + 'ìì/ë¶í°/ììë¶í°' + 'ì´' + ì´ë¯¸ (PTN_NJCM) <br>
- */
- public static boolean ananlysisNJCM(AnalysisOutput o, List candidates) throws MorphException {
+ /**
+ * 3. íêµììì´ë¤ : ì²´ì¸ + 'ìì/ë¶í°/ììë¶í°' + 'ì´' + ì´ë¯¸ (PTN_NJCM) <br>
+ */
+ public static boolean ananlysisNJCM(AnalysisOutput o, List candidates) throws MorphException {
- int strlen = o.getStem().length();
- boolean success = false;
-
- if(strlen>3&&(o.getStem().endsWith("ììì´")||o.getStem().endsWith("ë¶í°ì´"))) {
- o.addElist(o.getStem().substring(strlen-1));
- o.setJosa(o.getStem().substring(strlen-3,strlen-1));
- o.setStem(o.getStem().substring(0,strlen-3));
- success = true;
- }else if(strlen>5&&(o.getStem().endsWith("ììë¶í°ì´"))) {
- o.addElist(o.getStem().substring(strlen-1));
- o.setJosa(o.getStem().substring(strlen-5,strlen-1));
- o.setStem(o.getStem().substring(0,strlen-5));
- success = true;
- }
- if(!success) return false;
-
- if(success&&DictionaryUtil.getNoun(o.getStem())!=null) {
- o.setScore(AnalysisOutput.SCORE_CORRECT);
-// }else {
-// NounUtil.confirmCNoun(o);
- }
-
- o.setPatn(PatternConstants.PTN_NJCM);
- o.setPos(PatternConstants.POS_NOUN);
- candidates.add(o);
-
- return true;
- }
+ int strlen = o.getStem().length();
+ boolean success = false;
+
+ if(strlen>3&&(o.getStem().endsWith("ììì´")||o.getStem().endsWith("ë¶í°ì´"))) {
+ o.addElist(o.getStem().substring(strlen-1));
+ o.setJosa(o.getStem().substring(strlen-3,strlen-1));
+ o.setStem(o.getStem().substring(0,strlen-3));
+ success = true;
+ }else if(strlen>5&&(o.getStem().endsWith("ììë¶í°ì´"))) {
+ o.addElist(o.getStem().substring(strlen-1));
+ o.setJosa(o.getStem().substring(strlen-5,strlen-1));
+ o.setStem(o.getStem().substring(0,strlen-5));
+ success = true;
+ }
+ if(!success) return false;
+
+ if(success&&DictionaryUtil.getNoun(o.getStem())!=null) {
+ o.setScore(AnalysisOutput.SCORE_CORRECT);
+// }else {
+// NounUtil.confirmCNoun(o);
+ }
+
+ o.setPatn(PatternConstants.PTN_NJCM);
+ o.setPos(PatternConstants.POS_NOUN);
+ candidates.add(o);
+
+ return true;
+ }
- /**
- * ì´ë¯¸ë¶ì ì´ê°ë¶ê° ë¶ë¦¬ë ìíìì ì©ì¸íì 미ì¬ê° ê²°í©ë ì ìëì§ ì¡°ì¬íë¤.
- * @param o ì´ë¯¸ë¶ì ì´ê°ë¶ê° ë¶ë¦¬ë ê²°ê³¼
- * @param candidates
- * @return
- * @throws MorphException
- */
- public static boolean ananlysisNSM(AnalysisOutput o, List candidates) throws MorphException {
-
- if(o.getStem().endsWith("ì¤ë¬ì°")) o.setStem(o.getStem().substring(0,o.getStem().length()-3)+"ì¤ë½");
- int idxVbSfix = VerbUtil.endsWithVerbSuffix(o.getStem());
- if(idxVbSfix<1) return false;
-
- o.setVsfx(o.getStem().substring(idxVbSfix));
- o.setStem(o.getStem().substring(0,idxVbSfix));
- o.setPatn(PatternConstants.PTN_NSM);
- o.setPos(PatternConstants.POS_NOUN);
-
- WordEntry entry = DictionaryUtil.getWordExceptVerb(o.getStem());
-
-// if(entry==null&&NounUtil.confirmCNoun(o)&&o.getCNounList().size()>0) {
-// entry = DictionaryUtil.getNoun(o.getCNounList().get(o.getCNounList().size()-1).getWord());
-// }
-
-// if(entry==null) return false;
-// if(entry==null) {
-// NounUtil.confirmDNoun(o);
-// if(o.getScore()!=AnalysisOutput.SCORE_CORRECT) return false;
-// }
-
- if(entry!=null) {
- if(entry.getFeature(WordEntry.IDX_NOUN)=='0') return false;
- else if(o.getVsfx().equals("í")&&entry.getFeature(WordEntry.IDX_DOV)!='1') return false;
- else if(o.getVsfx().equals("ë")&&entry.getFeature(WordEntry.IDX_BEV)!='1') return false;
- else if(o.getVsfx().equals("ë´")&&entry.getFeature(WordEntry.IDX_NE)!='1') return false;
- o.setScore(AnalysisOutput.SCORE_CORRECT); // 'ì
ëë¤'ì¸ ê²½ì° ì¸ëª
ë± ë¯¸ë±ë¡ì´ê° ë§ì´ ë°ìëë¯ë¡ ë¶ìì±ê³µì¼ë¡ ê°ì íë¤.
- }else {
- o.setScore(AnalysisOutput.SCORE_ANALYSIS); // 'ì
ëë¤'ì¸ ê²½ì° ì¸ëª
ë± ë¯¸ë±ë¡ì´ê° ë§ì´ ë°ìëë¯ë¡ ë¶ìì±ê³µì¼ë¡ ê°ì íë¤.
- }
-
- candidates.add(o);
+ /**
+ * ì´ë¯¸ë¶ì ì´ê°ë¶ê° ë¶ë¦¬ë ìíìì ì©ì¸íì 미ì¬ê° ê²°í©ë ì ìëì§ ì¡°ì¬íë¤.
+ * @param o ì´ë¯¸ë¶ì ì´ê°ë¶ê° ë¶ë¦¬ë ê²°ê³¼
+ * @param candidates
+ * @return
+ * @throws MorphException
+ */
+ public static boolean ananlysisNSM(AnalysisOutput o, List candidates) throws MorphException {
+
+ if(o.getStem().endsWith("ì¤ë¬ì°")) o.setStem(o.getStem().substring(0,o.getStem().length()-3)+"ì¤ë½");
+ int idxVbSfix = VerbUtil.endsWithVerbSuffix(o.getStem());
+ if(idxVbSfix<1) return false;
+
+ o.setVsfx(o.getStem().substring(idxVbSfix));
+ o.setStem(o.getStem().substring(0,idxVbSfix));
+ o.setPatn(PatternConstants.PTN_NSM);
+ o.setPos(PatternConstants.POS_NOUN);
+
+ WordEntry entry = DictionaryUtil.getWordExceptVerb(o.getStem());
+
+// if(entry==null&&NounUtil.confirmCNoun(o)&&o.getCNounList().size()>0) {
+// entry = DictionaryUtil.getNoun(o.getCNounList().get(o.getCNounList().size()-1).getWord());
+// }
+
+// if(entry==null) return false;
+// if(entry==null) {
+// NounUtil.confirmDNoun(o);
+// if(o.getScore()!=AnalysisOutput.SCORE_CORRECT) return false;
+// }
+
+ if(entry!=null) {
+ if(entry.getFeature(WordEntry.IDX_NOUN)=='0') return false;
+ else if(o.getVsfx().equals("í")&&entry.getFeature(WordEntry.IDX_DOV)!='1') return false;
+ else if(o.getVsfx().equals("ë")&&entry.getFeature(WordEntry.IDX_BEV)!='1') return false;
+ else if(o.getVsfx().equals("ë´")&&entry.getFeature(WordEntry.IDX_NE)!='1') return false;
+ o.setScore(AnalysisOutput.SCORE_CORRECT); // 'ì
ëë¤'ì¸ ê²½ì° ì¸ëª
ë± ë¯¸ë±ë¡ì´ê° ë§ì´ ë°ìëë¯ë¡ ë¶ìì±ê³µì¼ë¡ ê°ì íë¤.
+ }else {
+ o.setScore(AnalysisOutput.SCORE_ANALYSIS); // 'ì
ëë¤'ì¸ ê²½ì° ì¸ëª
ë± ë¯¸ë±ë¡ì´ê° ë§ì´ ë°ìëë¯ë¡ ë¶ìì±ê³µì¼ë¡ ê°ì íë¤.
+ }
+
+ candidates.add(o);
- return true;
+ return true;
- }
+ }
- public static boolean ananlysisNSMXM(AnalysisOutput o, List candidates) throws MorphException {
+ public static boolean ananlysisNSMXM(AnalysisOutput o, List candidates) throws MorphException {
- int idxXVerb = VerbUtil.endsWithXVerb(o.getStem());
- if(idxXVerb==-1) return false;
-
- String eogan = o.getStem().substring(0,idxXVerb);
- String[] stomis = null;
-
- if((eogan.endsWith("ì")||eogan.endsWith("ì´"))&&eogan.length()>1)
- stomis = EomiUtil.splitEomi(eogan.substring(0,eogan.length()-1),eogan.substring(eogan.length()-1));
- else
- stomis = EomiUtil.splitEomi(eogan,"");
-
- if(stomis[0]==null) return false;
-
- o.addElist(stomis[1]);
- int idxVbSfix = VerbUtil.endsWithVerbSuffix(stomis[0]);
- if(idxVbSfix==-1) return false;
-
- o.setXverb(o.getStem().substring(idxXVerb));
- o.setVsfx(stomis[0].substring(idxVbSfix));
- o.setStem(stomis[0].substring(0,idxVbSfix));
- o.setPatn(PatternConstants.PTN_NSMXM);
- o.setPos(PatternConstants.POS_NOUN);
- WordEntry entry = DictionaryUtil.getNoun(o.getStem());
-// if(entry==null&&NounUtil.confirmCNoun(o)&&o.getCNounList().size()>0) {
-// entry = DictionaryUtil.getNoun(o.getCNounList().get(o.getCNounList().size()-1));
-// }
- if(entry==null) return false;
-
- 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);
-
- candidates.add(o);
-
-
- return true;
- }
+ int idxXVerb = VerbUtil.endsWithXVerb(o.getStem());
+ if(idxXVerb==-1) return false;
+
+ String eogan = o.getStem().substring(0,idxXVerb);
+ String[] stomis = null;
+
+ if((eogan.endsWith("ì")||eogan.endsWith("ì´"))&&eogan.length()>1)
+ stomis = EomiUtil.splitEomi(eogan.substring(0,eogan.length()-1),eogan.substring(eogan.length()-1));
+ else
+ stomis = EomiUtil.splitEomi(eogan,"");
+
+ if(stomis[0]==null) return false;
+
+ o.addElist(stomis[1]);
+ int idxVbSfix = VerbUtil.endsWithVerbSuffix(stomis[0]);
+ if(idxVbSfix==-1) return false;
+
+ o.setXverb(o.getStem().substring(idxXVerb));
+ o.setVsfx(stomis[0].substring(idxVbSfix));
+ o.setStem(stomis[0].substring(0,idxVbSfix));
+ o.setPatn(PatternConstants.PTN_NSMXM);
+ o.setPos(PatternConstants.POS_NOUN);
+ WordEntry entry = DictionaryUtil.getNoun(o.getStem());
+// if(entry==null&&NounUtil.confirmCNoun(o)&&o.getCNounList().size()>0) {
+// entry = DictionaryUtil.getNoun(o.getCNounList().get(o.getCNounList().size()-1));
+// }
+ if(entry==null) return false;
+
+ 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);
+
+ candidates.add(o);
+
+
+ return true;
+ }
- public static boolean analysisVMCM(AnalysisOutput o, List candidates) throws MorphException {
+ public static boolean analysisVMCM(AnalysisOutput o, List candidates) throws MorphException {
- int strlen = o.getStem().length();
-
- if(strlen<2) return false;
-
- if(!o.getStem().endsWith("ì´")) return false;
-
- char[] chrs = MorphUtil.decompose(o.getStem().charAt(strlen-2));
- boolean success = false;
-
- if(strlen>2&&o.getStem().endsWith("기ì´")) {
- o.setStem(o.getStem().substring(0,strlen-2));
- o.addElist("기");
- success = true;
- } else if(chrs.length>2&&chrs[2]=='ã
'){
- String[] eres = EomiUtil.splitEomi(o.getStem().substring(0,strlen-1), "");
- if(eres[0]==null) return false;
-
- o.addElist(eres[1]);
- String[] irrs = IrregularUtil.restoreIrregularVerb(eres[0], eres[1]);
-
- if(irrs!=null) o.setStem(irrs[0]);
- else o.setStem(eres[0]);
-
- success = true;
- }
-
- if(success) {
-
- o.addElist("ì´");
- if(DictionaryUtil.getVerb(o.getStem())!=null) {
- o.setPos(PatternConstants.POS_VERB);
- o.setPatn(PatternConstants.PTN_VMCM);
- o.setScore(AnalysisOutput.SCORE_CORRECT);
- candidates.add(o);
- return true;
- }
- }
-
- return false;
-
- }
+ int strlen = o.getStem().length();
+
+ if(strlen<2) return false;
+
+ if(!o.getStem().endsWith("ì´")) return false;
+
+ char[] chrs = MorphUtil.decompose(o.getStem().charAt(strlen-2));
+ boolean success = false;
+
+ if(strlen>2&&o.getStem().endsWith("기ì´")) {
+ o.setStem(o.getStem().substring(0,strlen-2));
+ o.addElist("기");
+ success = true;
+ } else if(chrs.length>2&&chrs[2]=='ã
'){
+ String[] eres = EomiUtil.splitEomi(o.getStem().substring(0,strlen-1), "");
+ if(eres[0]==null) return false;
+
+ o.addElist(eres[1]);
+ String[] irrs = IrregularUtil.restoreIrregularVerb(eres[0], eres[1]);
+
+ if(irrs!=null) o.setStem(irrs[0]);
+ else o.setStem(eres[0]);
+
+ success = true;
+ }
+
+ if(success) {
+
+ o.addElist("ì´");
+ if(DictionaryUtil.getVerb(o.getStem())!=null) {
+ o.setPos(PatternConstants.POS_VERB);
+ o.setPatn(PatternConstants.PTN_VMCM);
+ o.setScore(AnalysisOutput.SCORE_CORRECT);
+ candidates.add(o);
+ return true;
+ }
+ }
+
+ return false;
+
+ }
- /**
- *
- * 6. ëìì£¼ë¤ : ì©ì¸ + 'ì/ì´' + ë³´ì¡°ì©ì¸ + ì´ë¯¸ (PTN_VMXM)
- *
- * @param o
- * @param candidates
- * @return
- * @throws MorphException
- */
- public static boolean analysisVMXM(AnalysisOutput o, List candidates) throws MorphException {
-
- int idxXVerb = VerbUtil.endsWithXVerb(o.getStem());
-
- if(idxXVerb==-1) return false;
-
- o.setXverb(o.getStem().substring(idxXVerb));
-
- String eogan = o.getStem().substring(0,idxXVerb);
-
- String[] stomis = null;
- if(eogan.endsWith("ì")||eogan.endsWith("ì´")) {
- stomis = EomiUtil.splitEomi(eogan.substring(0,eogan.length()-1),eogan.substring(eogan.length()-1));
- if(stomis[0]==null) return false;
- }else {
- stomis = EomiUtil.splitEomi(eogan, "");
- if(stomis[0]==null||!(stomis[1].startsWith("ì")||stomis[1].startsWith("ì´"))) return false;
- }
-
- String[] irrs = IrregularUtil.restoreIrregularVerb(stomis[0], stomis[1]);
- if(irrs!=null) {
- o.setStem(irrs[0]);
- o.addElist(irrs[1]);
- } else {
- o.setStem(stomis[0]);
- o.addElist(stomis[1]);
- }
-
- if(DictionaryUtil.getVerb(o.getStem())!=null) {
- o.setPos(PatternConstants.POS_VERB);
- o.setPatn(PatternConstants.PTN_VMXM);
- o.setScore(AnalysisOutput.SCORE_CORRECT);
- candidates.add(o);
- return true;
- }
-
- return false;
- }
+ /**
+ *
+ * 6. ëìì£¼ë¤ : ì©ì¸ + 'ì/ì´' + ë³´ì¡°ì©ì¸ + ì´ë¯¸ (PTN_VMXM)
+ *
+ * @param o
+ * @param candidates
+ * @return
+ * @throws MorphException
+ */
+ public static boolean analysisVMXM(AnalysisOutput o, List candidates) throws MorphException {
+
+ int idxXVerb = VerbUtil.endsWithXVerb(o.getStem());
+
+ if(idxXVerb==-1) return false;
+
+ o.setXverb(o.getStem().substring(idxXVerb));
+ String eogan = o.getStem().substring(0,idxXVerb);
+
+ String[] stomis = null;
+ if(eogan.endsWith("ì")||eogan.endsWith("ì´")) {
+ stomis = EomiUtil.splitEomi(eogan.substring(0,eogan.length()-1),eogan.substring(eogan.length()-1));
+ if(stomis[0]==null) return false;
+ }else {
+ stomis = EomiUtil.splitEomi(eogan, "");
+ if(stomis[0]==null||!(stomis[1].startsWith("ì")||stomis[1].startsWith("ì´"))) return false;
+ }
+
+ String[] irrs = IrregularUtil.restoreIrregularVerb(stomis[0], stomis[1]);
+ if(irrs!=null) {
+ o.setStem(irrs[0]);
+ o.addElist(irrs[1]);
+ } else {
+ o.setStem(stomis[0]);
+ o.addElist(stomis[1]);
+ }
+
+ if(DictionaryUtil.getVerb(o.getStem())!=null) {
+ o.setPos(PatternConstants.POS_VERB);
+ o.setPatn(PatternConstants.PTN_VMXM);
+ o.setScore(AnalysisOutput.SCORE_CORRECT);
+ candidates.add(o);
+ return true;
+ }
+
+ return false;
+ }
}