|
#include <iostream> |
|
#include "crfpp.h" |
|
|
|
|
|
|
|
int main(int argc, char **argv) { |
|
|
|
|
|
|
|
CRFPP::Tagger *tagger = |
|
CRFPP::createTagger("-m model -v 3 -n2"); |
|
|
|
if (!tagger) { |
|
std::cerr << CRFPP::getTaggerError() << std::endl; |
|
return -1; |
|
} |
|
|
|
|
|
tagger->clear(); |
|
|
|
|
|
tagger->add("Confidence NN"); |
|
tagger->add("in IN"); |
|
tagger->add("the DT"); |
|
tagger->add("pound NN"); |
|
tagger->add("is VBZ"); |
|
tagger->add("widely RB"); |
|
tagger->add("expected VBN"); |
|
tagger->add("to TO"); |
|
tagger->add("take VB"); |
|
tagger->add("another DT"); |
|
tagger->add("sharp JJ"); |
|
tagger->add("dive NN"); |
|
tagger->add("if IN"); |
|
tagger->add("trade NN"); |
|
tagger->add("figures NNS"); |
|
tagger->add("for IN"); |
|
tagger->add("September NNP"); |
|
|
|
std::cout << "column size: " << tagger->xsize() << std::endl; |
|
std::cout << "token size: " << tagger->size() << std::endl; |
|
std::cout << "tag size: " << tagger->ysize() << std::endl; |
|
|
|
std::cout << "tagset information:" << std::endl; |
|
for (size_t i = 0; i < tagger->ysize(); ++i) { |
|
std::cout << "tag " << i << " " << tagger->yname(i) << std::endl; |
|
} |
|
|
|
|
|
if (! tagger->parse()) return -1; |
|
|
|
std::cout << "conditional prob=" << tagger->prob() |
|
<< " log(Z)=" << tagger->Z() << std::endl; |
|
|
|
for (size_t i = 0; i < tagger->size(); ++i) { |
|
for (size_t j = 0; j < tagger->xsize(); ++j) { |
|
std::cout << tagger->x(i, j) << '\t'; |
|
} |
|
std::cout << tagger->y2(i) << '\t'; |
|
std::cout << std::endl; |
|
|
|
std::cout << "Details"; |
|
for (size_t j = 0; j < tagger->ysize(); ++j) { |
|
std::cout << '\t' << tagger->yname(j) << "/prob=" << tagger->prob(i,j) |
|
<< "/alpha=" << tagger->alpha(i, j) |
|
<< "/beta=" << tagger->beta(i, j); |
|
} |
|
std::cout << std::endl; |
|
} |
|
|
|
|
|
std::cout << "nbest outputs:" << std::endl; |
|
for (size_t n = 0; n < 10; ++n) { |
|
if (! tagger->next()) break; |
|
std::cout << "nbest n=" << n << "\tconditional prob=" << tagger->prob() << std::endl; |
|
|
|
} |
|
std::cout << "Done" << std::endl; |
|
|
|
delete tagger; |
|
|
|
return 0; |
|
} |
|
|