Khai phá văn bản trong văn học và sử học gồm ba thao tác chính: đếm tần suất từ, tìm cụm từ lặp lại trong ngữ cảnh, và gom văn bản thành nhóm chủ đề. Kết quả đáng tin khi kho văn bản được chuẩn bị kỹ và mọi con số được kiểm lại bằng đọc gần.
Người làm nhân văn quen đọc gần (close reading): đọc kỹ từng đoạn, từng chữ. Khai phá văn bản bổ sung cách đọc xa (distant reading): nhìn hàng trăm cuốn sách, hàng nghìn số báo cùng lúc để thấy những mẫu hình mà một người không thể đọc hết. Hai cách đọc không loại trừ nhau. Phần dưới đi theo đúng thứ tự làm việc, từ kho văn bản tới cách đọc kết quả.
Chuẩn bị kho văn bản: phần quyết định chất lượng
Chọn và mô tả kho
Kho văn bản (corpus) phải được chọn theo câu hỏi nghiên cứu và mô tả rõ: gồm những văn bản nào, của ai, giai đoạn nào, lấy từ nguồn nào, bản in nào. Nếu so sánh hai giai đoạn, hai kho nên tương đương về thể loại và độ dài; so tiểu thuyết giai đoạn này với báo chí giai đoạn kia thì kết quả chỉ phản ánh khác biệt thể loại.
Làm sạch văn bản
Văn bản lấy từ nhận dạng chữ thường còn lỗi dấu, dòng bị ngắt giữa chữ, số trang và tiêu đề đầu trang lẫn vào nội dung. Hãy xoá tiêu đề đầu trang, chân trang, nối lại chữ bị ngắt dòng, chuẩn hoá Unicode về dạng dựng sẵn (NFC) để chữ có dấu không bị đếm thành hai từ khác nhau. Ghi lại mọi bước làm sạch để người khác lặp lại được.
Tách từ tiếng Việt
Tiếng Việt viết cách theo âm tiết, nên “học sinh” sẽ bị đếm thành “học” và “sinh” nếu không tách từ. Với Python có các thư viện tách từ tiếng Việt như underthesea, pyvi hay VnCoreNLP. Tách từ tự động vẫn sai với tên riêng cổ, từ Hán Việt hiếm, chính tả cũ, nên hãy kiểm một mẫu và bổ sung từ điển riêng khi cần. Với văn bản trước cải cách chính tả, cân nhắc chuẩn hoá chính tả trên một bản sao, giữ bản gốc riêng.
Công cụ không cần lập trình và có lập trình
Không có công cụ nào tốt nhất cho mọi dự án. Bảng dưới xếp theo mức đòi hỏi kỹ thuật:
| Công cụ | Cách dùng | Hợp với | Lưu ý |
|---|---|---|---|
| Voyant Tools | Chạy trên trình duyệt, dán hoặc tải văn bản lên | Thăm dò nhanh kho vừa và nhỏ, giảng dạy | Tách từ theo khoảng trắng, nên tiếng Việt cần tách từ trước (nối từ ghép bằng dấu gạch dưới) |
| AntConc | Phần mềm cài trên máy, miễn phí | Dòng ngữ cảnh (concordance), cụm từ, từ khoá so với kho tham chiếu | Cũng cần văn bản đã tách từ nếu muốn đếm theo từ |
| R (gói quanteda, tidytext) | Viết mã | Kho lớn, so sánh nhiều nhóm, cần lặp lại chính xác | Đòi hỏi học cú pháp; lợi thế là lưu được toàn bộ quy trình thành mã |
| Python (thư viện tách từ tiếng Việt, gensim, scikit-learn) | Viết mã | Tách từ tiếng Việt, mô hình chủ đề, xử lý hàng loạt | Cần quản lý phiên bản thư viện để kết quả tái lập được |
| MALLET | Dòng lệnh | Mô hình chủ đề trên kho lớn | Phổ biến trong nhân văn số; đầu vào cần làm sạch và tách từ trước |
Với luận văn, cách hợp lý là thăm dò bằng Voyant hoặc AntConc, rồi chuyển sang R hoặc Python khi đã biết mình cần đo cái gì. Kết quả trong bài báo nên đến từ quy trình ghi lại được, không từ những cú bấm không ai lặp lại nổi.
Tần suất và từ khoá: đếm gì cho có nghĩa?
Bỏ từ dừng có cân nhắc
Danh sách từ dừng (stop words) loại bỏ những từ như “và”, “của”, “là”. Nhưng với nghiên cứu văn phong, chính những từ chức năng lại mang tín hiệu tác giả. Đừng dùng danh sách từ dừng của người khác mà không đọc qua.
Chuẩn hoá theo độ dài
Một tiểu thuyết dài gấp ba sẽ có số lần xuất hiện gấp ba. So sánh phải dùng tần suất tương đối, ví dụ số lần trên mỗi mười nghìn từ, chứ không dùng số đếm thô.
Từ khoá so với kho tham chiếu
Thay vì hỏi từ nào nhiều nhất, hãy hỏi từ nào xuất hiện nhiều bất thường so với một kho tham chiếu. AntConc có chức năng từ khoá (keyword list) làm việc này. Kết quả thường gợi ý nhiều hơn danh sách từ phổ biến nhất, vốn gần giống nhau ở mọi kho.
Cụm từ và dòng ngữ cảnh: quay về đọc gần
Dòng ngữ cảnh (concordance hay KWIC) hiển thị mọi lần xuất hiện của một từ cùng vài chữ trước và sau. Đây là cầu nối giữa đọc xa và đọc gần: bạn thấy ngay một từ được dùng theo những nghĩa nào, đi kèm những từ nào. Một sử gia nghiên cứu cách báo chí gọi tên một nhóm xã hội có thể lọc ra vài trăm dòng ngữ cảnh, phân loại thủ công từng dòng, rồi mới đếm.
Cụm từ lặp (n-gram) và cụm đồng xuất hiện (collocation) giúp tìm những công thức diễn đạt quen thuộc của một tác giả, một thể loại, một thời kỳ. Trong văn bản tiếng Việt chưa tách từ, cụm hai, ba âm tiết đôi khi chính là từ ghép; hãy phân biệt đâu là phát hiện về văn phong, đâu chỉ là từ vựng thông thường.
Mô hình chủ đề: hữu ích nhưng dễ đọc sai
Mô hình làm gì
Mô hình chủ đề (topic model), thường là LDA, gom những từ hay xuất hiện cùng nhau thành các “chủ đề”, và cho biết mỗi văn bản chứa các chủ đề theo tỷ lệ nào. Bạn phải tự chọn số chủ đề, và kết quả thay đổi theo lựa chọn đó cũng như theo cách làm sạch.
Đặt tên chủ đề cẩn thận
Máy chỉ trả về danh sách từ. Cái tên “chủ đề nông nghiệp” là do người đặt. Trước khi đặt tên, hãy đọc vài văn bản có tỷ lệ chủ đề đó cao nhất. Có chủ đề thực ra là rác: tiêu đề đầu trang, tên nhà in, lỗi nhận dạng chữ lặp lại.
Thử độ vững
Chạy lại với vài số chủ đề khác nhau và vài hạt giống ngẫu nhiên khác nhau. Một kết luận chỉ đứng được ở đúng một cấu hình thì không đủ chắc để đưa vào bài báo.
Một quy trình mẫu: so sánh từ vựng một tờ báo qua hai giai đoạn
Đặt câu hỏi và dựng kho
Giả sử câu hỏi là cách một tờ báo nói về lao động nữ thay đổi thế nào giữa hai giai đoạn. Bạn chọn các số báo của hai giai đoạn với cùng số chuyên mục, cùng loại bài (tin, phóng sự, xã luận), ghi danh sách số báo vào bảng tính kèm nguồn ảnh. Nếu một giai đoạn có nhiều số được số hoá hơn, hãy lấy mẫu để hai bên tương đương về số từ.
Xử lý và đếm
Nhận dạng chữ, làm sạch, chuẩn hoá Unicode, tách từ. Lập danh sách từ khoá chủ đề (lao động, nữ công nhân, nhà máy và các cách gọi khác), đếm tần suất tương đối mỗi giai đoạn. Dùng chức năng so sánh từ khoá giữa hai kho để tìm những từ đặc trưng của từng giai đoạn mà bạn chưa nghĩ tới.
Đọc lại và viết
Lấy dòng ngữ cảnh của các từ đặc trưng, đọc và phân loại cách dùng. Phần viết kết hợp bảng tần suất với vài đoạn trích tiêu biểu, và nói rõ những gì con số không cho biết: ai viết, ai đọc, bài nào bị kiểm duyệt. Toàn bộ mã và danh sách số báo được lưu cùng bài để kiểm lại.
Lỗi hay gặp khi khai phá văn bản tiếng Việt
Những lỗi dưới đây làm sai kết quả mà không phát ra cảnh báo nào:
- Trộn văn bản Unicode dựng sẵn và tổ hợp, cùng một chữ có dấu bị đếm thành hai.
- Không tách từ, nên kết luận về “từ” thực chất là về âm tiết.
- Kho hai giai đoạn lệch nhau về thể loại hoặc nguồn số hoá, khác biệt đo được chỉ là khác biệt nguồn.
- Lỗi nhận dạng chữ tập trung ở một nhóm văn bản (bản in mờ, chữ cũ), làm nhóm đó có từ vựng “lạ” giả.
- Báo cáo con số mà không trích một đoạn văn nào minh hoạ.
- Không lưu mã, phiên bản công cụ và danh sách từ dừng, người phản biện không thể kiểm lại.
Khi viết bài, hãy dành một đoạn mô tả kho văn bản và quy trình xử lý đủ chi tiết để người khác làm lại. Gửi kèm mã và danh sách văn bản lên một kho lưu trữ mở là cách tốt nhất để thuyết phục người phản biện.
Câu hỏi thường gặp
Khai phá văn bản khác đọc gần thế nào?
Đọc gần là phân tích kỹ từng đoạn văn cụ thể. Khai phá văn bản đếm và gom nhóm trên toàn bộ kho để tìm mẫu hình. Cách làm tốt là dùng khai phá để chỉ ra chỗ cần đọc, rồi đọc gần để giải thích.
Voyant Tools có xử lý được tiếng Việt không?
Voyant hiển thị được chữ tiếng Việt nhưng tách theo khoảng trắng, tức theo âm tiết. Muốn đếm theo từ, hãy tách từ trước bằng công cụ tiếng Việt và nối các âm tiết của một từ bằng dấu gạch dưới.
Kho văn bản bao nhiêu thì đủ để khai phá?
Không có ngưỡng cố định. Đếm tần suất và dòng ngữ cảnh có ích ngay cả với vài cuốn sách. Mô hình chủ đề cần nhiều văn bản hơn để ổn định, và nên chia sách dài thành đoạn nhỏ.
Có nên sửa lỗi nhận dạng chữ trước khi phân tích không?
Nên sửa ít nhất các lỗi lặp lại có hệ thống và đo tỷ lệ lỗi trên một mẫu. Nếu lỗi tập trung ở một nhóm văn bản, kết quả so sánh giữa các nhóm sẽ bị lệch.
Chọn số chủ đề trong mô hình chủ đề thế nào?
Thử nhiều giá trị, đọc danh sách từ và các văn bản tiêu biểu của từng chủ đề, chọn mức cho chủ đề dễ diễn giải nhất. Ghi rõ trong bài các giá trị đã thử và lý do chọn.
Kết quả khai phá văn bản trình bày trong bài báo thế nào?
Mô tả kho, bước làm sạch, công cụ và tham số, rồi đưa bảng hoặc biểu đồ kèm trích dẫn đoạn văn minh hoạ. Mã và dữ liệu nên được gửi lên kho lưu trữ mở để kiểm lại.