2010-10-24 10 views

उत्तर

4

Hindi Analyzer, स्टेमर साथ, उपलब्ध Lucene में है कर रहे हैं नहीं है। यह इस algorithm (पीडीएफ) पर आधारित है।

+0

आप लिंक को अपडेट कर सकते हैं –

3

hindi_stemmer अनंतकृष्णन रामाननाथन और दुर्गेश डी राव द्वारा "A Lightweight Stemmer for Hindi" में वर्णित हिंदी स्टेमर का पाइथन कार्यान्वयन है।

+0

मैं हूँ provided.thanks इसका उपयोग कर रहा है लेकिन यह मेरे लिए त्रुटि दे रहा है। क्या करें? –

+0

शायद आप अब इस पर ध्यान नहीं दे रहे हैं, लेकिन त्रुटि क्या थी? –

0

हम अच्छी तरह से समझा नहीं गया है मूल कोड Python Hindi Stemmer

हालांकि मूल हिंदी स्टेमर के रास्ते लेखकों चर एल का इस्तेमाल किया की एक जावा संस्करण बनाया लेकिन वहाँ एक पूरा कोड क्या काम करेगा

आयात java.util है। सारणी सूची; आयात org.apache.commons.lang.StringUtils;

public class SimpleHindiStemmer { 

/* This is not coming while pasting the code better copy from Python Code as given in suffixes[1] */ 
private static String [] stem1 = new String [] { "ो", "े", "ू", "ु", "ी", "ि", "ा" }; 

/* This is not coming while pasting the code better copy from Python Code as given in suffixes[2] */ 
private static String [] stem2 = new String [] { "कर", "ाओ", "िए", "ाई", "ाए", "ने", "नी", "ना", "ते", "ीं", "ती", "ता", "ाँ", "ां", "ों", "ें" }; 

private static String [] stem3 = new String [] { "ाकर", "ाइए", "ाईं", "ाया", "ेगी", "ेगा", "ोगी", "ोगे", "ाने", "ाना", "ाते", "ाती", "ाता", "तीं", "ाओं", "ाएं", "ुओं", "ुएं", "ुआं" }; 

private static String [] stem4 = new String [] { "ाएगी", "ाएगा", "ाओगी", "ाओगे", "एंगी", "ेंगी", "एंगे", "ेंगे", "ूंगी", "ूंगा", "ातीं", "नाओं", "नाएं", "ताओं", "ताएं", "ियाँ", "ियों", "ियां" }; 

private static String [] stem5 = new String [] { "ाएंगी", "ाएंगे", "ाऊंगी", "ाऊंगा", "ाइयाँ", "ाइयों", "ाइयां" }; 

private static ArrayList<String []> stemList = new ArrayList<String []>(5); 

static int [] cut = new int [] { 0, 1, 1, 1, 2, 2 }; 

static { 

    stemList.add(stem5); 
    stemList.add(stem4); 
    stemList.add(stem3); 
    stemList.add(stem2); 
    stemList.add(stem1); 

} 

public SimpleHindiStemmer(){ 

} 

public static void main(String [] argv){ 

    SimpleHindiStemmer sm = new SimpleHindiStemmer(); 
    String word = "रास्ते"; 
    System.out.println(sm.stemprocess(word)); 
} 

public String stemprocess(String word){ 


    int wlen = word.length(); 
    int wordlen = wlen*3; 
    int icnt = 5; 
    for (String [] stemwords : stemList){ 
     if(wordlen > (icnt + 1)){ 
      for(String sw: stemwords){ 
       if(StringUtils.endsWith(word, sw)){ 
        return StringUtils.substring(word, 0, wlen - cut[icnt]); 

       } 
      } 

     } 


     icnt--; 
    } 

    return word; 
} 
} 

जैसा कि आप देखते हैं कि कुछ मामलों में यूटीएफ -8 वर्ण अच्छी तरह से कब्जे में नहीं हैं। मूल पायथन कोड को देखें और वहां से प्रत्यय मूल्यों की प्रतिलिपि बनाएँ।

0
import java.util.Map; 
import java.util.WeakHashMap; 

/** * हिंदी प्रकाश stemmer- संख्या, लिंग दूर करता है और मामले संज्ञाओं से प्रत्यय और विशेषण

public class HindiStemmerLight{ 

/** 
* A cache of words and their stems 
*/ 
static private Map<String, String> cache = new WeakHashMap<String, String>(); 

/** 
* A buffer of the current word being stemmed 
*/ 
private StringBuilder sb = new StringBuilder(); 

/** 
* Default constructor 
*/ 
public HindiStemmerLight() { 
} 

public String stem(String word) { 
    String result = cache.get(word); 

    if (result != null) 
     return result; 

    // 
    sb.delete(0, sb.length()); 

    // 
    sb.append(word); 

    /* remove the case endings from nouns and adjectives */ 
    remove_suffix(sb); 



    result = sb.toString(); 
    cache.put(word, result); 

    return result; 
} 

private void remove_suffix(StringBuilder word) { 
    int len = word.length() - 1; 

    /* article */ 

    if (len > 4) { 
     if (word.substring(len- 2, len+1).equals("िया")) { 
      word.delete(len-2 , len + 1); 
      return; 
     } 
     if (word.substring(len- 2, len+1).equals("ियो")) { 
      word.delete(len-2 , len + 1); 
      return; 
     } 

    } /* end if len >4 */ 
    if (len > 3) { 
     if (word.substring(len-1, len+1).equals("ाए")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 
     if (word.substring(len-1, len+1).equals(" ाओ")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 
     if (word.substring(len-1, len+1).equals(" ुआ")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 
     if (word.substring(len-1, len+1).equals(" ुओ")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 
     if (word.substring(len- 1, len+1).equals("ये")) { 
      word.delete(len-1 , len + 1); 
      return; 
     } 
     if (word.substring(len-1, len+1).equals(" ेन")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 
     if (word.substring(len-1, len+1).equals(" ेण")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 
     if (word.substring(len- 1, len+1).equals(" ीय")) { 
      word.delete(len-1 , len + 1); 
      return; 
     } 
     if (word.substring(len-1, len+1).equals("टी")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 
     if (word.substring(len-1, len+1).equals("ार")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 
     if (word.substring(len-1, len+1).equals("ाई")) { 
      word.delete(len - 1, len + 1); 
      return; 
     } 

    } /* end if len > 3 */ 
    if (len > 2) { 
     if (word.substring(len, len+1).equals(" ा")) { 
      word.delete(len , len + 1); 
      return; 
     } 
     if (word.substring(len, len+1).equals(" े")) { 
      word.delete(len , len + 1); 
      return; 
     } 
     if (word.substring(len, len+1).equals(" ी")) { 
      word.delete(len , len + 1); 
      return; 
     } 
     if (word.substring(len, len+1).equals(" ो")) { 
      word.delete(len , len + 1); 
      return; 
     } 
     if (word.substring(len, len+1).equals("ि ")) { 
      word.delete(len , len + 1); 
      return; 
     } 
     if (word.substring(len, len+1).equals("अ")) { 
      word.delete(len , len + 1); 
      return; 
     } 

    } /* end if len > 2 */ 
    return; 
} 

}

संबंधित मुद्दे