2008-11-05 57 views
6

Tôi thấy vấn đề này dễ dàng hơn chỉ là một trình kiểm tra chính tả thông thường vì danh sách các thành phố của Hoa Kỳ nhỏ so với tất cả các từ tiếng Anh đã biết.Kiểm tra chính tả tên thành phố?

Nhưng dù sao, đây là vấn đề: Tôi có tệp văn bản có đầy đủ tên thành phố; một số trong đó được viết đúng chính tả và một số không.

Tôi có thể sử dụng loại thuật toán nào để sửa tất cả các lỗi chính tả của tên thành phố?

+0

Bạn có thể đăng một ví dụ không? Đúng tên và mẫu của tên không chính xác của cùng một thành phố, có thể? – shahkalpesh

Trả lời

7

Bạn có thực sự cần sửa lỗi chính tả hoặc chỉ gắn cờ chúng với trình kiểm tra chính tả thông thường không? Nếu sau này, bạn chỉ cần có được một danh sách các cách viết đúng và đảm bảo mỗi tên giống với tên trong danh sách của bạn.

Nếu bạn muốn thực sự sửa chúng, bạn có thể muốn sử dụng khái niệm edit distance để so sánh sự giống nhau của các chuỗi viết sai chính tả với các chuỗi trong danh sách tham chiếu của bạn. Sau đó, bạn có thể thay thế từ sai chính tả bằng kết quả phù hợp gần nhất. Bạn cũng có thể muốn xử lý khả năng thành phố dự định không có trong danh sách của bạn.

Bài viết trên Wikipedia là một tài nguyên tốt khác.

+0

Tôi cần sửa chúng. –

+0

Vâng, tôi nghĩ ý tưởng chỉnh sửa khoảng cách là cách tiếp cận phù hợp với điều này. Đó là cái tôi đã đi xuống khi tôi bắt đầu chuyện này. –

-3

Nếu cùng một tên thành phố xảy ra nhiều lần trong tệp, bạn có thể sử dụng số lần xuất hiện của từng tên thành phố và gắn cờ xuất hiện một lần.

+0

Có thể thành phố chỉ xuất hiện một lần và được viết đúng chính tả. –

+0

... hoặc bị viết sai chính tả, giống như cách, nhiều lần. –

+0

Esteban và Brad: Tất nhiên, bạn là đúng nhưng nếu những điều duy nhất bạn phải xác nhận chính mình là tập tin bạn phải dựa vào sự xuất hiện để tính thống kê –

3

Trước tiên tải tên thành phố chính xác vào một mảng, sau đó lặp qua tên thành phố trong tệp của bạn. Kiểm tra xem tên thành phố hiện tại có được viết đúng không bằng cách xem liệu tên đó có nằm trong mảng tên chính xác hay không. Nếu nó không nằm trong mảng, hãy thử so sánh giá trị Soundex hoặc Metaphone của từ sai chính tả với các từ trong dãy tên chính xác để tìm đúng cách viết chính tả.

-1

Có danh sách trên web của các tên thành phố thường sai chính tả (như Pittsburg h). Khác với tôi với Jeremy. Bạn chỉ cần tìm bộ dữ liệu tên thành phố, bạn có thể muốn dùng USGS. Zillow có dữ liệu vùng lân cận mà bạn có thể sử dụng.

2

Bí quyết là biết thành phố nào tên thực sự đề cập đến và cách rằng tên thành phố được viết đúng chính tả. Nó không giống như kiểm tra các từ tiếng Anh.

Nhiệm vụ thực sự bạn đang cố gắng giải quyết là gì? Bạn có đang xử lý danh sách địa chỉ không? Bạn không nên viết các công cụ của riêng bạn cho điều đó: có một ngành công nghiệp toàn bộ dành cho nhiệm vụ đơn giản này. :)

Tôi phải thực hiện việc này cho danh sách đăng ký cho The Perl Review. Tôi đã trở nên khá quen thuộc với các dịch vụ web cho các bưu cục khác nhau trên toàn thế giới. Bạn thường có thể truy cập trang web dịch vụ bưu chính để nhận dạng địa chỉ chính tắc. Có các công cụ mã hóa địa lý có thể giúp bạn có cùng dữ liệu.

+0

Bạn nói đúng, nó khéo léo phức tạp. Bây giờ tôi đã chơi đùa với nó, tôi cũng nhận thấy rằng đôi khi người ta viết tắt tên thành phố. Viết đây là một bài tập tuyệt vời trong DP; Tôi chắc chắn một người có thể đạt được kết quả khá phong nha w/o quá nhiều nỗ lực. –

0

Tôi đã thực hiện việc này. Cách tiếp cận khoảng cách chỉnh sửa là những gì tôi đã làm và nó hoạt động khá tốt, nhưng là quá chậm để làm trong thời gian thực.

Một thách thức mà bạn sẽ phải đối mặt là có một số thành phố cách các tên thành phố khác 1 khoảng cách chỉnh sửa. Bạn đã không nói tên của các tập tin văn bản đến từ đâu và điều đó tạo nên sự khác biệt lớn. Khi trong trường hợp của tôi, đó là những người ngẫu nhiên đang gõ tên thành phố để tìm kiếm và đôi khi họ sẽ sai chính tả thành phố mà họ dự định, nhưng lỗi chính tả của họ là tên thật của thành phố. Trong trường hợp này, bạn phải thực hiện một số dự đoán về ý định của người dùng và một cách dễ dàng để làm điều này là xem xét trạng thái nếu được cung cấp.

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