Зара Горенко – Мыслим на Си (страница 8)
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?