bởi Oskar Schnaack và Romain Besombes | vào ngày 14 THG 12, 2023 |
Amazon Comprehend là một dịch vụ xử lý ngôn ngữ tự nhiên (NLP) cung cấp các API được đào tạo sẵn và tùy chỉnh để trích xuất thông tin từ dữ liệu văn bản. Khách hàng của Amazon Comprehend có thể đào tạo các mô hình nhận diện thực thể (NER) tùy chỉnh để trích xuất các thực thể quan trọng, chẳng hạn như địa điểm, tên người và ngày, đặc trưng cho doanh nghiệp của họ.
Để đào tạo một mô hình tùy chỉnh, trước tiên bạn cần chuẩn bị dữ liệu đào tạo bằng cách chú thích thủ công các thực thể trong tài liệu. Việc này có thể được thực hiện bằng Công cụ Chú thích Tài liệu Bán Cấu trúc của Comprehend, công cụ này tạo ra một công việc Amazon SageMaker Ground Truth với mẫu tùy chỉnh, cho phép người chú thích vẽ các hộp giới hạn xung quanh các thực thể trực tiếp trên tài liệu PDF. Tuy nhiên, đối với các công ty có sẵn dữ liệu thực thể dạng bảng trong các hệ thống ERP như SAP, việc chú thích thủ công có thể lặp đi lặp lại và tốn thời gian.
Để giảm bớt công sức chuẩn bị dữ liệu đào tạo, chúng tôi đã xây dựng một công cụ gán nhãn trước sử dụng AWS Step Functions tự động chú thích trước các tài liệu bằng cách sử dụng dữ liệu thực thể dạng bảng có sẵn. Điều này giúp giảm đáng kể công việc thủ công cần thiết để đào tạo các mô hình nhận diện thực thể tùy chỉnh chính xác trong Amazon Comprehend.
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn các bước thiết lập công cụ gán nhãn trước và đưa ra các ví dụ về cách nó tự động chú thích tài liệu từ một tập dữ liệu công khai gồm các bản sao kê ngân hàng mẫu ở định dạng PDF.Toàn bộ mã nguồn có sẵn trên repo GitHub.
Tổng quan về giải pháp
Trong phần này, chúng tôi sẽ thảo luận về đầu vào và đầu ra của công cụ gắn nhãn trước và cung cấp một cái nhìn tổng quan về kiến trúc giải pháp.
Inputs và outputs
Là đầu vào, công cụ gắn nhãn trước nhận các tài liệu PDF chứa văn bản cần được chú thích. Cho bản demo, chúng tôi sử dụng các bảng kê ngân hàng mô phỏng như ví dụ sau.
Công cụ cũng chấp nhận một tệp mô tả (manifest) mà liên kết các tài liệu PDF với các thực thể mà chúng ta muốn trích xuất từ các tài liệu này. Thực thể bao gồm hai điều: expected_text cần trích xuất từ tài liệu (ví dụ: AnyCompany Bank) và entity_type tương ứng (ví dụ: bank_name). Sau này trong bài viết này, chúng tôi sẽ chỉ how cách xây dựng tệp mô tả từ một tài liệu CSV như ví dụ sau.
Công cụ tiền gán nhãn sử dụng tệp mô tả để tự động gán nhãn cho các tài liệu với các thực thể tương ứng. Sau đó, chúng ta có thể sử dụng những chú thích này trực tiếp để huấn luyện một mô hình Amazon Comprehend.
Hoặc có thể tạo một công việc gán nhãn SageMaker Ground Truth để được xem xét và chỉnh sửa bởi con người, như thể hiện trong hình ảnh dưới đây.
Khi quá trình đánh giá hoàn thành, bạn có thể sử dụng dữ liệu được gán nhãn để huấn luyện một mô hình nhận diện thực thể tùy chỉnh của Amazon Comprehend.
Kiến trúc
Công cụ tiền gán nhãn bao gồm nhiều hàm AWS Lambda được điều phối bởi một máy trạng thái Step Functions. Nó có hai phiên bản sử dụng các kỹ thuật khác nhau để tạo ra nhãn trước.
Kỹ thuật đầu tiên là so khớp mờ. Điều này yêu cầu một tệp mô tả trước với các thực thể mong đợi. Công cụ sử dụng thuật toán so khớp mờ để tạo ra nhãn trước bằng cách so sánh độ tương tự văn bản.
So khớp mờ tìm kiếm các chuỗi trong tài liệu có sự tương đồng (nhưng không nhất thiết là giống nhau) với các thực thể mong đợi được liệt kê trong tệp mô tả trước. Nó đầu tiên tính điểm tương tự văn bản giữa văn bản mong đợi và từ trong tài liệu, sau đó nó so sánh tất cả các cặp trên ngưỡng. Do đó, ngay cả khi không có sự giống nhau chính xác, so khớp mờ có thể tìm thấy các biến thể như viết tắt và chính tả sai. Điều này cho phép công cụ gán nhãn trước tài liệu mà không yêu cầu các thực thể xuất hiện đúng với văn bản. Ví dụ, nếu ‘AnyCompany Bank’ được liệt kê là một thực thể mong đợi, So khớp mờ sẽ đánh dấu các trường hợp của ‘Any Companys Bank’. Điều này mang lại sự linh hoạt hơn so với việc so khớp chuỗi nghiêm túc và giúp công cụ tiền gán nhãn tự động gán nhãn cho nhiều thực thể hơn.
Sơ đồ dưới đây minh họa kiến trúc của máy trạng thái Step Functions này.
Kỹ thuật thứ hai đòi hỏi một mô hình nhận diện thực thể Amazon Comprehend đã được huấn luyện trước. Công cụ tạo ra các nhãn trước bằng cách sử dụng mô hình Amazon Comprehend, theo quy trình làm việc được hiển thị trong sơ đồ dưới đây.
Sơ đồ dưới đây minh họa kiến trúc đầy đủ.
Trong các phần sau, chúng tôi sẽ hướng dẫn từng bước để triển khai giải pháp.
Triển khai công cụ tiền đánh giá nhãn
Sao chép kho lưu trữ về máy cục bộ của bạn:
Kho lưu trữ này đã được xây dựng trên nền tảng của Comprehend Semi-Structured Documents Annotation Tool và mở rộng các chức năng của nó bằng cách cho phép bạn bắt đầu một công việc nhãn SageMaker Ground Truth với các dự đoán trước đã được hiển thị trên giao diện SageMaker Ground Truth.
Công cụ tiền đánh giá nhãn bao gồm cả các tài nguyên của Comprehend Semi-Structured Documents Annotation Tool cũng như một số tài nguyên cụ thể cho công cụ tiền đánh giá nhãn. Bạn có thể triển khai giải pháp này bằng AWS Serverless Application Model (AWS SAM), một framework mã nguồn mở mà bạn có thể sử dụng để xác định mã cơ sở hạ tầng ứng dụng không máy chủ.
Nếu bạn đã triển khai trước đây Comprehend Semi-Structured Documents Annotation Tool, hãy xem phần FAQ trong Pre_labeling_tool/README.md để biết cách triển khai chỉ các tài nguyên cụ thể cho công cụ tiền đánh giá nhãn.
Nếu bạn chưa triển khai công cụ trước đó và bắt đầu mới, thực hiện các bước sau để triển khai toàn bộ giải pháp.
Đổi thư mục hiện tại thành thư mục công cụ nhãn:
| cd amazon-comprehend-semi-structured-documents-annotation-tools |
Xây dựng và triển khai giải pháp:
| make ready-and-deploy-guided |
Tạo tệp tiền-mẫu (pre-manifest file)
Trước khi bạn có thể sử dụng công cụ tiền-đánh dấu, bạn cần chuẩn bị dữ liệu của mình. Các đầu vào chính là tài liệu PDF và tệp tiền-mẫu (pre-manifest file). Tệp tiền-mẫu (pre-manifest file) chứa địa điểm của mỗi tài liệu PDF dưới ‘pdf’ và địa điểm của một tệp JSON chứa các thực thể dự kiến để đánh dấu dưới ‘expected_entities’.
Notebook generate_premanifest_file.ipynb (tạo tệp tiền-mẫu) hướng dẫn cách tạo tệp này. Trong bản demo, tệp tiền-mẫu (pre-manifest file) có dạng như sau:
| [ { ‘pdf’: ‘s3://<bucket>/data_aws_idp_workshop_data/bank_stmt_0.pdf’, ‘expected_entities’: ‘s3://<bucket>/prelabeling-inputs/expected-entities/example-demo/fuzzymatching_version/file_bank_stmt_0.json’ }, … ] |
Mỗi tệp JSON được liệt kê trong tệp tiền-mẫu (dưới ‘expected_entities’) chứa một danh sách các từ điển, mỗi từ điển đại diện cho một thực thể dự kiến. Các từ điển có các khóa sau:
‘expected_texts’ – Một danh sách các chuỗi văn bản có thể phù hợp với thực thể.
‘entity_type’ – Loại thực thể tương ứng.
‘ignore_list’ (tuỳ chọn) – Danh sách từ cần được bỏ qua trong quá trình so khớp. Những tham số này nên được sử dụng để ngăn fuzzy matching từ việc so khớp các kết hợp từ cụ thể mà bạn biết là sai. Điều này có thể hữu ích nếu bạn muốn bỏ qua một số số hoặc địa chỉ email khi xem xét tên.
Ví dụ, expected_entities của PDF được hiển thị trước đó có dạng như sau:
| [ { ‘expected_texts’: [‘AnyCompany Bank’], ‘entity_type’: ‘bank_name’, ‘ignore_list’: [] }, { ‘expected_texts’: [‘JANE DOE’], ‘entity_type’: ‘customer_name’, ‘ignore_list’: [‘JANE.DOE@example_mail.com’] }, { ‘expected_texts’: [‘003884257406’], ‘entity_type’: ‘checking_number’, ‘ignore_list’: [] }, … ] |
Với tệp tiền-mẫu bạn đã tạo trong bước trước, bắt đầu chạy công cụ tiền-đánh giá. Để biết thêm chi tiết, tham khảo notebook start_step_functions.ipynb.
Để bắt đầu công cụ tiền-đánh giá, cung cấp một sự kiện với các khóa sau:
- Premanifest – Ánh xạ mỗi tài liệu PDF với tệp expected_entities của nó. Điều này nên chứa thông tin về bucket Amazon Simple Storage Service (Amazon S3) (dưới ‘bucket’) và khóa (dưới ‘key’) của tệp.
- Prefix – Được sử dụng để tạo execution_id, đặt tên thư mục S3 cho lưu trữ đầu ra và tên công việc đánh giá SageMaker Ground Truth.
- entity_types – Hiển thị trong giao diện người dán nhãn. Điều này nên bao gồm tất cả các loại thực thể trong các tệp thực thể dự kiến.
- work_team_name (tuỳ chọn) – Được sử dụng để tạo công việc đánh giá SageMaker Ground Truth. Nó tương ứng với đội làm việc riêng sẽ được sử dụng. Nếu không được cung cấp, chỉ có một tệp tài liệu sẽ được tạo ra thay vì công việc đánh giá SageMaker Ground Truth. Bạn có thể sử dụng tệp tài liệu để tạo công việc đánh giá SageMaker Ground Truth sau này. Lưu ý rằng tại thời điểm viết này, bạn không thể cung cấp một đội làm việc bên ngoài khi tạo công việc đánh giá từ notebook. Tuy nhiên, bạn có thể nhân bản công việc đã tạo và gán nó cho một đội làm việc bên ngoài trên giao diện SageMaker Ground Truth console.
- comprehend_parameters (tuỳ chọn) – Các tham số để huấn luyện trực tiếp một mô hình nhận diện thực thể tùy chỉnh Amazon Comprehend. Nếu bỏ qua, bước này sẽ được bỏ qua.
Để bắt đầu máy trạng thái, chạy mã Python sau:
| import boto3 stepfunctions_client = boto3.client(‘stepfunctions’) response = stepfunctions_client.start_execution( stateMachineArn=fuzzymatching_prelabeling_step_functions_arn, input=json.dumps(<event-dict>) ) |
Điều này sẽ bắt đầu một chạy của máy trạng thái. Bạn có thể theo dõi tiến độ của máy trạng thái trên bảng điều khiển Step Functions. Biểu đồ sau mô tả luồng làm việc của máy trạng thái.
Khi máy trạng thái hoàn tất, thực hiện các bước sau:
- Kiểm tra các đầu ra sau được lưu trong thư mục prelabeling/ của bucket S3 comprehend-semi-structured-docs:
- Các tệp chú thích cá nhân cho mỗi trang của các tài liệu (một cho mỗi trang mỗi tài liệu) trong temp_individual_manifests/
- Một bảng điều khiển cho công việc đánh dấu SageMaker Ground Truth trong consolidated_manifest/consolidated_manifest.manifest
- Một bảng điều khiển có thể được sử dụng để đào tạo một mô hình Amazon Comprehend tùy chỉnh trong consolidated_manifest/consolidated_manifest_comprehend.manifest
- Trên bảng điều khiển SageMaker, mở công việc đánh dấu SageMaker Ground Truth đã được tạo để xem xét các chú thích
- Kiểm tra và thử nghiệm mô hình Amazon Comprehend tùy chỉnh đã được đào tạo
Như đã đề cập trước đó, công cụ chỉ có thể tạo công việc đánh dấu SageMaker Ground Truth cho các đội ngũ làm việc riêng tư. Để outsourcing công việc đánh dấu của con người, bạn có thể sao chép công việc đánh dấu trên bảng điều khiển SageMaker Ground Truth và gán bất kỳ đội ngũ làm việc nào vào công việc mới.
Dọn dẹp
Để tránh phát sinh các chi phí bổ sung, hãy xóa các tài nguyên bạn đã tạo và xóa ngăn xếp bạn triển khai bằng lệnh sau:
| make delete |
Kết luận
Công cụ trước nhãn cung cấp một cách mạnh mẽ cho các công ty sử dụng dữ liệu bảng hiện tại để tăng tốc quá trình đào tạo các mô hình nhận dạng thực thể tùy chỉnh trong Amazon Comprehend. Bằng cách tự động trước nhãn cho các tài liệu PDF, nó giảm đáng kể công sức thủ công yêu cầu trong quá trình đánh dấu.
Công cụ có hai phiên bản: so khớp mờ và dựa trên Amazon Comprehend, mang lại tính linh hoạt về cách tạo ra các nhãn ban đầu. Sau khi tài liệu được trước nhãn, bạn có thể nhanh chóng xem xét chúng trong một công việc đánh dấu SageMaker Ground Truth hoặc thậm chí bỏ qua bước xem xét và đào tạo trực tiếp một mô hình tùy chỉnh của Amazon Comprehend.
Công cụ trước nhãn cho phép bạn nhanh chóng khám phá giá trị của dữ liệu thực thể lịch sử và sử dụng nó để tạo ra các mô hình tùy chỉnh phù hợp với lĩnh vực cụ thể của bạn. Bằng cách tăng tốc cho phần thường là công việc đòi hỏi nhiều nhất trong quá trình này, nó làm cho việc nhận diện thực thể tùy chỉnh với Amazon Comprehend trở nên dễ tiếp cận hơn bao giờ hết.
Để biết thêm thông tin về cách đánh dấu tài liệu PDF bằng cách sử dụng một công việc đánh dấu SageMaker Ground Truth, xem Custom document annotation for extracting named entities in documents using Amazon Comprehend và Use Amazon SageMaker Ground Truth to Label Data.
Giới thiệu về tác giả
Oskar Schnaack là Nhà khoa học ứng dụng tại Trung tâm đổi mới AI sáng tạo. Anh ấy đam mê nghiên cứu khoa học đằng sau công nghệ máy học để giúp khách hàng có thể tiếp cận nó. Ngoài công việc, Oskar thích đạp xe và theo kịp các xu hướng về lý thuyết thông tin.
Romain Besombes là Kiến trúc sư Deep Learning tại Trung tâm Đổi mới Sáng tạo AI. Anh ấy đam mê xây dựng các kiến trúc đổi mới để giải quyết các vấn đề kinh doanh của khách hàng bằng học máy.