2017-07-04 29 views
5

Tôi có một số văn bản được tạo bởi một số phần mềm OCR tệ hại.Thuật toán nào có thể nhóm các ký tự thành các từ?

Kết quả chứa hỗn hợp các từ và ký tự cách nhau bằng dấu cách, các ký tự này phải được nhóm thành các từ. Ví dụ,

Expr e s s i o n Syntax 
S u m m a r y o f T e r minology 

cần phải có được

Expression Syntax 
Summary of Terminology 

gì các thuật toán có thể nhân vật nhóm diễn tả bằng lời?

Nếu tôi lập trình bằng Python, C#, Java, C hoặc C++, thư viện nào cung cấp việc triển khai các thuật toán?

Cảm ơn.

+0

sử dụng một số tập dữ liệu nltk và kiểm tra các kết hợp có thể hữu ích. Không chắc chắn bạn sẽ kết thúc với kết quả chính xác. Cách tiếp cận tham lam này có thể thất bại trong trường hợp các từ là một phần của các từ lớn. Tuy nhiên không có cách nào để quyết định chọn các từ lớn hoặc một phần. Đây có thể là một điểm khởi đầu tôi đoán. – arunk2

+0

Tôi cảm thấy nỗi đau của bạn khi sử dụng OCR. Bạn có sử dụng thuật toán lập trình động không? Ý tưởng cuối cùng là để chương trình đưa ra quyết định về cách nhóm và quyết định này có thể phải được kiểm tra theo cách đệ quy với mỗi lần kiểm tra một từ trong từ điển tiếng Anh để xác minh xem đó có phải là một từ hợp lệ hay không. – Miket25

Trả lời

4

cách tiếp cận tối thiểu:

  1. Trong đầu vào của bạn, loại bỏ các không gian trước khi bất kỳ chữ cái duy nhất. Đánh dấu các từ cuối cùng được tạo ra như một phần của điều này bằng cách nào đó (tiền tố chúng với một biểu tượng không có trong đầu vào, ví dụ).
  2. Lấy từ điển từ tiếng Anh, được sắp xếp dài nhất đến ngắn nhất.
  3. Đối với mỗi từ được đánh dấu trong mục nhập của bạn, hãy tìm kết quả phù hợp nhất và ngắt kết quả đó thành một từ. Lặp lại các ký tự còn lại trong từ "gốc" cho đến khi không còn gì sót lại. (Trong trường hợp không có trận đấu chỉ để lại nó một mình.)

Tinh vi hơn, cách tiếp cận quá mức cần thiết:

Các vấn đề của những lời chia tách không gian là một vấn đề thực tế trong các ngôn ngữ phổ biến bằng văn bản không có dấu cách, chẳng hạn như tiếng Trung và tiếng Nhật. Tôi quen thuộc với người Nhật nên tôi chủ yếu nói chuyện với nó.

Phương pháp tiếp cận điển hình sử dụng từ điển và mô hình trình tự. Mô hình được đào tạo để tìm hiểu các thuộc tính chuyển tiếp giữa các nhãn - một phần của gắn thẻ giọng nói, kết hợp với từ điển, được sử dụng để tìm ra khả năng tương đối của các vị trí tiềm năng khác nhau để tách các từ. Sau đó, trình tự phân tách có khả năng nhất cho toàn bộ câu được giải quyết để sử dụng (ví dụ) thuật toán Viterbi.

Tạo một hệ thống như thế này gần như chắc chắn là quá mức cần thiết nếu bạn chỉ làm sạch dữ liệu OCR, nhưng nếu bạn quan tâm đến nó có thể đáng xem xét.


Một trường hợp mẫu nơi cách tiếp cận phức tạp hơn sẽ làm việc và một trong những đơn giản sẽ không:

  • đầu vào: Playforthefunofit
  • đầu ra đơn giản: Play forth efunofit (forth dài hơn for)
  • đầu ra được phân tích: Play for the fun of it (forth efunofit là tần suất thấp - nghĩa là, không tự nhiên - chuyển đổi, trong khi for the không phải là)

Bạn có thể giải quyết vấn đề bằng cách tiếp cận đơn giản ở một mức độ nào đó bằng cách thêm các chuỗi từ ngắn phổ biến vào từ điển của bạn dưới dạng đơn vị.Ví dụ: thêm forthe làm từ trong từ điển và chia nó trong bước xử lý bài đăng.

Hy vọng rằng sẽ giúp - chúc may mắn!

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