La extracción de todas las palabras que comienzan con una letra particular del wordnet

StackOverflow https://stackoverflow.com/questions/3429918

  •  26-09-2019
  •  | 
  •  

Pregunta

¿cómo se puede extraer todas las palabras que comienzan con una letra particular del wordnet. Ejemplo si i tipo A, el wordnet debe devolver todas las palabras que comienzan con la letra A.

¿Fue útil?

Solución

La manera más fácil que puedo ver es a descargar su base de datos desde aquí y a continuación, analizar el espacio separado archivos de datos (data.adj, data.adv, data.noun, data.verb) para el elemento de quinta en cada línea y colocarlos en una estructura de datos correspondiente.

Posiblemente una tabla hash con la letra inicial como la clave y cada elemento como una serie de palabras que comienzan con esa letra.

Si usted utiliza matrices dinámicas o matrices regulares y, a continuación, primero de análisis del archivo para obtener el número de palabras de cada letra (tamaño de la matriz) es de usted.

El siguiente ejemplo de código está escrito en C, y lee a través de un fichero de datos wordnet e imprime la palabra en cuestión. Es de ninguna manera pulen y se hizo rápidamente.

#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;
}

Para más documentación sobre el formato de la base de datos WordNet ver aquí

Si desea utilizar la API de C WordNet entonces ver la función findtheinfo documentado aquí , aunque no creo que está diseñado para devolver el tipo de información que desea usar esa llamada a la API.

Otros consejos

En Python, después de que haya descargado el archivo de .tab Open Multilingual Wordnet, se puede probar esta receta:

# 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(";")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top