private async Task <ProcessingContext> StepProcessing(IParsedDocumentHolder reviewHolder)
        {
            if (reviewHolder == null)
            {
                throw new ArgumentNullException(nameof(reviewHolder));
            }

            Document      document;
            Document      originalDocument = null;
            IParsedReview review           = null;

            try
            {
                Monitor.ManualyCount();
                originalDocument = await reviewHolder.GetOriginal().ConfigureAwait(false);

                document = await reviewHolder.GetParsed().ConfigureAwait(false);

                review = reviewManager(document).Create();
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Error");
                document        = originalDocument.CloneJson();
                document.Status = Status.Error;
            }

            Monitor.Increment();
            var context = new ProcessingContext(originalDocument, document, review);

            return(context);
        }
Ejemplo n.º 2
0
        private async Task <IParsedDocumentHolder> SynchronizedReviews(IParsedDocumentHolder review)
        {
            if (Semaphore != null)
            {
                await Semaphore.WaitAsync().ConfigureAwait(false);
            }

            return(review);
        }
Ejemplo n.º 3
0
        private static async Task <ISentence[]> GetSentence(IParsedDocumentHolder parsedDocument)
        {
            var sentences = new ConcurrentBag <ISentence>();
            var doc       = await parsedDocument.GetParsed().ConfigureAwait(false);

            var review = TestHelper.Instance.ContainerHelper.Resolve <Func <Document, IParsedReviewManager> >()(doc).Create();

            foreach (var sentence in review.Sentences)
            {
                var sentiments  = sentence.Occurrences.Where(item => item.IsSentiment).ToArray();
                var hasPositive = sentiments.Any(item => item.Relationship.Sentiment.DataValue.IsPositive);
                var hasNegative = sentiments.Any(item => !item.Relationship.Sentiment.DataValue.IsPositive);
                if (hasNegative && hasPositive)
                {
                    sentences.Add(sentence);
                }
            }

            return(sentences.ToArray());
        }
Ejemplo n.º 4
0
        private static async Task <IParsedDocumentHolder> ProcessItem(SemaphoreSlim semaphore, MainAspectHandler aspectHandler, IParsedDocumentHolder review)
        {
            try
            {
                await semaphore.WaitAsync().ConfigureAwait(false);

                Document parsedDoc = await review.GetParsed().ConfigureAwait(false);

                Text.Data.IParsedReview parseReview = TestHelper.Instance.ContainerHelper.Resolve <Func <Document, IParsedReviewManager> >()(parsedDoc).Create();
                aspectHandler.Process(parseReview);
                return(review);
            }
            finally
            {
                semaphore.Release();
            }
        }