Пример #1
0
        public void isATest()
        {
            //good
            word = new WordObject("O", "text", "feminine", "dual", "any", "polarity", "verb", "unknown", new string[] { "ה" }, "none", "", "", "", "", true, "lemma");
            Assert.IsTrue(word.isA(WordObject.WordType.verbWord));

            //bad
            word = new WordObject("O", "text", "feminine", "dual", "any", "polarity", "sddsdsds", "unknown", new string[] { "ה" }, "none", "", "", "", "", true, "lemma");
            Assert.IsTrue(word.isA(WordObject.WordType.unknownWord));

            //evil
            word = new WordObject("O", "text", "feminine", "dual", "any", "polarity", null, "unknown", new string[] { "ה" }, "none", "", "", "", "", true, "lemma");
            Assert.IsTrue(word.isA(WordObject.WordType.unknownWord));
        }
Пример #2
0
        public List <WordObject> getWordsObjectFromParserServer(String str)
        {
            List <WordObject> sentenceFromServer = new List <WordObject>();
            var res = new List <WordObject>();

            try
            {
                string JsonRes = HttpCtrl.sendToHebrewMorphAnalizer(str);

                if (JsonRes != null && JsonRes != "")
                {
                    sentenceFromServer = JsonConvert.DeserializeObject <List <WordObject> >(JsonRes);
                }

                //may be mispelling for the first time


                var firstWord = true;
                // print tagged sentence by using AnalysisInterface, as follows:
                foreach (WordObject w in sentenceFromServer)
                {
                    WordObject word = w;

                    //two NRI in a row
                    //join word if ist part of a name
                    if (res.Count > 0)
                    {
                        var last = res.LastOrDefault();
                        if (((last.Ner == word.Ner && last.Ner != "O") || (last.isA(properNameWord) && word.isA(properNameWord))) &&
                            !word.Prefixes.Contains("ו") && !firstWord)
                        {
                            res.LastOrDefault().Text  = res.LastOrDefault().Text.Remove(0, res.LastOrDefault().Prefixes.Count());
                            res.LastOrDefault().Text += " " + word.Text;
                            res.LastOrDefault().Lemma = res.LastOrDefault().Text;
                            continue;
                        }
                    }
                    firstWord = false;
                    res.Add(w);
                }
            }
            catch (Exception ex) //if parser server is down
            {
                var words = str.Split(' ');
                foreach (var w in words)
                {
                    var word = new WordObject(w, nounWord);
                    sentenceFromServer.Add(word);
                }
            }

            return(res);
        }
