Blame view

tools/lia_ltbox/lia_ne_v2.2/src/rewrite_token_ne.c 1.87 KB
f34231730   Jean-François Rey   add lia_ne + crf+...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  /* Rewrite the output of ne_formtag  */
  /* FRED 0109  */
  
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  #include <strings.h>
  
  /* ................................................................ */
  
  #define TailleLigne     8000
  
  #define True    1
  #define False   0
  
  void 
  ERREUR(char *ch1, char *ch2)
  {
  	fprintf(stderr, "ERREUR : %s %s
  ", ch1, ch2);
  	exit(0);
  }
  
  /* ................................................................ */
  
  /*
   * input: <s> mais lorsque l' on a reconstitué <pers> Georges </pers> maire
   * de <gsp> Vichy </gsp> on a constaté que les sommes en génétique était
   * loin_d' être parfait dans la dernière génération trente pour_cent déjà un
   * n' étaient pas des copies de soude fondateur le renouvellement génétique
   * c' était donc produit </s>
   * 
   * output:
   * 
   * <s>	NONE mais	NONE lorsque	NONE l'	NONE on	NONE a	NONE
   * reconstitué	NONE Georges	pers maire	NONE de	NONE Vichy	gsp
   * on	NONE ....
   */
  
  int 
  main(int argc, char **argv)
  {
  	char            ch[TailleLigne], chtag[100], *pt;
  	int             nb;
  	/*
  	if (argc>1)
  	 for(nb=1;nb<argc;nb++)
  	  if (!strcmp(argv[nb],"-XXXX"))
  	   {
  	   if (nb+1==argc) ERREUR("an option must follow option:",argv[nb]);
  	   XXXX
  	   }
  	  else
  	  if (!strcmp(argv[nb],"-h"))
  	   {
  	   fprintf(stderr,"Syntax: %s [-h]
  ",argv[0]);
  	   exit(0);
  	   }
  	  else ERREUR("unknown option:",argv[nb]);
  	*/
  	strcpy(chtag, "NONE");
  	for (nb = 0; fgets(ch, TailleLigne, stdin); nb++) {
  		for (pt = strtok(ch, " \t
  "); pt; pt = strtok(NULL, " \t
  ")) {
  			if ((pt[0] != '<') || (!strcmp(pt, "<s>")) || (!strcmp(pt, "</s>"))) {
  				printf("%s\t%s
  ", pt, chtag);
  				if (!strncmp(chtag + strlen(chtag) - 2, "_b", 2))
  					chtag[strlen(chtag) - 2] = '\0';
  			} else {
  				if (pt[1] == '/')
  					strcpy(chtag, "NONE");
  				else {
  					strcpy(chtag, pt + 1);
  					chtag[strlen(chtag) - 1] = '\0';
  					strcat(chtag, "_b");
  				}
  			}
  		}
  	}
  
  	exit(0);
  }