00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #pragma once
00022
00023 #include "Trie.h"
00024 #include "moses/TranslationModel/PhraseDictionary.h"
00025 #include "moses/InputType.h"
00026 #include "moses/NonTerminal.h"
00027 #include "moses/TranslationModel/fuzzy-match/FuzzyMatchWrapper.h"
00028 #include "moses/TranslationModel/PhraseDictionaryNodeMemory.h"
00029 #include "moses/TranslationModel/PhraseDictionaryMemory.h"
00030
00031 namespace Moses
00032 {
00033 class PhraseDictionaryNodeMemory;
00034 class ChartParser;
00035
00039 class PhraseDictionaryFuzzyMatch : public PhraseDictionary
00040 {
00041 friend std::ostream& operator<<(std::ostream&, const PhraseDictionaryFuzzyMatch&);
00042 friend class RuleTableLoader;
00043
00044 public:
00045 PhraseDictionaryFuzzyMatch(const std::string &line);
00046 ~PhraseDictionaryFuzzyMatch();
00047 void Load(AllOptions::ptr const& opts);
00048
00049 const PhraseDictionaryNodeMemory &GetRootNode(long translationId) const;
00050
00051 ChartRuleLookupManager *CreateRuleLookupManager(
00052 const ChartParser &parser,
00053 const ChartCellCollectionBase &,
00054 std::size_t);
00055 void InitializeForInput(ttasksptr const& ttask);
00056 void CleanUpAfterSentenceProcessing(const InputType& source);
00057
00058 void SetParameter(const std::string& key, const std::string& value);
00059
00060 TO_STRING();
00061
00062 protected:
00063 TargetPhraseCollection::shared_ptr
00064 GetOrCreateTargetPhraseCollection(PhraseDictionaryNodeMemory &rootNode
00065 , const Phrase &source
00066 , const TargetPhrase &target
00067 , const Word *sourceLHS);
00068
00069 PhraseDictionaryNodeMemory &GetOrCreateNode(PhraseDictionaryNodeMemory &rootNode
00070 , const Phrase &source
00071 , const TargetPhrase &target
00072 , const Word *sourceLHS);
00073
00074 void SortAndPrune(PhraseDictionaryNodeMemory &rootNode);
00075 PhraseDictionaryNodeMemory &GetRootNode(const InputType &source);
00076
00077 std::map<long, PhraseDictionaryNodeMemory> m_collection;
00078 std::vector<std::string> m_config;
00079
00080 tmmt::FuzzyMatchWrapper *m_FuzzyMatchWrapper;
00081
00082 };
00083
00084 }