Example #1
0
        public double GetTranslationProbability(string sourceWord, string targetWord)
        {
            CheckDisposed();

            double transProb    = _directWordAlignmentModel.GetTranslationProbability(sourceWord, targetWord);
            double invTransProb = _inverseWordAlignmentModel.GetTranslationProbability(targetWord, sourceWord);

            return(Math.Max(transProb, invTransProb));
        }
Example #2
0
        public IEnumerable <AlignedWordPair> GetAlignedWordPairs(IWordAlignmentModel model,
                                                                 IReadOnlyList <string> sourceSegment, IReadOnlyList <string> targetSegment)
        {
            foreach (AlignedWordPair wordPair in GetAlignedWordPairs(out IReadOnlyList <int> sourceIndices,
                                                                     out IReadOnlyList <int> targetIndices))
            {
                string sourceWord = sourceSegment[wordPair.SourceIndex];
                string targetWord = targetSegment[wordPair.TargetIndex];
                wordPair.TranslationProbability = model.GetTranslationProbability(sourceWord, targetWord);

                int prevSourceIndex = wordPair.TargetIndex == 0 ? -1 : sourceIndices[wordPair.TargetIndex - 1];
                int prevTargetIndex = wordPair.SourceIndex == 0 ? -1 : targetIndices[wordPair.SourceIndex - 1];
                wordPair.AlignmentProbability = model.GetAlignmentProbability(sourceSegment.Count, prevSourceIndex,
                                                                              wordPair.SourceIndex, targetSegment.Count, prevTargetIndex, wordPair.TargetIndex);

                yield return(wordPair);
            }
        }
Example #3
0
        public static Dictionary <string, Dictionary <string, double> > GetTranslationTable(this IWordAlignmentModel model,
                                                                                            double threshold = 0)
        {
            var results = new Dictionary <string, Dictionary <string, double> >();

            for (int i = 0; i < model.SourceWords.Count; i++)
            {
                var row = new Dictionary <string, double>();
                for (int j = 0; j < model.TargetWords.Count; j++)
                {
                    double prob = model.GetTranslationProbability(i, j);
                    if (prob > threshold)
                    {
                        row[model.TargetWords[j]] = prob;
                    }
                }
                results[model.SourceWords[i]] = row;
            }
            return(results);
        }