Phân biệt tên người nước ngoài và tên người Việt Nam

Liên hệ QC

nthxe

Trình còi
Tham gia
14/6/08
Bài viết
259
Được thích
112
Chào các bác, Em cần phân biệt người nước ngoài và người Việt Nam theo tên. Em đang nghĩ hướng phân biệt bằng cách:
- Nếu trong tên người có các dấu: huyền, ngã, hỏi, nặng, sắc hoặc các ký tự có mũ như: ô, ê, ơ, ư ă ==> thì tên người Việt Nam
- Còn lại là tên người nước ngoài.
(tất nhiên ko đúng 100% nhưng cũng đạt hiệu quả trên 90% rồi ạ)

Các bác có cách nào giúp em phân biệt không ạ?

Cảm ơn các bác
 
Chào các bác, Em cần phân biệt người nước ngoài và người Việt Nam theo tên. Em đang nghĩ hướng phân biệt bằng cách:
- Nếu trong tên người có các dấu: huyền, ngã, hỏi, nặng, sắc hoặc các ký tự có mũ như: ô, ê, ơ, ư ă ==> thì tên người Việt Nam
- Còn lại là tên người nước ngoài.
(tất nhiên ko đúng 100% nhưng cũng đạt hiệu quả trên 90% rồi ạ)
Các bác có cách nào giúp em phân biệt không ạ?
Cảm ơn các bác
Theo bạn thì tên này: "nthxe" là người nước ngoài hay người Việt.
 
Em có mở ngoặc ở trên là không đạt 100% nhưng phân biệt cũng khá khá bác ạ, em nghĩ khoảng 90% rồi
Hì hì, bạn thấy tên diễn đàn GPE khoảng bao nhiêu % tên tiếng Việt thì đoán ra ngay thôi. (mình nghĩ 90% là số liệu của điện toán trên mây).
 
Hì hì, bạn thấy tên diễn đàn GPE khoảng bao nhiêu % tên tiếng Việt thì đoán ra ngay thôi. (mình nghĩ 90% là số liệu của điện toán trên mây).
Dĩ nhiên con số 980% là thớt đoán đại. Nhưng có thể tổ đãi, vì khá hiếm tên ngwoif Việt nào mà không có ký tự nằm ngoài 26 ký tự Latin.
Tuy nhiên, khi nói "nước ngoài", thớt đã quá chủ quan: chỉ tiếng Anh mới không có dấu. Tiếng các nước Âu châu khác cũng có thể có dấu (Pháp, Đức...). Nhất là dấu sắc, huyền, dấu ^, và dấu 2 chấm mũ.
 
Nếu chỉ xét tên thì rất nhiều tên không có dấu: Anh, An, Ba, Cung, Dung, Hoa, Khang, Lan, Mai ... Nếu xét họ, tên đệm, và tên thì đa số có ký tự Việt. Số ký tự Việt là hữu hạn (à, ả, ã, á, ạ, ă, ằ, ẳ, ẵ, ắ, ặ, â, ầ, ẩ, ẫ, ấ, ậ, đ, è, ẻ, ẽ, é, ẹ ...) nên có thể liệt kê trong mảng, trong đít thon. Rồi kiểm tra xem họ tên có chứa ký tự "đặc biệt" hay không. Tất nhiên về lý thuyết không thể chính xác 100% được.
 
bạn viết một hàm instring dạng vòng lặp để kiểm tra có chứa các ký tự tiếng việt không sẽ giải quyết được vấn đề này

1624619930106.png
 
Chào các bác, Em cần phân biệt người nước ngoài và người Việt Nam theo tên. Em đang nghĩ hướng phân biệt bằng cách:
- Nếu trong tên người có các dấu: huyền, ngã, hỏi, nặng, sắc hoặc các ký tự có mũ như: ô, ê, ơ, ư ă ==> thì tên người Việt Nam
- Còn lại là tên người nước ngoài.
Phi, Linh, Lan, The, Hoa, Do, Pho, To, Bo ... theo bạn là tên người nước nào?

.
 
Tiếng Việt có một số điểm độc đáo.
Vì vậy, cách xét hiệu quả là loại những trường hợp không thể là tiếng Việt. Để có thể là tiếng Việt, phải đạt tất cả các điều kiện sau:
1. Chỉ có thể tối đa 7 ký tự. (Có thể ưu hóa lên một chút, nếu 7 ký tự thì phải là từ Nghiêng)
2. Không chứa f, j, w, và z
3. Ký tự từ thứ 2 trở đi không thể là b, d, k, l, q, s, v, x. (các ký tự này luôn đứng đầu từ)
4. Các ký tự m, p chỉ có thể ở đầu từ hoặc cuối từ.
5. Hai ký tự kề nhau bắt buộc phải khác nhau, trừ oo.
6. Các nguyên âm trong một từ bắt buộc phải tụ về một chỗ. Không thể có trường hợp một phụ âm đi giữa hai nguyên âm.
Còn nhiều luật nhỏ nữa. Tùy theo muốn sàng lọc đến bao nhiêu phần trăm.

Phi, Linh, Lan, The, Hoa, Do, Pho, To, Bo ... theo bạn là tên người nước nào?
Đấy là sót tên Việt.
Đây là dư tên Việt: Hélène.
Bởi vậy tôi mới nói thớt đưa ra con số 90% là quá tự tin. :p
 
