Question

Comment extraire tous les mots qui commencent par une lettre particulière de WordNet. Exemple si i type A WordNet doit retourner tous les mots qui commencent par la lettre A.

Était-ce utile?

La solution

Je manière la plus simple est de télécharger voir leur base de données et puis analyser l'espace séparé des fichiers de données (data.adj, data.adv, data.noun, data.verb) pour le cinquième élément dans chaque ligne et de les placer dans une structure de données pertinente.

Peut-être une table de hachage avec lettre de départ comme clé et chaque élément comme un tableau de mots qui commencent par cette lettre.

Si vous utilisez des tableaux dynamiques ou des tableaux réguliers et vous ensuite d'abord parse du fichier pour obtenir le nombre de mots de chaque lettre (taille du tableau) est à vous.

L'exemple de code suivant est écrit en C, et se lit à travers un wordnet datafile et imprime le mot en question. Il est nullement poli et a été vite fait.

#include <stdio.h>
#include <string.h>
int main(int argc,char**argv)
{
  FILE *fp;

  fp=fopen("data.noun", "r");
  char line [ 3000 ];
  while ( fgets ( line, sizeof line, fp ) != NULL )
  {
      char *result = NULL;
      int count =0;
      result = (char*)strtok( line, " ");
      count++; 
      while( result != NULL ) 
      {
      if (count == 5) 
      {
          printf( "result is \"%s\"\n", result );
      }
      result = (char*)strtok( NULL, " ");
      count++;
      }
  }
  return 0;
}

Pour plus de documentation sur le format de base de données WordNet voir

Si vous voulez utiliser l'API C WordNet plutôt, voir la fonction findtheinfo documentée ici , bien que je ne pense pas qu'il est conçu pour retourner le genre d'information que vous voulez utiliser cette appel API.

Autres conseils

En python, une fois que vous avez téléchargé le fichier .tab de Open Multilingual Wordnet, vous pouvez essayer cette recette:

# Read Open Multi WN's .tab file
def readWNfile(wnfile, option="ss"):
  reader = codecs.open(wnfile, "r", "utf8").readlines()
  wn = {}
  for l in reader:
    if l[0] == "#": continue
    if option=="ss":
      k = l.split("\t")[0] #ss as key
      v = l.split("\t")[2][:-1] #word
    else:
      v = l.split("\t")[0] #ss as value
      k = l.split("\t")[2][:-1] #word as key
    try:
      temp = wn[k]
      wn[k] = temp + ";" + v
    except KeyError:
      wn[k] = v  
  return wn

princetonWN = readWNfile('wn-data-eng.tab', 'word')

for i in princetonWN:
    if i[0] == "a":
        print i, princetonWN[i].split(";")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top