NLP_Homework_1 / STATISTICS_FIX_EXPLANATION.md
Kolesnikov Dmitry
feat: Вторая лабораторка
83b4881

🔍 Объяснение проблемы со статистикой токенизации

❓ Проблема

Вы видели статистику:

  • Всего токенов: 318
  • Уникальных токенов: 202
  • Разнообразие словаря: 63.52%

Это показалось странным, потому что у вас корпус с 1,051,909 слов, а показывалось только 318 токенов.

🔍 Причина проблемы

Веб-интерфейс показывал статистику только для первой статьи, а не для всего корпуса!

📊 Что происходило:

  1. Общая статистика (вверху) - показывала данные по всем текстам ✅
  2. Детальный анализ (внизу) - показывал статистику только для texts[0]

🐛 Код проблемы:

# СТАРЫЙ КОД (неправильно)
sample_text = texts[0]  # Только первая статья!
tokens, processing_time = comparator.tokenize_text(sample_text, method)
analysis = comparator.analyze_token_distribution(sample_text, method)

st.metric("Всего токенов", analysis['total_tokens'])  # 318 токенов

✅ Решение

Исправлен код для анализа всех текстов:

# НОВЫЙ КОД (правильно)
all_tokens = []
total_processing_time = 0

for text in texts:  # Анализируем ВСЕ тексты
    tokens, processing_time = comparator.tokenize_text(text, method)
    all_tokens.extend(tokens)
    total_processing_time += processing_time

# Статистика для всех текстов
total_tokens = len(all_tokens)
unique_tokens = len(set(all_tokens))
vocabulary_diversity = unique_tokens / total_tokens

st.metric("Всего токенов", total_tokens)  # Теперь правильное количество!

📈 Ожидаемые результаты

Теперь вы должны увидеть:

Для корпуса из 100 статей:

  • Всего токенов: ~29,000+ (вместо 318)
  • Уникальных токенов: ~1,000+ (вместо 202)
  • Разнообразие словаря: ~3-4% (вместо 63%)

Для полного корпуса (3,366 статей):

  • Всего токенов: ~1,000,000+
  • Уникальных токенов: ~5,000+
  • Разнообразие словаря: ~0.5%

🎯 Почему разнообразие словаря стало меньше?

Это нормально! При увеличении корпуса:

  1. Больше повторяющихся слов - "в", "и", "с", "на" встречаются очень часто
  2. Меньше уникальных токенов относительно общего количества
  3. Более реалистичная статистика для большого корпуса

🚀 Как проверить исправление

  1. Запустите веб-интерфейс:

    streamlit run src/streamlit_app.py
    
  2. Выберите "Загрузить из корпуса"

  3. Запустите анализ

  4. Проверьте статистику в разделе "Детальный анализ методов"

Теперь статистика будет показывать данные по всем текстам! 🎉


📝 Итог

  • Проблема найдена - анализ только первой статьи
  • Код исправлен - анализ всех текстов
  • Статистика корректна - показывает реальные данные
  • Разнообразие словаря - стало реалистичным

Теперь веб-интерфейс работает правильно! 🎊