Exemplo n.º 1
0
        /**
         * /// Creates a unit search state for the given unit node
         *
         * /// @param endNode  the unit node
         * /// @param previous the previous state
         * /// @return the search state
         */
        ISearchStateArc CreateEndUnitArc(EndNode endNode, LexTreeState previous)
        {
            float smearProbability     = Parent.GetUnigramSmear(endNode) + previous.SmearTerm;
            float languageProbability  = smearProbability - previous.SmearProb;
            float insertionProbability = Parent.CalculateInsertionProbability(endNode);

            return(new LexTreeEndUnitState(endNode, WordHistory, previous.SmearTerm, smearProbability, languageProbability,
                                           insertionProbability, Parent));
        }
Exemplo n.º 2
0
        /**
         * /// Creates a word search state for the given word node
         *
         * /// @param wordNode the wordNode
         *
         *
         * /// @return the search state for the wordNode
         */
        protected ISearchStateArc CreateWordStateArc(WordNode wordNode,
                                                     HMMNode lastUnit, LexTreeState previous)
        {
            //TODO: UNCOMMENT DURING RELEASE
            //this.LogInfo("CWSA " + wordNode + " fup " /*+ fixupProb*/);
            float languageProbability = Parent.LogOne;
            Word  nextWord            = wordNode.GetWord();
            float smearTerm           = previous.SmearTerm;

            if (nextWord.IsFiller && !Equals(nextWord, Parent.SentenceEndWord))
            {
                return(new LexTreeWordState(wordNode, lastUnit,
                                            _wordSequence,
                                            smearTerm, Parent.LogOne, languageProbability, Parent));
            }

            WordSequence nextWordSequence = _wordSequence.AddWord(nextWord, Parent.MaxDepth);
            float        probability      = Parent.LanguageModel.GetProbability(nextWordSequence) * Parent.LanguageWeight;

            smearTerm = Parent.GetSmearTermFromLanguageModel(nextWordSequence);

            //this.LogInfo("LP " + nextWordSequence + " " /*+ logProbability*/);
            //    subtract off the previously applied smear probability
            languageProbability = probability - previous.SmearProb;

            //Boolean collapse = (probability.depth < parent.maxDepth - 1) || !parent.fullWordHistories;

            if (Equals(nextWord, Parent.SentenceEndWord))
            {
                return(new LexTreeEndWordState(wordNode, lastUnit,
                                               nextWordSequence.Trim(Parent.MaxDepth - 1),
                                               smearTerm, Parent.LogOne, languageProbability, Parent));
            }

            return(new LexTreeWordState(wordNode, lastUnit,
                                        nextWordSequence.Trim(Parent.MaxDepth - 1),
                                        smearTerm, Parent.LogOne, languageProbability, Parent));
        }
Exemplo n.º 3
0
        /**
         * /// Creates a unit search state for the given unit node
         *
         * /// @param hmmNode the unit node
         *
         * /// @return the search state
         */
        public ISearchStateArc CreateUnitStateArc(HMMNode hmmNode, LexTreeState previous)
        {
            ISearchStateArc arc;

            float insertionProbability = Parent.CalculateInsertionProbability(hmmNode);
            float smearProbability     = Parent.GetUnigramSmear(hmmNode) + previous.SmearTerm;
            float languageProbability  = smearProbability - previous.SmearProb;

            //if we want a unit state create it, otherwise
            //get the first hmm state of the unit

            if (Parent.GenerateUnitStates)
            {
                arc = new LexTreeUnitState(hmmNode, WordHistory, previous.SmearTerm, smearProbability, languageProbability,
                                           insertionProbability, Parent);
            }
            else
            {
                IHMM hmm = hmmNode.HMM;
                arc = new LexTreeHmmState(hmmNode, WordHistory, previous.SmearTerm, smearProbability, hmm.GetInitialState(),
                                          languageProbability, insertionProbability, null, Parent);
            }
            return(arc);
        }