| |
| |
| |
| |
| |
| |
| #pragma once |
|
|
| #include "../PhraseTable.h" |
| #include "../../legacy/Util2.h" |
| #include "../../SCFG/InputPath.h" |
| #include "DynamicPhraseTableNode.h" |
| #include "../../PhraseBased/PhraseImpl.h" |
| #include "../../PhraseBased/TargetPhraseImpl.h" |
| #include "../../PhraseBased/TargetPhrases.h" |
| #include "../../SCFG/PhraseImpl.h" |
| #include "../../SCFG/TargetPhraseImpl.h" |
| #include "../../SCFG/TargetPhrases.h" |
|
|
| namespace Moses2 |
| { |
|
|
| class DynamicPhraseTable: public PhraseTable |
| { |
| typedef DynamicPhraseTableNS::Node<Word, Phrase<Word>, TargetPhraseImpl, TargetPhrases> PBNODE; |
| typedef DynamicPhraseTableNS::Node<SCFG::Word, Phrase<SCFG::Word>, SCFG::TargetPhraseImpl, SCFG::TargetPhrases> SCFGNODE; |
|
|
| |
| class ActiveChartEntryMem : public SCFG::ActiveChartEntry |
| { |
| typedef SCFG::ActiveChartEntry Parent; |
| public: |
| const DynamicPhraseTable::SCFGNODE &node; |
|
|
| ActiveChartEntryMem(MemPool &pool, const DynamicPhraseTable::SCFGNODE &vnode) |
| :Parent(pool) |
| ,node(vnode) |
| {} |
|
|
| ActiveChartEntryMem( |
| MemPool &pool, |
| const DynamicPhraseTable::SCFGNODE &vnode, |
| const ActiveChartEntry &prevEntry) |
| :Parent(prevEntry) |
| ,node(vnode) |
| {} |
| }; |
|
|
| |
| public: |
| DynamicPhraseTable(size_t startInd, const std::string &line); |
| virtual ~DynamicPhraseTable(); |
|
|
| virtual TargetPhrases *Lookup(const Manager &mgr, MemPool &pool, |
| InputPath &inputPath) const; |
|
|
| virtual void InitActiveChart( |
| MemPool &pool, |
| const SCFG::Manager &mgr, |
| SCFG::InputPath &path) const; |
|
|
| void Lookup(MemPool &pool, |
| const SCFG::Manager &mgr, |
| size_t maxChartSpan, |
| const SCFG::Stacks &stacks, |
| SCFG::InputPath &path) const; |
|
|
| virtual void InitializeForInput(const ManagerBase &mgr, const InputType &input); |
| virtual void CleanUpAfterSentenceProcessing(const System &system, const InputType &input) const; |
|
|
| protected: |
| thread_local static PBNODE m_rootPb; |
|
|
| void LookupGivenNode( |
| MemPool &pool, |
| const SCFG::Manager &mgr, |
| const SCFG::ActiveChartEntry &prevEntry, |
| const SCFG::Word &wordSought, |
| const Moses2::Hypotheses *hypos, |
| const Moses2::Range &subPhraseRange, |
| SCFG::InputPath &outPath) const; |
|
|
| void CreatePTForInput(const ManagerBase &mgr, std::string phraseTableString); |
|
|
| }; |
|
|
| } |
|
|
|
|