void Run::parse(const std::string &sInputFile, const std::string &sOutputFile, const std::string &sFeatureFile) const { Sentence sentence; DependencyTree tree; std::cout << "Parsing started" << std::endl; auto time_begin = time(NULL); std::unique_ptr<DepParser> parser(new DepParser(sFeatureFile, sFeatureFile, ParserState::PARSE)); std::ifstream input(sInputFile); std::ofstream output(sOutputFile); if (input) { while (input >> sentence) { if (sentence.size() < MAX_SENTENCE_SIZE) { parser->parse(sentence, &tree); output << tree; tree.clear(); } } } input.close(); output.close(); auto time_end = time(NULL); auto seconds = difftime(time_end, time_begin); std::cout << "Parsing has finished successfully. Total time taken is: " << difftime(time_end, time_begin) << "s" << std::endl; }
void StateItem::generateTree(const DependencyTree & sent, DependencyTree & tree) const { int i = 0; tree.clear(); for (const auto & token : sent) { tree.push_back(DependencyTreeNode(TREENODE_POSTAGGEDWORD(token), m_lHeads[i], TDepLabel::key(m_lLabels[i]))); ++i; } }
void Run::parse(const std::string &sInputFile, const std::string &sOutputFile, const std::string &sFeatureFile) const { Sentence sentence; DependencyTree tree; std::cout << "Parsing started" << std::endl; std::unique_ptr<DepParser> parser(new DepParser(sFeatureFile, sFeatureFile, ParserState::PARSE)); std::ifstream input(sInputFile); std::ofstream output(sOutputFile); if (input) { while (input >> sentence) { if (sentence.size() < MAX_SENTENCE_SIZE) { parser->parse(sentence, &tree); output << tree; tree.clear(); } } } input.close(); output.close(); }