コード例 #1
0
        public void readRulesFromXML()
        {
            XmlDocument doc = new XmlDocument();

            try{
                doc.Load(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("SavoyStemmerRules.xml"));
            }catch (Exception e) {
                throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file.", e);
            }

            XmlElement   root = doc.DocumentElement;
            XmlAttribute val, val2, val3;

            foreach (XmlNode step in root.ChildNodes)
            {
                val = step.Attributes["name"];
                if (val == null)
                {
                    throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file: Invalid step.");
                }
                String stepName = val.Value;
                SuffixTree <SavoyRule> suffixes = new SuffixTree <SavoyRule>();
                setProperty(suffixes, "size", 0, step);

                foreach (XmlNode rule in step.ChildNodes)
                {
                    val  = rule.Attributes["suffix"];
                    val2 = rule.Attributes["replacement"];
                    val3 = rule.Attributes["size"];

                    if (val == null || val2 == null || val3 == null)
                    {
                        throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file: Invalid rule in " + stepName + ".");
                    }

                    String suffix      = val.Value;
                    String replacement = val2.Value;
                    int    size        = 0;
                    try{
                        size = Convert.ToInt32(val3.Value);
                    }catch (Exception e) { throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file: Missing or invalid rules properties on step " + stepName + ".", e); }

                    SavoyRule r = new SavoyRule(size, replacement);
                    suffixes.addSuffix(suffix, r);
                }

                if (stepName.Equals("pluralreduction"))
                {
                    pluralreductionrules = suffixes;
                }
                else if (stepName.Equals("femininereduction"))
                {
                    femininereductionrules = suffixes;
                }
                else if (stepName.Equals("finalvowel"))
                {
                    finalvowel = suffixes;
                }
            }

            if (pluralreductionrules == null || femininereductionrules == null || finalvowel == null)
            {
                throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file: Missing steps.");
            }
        }
コード例 #2
0
ファイル: SavoyStemmer.cs プロジェクト: ebreti/ptstemmer
        public void readRulesFromXML()
        {
            XmlDocument doc = new XmlDocument();
            try{
                doc.Load(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("SavoyStemmerRules.xml"));
            }catch(Exception e) {
                throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file.",e);}

            XmlElement root = doc.DocumentElement;
            XmlAttribute val,val2,val3;

            foreach (XmlNode step in root.ChildNodes)
            {
                val = step.Attributes["name"];
                if(val == null)
                    throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file: Invalid step.");
                String stepName = val.Value;
                SuffixTree<SavoyRule> suffixes = new SuffixTree<SavoyRule>();
                setProperty(suffixes,"size",0,step);

                foreach (XmlNode rule in step.ChildNodes)
                {
                    val = rule.Attributes["suffix"];
                    val2 = rule.Attributes["replacement"];
                    val3 = rule.Attributes["size"];

                    if(val == null || val2 == null || val3 == null)
                        throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file: Invalid rule in "+stepName+".");

                    String suffix = val.Value;
                    String replacement = val2.Value;
                    int size = 0;
                    try{
                        size = Convert.ToInt32(val3.Value);
                    }catch(Exception e) {throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file: Missing or invalid rules properties on step "+stepName+".", e);}

                    SavoyRule r = new SavoyRule(size,replacement);
                    suffixes.addSuffix(suffix,r);
                }

                if(stepName.Equals("pluralreduction"))
                    pluralreductionrules = suffixes;
                else if(stepName.Equals("femininereduction"))
                    femininereductionrules = suffixes;
                else if(stepName.Equals("finalvowel"))
                    finalvowel = suffixes;

            }

            if(pluralreductionrules == null || femininereductionrules == null || finalvowel == null)
                throw new PTStemmerException("Problem while parsing Savoy's XML stemming rules file: Missing steps.");
        }
コード例 #3
0
        public void readRulesFromXML()
        {
            XmlDocument doc = new XmlDocument();

            try{
                doc.Load(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("OrengoStemmerRules.xml"));
            }catch (Exception e) {
                throw new PTStemmerException("Problem while parsing Orengo's XML stemming rules file.", e);
            }

            XmlElement   root = doc.DocumentElement;
            XmlAttribute val, val2, val3;

            foreach (XmlNode step in root.ChildNodes)
            {
                val = step.Attributes["name"];
                if (val == null)
                {
                    throw new PTStemmerException("Problem while parsing Orengo's XML stemming rules file: Invalid step.");
                }
                String            stepName = val.Value;
                SuffixTree <Rule> suffixes = new SuffixTree <Rule>();
                setProperty(suffixes, "size", 0, step);
                setProperty(suffixes, "exceptions", 0, step);

                foreach (XmlNode rule in step.ChildNodes)
                {
                    val  = rule.Attributes["suffix"];
                    val2 = rule.Attributes["replacement"];
                    val3 = rule.Attributes["size"];

                    if (val == null || val2 == null || val3 == null)
                    {
                        throw new PTStemmerException("Problem while parsing Orengo's XML stemming rules file: Invalid rule in " + stepName + ".");
                    }

                    String suffix      = val.Value;
                    String replacement = val2.Value;
                    int    size        = 0;
                    try{
                        size = Convert.ToInt32(val3.Value);
                    }catch (Exception e) { throw new PTStemmerException("Problem while parsing Orengo's XML stemming rules file: Missing or invalid rules properties on step " + stepName + ".", e); }

                    List <String> exceptions = new List <String>();

                    foreach (XmlNode exception in rule.ChildNodes)
                    {
                        if (exception.LocalName.Equals("exception") && exception.HasChildNodes)
                        {
                            exceptions.Add(exception.FirstChild.Value);
                        }
                        else
                        {
                            throw new PTStemmerException("Problem while parsing Orengo's XML stemming rules file: Invalid exception in step " + stepName + ", rule " + suffix + ".");
                        }
                    }

                    Rule r = new Rule(size, replacement, exceptions.ToArray());
                    suffixes.addSuffix(suffix, r);
                }

                if (stepName.Equals("pluralreduction"))
                {
                    pluralreductionrules = suffixes;
                }
                else if (stepName.Equals("femininereduction"))
                {
                    femininereductionrules = suffixes;
                }
                else if (stepName.Equals("adverbreduction"))
                {
                    adverbreductionrules = suffixes;
                }
                else if (stepName.Equals("augmentativediminutivereduction"))
                {
                    augmentativediminutivereductionrules = suffixes;
                }
                else if (stepName.Equals("nounreduction"))
                {
                    nounreductionrules = suffixes;
                }
                else if (stepName.Equals("verbreduction"))
                {
                    verbreductionrules = suffixes;
                }
                else if (stepName.Equals("vowelremoval"))
                {
                    vowelremovalrules = suffixes;
                }
            }

            if (pluralreductionrules == null || femininereductionrules == null || adverbreductionrules == null ||
                augmentativediminutivereductionrules == null || nounreductionrules == null || verbreductionrules == null ||
                vowelremovalrules == null)
            {
                throw new PTStemmerException("Problem while parsing Orengo's XML stemming rules file: Missing steps.");
            }
        }