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);
        }
        public virtual List <List <WordObject> > meniAnalize(String str, bool isUserInput)
        {
            List <List <WordObject> > allRes = new List <List <WordObject> >();

            if (str != null)
            {
                str = str.Trim();
                if (str != null && str.Length > 0)
                {
                    if (isUserInput)
                    {
                        var correctSpelling = HttpCtrl.correctSpelling(str);
                        if (correctSpelling != null)
                        {
                            str = correctSpelling.Replace("\\", "");
                        }
                    }


                    var strRes = removeParentheses(str, '(', ')');
                    strRes = removeParentheses(strRes, '[', ']');
                    var sentenceFromServer = getWordsObjectFromParserServer(strRes);


                    if (sentenceFromServer != null && sentenceFromServer.Count >= 0)
                    {
                        var allText           = splitByLine(sentenceFromServer);
                        List <WordObject> res = null;
                        foreach (var sentence in allText)
                        {
                            res = new List <WordObject>();
                            if (sentence != null && sentence.Count >= 0)
                            {
                                //remove nikod etc.s
                                var firstWord = true;
                                // print tagged sentence by using AnalysisInterface, as follows:
                                foreach (WordObject w in sentence)
                                {
                                    WordObject word = w;
                                    //         if (hebDictionary.contains(w.Text))
                                    //       {
                                    //              word = hebDictionary.get(word.Text);
                                    //         }

                                    //joinwords
                                    //if (res.LastOrDefault() != null && word.isA(nounWord) && res.LastOrDefault().isA(nounWord))
                                    //{
                                    //    var last = res.LastOrDefault();
                                    //    res.RemoveAt(res.Count - 1);
                                    //    last.Text = last.Text + " " + word.Text;
                                    //    last.WordT = last.WordT | word.WordT; //combin flages
                                    //    word = last;
                                    //}

                                    res.Add(word);
                                }
                                res.RemoveAll(x => (x.Text.Length <= 1) && (x.Pos == "punctuation") && (x.Text != "|"));
                                res = tryMatchEntities(res, isUserInput);
                            }

                            // res = checkPhrases(res);

                            allRes.Add(res);
                        }
                    }
                }
            }
            return(allRes);
        }