diff options
Diffstat (limited to 'extractor/phrase.h')
-rw-r--r-- | extractor/phrase.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/extractor/phrase.h b/extractor/phrase.h new file mode 100644 index 00000000..a8e91e3c --- /dev/null +++ b/extractor/phrase.h @@ -0,0 +1,52 @@ +#ifndef _PHRASE_H_ +#define _PHRASE_H_ + +#include <iostream> +#include <string> +#include <vector> + +#include "phrase_builder.h" + +using namespace std; + +namespace extractor { + +/** + * Structure containing the data for a phrase. + */ +class Phrase { + public: + friend Phrase PhraseBuilder::Build(const vector<int>& phrase); + + // Returns the number of nonterminals in the phrase. + int Arity() const; + + // Returns the number of terminals (length) for the given chunk. (A chunk is a + // contiguous sequence of terminals in the phrase). + int GetChunkLen(int index) const; + + // Returns the symbols (word ids) marking up the phrase. + vector<int> Get() const; + + // Returns the symbol located at the given position in the phrase. + int GetSymbol(int position) const; + + // Returns the number of symbols in the phrase. + int GetNumSymbols() const; + + // Returns the words making up the phrase. (Nonterminals are stripped out.) + vector<string> GetWords() const; + + bool operator<(const Phrase& other) const; + + friend ostream& operator<<(ostream& os, const Phrase& phrase); + + private: + vector<int> symbols; + vector<int> var_pos; + vector<string> words; +}; + +} // namespace extractor + +#endif |