public async Task ProductTest(SentimentAspectData data) { log.LogInformation("ProductTest: {0}", data); var aspectHandler = new MainAspectHandler(new AspectContextFactory()); var runner = new TestRunner(TestHelper.Instance, data.Sentiment); var semaphore = new SemaphoreSlim(Environment.ProcessorCount / 2, Environment.ProcessorCount / 2); IObservable <IParsedDocumentHolder> result = runner.Load().ObserveOn(TaskPoolScheduler.Default).Select(review => ProcessItem(semaphore, aspectHandler, review)).Merge(); await result; IAspectSerializer serializer = TestHelper.Instance.ContainerHelper.Resolve <IAspectSerializer>(); serializer.Serialize(aspectHandler).Save(Path.Combine(TestContext.CurrentContext.TestDirectory, data.Sentiment.Product + ".xml")); Text.Words.IWordItem[] features = aspectHandler.GetFeatures(10).ToArray(); Text.Words.IWordItem[] attributes = aspectHandler.GetAttributes(10).ToArray(); for (var i = 0; i < data.Features.Items.Length; i++) { Assert.IsTrue(features.Any(item => string.Compare(item.Text, data.Features.Items[i], StringComparison.OrdinalIgnoreCase) == 0)); } for (var i = 0; i < data.Attributes.Items.Length; i++) { Assert.IsTrue(attributes.Any(item => string.Compare(item.Text, data.Attributes.Items[i], StringComparison.OrdinalIgnoreCase) == 0)); } }
public TrainingClient(ILogger <TrainingClient> log, IClientContext clientContext) { this.clientContext = clientContext ?? throw new ArgumentNullException(nameof(clientContext)); if (string.IsNullOrEmpty(clientContext.Context.SvmPath)) { throw new ArgumentException("Value cannot be null or empty.", nameof(clientContext.Context.SvmPath)); } this.log = log ?? throw new ArgumentNullException(nameof(log)); SentimentVector = new SentimentVector(); analyze = new AnalyseReviews(); featureExtractor = new MainAspectHandler(new AspectContextFactory()); sentimentVector = new SentimentVector(); }
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(); } }
public void Setup() { instance = new MainAspectHandler(new AspectContextFactory(), 0); }