public void autoArgument(ParseTreeDrawable parseTree, Frameset frameset)
        {
            NodeDrawableCollector nodeDrawableCollector =
                new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTransferable(secondLanguage));
            List <ParseNodeDrawable> leafList = nodeDrawableCollector.Collect();

            foreach (var parseNode in leafList)
            {
                if (parseNode.GetLayerData(ViewLayerType.PROPBANK) == null)
                {
                    foreach (ArgumentType argumentType in Enum.GetValues(typeof(ArgumentType)))
                    {
                        if (frameset.ContainsArgument(argumentType) && AutoDetectArgument(parseNode, argumentType))
                        {
                            parseNode.GetLayerInfo().SetLayerData(ViewLayerType.PROPBANK,
                                                                  ArgumentTypeStatic.GetPropbankType(argumentType));
                        }
                    }

                    if (Word.IsPunctuation(parseNode.GetLayerData(secondLanguage)))
                    {
                        parseNode.GetLayerInfo().SetLayerData(ViewLayerType.PROPBANK, "NONE");
                    }
                }
            }

            parseTree.Save();
        }
Exemple #2
0
        protected override bool AutoLabelSingleSemantics(ParseTreeDrawable parseTree)
        {
            var modified = false;
            var nodeDrawableCollector =
                new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode());
            var leafList = nodeDrawableCollector.Collect();

            foreach (var parseNode in leafList)
            {
                var info = parseNode.GetLayerInfo();
                if (info.GetLayerData(ViewLayerType.INFLECTIONAL_GROUP) != null)
                {
                    var meanings = new List <SynSet> [info.GetNumberOfWords()];
                    for (var i = 0; i < info.GetNumberOfWords(); i++)
                    {
                        meanings[i] = _turkishWordNet.ConstructSynSets(
                            info.GetMorphologicalParseAt(i).GetWord().GetName(), info.GetMorphologicalParseAt(i),
                            info.GetMetamorphicParseAt(i), _fsm);
                    }

                    switch (info.GetNumberOfWords())
                    {
                    case 1:
                        if (meanings[0].Count == 1)
                        {
                            modified = true;
                            parseNode.GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS,
                                                                  meanings[0][0].GetId());
                        }

                        break;

                    case 2:
                        if (meanings[0].Count == 1 && meanings[1].Count == 1)
                        {
                            modified = true;
                            parseNode.GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS,
                                                                  meanings[0][0].GetId() + "$" + meanings[1][0].GetId());
                        }

                        break;

                    case 3:
                        if (meanings[0].Count == 1 && meanings[1].Count == 1 && meanings[2].Count == 1)
                        {
                            modified = true;
                            parseNode.GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS,
                                                                  meanings[0][0].GetId() + "$" + meanings[1][0].GetId() + "$" +
                                                                  meanings[2][0].GetId());
                        }

                        break;
                    }
                }
            }

            return(modified);
        }
        protected override bool AutoLabelSingleSemantics(ParseTreeDrawable parseTree)
        {
            var random = new Random(1);
            var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode());
            var leafList = nodeDrawableCollector.Collect();

            for (var i = 0; i < leafList.Count; i++)
            {
                var synSets = GetCandidateSynSets(_turkishWordNet, _fsm, leafList, i);
                if (synSets.Count > 0)
                {
                    leafList[i].GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, synSets[random.Next(synSets.Count)].GetId());
                }
            }
            return(true);
        }
Exemple #4
0
        public void AutoNer(ParseTreeDrawable parseTree)
        {
            AutoDetectPerson(parseTree);
            AutoDetectLocation(parseTree);
            AutoDetectOrganization(parseTree);
            AutoDetectMoney(parseTree);
            AutoDetectTime(parseTree);
            var nodeDrawableCollector =
                new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTransferable(secondLanguage));
            var leafList = nodeDrawableCollector.Collect();

            foreach (var parseNode in leafList)
            {
                if (!parseNode.LayerExists(ViewLayerType.NER))
                {
                    parseNode.GetLayerInfo().SetLayerData(ViewLayerType.NER, "NONE");
                }
            }
            parseTree.Save();
        }
Exemple #5
0
        protected override bool AutoLabelSingleSemantics(ParseTreeDrawable parseTree)
        {
            var nodeDrawableCollector =
                new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode());
            var leafList = nodeDrawableCollector.Collect();

            for (int i = 0; i < leafList.Count; i++)
            {
                var synSets = GetCandidateSynSets(_turkishWordNet, _fsm, leafList, i);
                if (synSets.Count > 0)
                {
                    var best = MostFrequent(synSets,
                                            leafList[i].GetLayerInfo().GetMorphologicalParseAt(0).GetWord().GetName());
                    if (best != null)
                    {
                        leafList[i].GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, best.GetId());
                    }
                }
            }

            return(true);
        }