Пример #3
0
        //public WorldObject Tag(ref WorldObject prevObj, ref Sentence sentence, ref ContentTurn context)
        //{

        //    //   var word = sentence.Words.FirstOrDefault();
        //    var word = sentence.Words.FirstOrDefault();

        //    if (word != null)
        //    {
        //        sentence.Words.RemoveAt(0);
        //        if (word.isA(helloWord))
        //        {
        //            return (HelloObject)word.WorldObject;
        //        }
        //        else if (word.isA(questionWord))
        //        {
        //            return (QuestionObject)word.WorldObject;

        //        }
        //        else if (word.isA(hyphenWord))
        //        {
        //            var objective = Tag(ref prevObj, ref sentence, ref context);

        //            if (objective != null)
        //            {
        //                prevObj.addRelation(new expansionRelObject(objective));
        //                prevObj = objective;
        //            }
        //            else
        //            {
        //                throw new SemanticException("prep without objective");
        //            }
        //            return null;
        //        }
        //        else if (word.isA(copulaWord))
        //        {
        //            var objective = Tag(ref prevObj, ref sentence, ref context);

        //            if (objective != null)
        //            {
        //                var guf = (gufObject)word.WorldObject;
        //                prevObj.addRelation(new copulaRelObject(objective, guf));
        //                prevObj = objective;
        //                return null;
        //            }
        //            else
        //            {
        //                return prevObj;
        //              //  throw new SemanticException("prep without objective");
        //            }
        //            return null;
        //        }

        //        else if (word.isA(gufWord))
        //        {
        //            return word.WorldObject;
        //        }
        //        else if (word.isA(nounWord))
        //        {
        //            if (word.prefix == null)
        //            {
        //                if (word.WorldObject != null) return word.WorldObject;
        //                else
        //                {
        //                    return new NounObject(word.Word);
        //                }
        //            }
        //            else
        //            {

        //                WorldObject obj = new NounObject(word.Word);
        //                if (word.ha)
        //                {
        //                    obj.DefiniteArticle = true;
        //                }

        //                if (word.le)
        //                {
        //                    prevObj.addRelation(new PrepRelObject(new NounObject(word.Word), PrepType.toPrep));
        //                    return null;
        //                }
        //                else if (word.me)
        //                {
        //                    return obj;
        //                }

        //                return obj;
        //                //        throw new SemanticException("unknown prefix");
        //            }
        //        }
        //        else if (word.isA(personWord))
        //        {
        //            if (word.WorldObject != null) return word.WorldObject;
        //            else
        //            {
        //                return new PersonObject(word.Word);
        //            }
        //        }
        //        else if (word.isA(negationWord))
        //        {
        //            var objective = Tag(ref prevObj, ref sentence, ref context);
        //            objective.Negat = true;
        //            return objective;
        //        }
        //        else if (word.isA(verbWord))
        //        {
        //            if(prevObj != null)
        //            {
        //                var objective = new VerbObject(word.Word);
        //                prevObj.addRelation(new VerbRelObject(objective));
        //                prevObj = objective;
        //            }
        //            else
        //            {
        //                var prev = Tag(ref prevObj, ref sentence, ref context);
        //                var objective = new VerbObject(word.Word);
        //                prev.addRelation(new VerbRelObject(objective));
        //                return prevObj;
        //            }

        //            return null;
        //        }
        //        else if (word.isA(timeWord))
        //        {
        //            if (word.WorldObject != null) return word.WorldObject;
        //            else
        //            {
        //                return new TimeObject(word.Word);
        //            }

        //        }
        //        else if (word.isA(adjectiveWord | adverbWord))
        //        {
        //            if (prevObj != null)
        //            {
        //                prevObj.addRelation(new adjectiveRelObject(new AdjObject(word.Word)));
        //                return null;
        //            }else
        //            {
        //                var objective = Tag(ref prevObj, ref sentence, ref context);
        //                objective.addRelation(new adjectiveRelObject(new AdjObject(word.Word)));
        //                return objective;
        //            }
        //        }
        //        else if (word.isA(prepWord))
        //        {
        //            var objective = Tag(ref prevObj, ref sentence, ref context);
        //            if (objective != null & prevObj != null)
        //            {
        //                prevObj.addRelation(new PrepRelObject(objective, ((PrepRelObject)word.WorldObject).Type));
        //                return prevObj;
        //            }
        //            else
        //            {
        //                var objective2 = Tag(ref prevObj, ref sentence, ref context);
        //                objective2.addRelation(new PrepRelObject(objective, ((PrepRelObject)word.WorldObject).Type));
        //                return objective2;
        //            }

        //        }
        //        else if (word.isA(locationWord))
        //        {
        //            return word.WorldObject;
        //        }
        //        else if (word.isA(conjunctionWord))
        //        {
        //            var objective = Tag(ref prevObj, ref sentence, ref context);
        //            if (objective != null)
        //            {
        //                prevObj.addRelation(new PrepRelObject(objective, ((PrepRelObject)word.WorldObject).Type));
        //                prevObj = objective;
        //            }
        //            else
        //            {
        //                //     throw new SemanticException("prep without objective");
        //            }
        //            return null;
        //        }

        //        else
        //        {
        //            return null;
        //            //      throw new NotImplementedException();
        //        }
        //    }
        //    else
        //    {
        //        return null;
        //    }



        //}

        internal bool isAName(WordObject w)
        {
            return(w.isA(personWord) || w.isA(properNameWord));
        }