Ejemplo n.º 1
0
        private void ProcessSocviewMessage_2(SocviewMessage socviewMessage)
        {
            var count = default(int);

            foreach (var sent in socviewMessage.Sents)
            {
                var tm_objects = (from tmo in sent.Element.ExtractObjects(OBJECT_ALLOCATE_METHOD, socviewMessage.CoreferenceInfo)
                                  where (tmo.Negative.HasValue || tmo.Positive.HasValue)
                                  select tmo
                                  )
                                 .ToArray();
                #region [.check.]
                Debug.Assert(tm_objects.Length != 0, "tm_objects.Length == 0");
                if (tm_objects.Length == 0)
                {
                    throw (new InvalidOperationException("tm_objects.Length == 0"));
                }
                #endregion

                var frt_final_salt = IsSentEndsWithExclamationPoint(sent.Element) ? 1 : 0;

                foreach (var tm_object in tm_objects)
                {
                    var r = _ObjectsNamesDictionary.TryGetValue(tm_object.Name, out count);
                    #region [.check.]
                    Debug.Assert(r, "!_ObjectsNamesDictionary.TryGetValue( tm_object.Name, out  count )");
                    if (!r)
                    {
                        throw (new InvalidOperationException("!_ObjectsNamesDictionary.TryGetValue( tm_object.Name, out  count )"));
                    }
                    #endregion

                    var e         = tm_object.GetHomogeneousElementOrElement();
                    var frt_final = ((e.GetAttributeFRTFINAL() + 1) * count) + frt_final_salt;
                    #region

                    /*if ( IsSentEndsWithExclamationPoint( tm_object.Element.GetAncestorSent() ) )
                     * {
                     *  frt_final++;
                     * }*/
                    #endregion
                    if (sent.FRT < frt_final)
                    {
                        sent.FRT = frt_final;
                    }

                    var snt_final = e.GetAttributeSNTFINAL();
                    if (snt_final.ToString().Contains("Pos"))
                    {
                        sent.SumPosFRT += frt_final;
                        sent.SumPos++;
                    }
                    else
                    {
                        sent.SumNegFRT += frt_final;
                        sent.SumNeg++;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void ProcessSocviewMessage_1(SocviewMessage socviewMessage)
        {
            if (socviewMessage.IsProcessed)
            {
                throw (new InvalidOperationException("socviewMessage.IsProcessed"));
            }

            //1.
            var t         = _TonalityMarking.ExecuteTonalityMarking4SocviewCallback(socviewMessage.PlainText);
            var xdocument = t.Item1;

            socviewMessage.CoreferenceInfo = t.Item2;

            //2.
            socviewMessage.Objects = xdocument.ExtractObjects(OBJECT_ALLOCATE_METHOD, socviewMessage.CoreferenceInfo);
            foreach (var @object in socviewMessage.Objects)
            {
                if (Algorithms.IsObjectEntity(@object.Element))
                {
                    _ObjectsNamesDictionary.AddOrUpdate(@object.Name, 1, (e, i) => i + 1);
                }
                else
                {
                    _ObjectsNamesDictionary.TryAdd(@object.Name, 1);
                }
            }

            //3.
            socviewMessage.Sents = (from sent in xdocument
                                    .Root.Elements(TextMining.Core.XLinqExtensions.Consts.SENT_ELEMENT)               //.XPathSelectElements("TEXT/SENT")
                                    where sent.Descendants().Any(d => d.IsTypeInquiry() &&
                                                                 d.HasAttributeSNTFINAL())
                                    select
                                    new SocviewSent()
            {
                Element = sent,
            }
                                    )
                                   .ToArray();

            //4.
            var offsetsProcessor = new OffsetsProcessor(/*socviewMessage.PlainText*/);

            foreach (var sent in socviewMessage.Sents)
            {
                try
                {
                    sent.Offsets = offsetsProcessor.CreateOffsetsString(sent.Element);
                }
                catch (Exception ex)
                {
                    sent.Offsets = ex.ToString();
                }
            }
        }