Exemple #6
0
        protected override bool AutoLabelSingleSemantics(ParseTreeDrawable parseTree)
        {
            var random = new Random(1);
            var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode());
            var leafList = nodeDrawableCollector.Collect();
            var done     = false;

            for (var i = 0; i < leafList.Count; i++)
            {
                var synSets         = GetCandidateSynSets(_turkishWordNet, _fsm, leafList, i);
                var maxIntersection = -1;
                for (var j = 0; j < synSets.Count; j++)
                {
                    var synSet            = synSets[j];
                    var intersectionCount = Intersection(synSet, leafList);
                    if (intersectionCount > maxIntersection)
                    {
                        maxIntersection = intersectionCount;
                    }
                }
                var maxSynSets = new List <SynSet>();
                for (var j = 0; j < synSets.Count; j++)
                {
                    var synSet = synSets[j];
                    if (Intersection(synSet, leafList) == maxIntersection)
                    {
                        maxSynSets.Add(synSet);
                    }
                }
                if (maxSynSets.Count > 0)
                {
                    leafList[i].GetLayerInfo().SetLayerData(ViewLayerType.SEMANTICS, maxSynSets[random.Next(maxSynSets.Count)].GetId());
                    done = true;
                }
            }
            return(done);
        }
 public AnnotatedSentence.AnnotatedSentence Convert(ParseTreeDrawable parseTree, List <TreeEnsembleModel> models)
 {
     if (parseTree != null)
     {
         var annotatedSentence     = new AnnotatedSentence.AnnotatedSentence();
         var nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsLeafNode());
         var leafList         = nodeDrawableCollector.Collect();
         var wordNodePairList = new List <WordNodePair>();
         for (var i = 0; i < leafList.Count; i++)
         {
             var parseNode    = leafList[i];
             var wordNodePair = new WordNodePair(parseNode, i + 1);
             wordNodePair.UpdateNode();
             if (wordNodePair.GetNode().GetParent() != null && wordNodePair.GetNode().GetParent().NumberOfChildren() == 1)
             {
                 wordNodePair.UpdateNode();
                 Console.WriteLine("check this");
                 return(null);
             }
             annotatedSentence.AddWord(wordNodePair.GetWord());
             wordNodePairList.Add(wordNodePair);
         }
         ConstructDependenciesFromTree(wordNodePairList, models);
         return(annotatedSentence);
     }
     return(null);
 }
 public void Modify()
 {
     NodeModify((ParseNodeDrawable)_parseTree.GetRoot());
 }
Exemple #9
0
        protected override void AutoDetectMoney(ParseTreeDrawable parseTree)
        {
            NodeDrawableCollector    nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode());
            List <ParseNodeDrawable> leafList = nodeDrawableCollector.Collect();

            for (int i = 0; i < leafList.Count; i++)
            {
                ParseNodeDrawable parseNode = leafList[i];
                if (!parseNode.LayerExists(ViewLayerType.NER))
                {
                    String word = parseNode.GetLayerData(ViewLayerType.TURKISH_WORD).ToLower(new CultureInfo("tr"));
                    if (Word.IsMoney(word))
                    {
                        parseNode.GetLayerInfo().SetLayerData(ViewLayerType.NER, "MONEY");
                        int j = i - 1;
                        while (j >= 0)
                        {
                            ParseNodeDrawable previous = leafList[j];
                            if (previous.GetParent().GetData().GetName().Equals("CD"))
                            {
                                previous.GetLayerInfo().SetLayerData(ViewLayerType.NER, "MONEY");
                            }
                            else
                            {
                                break;
                            }
                            j--;
                        }
                    }
                }
            }
        }
Exemple #10
0
        protected override void AutoDetectOrganization(ParseTreeDrawable parseTree)
        {
            NodeDrawableCollector    nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode());
            List <ParseNodeDrawable> leafList = nodeDrawableCollector.Collect();

            foreach (var parseNode in leafList)
            {
                if (!parseNode.LayerExists(ViewLayerType.NER))
                {
                    String word = parseNode.GetLayerData(ViewLayerType.TURKISH_WORD).ToLower(new CultureInfo("tr"));
                    if (Word.IsOrganization(word))
                    {
                        parseNode.GetLayerInfo().SetLayerData(ViewLayerType.NER, "ORGANIZATION");
                    }
                    parseNode.CheckGazetteer(organizationGazetteer, word);
                }
            }
        }
Exemple #11
0
        protected override void AutoDetectPerson(ParseTreeDrawable parseTree)
        {
            NodeDrawableCollector    nodeDrawableCollector = new NodeDrawableCollector((ParseNodeDrawable)parseTree.GetRoot(), new IsTurkishLeafNode());
            List <ParseNodeDrawable> leafList = nodeDrawableCollector.Collect();

            foreach (var parseNode in leafList)
            {
                if (!parseNode.LayerExists(ViewLayerType.NER))
                {
                    String word = parseNode.GetLayerData(ViewLayerType.TURKISH_WORD).ToLower(new CultureInfo("tr"));
                    if (Word.IsHonorific(word) && parseNode.GetParent().GetData().GetName().Equals("NNP"))
                    {
                        parseNode.GetLayerInfo().SetLayerData(ViewLayerType.NER, "PERSON");
                    }
                    parseNode.CheckGazetteer(personGazetteer, word);
                }
            }
        }
Exemple #12
0
 public string Convert()
 {
     return(ConvertToString((ParseNodeDrawable)_parseTree.GetRoot()));
 }