| |
| |
|
|
| #include <boost/program_options.hpp> |
| #include <iomanip> |
|
|
| #include "tpt_typedefs.h" |
| #include "ug_mm_ttrack.h" |
| #include "ug_mm_tsa.h" |
| #include "tpt_tokenindex.h" |
| #include "ug_deptree.h" |
| #include "ug_corpus_token.h" |
|
|
| using namespace Moses; |
| using namespace std; |
| using namespace boost; |
| using namespace sapt; |
| typedef L2R_Token < SimpleWordId > Token; |
| int main(int argc, char* argv[]) |
| { |
| using namespace std; |
| if (argc < 3) |
| { |
| cerr << "usage: " << argv[0] << " <track base name> lookup word sequence" |
| << endl; |
| } |
| string base = argv[1]; |
| TokenIndex V; |
| V.open(base+".tdx"); |
| boost::shared_ptr<mmTtrack<Token> > T(new mmTtrack<Token>()); |
| T->open(base+".mct"); |
| mmTSA<Token> I; I.open(base+".sfa",T); |
| mmTSA<Token>::tree_iterator m(&I); |
|
|
| |
| for (int i = 2; i < argc && m.extend(V[argv[i]]); ++i); |
| if (int(m.size() + 2) < argc) |
| { |
| cerr << "NOT FOUND" << endl; |
| exit(1); |
| } |
|
|
| tsa::ArrayEntry e(m.lower_bound(-1)); |
| char const* stop = m.upper_bound(-1); |
| do |
| { |
| m.root->readEntry(e.next,e); |
| Token const* t = T->sntStart(e.sid) + e.offset; |
| Token const* z = T->sntEnd(e.sid); |
| for (;t != z; t = t->next()) cout << V[t->id()] << " "; |
| cout << endl; |
| } while (e.next != stop); |
|
|
| } |
|
|