FreeLing
4.0
|
00001 00002 // 00003 // FreeLing - Open Source Language Analyzers 00004 // 00005 // Copyright (C) 2014 TALP Research Center 00006 // Universitat Politecnica de Catalunya 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Affero General Public 00010 // License as published by the Free Software Foundation; either 00011 // version 3 of the License, or (at your option) any later version. 00012 // 00013 // This library is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 // Affero General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU Affero General Public 00019 // License along with this library; if not, write to the Free Software 00020 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00021 // 00022 // contact: Lluis Padro (padro@lsi.upc.es) 00023 // TALP Research Center 00024 // despatx C6.212 - Campus Nord UPC 00025 // 08034 Barcelona. SPAIN 00026 // 00028 00029 #ifndef _OUTPUT_NAF 00030 #define _OUTPUT_NAF 00031 00032 #include <iostream> 00033 #include <set> 00034 #include "freeling/output/output_handler.h" 00035 00036 namespace freeling { 00037 00038 namespace io { 00039 00040 class WINDLL output_naf : public output_handler { 00041 00042 private: 00043 // NAF layers to print 00044 std::set<std::wstring> layers; 00045 00046 std::wstring naf_pos_tag(const std::wstring &tag) const; 00047 00048 void PrintDepTreeNAF (std::wostream &sout, freeling::dep_tree::const_iterator n, const std::wstring &sid) const; 00049 00050 void PrintTextLayer (std::wostream &sout, const freeling::document &doc) const; 00051 void PrintTermsLayer (std::wostream &sout, const freeling::document &doc) const; 00052 void PrintEntitiesLayer(std::wostream &sout, const freeling::document &doc) const; 00053 void PrintChunksLayer(std::wostream &sout, const freeling::document &doc) const; 00054 void PrintConstituencyLayer(std::wostream &sout, const freeling::document &doc) const; 00055 void PrintDepsLayer(std::wostream &sout, const freeling::document &doc) const; 00056 void PrintSRLLayer(std::wostream &sout, const freeling::document &doc) const; 00057 void PrintCoreferencesLayer(std::wostream &sout, const freeling::document &doc) const; 00058 00059 static std::wstring get_term_id(const std::wstring &sid, const freeling::word &w, const std::wstring &pref=L""); 00060 static void print_tokens(std::wostream &sout, const freeling::word &w, bool wf, const std::wstring &nsent, int &ntok); 00061 static void print_span(std::wostream &sout, const freeling::sentence &s, int from, int to); 00062 void print_external_refs(std::wostream &sout, const freeling::word &w) const; 00063 00064 public: 00065 // constructor. 00066 output_naf (); 00067 output_naf (const std::wstring &cfgFile); 00068 // destructor. 00069 ~output_naf (); 00070 00071 // print given sentences to sout in appropriate format 00072 void PrintResults (std::wostream &sout, const std::list<freeling::sentence> &ls) const; 00073 // print given a document to sout in appropriate format 00074 void PrintResults(std::wostream &sout, const freeling::document &doc) const; 00076 using output_handler::PrintResults; 00077 00078 // print NAF header 00079 void PrintHeader(std::wostream &sout) const; 00080 // print NAF footer 00081 void PrintFooter(std::wostream &sout) const; 00082 00083 // activate/deactivate layer for next printings 00084 void ActivateLayer(const std::wstring &ly, bool b); 00085 00086 }; 00087 00088 } 00089 } 00090 00091 #endif