реклама
Бургер менюБургер меню

Зара Горенко – Мыслим на Си (страница 8)

18

char word[MAX_WORD_LEN];

while (fscanf(file, "%s", word) != EOF) {

to_lowercase(word);

// Убираем знаки препинания

int len = strlen(word);

while (len > 0 && !isalpha(word[len-1])) {

word[–len] = '\0';

}

if (len > 0) {

add_word(word);

}

}

fclose(file);

// Сортируем по частоте (простой пузырёк)

for (int i = 0; i < word_count – 1; i++) {

for (int j = 0; j < word_count – i – 1; j++) {

if (words[j].count < words[j+1].count) {

WordFreq temp = words[j];

words[j] = words[j+1];

words[j+1] = temp;

}

}

}

// Выводим топ-50

printf("Top 50 most frequent words:\n");

for (int i = 0; i < 50 && i < word_count; i++) {

printf("%3d. %-20s (%d times)\n", i+1, words[i].word, words[i].count);

}

return 0;

}

Эта программа:

Читает файл comments.txt

Разбивает текст на слова

Подсчитывает, сколько раз каждое слово встречается

Сортирует по частоте

Выводит топ-50 самых частых слов

Результат выглядел так:

textTop 50 most frequent words:

1. the (347 times)

2. is (201 times)

3. a (156 times)

4. to (134 times)

5. think (89 times)

6. program (76 times)

7. computer (71 times)

8. neural (54 times)

9. network (52 times)

10. data (48 times)

Я взяла этот список. Убрала служебные слова (the , is , a , to – они бесполезны для понимания смысла). Осталось около 200 ключевых слов.

Я начала переводить и запоминать самые часто используемые. Think – думать. Program – программа. Computer – компьютер. Neural network – нейронная сеть. Data – данные.

Часть 3: Переменные – это слова

Я заметила закономерность. В английском, как и в Си, есть типы слов.

Существительные – это переменные типа int или char*. Они хранят объекты: program , computer , network .

Глаголы – это функции. Они выполняют действия: think , execute , process .

Прилагательные – это константы или модификаторы. Они описывают свойства: neural , symbolic , computational .

Я начала строить предложения как код:

c// Английское предложение:

// "The program thinks using neural networks"

// Как я это понимала:

const char* subject = "program"; // Подлежащее

const char* verb = "thinks"; // Глагол

const char* method = "neural networks"; // Метод

printf("The %s %s using %s\n", subject, verb, method);

Это работало! Через месяц я бойко дискутировала короткими фразами:

Consciousness ≠ computation?Neural networks = pattern matching?