public NaturalLanguageData AnalyzeMessage(Chat chat)
        {
            var document  = new Document(chat.message);
            var sentences = new List <ChatModels.Sentence>();

            foreach (var s in document.Sentences)
            {
                var sentence = new ChatModels.Sentence();

                sentence.tokens = new List <Token>();

                for (var index = 0; index < s.Words.Count; index++)
                {
                    var token = new Token();
                    token.POSTag = s.PosTags.ToList()[index];
                    token.Lexeme = s.Lemmas.ToList()[index];
                    token.Stem   = s.Lemmas.ToList()[index];
                    sentence.tokens.Add(token);
                }

                sentence.interrogative = isInterrogative(s);

                sentence.chunks   = new List <Chunk>();
                sentence.triplets = new Triplets();

                sentences.Add(sentence);
            }

            var naturalLanguageData = new NaturalLanguageData();

            naturalLanguageData.sentences = sentences;

            return(naturalLanguageData);
        }
        public List <ChatModels.Sentence> AnalyzeMessage(string message)
        {
            var sentences = new List <ChatModels.Sentence>();

            if (message == null)
            {
                message = string.Empty;
            }

            var document = new Document(message);

            foreach (var stanfordSentence in document.Sentences)
            {
                var source        = stanfordSentence.ToString();
                var tokens        = _tokenService.GetTokens(stanfordSentence);
                var openieTriples = new List <OpenieTriple>();
                try
                {
                    openieTriples = _openieService.GetOpenieTriples(stanfordSentence.OpenIe);
                }
                catch (UnhandledLibraryException simpleNlpException)
                {
                    openieTriples = new List <OpenieTriple>();
                }
                var sentenceType   = _sentenceTypeService.GetSentenceType(tokens);
                var subject        = _subjectService.GetSubject(openieTriples, tokens, sentenceType);
                var sentenceObject = _objectService.GetObject(openieTriples, tokens, sentenceType);
                var predicate      = _predicateService.GetPredicate(openieTriples, tokens, sentenceType);

                var analyzedSentence = new ChatModels.Sentence
                {
                    Source        = source,
                    Sentiment     = _sentimentAnalyzationService.GetSentiment(source),
                    Tokens        = tokens,
                    OpenieTriples = openieTriples,
                    SentenceType  = sentenceType,
                    Voice         = _voiceService.GetVoice(tokens),
                    Subject       = subject,
                    Object        = sentenceObject,
                    Predicate     = predicate,
                };

                sentences.Add(analyzedSentence);
            }

            return(sentences);
        }