Revision: 14457
          http://gate.svn.sourceforge.net/gate/?rev=14457&view=rev
Author:   markagreenwood
Date:     2011-10-28 17:14:13 +0000 (Fri, 28 Oct 2011)
Log Message:
-----------
altered version of the GENIA tagger that doesn't convert double quotes to 
single quotes

Added Paths:
-----------
    gate/trunk/plugins/Tagger_Framework/resources/GENIA/geniatagger.exe
    gate/trunk/plugins/Tagger_Framework/resources/GENIA/tokenize.cpp

Added: gate/trunk/plugins/Tagger_Framework/resources/GENIA/geniatagger.exe
===================================================================
(Binary files differ)


Property changes on: 
gate/trunk/plugins/Tagger_Framework/resources/GENIA/geniatagger.exe
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: gate/trunk/plugins/Tagger_Framework/resources/GENIA/tokenize.cpp
===================================================================
--- gate/trunk/plugins/Tagger_Framework/resources/GENIA/tokenize.cpp            
                (rev 0)
+++ gate/trunk/plugins/Tagger_Framework/resources/GENIA/tokenize.cpp    
2011-10-28 17:14:13 UTC (rev 14457)
@@ -0,0 +1,127 @@
+#include <list>
+#include <string>
+#include <sstream>
+
+using namespace std;
+
+static void
+replace(string & s, const string & s1, const string & s2, const char skip = 0);
+
+void
+tokenize(const string & s1, list<string> & lt)
+{
+  lt.clear();
+    
+  string s(s1);
+  
+  if (s[0] == '"') s.replace(0, 1, "\" ");
+  replace(s, " \"", "  \" ");
+  replace(s, "(\"", "( \" ");
+  replace(s, "[\"", "[ \" ");
+  replace(s, "{\"", "{ \" ");
+  replace(s, "<\"", "< \" ");
+
+  replace(s, "...", " ... ");
+
+  replace(s, ",", " , ");
+  replace(s, ";", " ; ");
+  replace(s, ":", " : ");
+  replace(s, "@", " @ ");
+  replace(s, "#", " # ");
+  replace(s, "$", " $ ");
+  replace(s, "%", " % ");
+  replace(s, "&", " & ");
+
+  int pos = s.size() - 1;
+  while (pos > 0 && s[pos] == ' ') pos--;
+  while (pos > 0) {
+    char c = s[pos];
+    if (c == '[' || c == ']' || c == ')' || c == '}' || c == '>' ||
+        c == '"' || c == '\'') {
+      pos--; continue;
+    }
+    break;
+  }
+  if (s[pos] == '.' && !(pos > 0 && s[pos-1] == '.')) s.replace(pos, 1, " .");
+  
+  replace(s, "?", " ? ");
+  replace(s, "!", " ! ");
+    
+  replace(s, "[", " [ ");
+  replace(s, "]", " ] ");
+  replace(s, "(", " ( ");
+  replace(s, ")", " ) ");
+  replace(s, "{", " { ");
+  replace(s, "}", " } ");
+  replace(s, "<", " < ");
+  replace(s, ">", " > ");
+
+  replace(s, "--", " -- ");
+
+  s.replace(string::size_type(0), 0, " ");
+  s.replace(s.size(), 0, " ");
+  
+  replace(s, "\"", " \" ");
+
+  replace(s, "' ", " ' ", '\'');
+  replace(s, "'s ", " 's ");
+  replace(s, "'S ", " 'S ");
+  replace(s, "'m ", " 'm ");
+  replace(s, "'M ", " 'M ");
+  replace(s, "'d ", " 'd ");
+  replace(s, "'D ", " 'D ");
+  replace(s, "'ll ", " 'll ");
+  replace(s, "'re ", " 're ");
+  replace(s, "'ve ", " 've ");
+  replace(s, "n't ", " n't ");
+  replace(s, "'LL ", " 'LL ");
+  replace(s, "'RE ", " 'RE ");
+  replace(s, "'VE ", " 'VE ");
+  replace(s, "N'T ", " N'T ");
+
+  replace(s, " Cannot ", " Can not ");
+  replace(s, " cannot ", " can not ");
+  replace(s, " D'ye ", " D' ye ");
+  replace(s, " d'ye ", " d' ye ");
+  replace(s, " Gimme ", " Gim me ");
+  replace(s, " gimme ", " gim me ");
+  replace(s, " Gonna ", " Gon na ");
+  replace(s, " gonna ", " gon na ");
+  replace(s, " Gotta ", " Got ta ");
+  replace(s, " gotta ", " got ta ");
+  replace(s, " Lemme ", " Lem me ");
+  replace(s, " lemme ", " lem me ");
+  replace(s, " More'n ", " More 'n ");
+  replace(s, " more'n ", " more 'n ");
+  replace(s, "'Tis ", " 'T is ");
+  replace(s, "'tis ", " 't is ");
+  replace(s, "'Twas ", " 'T was ");
+  replace(s, "'twas ", " 't was ");
+  replace(s, " Wanna ", " Wan na ");
+  replace(s, " wanna ", " wanna ");
+
+  istringstream is(s);
+  string t;
+  while (is >> t) {
+    lt.push_back(t);
+  }
+
+}
+
+static void
+replace(string & s, const string & s1, const string & s2, const char skip)
+{
+  string::size_type pos = 0;
+  while (1) {
+    string::size_type i = s.find(s1, pos);
+    if (i == string::npos) break;
+    if (i > 0 && s[i-1] == skip) {
+      pos = i + 1;
+      continue;
+    }
+    s.replace(i, s1.size(), s2);
+    pos = i + s2.size();
+  }
+
+}
+

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs

Reply via email to