2012-11-03 38 views
6

Tôi có một danh sách tên và tôi cần phân chia chúng thành họ và tên. Vì một số tên có 2-3 khoảng trống trong chúng, một phân chia đơn giản cho một không gian sẽ không làm được.Chiến lược tốt nhất để tách tên tiếng Anh thành họ và tên

Loại người dùng nào để người dùng sử dụng để thực hiện việc chia tách?

Lưu ý rằng đây không phải là bản sao các câu hỏi có hiệu quả yêu cầu cách chia nhỏ tại một không gian; Tôi đang tìm heuristics và thuật toán, không thực sự giúp đỡ mã.

Cập nhật: Tôi đang giới hạn sự cố được đặt thành tên kiểu tiếng Anh. Đây là tất cả những gì tôi cần để giải quyết và có khả năng tất cả những ai tiếp cận câu hỏi này (tiếng Anh) cũng sẽ cần.

+2

Điều này thường được giải quyết bằng cách giữ riêng biệt và dữ liệu tên cuối cùng, bởi vì nó không thể thực hiện được quyền này cho tất cả ngôn ngữ/quốc gia/miền địa phương/v.v.Không phải điều đó giúp bạn. –

+1

Điều này phụ thuộc rất nhiều vào ngôn ngữ: bạn có thể thử điều này bằng một từ điển có tên đầu tiên không? Tôi cho rằng đây không phải bằng tiếng Trung hay tiếng Nhật, đúng không? – dasblinkenlight

+3

Tách tên cho chính bạn thường là xua đuổi ai đó. Bobby de Luca, hay Bobbie Lee Jensen, tên của họ nên tách ra sao? Hoặc Chow Yun-Fat, cho rằng vấn đề? (Chow là tên * * cuối cùng của anh ấy. Ừm ... nó là đầu tiên, nhưng cuối cùng. Ồ, địa ngục, bạn có được điểm.) – cHao

Trả lời

5

Tôi đã đọc một bài rất thú vị và toàn diện về vấn đề này:

http://www.w3.org/International/questions/qa-personal-names

Nó thậm chí gợi ý để tự hỏi mình liệu bạn có thực sự cần các lĩnh vực riêng biệt cho tên đầu tiên và cuối cùng. Dường như phụ thuộc vào (các) vùng mục tiêu của ứng dụng của bạn.

+1

Bạn cũng có thể tìm thấy http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ thú vị. – rici

1

Các quốc gia và khu vực khác nhau có định dạng khác nhau cho tên. Ví dụ, tên gia đình châu Á thường là đầu tiên và sau đó được đặt tên theo sau. Phương Tây, bạn có tên và họ, nhưng phức tạp khi mọi người tăng gấp đôi thùng, hoặc bao gồm tên đệm. Và sau đó một số vùng người ta chỉ được đặt một cái tên.

Cá nhân, tôi không nghĩ có một thuật toán duy nhất có thể cung cấp cho bạn 100% kết quả chính xác mà tôi sợ.

0

Sau đây giả định họ theo kiểu Anh. Nếu không phải như vậy, hãy cập nhật câu hỏi của bạn.

Thường an toàn để giả định rằng ký tự dấu cách cuối cùng báo hiệu sự bắt đầu của họ của một người. Nhưng vì có những ngoại lệ, một chiến lược sẽ là biên dịch một cơ sở dữ liệu lớn các tên họ nhiều từ đã biết từ một số nguồn khác. Sau đó, bạn có thể kiểm tra những tên họ này và coi chúng là ngoại lệ.

3

Hai cách tiếp cận có thể giúp, mặc dù không giải quyết được hoàn toàn vấn đề này.

  1. Lập trình tách biệt những người dễ dàng, những người không dễ dàng bị đẩy vào danh sách khác, "còn lại để được chia". Sắp xếp danh sách đó theo cách thủ công. Khi bạn sắp xếp theo cách thủ công, một số chẩn đoán có thể xuất hiện có thể được mã hóa, giảm thêm kích thước của danh sách còn lại. Nếu đây là một điều một lần, và danh sách không phải là siêu lớn, điều này sẽ có được công việc làm.
  2. Một vấn đề liên quan chặt chẽ là khi một tên được tách ra, nhưng bạn không biết cái nào là cái đầu tiên và cái nào là cuối cùng. Một số hệ thống làm việc xung quanh vấn đề này bằng cách thực hiện tra cứu mờ như vậy nếu trong lần thử đầu tiên không tìm thấy kết quả phù hợp nào, hãy lật tên và họ và thử lại. Bạn không nói số lý do tại sao bạn cần phải tách tên. Nếu nó là tra cứu đối với dữ liệu tham chiếu, hãy xem xét một số loại phỏng đoán tra cứu mờ tương tự cho phép thử các phần tách khác nhau thay vì cố gắng để có được sự phân chia chính xác.

Không thực sự là câu trả lời, nhưng trong trường hợp này thực sự không có câu trả lời hoàn hảo.

Các vấn đề liên quan