Esempio n. 1
0
        private SubjectData _GetSubjectData(XElement subsent, XElement breakSearchElement, bool breakByQuote)
        {
            subsent.ThrowIfNotSubsent();

            if (subsent.IsSubsentHasObject() || subsent.IsSubsentInDirectSpeech())
            {
                return(null);
            }

            var tuples = from it in subsent.Elements().TakeWhile(_ => _ != breakSearchElement)
                         where it.IsElementCET() && it.IsVALUEStartsWith(CET_WORDS)

                         let @saaet = GetTuple(it, breakByQuote)
                                      where @saaet.IsNotNull()

                                      where IsFollowingCondition(@saaet.Entity, breakByQuote)
                                      select @saaet;

            var aarray = tuples.ToArray();

            if (!aarray.Any())
            {
                return(null);
            }

            var verbValue       = ENTITY_WORDS.AnyEx() ? CET_WORDS.First() + ' ' + ENTITY_WORDS.First() : null;
            var subjectEssences = new List <SubjectEssence>();

            foreach (var a in aarray)
            {
                subjectEssences.Add(verbValue.IsNotNull() ? new SubjectEssence(a, verbValue)
                                                           : new SubjectEssence(a));
            }

            var subjectData = new SubjectData(subjectEssences, aarray.First().Entity, aarray.Last().Entity);

            return(subjectData);

            #region commented

            /*var a = t.FirstOrDefault();
             * if ( a == null )
             *  return (null);
             *
             * var subjectEssences = new[] { ENTITY_WORDS.AnyEx() ? new SubjectEssence( a, CET_WORDS.First() + ' ' + ENTITY_WORDS.First() )
             *                                                 : new SubjectEssence( a ) };
             * var subjectData = new SubjectData( subjectEssences, a.Entity, a.Entity );
             * return (subjectData);*/
            #endregion
        }
Esempio n. 2
0
 protected bool EntityCondition(string value)
 {
     return(ENTITY_WORDS.Any(_ => value.StartsWith(_)));
 }