Exemple #1
0
        private void SetUnsuccessfulParseEvals(IWfiWordform wordform, Opinions opinion)
        {
            var segmentAnalyses = new HashSet <IAnalysis>();

            foreach (ISegment seg in wordform.OccurrencesBag)
            {
                segmentAnalyses.UnionWith(seg.AnalysesRS);
            }
            foreach (IWfiAnalysis analysis in wordform.AnalysesOC)
            {
                // ensure that used analyses have a user evaluation
                if (segmentAnalyses.Contains(analysis) || analysis.MeaningsOC.Any(gloss => segmentAnalyses.Contains(gloss)))
                {
                    m_userAgent.SetEvaluation(analysis, Opinions.approves);
                }
                if (analysis.GetAgentOpinion(m_parserAgent) == Opinions.noopinion)
                {
                    if (analysis.GetAgentOpinion(m_userAgent) == Opinions.noopinion)
                    {
                        analysis.Delete();
                    }
                    else if (opinion != Opinions.noopinion)
                    {
                        m_parserAgent.SetEvaluation(analysis, opinion);
                    }
                }
            }
        }
        /// <summary>
        /// Initialize the combo contents.
        /// </summary>
        public void SetupCombo()
        {
            CheckDisposed();

            ITsStrBldr builder = TsStrBldrClass.Create();

            m_fInitializing = true;
            int wordformHvo = m_owner.GetWordformHvoOfAnalysis();

            // Add the analyses, and recursively the other items.
            foreach (int hvoAnalysis in m_cache.GetVectorProperty(wordformHvo,
                                                                  (int)WfiWordform.WfiWordformTags.kflidAnalyses, false))
            {
                IWfiAnalysis wa = (IWfiAnalysis)CmObject.CreateFromDBObject(m_cache,
                                                                            hvoAnalysis,
                                                                            CmObject.GetTypeFromFullClassName(m_cache, "SIL.FieldWorks.FDO.Ling.WfiAnalysis"),
                                                                            false, false);
                Opinions o = wa.GetAgentOpinion(
                    m_cache.LangProject.DefaultUserAgent);
                // skip any analysis the user has disapproved.
                if (o != Opinions.disapproves)
                {
                    AddAnalysisItems(hvoAnalysis);
                    AddSeparatorLine();
                }
            }

            // Add option to clear the analysis altogeter.
            AddItem(wordformHvo, MakeSimpleString(ITextStrings.ksNewAnalysis), false, WfiWordform.kclsidWfiWordform);
            // Add option to reset to the default
            AddItem(0, MakeSimpleString(ITextStrings.ksUseDefaultAnalysis), false);

            m_fInitializing = false;
        }
Exemple #3
0
        /// <summary>
        /// Initialize the combo contents.
        /// </summary>
        public void SetupCombo()
        {
            CheckDisposed();

            m_fInitializing = true;
            var wordform = m_owner.GetWordformOfAnalysis();

            // Add the analyses, and recursively the other items.
            foreach (var wa in wordform.AnalysesOC)
            {
                Opinions o = wa.GetAgentOpinion(
                    m_cache.LangProject.DefaultUserAgent);
                // skip any analysis the user has disapproved.
                if (o != Opinions.disapproves)
                {
                    AddAnalysisItems(wa);
                    AddSeparatorLine();
                }
            }

            // Add option to clear the analysis altogeter.
            AddItem(wordform, MakeSimpleString(ITextStrings.ksNewAnalysis), false, WfiWordformTags.kClassId);
            // Add option to reset to the default
            AddItem(null, MakeSimpleString(ITextStrings.ksUseDefaultAnalysis), false);

            m_fInitializing = false;
        }
Exemple #4
0
        public void AddOpinion(int value, string description, string customerId)
        {
            var isAlreadyRatedByUser = Opinions.Any(o => o.CustomerId == customerId);

            if (isAlreadyRatedByUser)
            {
                throw new AlreadyRatedException(Id, customerId);
            }

            var opinion = new Opinion(value, description, customerId);

            _opinions.Add(opinion);
        }
Exemple #5
0
 private void OnReturnFromNewOpinion(OpinionVmi opinion)
 {
     Opinions.Insert(0, opinion);
 }
Exemple #6
0
		/// <summary>
		/// Tells whether the giving agent has approved or disapproved of this analysis, or has not given an opinion.
		/// </summary>
		/// <param name="agent"></param>
		/// <param name="opinion"></param>
		/// <returns>one of the enumerated values in Opinions.</returns>
		public void SetAgentOpinion(ICmAgent agent, Opinions opinion)
		{
			int wasAccepted = 0;
			//now set the opinion to what it should be
			switch(opinion)
			{
				case Opinions.approves:
					wasAccepted = 1;
					break;
				case Opinions.disapproves:
					wasAccepted = 0;
					break;
				case Opinions.noopinion:
					wasAccepted = 2;
					break;
			}

			agent.SetEvaluation(Hvo, wasAccepted, "");
		}
