Menu
CoddyTech

Bộ đếm tần suất từ

Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 56 trên 65.

challenge icon

Thử thách

Dễ

Tiếp tục dự án phân tích văn bản, giờ đây bạn sẽ triển khai tính năng phức tạp nhất: bộ đếm tần suất từ. Bước này sẽ tạo một bản đồ theo dõi số lần mỗi từ riêng biệt xuất hiện trong văn bản, cung cấp thông tin chi tiết về cách sử dụng từ.

  1. Sử dụng biến textToAnalyze từ phần thiết lập trước đó
  2. Sử dụng biến totalCharacters từ bước đếm ký tự
  3. Sử dụng biến wordList từ bước tách từ
  4. Sử dụng biến totalWords từ bước đếm từ
  5. Sử dụng biến uniqueWordsSet từ bước đếm từ riêng biệt
  6. Sử dụng biến uniqueWordCount từ bước đếm từ riêng biệt
  7. Tạo một Map rỗng có tên wordFrequency để lưu số lần xuất hiện của các từ
  8. Duyệt qua từng từ trong wordList bằng vòng lặp for-in
  9. Với mỗi từ, kiểm tra xem từ đó đã có trong bản đồ chưa bằng containsKey()
  10. Nếu từ đã có, tăng số lần xuất hiện lên 1
  11. Nếu từ chưa có, thêm từ đó vào bản đồ với số lần xuất hiện là 1
  12. Hiển thị kết quả phân tích tần suất từ theo đúng định dạng bên dưới
  13. Hiển thị toàn bộ dữ liệu phân tích trước đó cùng với bản đồ tần suất từ được định dạng phù hợp

Ví dụ, nếu bạn thiết lập trình phân tích văn bản với "hello world hello", chương trình sẽ in ra:

Text Analysis Tool - Word Frequency
====================================
Analyzing text: "hello world hello"
Total characters: 17
Words found: [hello, world, hello]
Total words: 3
Unique words: {hello, world}
Unique word count: 2
====================================
Word Frequency Analysis Results:
Word frequencies: {hello: 2, world: 1}
====================================
Word frequency analysis completed successfully.

Nếu bạn thiết lập trình phân tích văn bản với "the cat and the dog and the bird", chương trình sẽ in ra:

Text Analysis Tool - Word Frequency
====================================
Analyzing text: "the cat and the dog and the bird"
Total characters: 32
Words found: [the, cat, and, the, dog, and, the, bird]
Total words: 8
Unique words: {the, cat, and, dog, bird}
Unique word count: 5
====================================
Word Frequency Analysis Results:
Word frequencies: {the: 3, cat: 1, and: 2, dog: 1, bird: 1}
====================================
Word frequency analysis completed successfully.

Nếu bạn thiết lập trình phân tích văn bản với "apple banana apple cherry banana apple", chương trình sẽ in ra:

Text Analysis Tool - Word Frequency
====================================
Analyzing text: "apple banana apple cherry banana apple"
Total characters: 38
Words found: [apple, banana, apple, cherry, banana, apple]
Total words: 6
Unique words: {apple, banana, cherry}
Unique word count: 3
====================================
Word Frequency Analysis Results:
Word frequencies: {apple: 3, banana: 2, cherry: 1}
====================================
Word frequency analysis completed successfully.

Chương trình cần duyệt qua danh sách từ và tạo bản đồ tần suất bằng cách kiểm tra xem từng từ đã có trong bản đồ chưa. Dùng containsKey() để kiểm tra từ đã tồn tại, rồi tăng số lần xuất hiện hiện có hoặc khởi tạo mục mới với số lần xuất hiện là 1. Phân tích tần suất này sẽ cung cấp thông tin chi tiết nhất về cách sử dụng từ trong văn bản của bạn.

Tự làm thử

import 'dart:io';

void main() {
  // Text analyzer setup
  String? textToAnalyze = stdin.readLineSync();
  
  // Character counting
  int totalCharacters = textToAnalyze!.length;
  
  // Word splitting and counting
  List<String> wordList = textToAnalyze.split(' ');
  int totalWords = wordList.length;
  
  // Unique word analysis
  Set<String> uniqueWordsSet = Set.from(wordList);
  int uniqueWordCount = uniqueWordsSet.length;
  
  // Display results
  print('Text Analysis Tool - Unique Words');
  print('====================================');
  print('Analyzing text: "$textToAnalyze"');
  print('Total characters: $totalCharacters');
  print('Words found: $wordList');
  print('Total words: $totalWords');
  print('====================================');
  print('Unique Word Analysis Results:');
  print('Unique words: $uniqueWordsSet');
  print('Unique word count: $uniqueWordCount');
  print('====================================');
  print('Unique word analysis completed successfully.');
}

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch Dart online