diff options
author | Kenneth Heafield <github@kheafield.com> | 2013-04-26 00:51:26 +0400 |
---|---|---|
committer | Kenneth Heafield <github@kheafield.com> | 2013-04-26 00:51:26 +0400 |
commit | 38b29e2c79b2b706d4672b27a97128a693d42db2 (patch) | |
tree | 18d816d610730d018336173b92e60df479bf8362 | |
parent | f1d366381033c0caae18f8d15305ded38734bdbf (diff) | |
parent | 4b4aba3d814ed135d0852259914712399f64b9e4 (diff) |
Merge branch 'master' of github.com:moses-smt/mosesdecoder
-rw-r--r-- | moses/TranslationModel/BilingualDynSuffixArray.cpp | 6 | ||||
-rw-r--r-- | phrase-extract/SyntaxTree.cpp | 12 | ||||
-rw-r--r-- | phrase-extract/SyntaxTree.h | 3 |
3 files changed, 12 insertions, 9 deletions
diff --git a/moses/TranslationModel/BilingualDynSuffixArray.cpp b/moses/TranslationModel/BilingualDynSuffixArray.cpp index 0d90067c6..8f3c21323 100644 --- a/moses/TranslationModel/BilingualDynSuffixArray.cpp +++ b/moses/TranslationModel/BilingualDynSuffixArray.cpp @@ -456,9 +456,9 @@ void BilingualDynSuffixArray::GetTargetPhrasesByLexicalWeight(const Phrase& src, itrLexW = lexicalWeights.find(iterPhrases->first); CHECK(itrLexW != lexicalWeights.end()); Scores scoreVector(3); - scoreVector[0] = trg2SrcMLE; - scoreVector[1] = itrLexW->second.first; - scoreVector[2] = 2.718; // exp(1); + scoreVector[0] = std::log(trg2SrcMLE); + scoreVector[1] = std::log(itrLexW->second.first); + scoreVector[2] = 1; //log(2.718); phraseScores.insert(make_pair(scoreVector, &iterPhrases->first)); } // return top scoring phrases diff --git a/phrase-extract/SyntaxTree.cpp b/phrase-extract/SyntaxTree.cpp index 0b99f0d22..c50693e0d 100644 --- a/phrase-extract/SyntaxTree.cpp +++ b/phrase-extract/SyntaxTree.cpp @@ -50,6 +50,7 @@ SyntaxNode *SyntaxTree::AddNode( int startPos, int endPos, std::string label ) SyntaxNode* newNode = new SyntaxNode( startPos, endPos, label ); m_nodes.push_back( newNode ); m_index[ startPos ][ endPos ].push_back( newNode ); + m_size = std::max(endPos+1, m_size); return newNode; } @@ -57,11 +58,9 @@ ParentNodes SyntaxTree::Parse() { ParentNodes parents; - int size = m_index.size(); - // looping through all spans of size >= 2 - for( int length=2; length<=size; length++ ) { - for( int startPos = 0; startPos <= size-length; startPos++ ) { + for( int length=2; length<=m_size; length++ ) { + for( int startPos = 0; startPos <= m_size-length; startPos++ ) { if (HasNode( startPos, startPos+length-1 )) { // processing one (parent) span @@ -72,15 +71,18 @@ ParentNodes SyntaxTree::Parse() int first = 1; int covered = 0; - while( covered < length ) { + int found_somehing = 1; // break loop if nothing found + while( covered < length && found_somehing ) { // find largest covering subspan (child) // starting at last covered position + found_somehing = 0; for( int midPos=length-first; midPos>covered; midPos-- ) { if( HasNode( startPos+covered, startPos+midPos-1 ) ) { covered = midPos; splitPoints.push_back( startPos+covered ); // std::cerr << " " << ( startPos+covered ); first = 0; + found_somehing = 1; } } } diff --git a/phrase-extract/SyntaxTree.h b/phrase-extract/SyntaxTree.h index dac20f9b2..4dbb8fa79 100644 --- a/phrase-extract/SyntaxTree.h +++ b/phrase-extract/SyntaxTree.h @@ -90,6 +90,7 @@ protected: typedef std::map< int, SyntaxTreeIndex2 > SyntaxTreeIndex; typedef SyntaxTreeIndex::const_iterator SyntaxTreeIndexIterator; SyntaxTreeIndex m_index; + int m_size; std::vector< SyntaxNode* > m_emptyNode; friend std::ostream& operator<<(std::ostream&, const SyntaxTree&); @@ -113,7 +114,7 @@ public: return m_nodes; }; size_t GetNumWords() const { - return m_index.size(); + return m_size; } void ConnectNodes(); void Clear(); |