0

Đếm tần suất từ trong phụ đề phim để chọn từ cần học

Học từ vựng qua phim hiệu quả nhất khi học đúng những từ phim đó dùng nhiều. Bài này dựng một bộ đếm tần suất từ đơn giản từ file phụ đề tiếng Anh, đủ để tạo danh sách từ cần học trước khi xem một bộ phim.

Bước 1: lấy câu thoại từ file SRT

File SRT gồm các khối: số thứ tự, dòng thời gian, rồi một hoặc vài dòng thoại, các khối cách nhau bằng một dòng trống.

function cauThoai(srt) {
  return srt.trim().split(/\r?\n\r?\n/).map(khoi => khoi.split(/\r?\n/).slice(2).join(' '));
}

Bước 2: tách từ và bỏ từ chức năng

const STOP = new Set(['the', 'a', 'an', 'to', 'of', 'and', 'i', 'you', 'it', 'is', 'in']);

function tanSuat(cacCau) {
  const dem = new Map();
  for (const cau of cacCau) {
    for (const tu of cau.toLowerCase().match(/[a-z']+/g) || []) {
      if (STOP.has(tu)) continue;
      dem.set(tu, (dem.get(tu) || 0) + 1);
    }
  }
  return [...dem].sort((a, b) => b[1] - a[1]);
}

tanSuat(["I'll figure it out.", "Don't worry, we'll figure out a plan.", 'Worry less.']).slice(0, 3);
// [['figure', 2], ['out', 2], ['worry', 2]]

Danh sách từ chức năng ở đây để ngắn gọn. Thực tế nên dùng danh sách vài trăm từ thông dụng nhất mà người học đã biết.

Bước 3: gộp dạng từ

worry, worried, worries nên tính là một. Cách đơn giản là bảng chuyển dạng (lemma) cho các từ phổ biến. Cách đầy đủ hơn là dùng thư viện xử lý ngôn ngữ như compromise cho JavaScript.

Bước 4: giữ lại câu gốc

Từ đứng một mình khó nhớ. Lưu kèm câu thoại đầu tiên chứa từ đó, để thẻ ôn có ngữ cảnh: "figure out" đi với "I'll figure it out".

Mở rộng

  • Cụm động từ như figure out, give up cần đếm theo cặp từ liên tiếp (bigram).
  • So danh sách với trình độ CEFR của người học để chỉ hiện từ mới với họ.

Một ví dụ về học từ qua phim có phụ đề song ngữ theo từng câu, kèm lưu từ và lịch ôn, có trên Từ Vựng 123.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí