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.
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ừ.
- Sử dụng biến
textToAnalyzetừ phần thiết lập trước đó - Sử dụng biến
totalCharacterstừ bước đếm ký tự - Sử dụng biến
wordListtừ bước tách từ - Sử dụng biến
totalWordstừ bước đếm từ - Sử dụng biến
uniqueWordsSettừ bước đếm từ riêng biệt - Sử dụng biến
uniqueWordCounttừ bước đếm từ riêng biệt - 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ừ - Duyệt qua từng từ trong
wordListbằng vòng lặp for-in - Với mỗi từ, kiểm tra xem từ đó đã có trong bản đồ chưa bằng
containsKey() - Nếu từ đã có, tăng số lần xuất hiện lên 1
- Nếu từ chưa có, thêm từ đó vào bản đồ với số lần xuất hiện là 1
- Hiển thị kết quả phân tích tần suất từ theo đúng định dạng bên dưới
- 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
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặpTự luyện tập: Trình biên dịch Dart online