📄 transoptions.h
字号:
#ifndef TRANSOPTIONS_H
#define TRANSOPTIONS_H
#include <string>
#include <fstream>
#include <map>
#include <set>
#include <ctime>
#include "LanguageModel.h"
#include "ConfigINI.h"
#include "Vocab.h"
using namespace std;
class aboutEPhrase
{
public:
double pC;
double c;
vector<int> ephrase;
};
class fPosition
{
public:
int start;
int end;
};
class GREATER
{
public:
bool operator()(aboutEPhrase* e1, aboutEPhrase* e2)
{
return e1->c - e2->c >= avs;
}
};
class LESS
{
public:
bool operator()(aboutEPhrase* e1, aboutEPhrase* e2)
{
return e1->c - e2->c <= avs;
}
};
//typedef multiset<aboutEPhrase, GREATER> candiPhrase;
typedef vector<aboutEPhrase*> candiPhrase;
typedef map<vector<int>, candiPhrase> phraseTable;
typedef vector<candiPhrase *> PhraseSnippet; //存放一个句子的所有Translation Option
typedef vector<fPosition> PhraseSnippetPosition;
typedef vector<double> vecDou;
typedef vector<vecDou> vecFutureCost; //future cost
class TransOptions
{
public:
TransOptions(Para para);
bool load(string fileName, LanguageModel *lm, Vocab *evocab, Vocab *cvocab);
void split(const string& line, vector<string>& strs);
int getEPhrase(vector<int> fPhrase, PhraseSnippet& phraseSnippet, PhraseSnippetPosition& phraseSnippetPosition);
void reCalculation();
double getFutureCost(int from, int to);
void printTO(string fPhrase, PhraseSnippet phraseSnippet, PhraseSnippetPosition phraseSnippetPosition);
void eraseSet(candiPhrase& forErase, int limit);
void printFC();
double wordsProb(vector<int> Ephrase);
~TransOptions();
private:
phraseTable f2eVocab;
ifstream input;
double WLM;
//weight
double WPROBEF;//p(e|f)
double WLEXEF;//lex(e|f)
double WPROBFE;//p(f|e)
double WLEXFE;//lex(e|f)
double WPENALTY;//penalty
int TTABLELIMIT;//短语个数限制 20
int PHRASELIMIT;//短语长度限制 7
//
double WEIGHTW;//pharaoh的最后一项
LanguageModel *LM;
Vocab *ENVOCAB;
Vocab *CNVOCAB;
vecFutureCost futureCost;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -