Самый простой способ, который я вижу, это загрузить их базу данных из здесь и затем проанализировать разделенные пробелами файлы данных (data.adj, data.adv, data.noun, data.verb) для 5-го элемента в каждой строке и поместите их в соответствующую структуру данных.
Возможно, хэш-таблица с начальной буквой в качестве ключа и каждым элементом в виде массива слов, начинающихся с этой буквы.
Используете ли вы динамические массивы или обычные массивы, а затем сначала анализируете файл, чтобы узнать количество слов в каждой букве (размер массива), зависит только от вас.
Следующий пример кода написан на C, читает файл данных wordnet и печатает слово, о котором идет речь. Он ни в коем случае не отполирован и был быстро изготовлен.
#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;
}
Дополнительную документацию по формату базы данных WordNet см. здесь
Если вы хотите использовать вместо этого API-интерфейс WordNet C, то посмотрите документально описанную функцию findtheinfo
здесь , хотя я не думаю, что она предназначена для возврата той информации, которую вы хотите, используя этот вызов API ,