Tiếng Việt có một số điểm độc đáo.
Vì vậy, cách xét hiệu quả là loại những trường hợp không thể là tiếng Việt. Để có thể là tiếng Việt, phải đạt tất cả các điều kiện sau:
1. Chỉ có thể tối đa 7 ký tự. (Có thể ưu hóa lên một chút, nếu 7 ký tự thì phải là từ Nghiêng)
2. Không chứa f, j, w, và z
3. Ký tự từ thứ 2 trở đi không thể là b, d, k, l, q, s, v, x. (các ký tự này luôn đứng đầu từ)
4. Các ký tự m, p chỉ có thể ở đầu từ hoặc cuối từ.
5. Hai ký tự kề nhau bắt buộc phải khác nhau, trừ oo.
6. Các nguyên âm trong một từ bắt buộc phải tụ về một chỗ. Không thể có trường hợp một phụ âm đi giữa hai nguyên âm.
Còn nhiều luật nhỏ nữa. Tùy theo muốn sàng lọc đến bao nhiêu phần trăm.


Đấy là sót tên Việt.
Đây là dư tên Việt: Hélène.
Bởi vậy tôi mới nói thớt đưa ra con số 90% là quá tự tin. :p
Cảm ơn các bác đã góp ý chi tiết và hiệu quả. Em có tính háu táu, sửa mãi chưa được. Trong đầu tính là sẽ xem xét cả họ và tên nhưng khi viết lên thì chỉ nghĩ đến tên ạ. Thêm cả họ và tên thì tính chính xác sẽ cao hơn ạ.
 
Cảm ơn các bác đã góp ý chi tiết và hiệu quả. Em có tính háu táu, sửa mãi chưa được. Trong đầu tính là sẽ xem xét cả họ và tên nhưng khi viết lên thì chỉ nghĩ đến tên ạ. Thêm cả họ và tên thì tính chính xác sẽ cao hơn ạ.
Mình thấy Bạn nói đúng đấy, bởi khi xét là xét cả họ và tên nên chỉ cần tách ra nếu có những ký tự đó thì tiếng Việt ngoài ra có thể list danh sách các họ của Việt Nam để xét.
 
Theo Wiki thì có 14 họ phổ biến, chiếm 90.1%. Còn lại là 241 họ. Ngoài ra rất hiếm gặp.
Với danh sách họ tại cột A
F2 là họ và tên
G2:
Mã:
=IF(COUNTIF($A$2:$A$258,LEFT(F2,SEARCH(" ",F2)-1)),"VN","NN")

Cách này có thể đúng 99.97%

1624672414560.png
 

File đính kèm

  • Book1.xlsx
    14.8 KB · Đọc: 10
Theo Wiki thì có 14 họ phổ biến, chiếm 90.1%. Còn lại là 241 họ. Ngoài ra rất hiếm gặp.
Với danh sách họ tại cột A
F2 là họ và tên
G2:
Mã:
=IF(COUNTIF($A$2:$A$258,LEFT(F2,SEARCH(" ",F2)-1)),"VN","NN")

Cách này có thể đúng 99.97%
...
Con số này chưa chứng minh là khách quan.
Theo toán xác suất thống kê về nhập nhóm, có hai loại sai (type I và type II errors). Loại thứ nhất là nhận thiếu, và loại thứ hai là nhận dư.
Dùng xác suất của bảng tên là chỉ loại được lỗi loại I chứ chưa loại được lỗi loại II.
Điển hình, tuy hầu hết những họ thông dụng đều là từ độc đáo tiếng Việt (exclusive, unique). Nhưng những từ không dấu thì chưa chắc (Chu, Lam,...)

Chú: trong cái webpage wiki, cái con sô 90.1% được tính ra từ một thống kê nào đó, chỉ nói nguồn 2005, chứ không nêu rõ nguồn.
 
Theo Wiki thì có 14 họ phổ biến, chiếm 90.1%. Còn lại là 241 họ. Ngoài ra rất hiếm gặp.
Với danh sách họ tại cột A
F2 là họ và tên
G2:
Mã:
=IF(COUNTIF($A$2:$A$258,LEFT(F2,SEARCH(" ",F2)-1)),"VN","NN")

Cách này có thể đúng 99.97%

View attachment 261315
Cảm ơn bác nhiều ạ, hàm này giúp em giải quyết xong việc phải làm.

Em hỏi thêm bác một chút, trong file của bác gửi, các công thức ở cột G sẽ tự động nhảy khi mình gõ ký tự ở cột F. Cái này làm như thế nào ạ? Bác chỉ cho em được không? Em chưa biết kỹ thuật này.

Đa tạ bác
 
Cảm ơn bác nhiều ạ, hàm này giúp em giải quyết xong việc phải làm.

Em hỏi thêm bác một chút, trong file của bác gửi, các công thức ở cột G sẽ tự động nhảy khi mình gõ ký tự ở cột F. Cái này làm như thế nào ạ? Bác chỉ cho em được không? Em chưa biết kỹ thuật này.

Đa tạ bác
Vì công thức tại cột G có liên quan đến cột F nên tự cập nhật khi thay đổi cột F. Còn làm thế nào thì chắc bác Bill biết chứ mình chưa đủ trình để làm.
 
Web KT
Back
Top Bottom