diff options
author | Patrick Simianer <p@simianer.de> | 2013-05-02 09:09:59 +0200 |
---|---|---|
committer | Patrick Simianer <p@simianer.de> | 2013-05-02 09:09:59 +0200 |
commit | 9e50f0237413180fba11b500c9dce5c600e3c157 (patch) | |
tree | 556fc31d231353c853a864afffddd43dc525549a /extractor/phrase.h | |
parent | d18024a41cbc1b54db88d499571349a6234b6db8 (diff) | |
parent | 14ed53426726202813a8e82d706b44266f015fe1 (diff) |
Merge remote-tracking branch 'upstream/master'
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 |