Exemplo n.º 1
0
        private void FillStems(ParseTree parsetree, ParseNode node, ref List <string> stemsArr)
        {
            if (node.Children != null)
            {
                for (int i = 0; i < node.Children.Count; i++)
                {
                    ParseNode pn = (ParseNode)node.Children[i];

                    FillStems(parsetree, pn, ref stemsArr);
                }
            }
            else
            {
                string str = node.Goal;
                if (str == "N" || str.Contains("NPP") || str.Contains("PPJ") || (str == "V") || str.Contains("ADJ") || str.Contains("PADV") || str.Contains("ADV"))
                {
                    ///ta3deelat 5/7/////////
                    if (node.Senses != null)
                    {
                        Type      T       = node.Senses[0].GetType();
                        VerbSense VS      = (VerbSense)node.Senses[0];
                        string[]  spltstr = VS.Sense.ToString().Split('#');
                        stemsArr.Add(spltstr[0]);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void FillSenses(ParseTree parsetree, ParseNode node, ref ArrayList wordinfoArr, ref int j)
        {
            if (node.Children != null)
            {
                for (int i = 0; i < node.Children.Count; i++)
                {
                    ParseNode pn = (ParseNode)node.Children[i];
                    FillSenses(parsetree, pn, ref wordinfoArr, ref j);
                }
            }
            else
            {
                string str = node.Goal;
                if (str == "N" || str.Contains("NPP") || str.Contains("PPJ") || (str == "V") || str.Contains("CPADJ") || str.Contains("ADJ") || str.Contains("PADV") || str.Contains("ADV"))
                {
                    ///ta3deelat 5/7/////////
                    string [] spltstr  = DisambRes[j].ToString().Split(':');
                    VerbSense VS       = new VerbSense();
                    string[]  spltstr2 = new string[10];
                    string[]  spltstr3 = new string[10];
                    if (node.Senses != null && node.Goal.Contains("V"))
                    {
                        VS       = (VerbSense)node.Senses[0];
                        spltstr2 = VS.Sense.ToString().Split('#');
                        spltstr3 = spltstr[0].Split(' ');

                        if (spltstr3[0] == spltstr2[0])
                        {
                            if (NodesSenses.Count > 0)
                            {
                                node.Sense   = (string)NodesSenses[0];
                                node.SenseNo = (int)SensesNos[0];
                                SensesNos.RemoveAt(0);
                                NodesSenses.RemoveAt(0);
                                j++;
                            }
                        }
                    }
                    else
                    {
                        string NodeWord = SyntacticAnalyzer.SentenceParser.GetWordString(parsetree, node);
                        spltstr3 = spltstr[0].Split(' ');
                        if (spltstr3[0] == NodeWord.ToLower())
                        {
                            if (NodesSenses.Count > 0)
                            {
                                node.Sense   = (string)NodesSenses[0];
                                node.SenseNo = (int)SensesNos[0];
                                SensesNos.RemoveAt(0);
                                NodesSenses.RemoveAt(0);
                                j++;
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        private void FillSenses(ParseTree parsetree, ParseNode node, ref ArrayList wordinfoArr, ref int j)
        {
            if (node.Children != null)
            {
                for (int i = 0; i < node.Children.Count; i++)
                {
                    ParseNode pn = (ParseNode)node.Children[i];
                    FillSenses(parsetree, pn, ref wordinfoArr, ref j);
                }
            }
            else
            {
                SentenceParser dummysp = new SentenceParser();
                string         str     = node.Goal;
                if (str == "PPN")
                {
                    WordSenseDisambiguator wsd = new WordSenseDisambiguator();
                    double score;
                    double num;
                    if (double.TryParse(node.Text, out num))
                    {
                        MyWordInfo[] ret = wsd.MMG_Disambiguate(new MyWordInfo[] { new MyWordInfo("Number", PartsOfSpeech.Noun) }, out score);
                        PartOfSpeech pos = PartOfSpeech.of(PartsOfSpeech.Noun);

                        Index  index = Wnlib.Index.lookup(ret[0].Word.ToLower(), pos);
                        SynSet sense = new SynSet(index, ret[0].Sense, null);

                        node.Sense   = sense.defn;
                        node.SenseNo = ret[0].Sense;
                    }
                    else
                    {
                        MyWordInfo[] ret = wsd.MMG_Disambiguate(new MyWordInfo[] { new MyWordInfo("proper_name", PartsOfSpeech.Noun) }, out score);
                        PartOfSpeech pos = PartOfSpeech.of(PartsOfSpeech.Noun);

                        Index  index = Wnlib.Index.lookup(ret[0].Word.ToLower(), pos);
                        SynSet sense = new SynSet(index, ret[0].Sense, null);

                        node.Sense   = sense.defn;
                        node.SenseNo = ret[0].Sense;
                    }
                }
                else
                if (str == "N" || str.Contains("NPP") || (str == "VING") || str.Contains("PPJ") || (str == "VPSP") || (str == "BE1") || (str == "BE2") || (str == "V") || str.Contains("CPADJ") || str.Contains("ADJ") || str.Contains("PADV") || str.Contains("ADV") || str == "VINF")
                {
                    ///ta3deelat 5/7/////////
                    string [] spltstr  = DisambRes[j].ToString().Split(':');
                    VerbSense VS       = new VerbSense();
                    string[]  spltstr2 = new string[10];
                    string[]  spltstr3 = new string[10];
                    if (node.Senses != null && node.Goal.Contains("V"))
                    {
                        VS       = (VerbSense)node.Senses[0];
                        spltstr2 = VS.Sense.ToString().Split('#');
                        spltstr3 = spltstr[0].Split(' ');

                        ArrayList results = dummysp.GetINFOfVerb(spltstr2[0]);
                        if (results.Count > 0)
                        {
                            spltstr2[0] = (string)results[0];
                        }


                        if (spltstr3[0] == spltstr2[0])
                        {
                            if (NodesSenses.Count > 0)
                            {
                                node.Sense   = (string)NodesSenses[0];
                                node.SenseNo = (int)SensesNos[0];
                                SensesNos.RemoveAt(0);
                                NodesSenses.RemoveAt(0);
                                j++;
                            }
                        }
                    }
                    if (str == "N")
                    {
                        node.Sense   = (string)NodesSenses[0];
                        node.SenseNo = (int)SensesNos[0];
                        SensesNos.RemoveAt(0);
                        NodesSenses.RemoveAt(0);
                        j++;
                    }
                    else
                    {
                        string NodeWord = SyntacticAnalyzer.SentenceParser.GetWordString(parsetree, node);


                        spltstr3 = spltstr[0].Split(' ');
                        string nodeWord = NodeWord.ToLower();
                        if (node.Goal == "V" || node.Goal == "BE1" || node.Goal == "VINF" || node.Goal == "VPSP" || node.Goal == "VING")
                        {
                            ArrayList results = dummysp.GetINFOfVerb(nodeWord);
                            if (results.Count > 0)
                            {
                                nodeWord = (string)results[0];
                            }
                        }

                        string dummy = spltstr3[0];
                        dummy = dummy.Remove(dummy.Length - 1);
                        dummy = dummy + "ies";

                        string dummy2 = nodeWord + "ing";
                        string dummy3 = dummy2 + "s";
                        string dummy4 = nodeWord.Remove(nodeWord.Length - 1);
                        dummy4 = dummy4 + "ing";

                        if (spltstr3[0] == nodeWord || spltstr3[0] + 's' == nodeWord || spltstr3[0] + "es" == nodeWord || dummy == nodeWord || spltstr3[0] == dummy2 || spltstr3[0] == dummy3 || spltstr3[0] == dummy4 || spltstr3[0] == dummy4 + 's')
                        {
                            if (NodesSenses.Count > 0)
                            {
                                node.Sense   = (string)NodesSenses[0];
                                node.SenseNo = (int)SensesNos[0];
                                SensesNos.RemoveAt(0);
                                NodesSenses.RemoveAt(0);
                                j++;
                            }
                        }
                    }
                }
            }
        }