Dùng VBA để sửa lỗi chính tả theo Chuẩn tiếng việt

  • Thread starter vannguyendinh
  • Ngày gửi
V

vannguyendinh

Guest
22/2/08
3
0
0
Ha Tinh
Chào các Bạn!
Mình thường xuyên phải làm việc với danh sách các đối tượng (số lượng lớn), chủ yếu là nguồn dự liệu do các đơn vị cấp dưới lập lên bằng Excel. Nhưng trong quá trình cập nhật bị sai quy chuẩn tiếng Việt. Làm thế nào để phát hiện ra những tên bị sai???.
VD:
Phan ThịThu Thủy
Nguuyễn Thị Phương Lan
Nguyêễn Trung Kiên
dĐào Thị Minh
Nguyênx Đức Ngọc
Ngyuễn Đình Nam
Võ ĐứcQuyết
NNguyễn Viết Cơ
TrầnVăn Quốc
Hoaàng Xuân Mai
Nguyễn Thj Sâm
Truơng Quốc Thìn
Nguyễ Đắc Vui
PhanVăn Kiều
...
Không thể dò tìm bằng mắt thường khi một Sheet có nhiều nghìn người và tổng số đối tượng là hàng triệu trong một thời gian ngắn
Mong các cao thủ chỉ giúp
Xin cảm ơn!!!
 
Khóa học Quản trị dòng tiền
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Coding VBA thì rất mất thời gian và không đảm bảo chính xác, bạn chỉ có thể tìm 1 phần mềm kiểm tra lỗi chính tả tương tự như check spelling trong Word mà thôi.

Cách khác là bạn dùng chức năng Find and Replace để thay thế từ từ các lỗi, cách này không tuyệt đối sửa hết lỗi nhưng cũng loại bỏ bớt các lỗi thường gặp nhất.
 
V

vannguyendinh

Guest
22/2/08
3
0
0
Ha Tinh
Cảm ơn bạn!
Tóm lại có 3 phương án:
1. Coding VBA
2. Kiếm 1 phần mềm kiểm tra lỗi chính tả
3. Find and Raplace để thay thế
Phương án 3 là không ổn rồi, vì có rất nhiều kiểu sai sót mình không thể thống kê hết được.
Rất mong được các đồng nghiệp chỉ giúp mình phương án 1 hoặc 2
 
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Cảm ơn bạn!
Tóm lại có 3 phương án:
1. Coding VBA
2. Kiếm 1 phần mềm kiểm tra lỗi chính tả
3. Find and Raplace để thay thế
Phương án 3 là không ổn rồi, vì có rất nhiều kiểu sai sót mình không thể thống kê hết được.
Rất mong được các đồng nghiệp chỉ giúp mình phương án 1 hoặc 2

Coding VBA thì nó cũng chỉ là giải thuật tìm kiếm, đối chiếu trên 1 thư viện các từ vựng đúng (các từ vựng đã được ai đó viết sẳn trên thư viện DLL) và đưa ra các đề nghị tương ứng qua 1 phép so sánh nào đó. Giải thuật này chẳng dễ dàng gì và mất cả vài tháng mởi coding xong. Hoặc phải định nghĩa 1 thư viện các lỗi, mà điều này thì trở lại phương án 3 - mất công hơn nhiều.
Bạn chưa biết gì về VBA thì phải, bài toán này dùng VBA là phương án.. dỡ nhất và khó khăn nhất.
 
V

vannguyendinh

Guest
22/2/08
3
0
0
Ha Tinh
Việc tìm kiếm và thay thế để trả về giá trị đúng là điều bất khả thi, ví dụ: Ttrần Thị Vui và Nguyễn TấtThắng có cùng lỗi là "TT" thì không thể thay thế được mà tôi chỉ muốn phát hiện ra lỗi "TT" rồi chuyển trỏ đến để sửa.
Mong bạn hướng dẫn một cách khái quát nhất và thuật toán cơ bản còn việc thực hiện thì mình tự làm lấy.
Xin chân thành cảm ơn!
 
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Việc tìm kiếm và thay thế để trả về giá trị đúng là điều bất khả thi, ví dụ: Ttrần Thị Vui và Nguyễn TấtThắng có cùng lỗi là "TT" thì không thể thay thế được mà tôi chỉ muốn phát hiện ra lỗi "TT" rồi chuyển trỏ đến để sửa.
Mong bạn hướng dẫn một cách khái quát nhất và thuật toán cơ bản còn việc thực hiện thì mình tự làm lấy.
Xin chân thành cảm ơn!

Tôi không đủ khả năng và kiến thức viết ra thuật toán này. Lướt qua 1 vòng trên Internet thì tôi cũng thấy đây là một thuật toán khá khó khăn và người ta cũng không sử dụng VBA để giải quyết. Nếu để tiếp cận bài toán này để nghiên cứu thì bạn có thể tìm hiểu các giải thuật trên Internet, nhưng thư viện của nó cũng phải lấy cái có sẳn (1 file DLL nào đó) chứ không thể nào tự viết cho mình được. Còn nếu dùng bài toán để giải quyết công việc của bạn hiện tại thì thật không hiệu quả chút nào. Nếu là tôi, tôi chỉ copy file và quăng ra cửa hàng vi tính, 1 ngày là xong.

http://www.ioit.ac.vn nói:
Bài toán kiểm tra chính tả thường được coi là gồm hai pha chính: phát hiện lỗi và sửa lỗi. Công việc tiến hành trong pha sửa lỗi, sau khi đã xác định được vị trí của lỗi chính tả, bao gồm việc đưa ra một danh sách gợi ý thay thế cho lỗi sai chính tả và sắp xếp độ ưu tiên của danh sách đó theo thứ tự khả năng có thể thay thế. Trong bài báo này chúng tôi trình bày một hướng tiếp cận cho việc sửa lỗi chính tả tiếng Việt dựa trên các đặc điểm ngôn ngữ của tiếng Việt. Hướng nghiên cứu của chúng tôi sử dụng thuật toán Minimum Edit Distance, Soundex cùng một số heuristic và xây dựng một hàm đánh giá độ ưu tiên của các âm tiết gợi ý thay thế.
http://www.echip.com.vn/echiproot/weblh/sdpm/2000/ud/slcttv/slcttv.htm

http://www.echip.com.vn/echiproot/weblh/qcbg/duynghi/ampad/readme.htm

Và nhiều nhiều nữa...
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Ðề: Dùng VBA để sửa lỗi chính tả theo Chuẩn tiếng việt

Thấy chuyện này hay, mình xin có vài í như sau:

Sửa họ trước cái đã!

Thường CQ cỡ ngàn người cũng chỉ 80 họ là cùng! Ta chú tâm vô cái này trước để có thêm kinh nghiệm;

Bạn lập 1 danh sách 80 cái họ (Như ADAM TRẦN đã nêu);
Viết 1 code tìm kiếm, mà câu lệnh chủ yếu trong code sẽ là:

Set sRng = Rng.FIND(Cls.value, , xlFormulas, xlPart)

Nếu tìm thấy thì đánh dấu hay ghi ngay bên cột cạnh nó trị Cls.Value í (để ta sau khi chạy code sẽ đối chiếu)

Hiện tại bạn tự lập danh sách các họ trong CQ bạn là khó; Bạn có thể tìm file nhân sự nào đó cở vài ngàn người & lập danh sách này sẽ tốt hơn;

Chuyện này chỉ nên làm với họ thôi nha; Với đệm & tên thì làm thủ công đi bạn!
 

Xem nhiều

Webketoan Zalo OA