Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Heafield <github@kheafield.com>2013-04-26 00:51:26 +0400
committerKenneth Heafield <github@kheafield.com>2013-04-26 00:51:26 +0400
commit38b29e2c79b2b706d4672b27a97128a693d42db2 (patch)
tree18d816d610730d018336173b92e60df479bf8362
parentf1d366381033c0caae18f8d15305ded38734bdbf (diff)
parent4b4aba3d814ed135d0852259914712399f64b9e4 (diff)
Merge branch 'master' of github.com:moses-smt/mosesdecoder
-rw-r--r--moses/TranslationModel/BilingualDynSuffixArray.cpp6
-rw-r--r--phrase-extract/SyntaxTree.cpp12
-rw-r--r--phrase-extract/SyntaxTree.h3
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();