Exemple #7
0
		private List<int> AnalysesWithHumanEvaluation(Opinions opinion)
		{
			List<int> matchingHvos = new List<int>();
			ICmAgent humanAgent = m_cache.LangProject.DefaultUserAgent;
			// Dummy wordforms shouldn't have any analyses.
			if (IsDummyObject)
				return matchingHvos;
			foreach(IWfiAnalysis wa in AnalysesOC)
			{
				if (wa.GetAgentOpinion(humanAgent) == opinion)
					matchingHvos.Add(wa.Hvo);
			}

			return matchingHvos;
		}
 public void SortOpinions()
 {
     Opinions = Opinions.OrderByDescending(o => o.DateCreated);
 }
Exemple #9
0
		private void SetUnsuccessfulParseEvals(IWfiWordform wordform, Opinions opinion)
		{
			var segmentAnalyses = new HashSet<IAnalysis>();
			foreach (ISegment seg in wordform.OccurrencesBag)
				segmentAnalyses.UnionWith(seg.AnalysesRS);
			foreach (IWfiAnalysis analysis in wordform.AnalysesOC)
			{
				// ensure that used analyses have a user evaluation
				if (segmentAnalyses.Contains(analysis) || analysis.MeaningsOC.Any(gloss => segmentAnalyses.Contains(gloss)))
					m_userAgent.SetEvaluation(analysis, Opinions.approves);
				if (analysis.GetAgentOpinion(m_parserAgent) == Opinions.noopinion)
				{
					if (analysis.GetAgentOpinion(m_userAgent) == Opinions.noopinion)
						analysis.Delete();
					else if (opinion != Opinions.noopinion)
						m_parserAgent.SetEvaluation(analysis, opinion);
				}
			}
		}
Exemple #10
0
        public void SecondStepExtractOpinions()
        {
            bool            moreOpinionsExist = false;
            int             opinionNumberPage = 1;
            string          opinionUrl        = "opinie-";
            string          opinionFirstPage  = "#tab=reviews";
            OpinionDataHTML opinionData       = new OpinionDataHTML();
            Dictionary <int, List <string> > dictionaryWithHTMLOpinions = new Dictionary <int, List <string> >();

            ProductData mainData = new ProductData(url, pathToFileWebsiteTxt);

            this.Brand            = mainData.Brand;
            this.BriefDescription = mainData.BriefDescription;
            this.NumberOfReviews  = mainData.NumberOfReviews;
            this.Price            = mainData.Price;
            this.ProductName      = mainData.ProductName;
            this.Rating           = mainData.Rating;
            this.Type             = mainData.Type;
            this.Variants         = mainData.Variants;
            moreOpinionsExist     = mainData.MoreOpinionsExist;

            if (moreOpinionsExist)
            {
                bool isMorePage = ExistMoreThanOnePage(pathToFileWebsiteTxt);

                if (opinionNumberPage == 1)
                {
                    string subUrl = string.Format(
                        "{0}/{1}",
                        url,
                        opinionFirstPage
                        );

                    ConvertHTMLToTxt(subUrl);
                    GetHTMLOpinions(pathToFileWebsiteTxt, opinionData);
                }

                while (isMorePage)
                {
                    opinionNumberPage++;

                    string subUrl = string.Format(
                        "{0}/{1}{2}",
                        url,
                        opinionUrl,
                        opinionNumberPage.ToString()
                        );

                    ConvertHTMLToTxt(subUrl);
                    GetHTMLOpinions(pathToFileWebsiteTxt, opinionData);

                    isMorePage = ExistMoreThanOnePage(pathToFileWebsiteTxt);
                }
            }
            else
            {
                GetHTMLOpinions(pathToFileWebsiteTxt, opinionData);
            }

            dictionaryWithHTMLOpinions = opinionData.DictionaryWithHTMLOpinions;

            Opinions = new Opinions(dictionaryWithHTMLOpinions, pathToFileOneOpinion);

            RemoveFilesFromTemp();
        }
		private IEnumerable<IWfiAnalysis> AnalysesWithHumanEvaluation(Opinions opinion)
		{
			ICmAgent humanAgent = m_cache.LangProject.DefaultUserAgent;
			return from wa in AnalysesOC where wa.GetAgentOpinion(humanAgent) == opinion select wa;
		}
		/// <summary>
		/// Tells whether the giving agent has approved or disapproved of this analysis, or has not given an opinion.
		/// </summary>
		/// <param name="agent"></param>
		/// <param name="opinion"></param>
		/// <returns>one of the enumerated values in Opinions.</returns>
		public void SetAgentOpinion(ICmAgent agent, Opinions opinion)
		{
			//int wasAccepted = 0;
			////now set the opinion to what it should be
			//switch (opinion)
			//{
			//    case Opinions.approves:
			//        wasAccepted = 1;
			//        break;
			//    case Opinions.disapproves:
			//        wasAccepted = 0;
			//        break;
			//    case Opinions.noopinion:
			//        wasAccepted = 2;
			//        break;
			//}

			agent.SetEvaluation(this, opinion);
		}
Exemple #13
0
 public double GetRating()
 => Opinions.Any() ? Opinions.Select(o => o.OfferRate.Rating).Sum() / Opinions.Count : 0;