Logo Zephyrnet

Thiết lập dự án tóm tắt văn bản với Người biến hình ôm mặt: Phần 1

Ngày:

Thời Gian OpenAI đã phát hành thế hệ thứ ba của mô hình học máy (ML) chuyên về tạo văn bản vào tháng 2020 năm XNUMX, tôi biết có điều gì đó khác biệt. Mô hình này gây ấn tượng mạnh như chưa từng có ai đi trước nó. Đột nhiên tôi nghe thấy bạn bè và đồng nghiệp, những người có thể quan tâm đến công nghệ nhưng thường không quan tâm nhiều đến những tiến bộ mới nhất trong không gian AI / ML, nói về nó. Ngay cả tờ Guardian cũng viết một bài viết về nó. Hay nói chính xác là kiểu mẫu đã viết bài báo và Guardian đã chỉnh sửa và xuất bản nó. Không thể phủ nhận điều đó - GPT-3 là một người thay đổi cuộc chơi.

Sau khi mô hình được phát hành, mọi người ngay lập tức bắt đầu tìm ra các ứng dụng tiềm năng cho nó. Trong vòng vài tuần, nhiều bản trình diễn ấn tượng đã được tạo ra, có thể tìm thấy trên Trang web GPT-3. Một ứng dụng cụ thể thu hút sự chú ý của tôi là tóm tắt văn bản - khả năng của một máy tính để đọc một văn bản nhất định và tóm tắt nội dung của nó. Đây là một trong những nhiệm vụ khó nhất đối với máy tính vì nó kết hợp hai lĩnh vực trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP): đọc hiểu và tạo văn bản. Đó là lý do tại sao tôi rất ấn tượng với các bản trình diễn GPT-3 để tóm tắt văn bản.

Bạn có thể cho họ thử trên Trang web Hugging Face Spaces. Cái yêu thích của tôi vào lúc này là một ứng dụng tạo tóm tắt các tin bài chỉ với URL của bài báo làm đầu vào.

Trong loạt bài gồm hai phần này, tôi đề xuất một hướng dẫn thực tế cho các tổ chức để bạn có thể đánh giá chất lượng của các mô hình tóm tắt văn bản cho miền của mình.

Tổng quan về hướng dẫn

Nhiều tổ chức mà tôi làm việc (tổ chức từ thiện, công ty, tổ chức phi chính phủ) có lượng văn bản khổng lồ mà họ cần đọc và tóm tắt - báo cáo tài chính hoặc tin bài, bài nghiên cứu khoa học, đơn xin cấp bằng sáng chế, hợp đồng pháp lý, v.v. Đương nhiên, các tổ chức này quan tâm đến việc tự động hóa các nhiệm vụ này bằng công nghệ NLP. Để chứng minh nghệ thuật của những điều có thể, tôi thường sử dụng các bản trình diễn tóm tắt văn bản, hầu như không bao giờ không gây được ấn tượng.

Nhưng bây giờ thì sao?

Thách thức đối với các tổ chức này là họ muốn đánh giá các mô hình tóm tắt văn bản dựa trên tóm tắt cho rất nhiều tài liệu - không phải từng văn bản một. Họ không muốn thuê một sinh viên thực tập có công việc duy nhất là mở đơn đăng ký, dán tài liệu, nhấn Tóm tắt , đợi kết quả đầu ra, đánh giá xem bản tóm tắt có tốt hay không và làm lại tất cả điều đó đối với hàng nghìn tài liệu.

Tôi đã viết hướng dẫn này với quá khứ của mình từ bốn tuần trước - đó là hướng dẫn mà tôi ước gì có được hồi đó khi tôi bắt đầu cuộc hành trình này. Theo nghĩa đó, đối tượng mục tiêu của hướng dẫn này là những người đã quen thuộc với AI / ML và đã sử dụng các mô hình Transformer trước đây, nhưng đang ở giai đoạn đầu của hành trình tóm tắt văn bản và muốn tìm hiểu sâu hơn về nó. Bởi vì nó được viết bởi một “người mới bắt đầu” và dành cho người mới bắt đầu, tôi muốn nhấn mạnh sự thật rằng hướng dẫn này là a hướng dẫn thực hành - không các Hướng dẫn thực hành. Hãy đối xử với nó như thể George EP Box đã nói:

Về mức độ kiến ​​thức kỹ thuật được yêu cầu trong hướng dẫn này: Nó liên quan đến một số mã hóa bằng Python, nhưng hầu hết thời gian chúng tôi chỉ sử dụng mã để gọi API, vì vậy cũng không cần kiến ​​thức mã hóa sâu. Sẽ rất hữu ích nếu bạn làm quen với một số khái niệm nhất định về ML, chẳng hạn như ý nghĩa của nó đối với đào tạo triển khai một mô hình, các khái niệm về đào tạo, xác nhận bộ dữ liệu thử nghiệm, và như thế. Cũng đã thử với Thư viện người máy biến hình trước đây có thể hữu ích, bởi vì chúng tôi sử dụng thư viện này rộng rãi trong suốt hướng dẫn này. Tôi cũng bao gồm các liên kết hữu ích để đọc thêm cho các khái niệm này.

Bởi vì hướng dẫn này được viết bởi người mới bắt đầu, tôi không mong đợi các chuyên gia NLP và các học viên học sâu nâng cao sẽ hiểu được nhiều hướng dẫn này. Ít nhất thì không phải từ góc độ kỹ thuật - tuy nhiên, bạn vẫn có thể thích thú với việc đọc, vì vậy vui lòng đừng rời đi! Nhưng bạn sẽ phải kiên nhẫn đối với sự đơn giản hóa của tôi - Tôi đã cố gắng sống theo quan niệm làm cho mọi thứ trong hướng dẫn này đơn giản nhất có thể, nhưng không đơn giản hơn.

Cấu trúc của hướng dẫn này

Loạt bài này trải dài bốn phần được chia thành hai bài viết, trong đó chúng ta đi qua các giai đoạn khác nhau của một dự án tóm tắt văn bản. Trong bài đăng đầu tiên (phần 1), chúng tôi bắt đầu bằng cách giới thiệu một số liệu cho các nhiệm vụ tóm tắt văn bản - một thước đo hiệu suất cho phép chúng tôi đánh giá xem một bản tóm tắt là tốt hay xấu. Chúng tôi cũng giới thiệu tập dữ liệu mà chúng tôi muốn tóm tắt và tạo đường cơ sở bằng cách sử dụng mô hình không-ML - chúng tôi sử dụng phương pháp heuristic đơn giản để tạo tóm tắt từ một văn bản nhất định. Tạo đường cơ sở này là một bước cực kỳ quan trọng trong bất kỳ dự án ML nào vì nó cho phép chúng tôi định lượng mức độ tiến bộ mà chúng tôi đạt được bằng cách sử dụng AI trong tương lai. Nó cho phép chúng ta trả lời câu hỏi "Có thực sự đáng đầu tư vào công nghệ AI không?"

Trong bài đăng thứ hai, chúng tôi sử dụng một mô hình đã được đào tạo trước để tạo tóm tắt (phần 2). Điều này có thể thực hiện được với một cách tiếp cận hiện đại trong ML được gọi là học chuyển. Đó là một bước hữu ích khác vì về cơ bản chúng tôi lấy một mô hình có sẵn và kiểm tra nó trên tập dữ liệu của mình. Điều này cho phép chúng tôi tạo một đường cơ sở khác, giúp chúng tôi xem điều gì sẽ xảy ra khi chúng tôi thực sự đào tạo mô hình trên tập dữ liệu của mình. Cách tiếp cận được gọi là tóm tắt zero-shot, bởi vì mô hình đã không tiếp xúc với tập dữ liệu của chúng tôi.

Sau đó, đã đến lúc sử dụng một mô hình được đào tạo trước và đào tạo nó trên tập dữ liệu của riêng chúng tôi (phần 3). Đây còn được gọi là tinh chỉnh. Nó cho phép mô hình học hỏi từ các mẫu và đặc điểm riêng của dữ liệu của chúng tôi và từ từ thích ứng với nó. Sau khi chúng tôi đào tạo mô hình, chúng tôi sử dụng nó để tạo tóm tắt (phần 4).

Để tóm tắt:

  • Phần 1:
    • Phần 1: Sử dụng mô hình no-ML để thiết lập đường cơ sở
  • Phần 2:
    • Phần 2: Tạo tóm tắt bằng mô hình zero-shot
    • Phần 3: Đào tạo một mô hình tóm tắt
    • Phần 4: Đánh giá mô hình được đào tạo

Toàn bộ mã cho hướng dẫn này có sẵn trong phần sau Repo GitHub.

Chúng ta sẽ đạt được gì vào cuối hướng dẫn này?

Đến cuối hướng dẫn này, chúng tôi sẽ không có một mô hình tóm tắt văn bản có thể được sử dụng trong sản xuất. Chúng tôi thậm chí sẽ không có tốt mô hình tóm tắt (chèn biểu tượng cảm xúc hét vào đây)!

Thay vào đó, những gì chúng ta sẽ có là điểm khởi đầu cho giai đoạn tiếp theo của dự án, đó là e
giai đoạn thử nghiệm Đây là lúc “khoa học” trong khoa học dữ liệu xuất hiện, bởi vì bây giờ tất cả chỉ là thử nghiệm với các mô hình khác nhau và các cài đặt khác nhau để hiểu liệu một mô hình tóm tắt đủ tốt có thể được đào tạo với dữ liệu đào tạo có sẵn hay không.

Và, để hoàn toàn minh bạch, rất có thể kết luận sẽ là công nghệ chưa chín muồi và dự án sẽ không được triển khai. Và bạn phải chuẩn bị cho các bên liên quan trong kinh doanh của mình cho khả năng đó. Nhưng đó là một chủ đề cho một bài viết khác.

Phần 1: Sử dụng mô hình no-ML để thiết lập đường cơ sở

Đây là phần đầu tiên của hướng dẫn của chúng tôi về thiết lập một dự án tóm tắt văn bản. Trong phần này, chúng tôi thiết lập một đường cơ sở bằng cách sử dụng một mô hình rất đơn giản, mà không thực sự sử dụng ML. Đây là một bước rất quan trọng trong bất kỳ dự án ML nào, bởi vì nó cho phép chúng tôi hiểu ML tăng thêm bao nhiêu giá trị theo thời gian của dự án và liệu nó có đáng để đầu tư vào nó hay không.

Mã cho hướng dẫn có thể được tìm thấy trong phần sau Repo GitHub.

Dữ liệu, dữ liệu, dữ liệu

Mọi dự án ML đều bắt đầu với dữ liệu! Nếu có thể, chúng ta luôn nên sử dụng dữ liệu liên quan đến những gì chúng ta muốn đạt được với một dự án tóm tắt văn bản. Ví dụ, nếu mục tiêu của chúng ta là tóm tắt các đơn xin cấp bằng sáng chế, chúng ta cũng nên sử dụng các đơn xin cấp bằng sáng chế để đào tạo mô hình. Một lưu ý lớn đối với một dự án ML là dữ liệu đào tạo thường cần được gắn nhãn. Trong bối cảnh tóm tắt văn bản, điều đó có nghĩa là chúng ta cần cung cấp văn bản được tóm tắt cũng như phần tóm tắt (nhãn). Chỉ bằng cách cung cấp cả hai, mô hình mới có thể biết được một bản tóm tắt tốt trông như thế nào.

Trong hướng dẫn này, chúng tôi sử dụng tập dữ liệu có sẵn công khai, nhưng các bước và mã vẫn hoàn toàn giống nhau nếu chúng tôi sử dụng tập dữ liệu tùy chỉnh hoặc riêng tư. Và một lần nữa, nếu bạn có mục tiêu cho mô hình tóm tắt văn bản của mình và có dữ liệu tương ứng, hãy sử dụng dữ liệu của bạn để tận dụng tối đa điều này.

Dữ liệu chúng tôi sử dụng là tập dữ liệu arXiv, chứa phần tóm tắt của các bài báo arXiv cũng như tiêu đề của chúng. Đối với mục đích của chúng tôi, chúng tôi sử dụng phần tóm tắt làm văn bản chúng tôi muốn tóm tắt và tiêu đề làm phần tóm tắt tham khảo. Tất cả các bước tải xuống và xử lý trước dữ liệu có sẵn trong phần sau máy tính xách tay. Chúng tôi yêu cầu một Quản lý truy cập và nhận dạng AWS (IAM) vai trò cho phép tải dữ liệu đến và đi Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) để chạy thành công sổ ghi chép này. Tập dữ liệu được phát triển như một phần của bài báo Về việc sử dụng ArXiv làm tập dữ liệu và được cấp phép theo Creative Commons CC0 1.0 Cống hiến trên phạm vi công cộng toàn cầu.

Dữ liệu được chia thành ba bộ dữ liệu: đào tạo, xác thực và dữ liệu thử nghiệm. Nếu bạn muốn sử dụng dữ liệu của riêng mình, hãy đảm bảo trường hợp này cũng xảy ra. Sơ đồ sau minh họa cách chúng tôi sử dụng các bộ dữ liệu khác nhau.

Đương nhiên, một câu hỏi phổ biến ở thời điểm này là: Chúng ta cần bao nhiêu dữ liệu? Như bạn có thể đã đoán được, câu trả lời là: nó phụ thuộc. Nó phụ thuộc vào lĩnh vực chuyên biệt như thế nào (tóm tắt đơn xin cấp bằng sáng chế khá khác với tóm tắt các bài báo), mức độ chính xác của mô hình cần hữu ích, chi phí đào tạo mô hình đó là bao nhiêu, v.v. Chúng ta sẽ quay lại câu hỏi này sau khi chúng ta thực sự đào tạo mô hình, nhưng điểm ngắn của nó là chúng ta phải thử các kích thước tập dữ liệu khác nhau khi chúng ta đang trong giai đoạn thử nghiệm của dự án.

Điều gì tạo nên một mô hình tốt?

Trong nhiều dự án ML, việc đo lường hiệu suất của một mô hình khá đơn giản. Đó là bởi vì thường có rất ít sự mơ hồ xung quanh việc liệu kết quả của mô hình có chính xác hay không. Các nhãn trong tập dữ liệu thường là nhị phân (Đúng / Sai, Có / Không) hoặc phân loại. Trong mọi trường hợp, trong trường hợp này, thật dễ dàng để so sánh đầu ra của mô hình với nhãn và đánh dấu nó là đúng hay sai.

Khi tạo văn bản, điều này trở nên khó khăn hơn. Tóm tắt (nhãn) mà chúng tôi cung cấp trong tập dữ liệu của mình chỉ là một cách để tóm tắt văn bản. Nhưng có nhiều khả năng để tóm tắt một văn bản nhất định. Vì vậy, ngay cả khi mô hình không khớp với nhãn 1: 1 của chúng tôi, kết quả đầu ra vẫn có thể là một bản tóm tắt hợp lệ và hữu ích. Vậy làm cách nào để chúng tôi so sánh bản tóm tắt của mô hình với bản chúng tôi cung cấp? Số liệu được sử dụng thường xuyên nhất trong tóm tắt văn bản để đo chất lượng của một mô hình là Điểm ROUGE. Để hiểu cơ chế của số liệu này, hãy tham khảo Chỉ số Hiệu suất Cuối cùng trong NLP. Tóm lại, điểm ROUGE đo lường sự trùng lặp của n-gam (trình tự liền kề của n các mục) giữa tóm tắt của mô hình (tóm tắt ứng viên) và tóm tắt tham chiếu (nhãn mà chúng tôi cung cấp trong tập dữ liệu của mình). Nhưng, tất nhiên, đây không phải là một biện pháp hoàn hảo. Để hiểu những hạn chế của nó, hãy xem Để ROUGE hay không để ROUGE?

Vì vậy, làm thế nào để chúng tôi tính toán điểm ROUGE? Có khá nhiều gói Python trên mạng để tính toán số liệu này. Để đảm bảo tính nhất quán, chúng ta nên sử dụng cùng một phương pháp trong suốt dự án của mình. Bởi vì chúng tôi sẽ sử dụng tập lệnh đào tạo từ thư viện Transformers thay vì viết kịch bản của riêng mình, chúng tôi có thể xem qua mã nguồn của tập lệnh và sao chép mã tính điểm ROUGE:

from datasets import load_metric
metric = load_metric("rouge") def calc_rouge_scores(candidates, references): result = metric.compute(predictions=candidates, references=references, use_stemmer=True) result = {key: round(value.mid.fmeasure * 100, 1) for key, value in result.items()} return result

Bằng cách sử dụng phương pháp này để tính điểm, chúng tôi đảm bảo rằng chúng tôi luôn so sánh táo với táo trong suốt dự án.

Hàm này tính toán một số điểm ROUGE: rouge1, rouge2, rougeLrougeLsum. "Tổng" trong rougeLsum đề cập đến thực tế là chỉ số này được tính toán trên toàn bộ bản tóm tắt, trong khi rougeL được tính là giá trị trung bình của các câu riêng lẻ. Vì vậy, chúng ta nên sử dụng điểm ROUGE nào cho dự án của mình? Một lần nữa, chúng tôi phải thử các cách tiếp cận khác nhau trong giai đoạn thử nghiệm. Đối với những gì nó đáng giá, giấy ROUGE gốc nói rằng “ROUGE-2 và ROUGE-L hoạt động tốt trong các nhiệm vụ tóm tắt tài liệu đơn lẻ” trong khi “ROUGE-1 và ROUGE-L hoạt động tốt trong việc đánh giá các bản tóm tắt ngắn”.

Tạo đường cơ sở

Tiếp theo, chúng tôi muốn tạo đường cơ sở bằng cách sử dụng một mô hình đơn giản, không có ML. Điều đó nghĩa là gì? Trong lĩnh vực tóm tắt văn bản, nhiều nghiên cứu sử dụng một cách tiếp cận rất đơn giản: họ lấy n các câu của văn bản và khai báo nó là phần tóm tắt ứng viên. Sau đó, họ so sánh tóm tắt của ứng viên với tóm tắt tham khảo và tính điểm ROUGE. Đây là một cách tiếp cận đơn giản nhưng mạnh mẽ mà chúng ta có thể triển khai trong một vài dòng mã (toàn bộ mã cho phần này nằm trong phần sau máy tính xách tay):

import re ref_summaries = list(df_test['summary']) for i in range (3): candidate_summaries = list(df_test['text'].apply(lambda x: ' '.join(re.split(r'(?<=[.:;])s', x)[:i+1]))) print(f"First {i+1} senctences: Scores {calc_rouge_scores(candidate_summaries, ref_summaries)}")

Chúng tôi sử dụng tập dữ liệu thử nghiệm cho việc đánh giá này. Điều này có ý nghĩa vì sau khi chúng tôi đào tạo mô hình, chúng tôi cũng sử dụng cùng một bộ dữ liệu thử nghiệm để đánh giá cuối cùng. Chúng tôi cũng thử các số khác nhau cho n: chúng ta chỉ bắt đầu với câu đầu tiên là phần tóm tắt ứng viên, sau đó là hai câu đầu tiên và cuối cùng là ba câu đầu tiên.

Ảnh chụp màn hình sau đây cho thấy kết quả cho mô hình đầu tiên của chúng tôi.

Điểm ROUGE cao nhất, chỉ với câu đầu tiên là phần tóm tắt của ứng viên. Điều này có nghĩa là việc sử dụng nhiều hơn một câu khiến phần tóm tắt quá dài dòng và dẫn đến điểm thấp hơn. Vì vậy, điều đó có nghĩa là chúng tôi sẽ sử dụng điểm số cho các tóm tắt một câu làm cơ sở của chúng tôi.

Điều quan trọng cần lưu ý là, đối với một cách tiếp cận đơn giản như vậy, những con số này thực sự khá tốt, đặc biệt là đối với rouge1 ghi bàn. Để đặt những con số này vào ngữ cảnh, chúng ta có thể tham khảo Mô hình Pegasus, hiển thị điểm của một mô hình hiện đại cho các bộ dữ liệu khác nhau.

Kết luận và những gì tiếp theo

Trong Phần 1 của loạt bài, chúng tôi đã giới thiệu tập dữ liệu mà chúng tôi sử dụng trong suốt dự án tóm tắt cũng như một số liệu để đánh giá tóm tắt. Sau đó, chúng tôi tạo đường cơ sở sau với một mô hình đơn giản, không có ML.

Trong tạp chí bài tiếp theo, chúng tôi sử dụng mô hình zero-shot - cụ thể là mô hình đã được đào tạo đặc biệt để tóm tắt văn bản trên các bài báo công khai. Tuy nhiên, mô hình này sẽ không được đào tạo trên tập dữ liệu của chúng tôi (do đó có tên là “zero-shot”).

Tôi để nó cho bạn làm bài tập về nhà để đoán xem mô hình zero-shot này sẽ hoạt động như thế nào so với đường cơ sở rất đơn giản của chúng tôi. Mặt khác, nó sẽ là một mô hình phức tạp hơn nhiều (nó thực sự là một mạng thần kinh). Mặt khác, nó chỉ được sử dụng để tóm tắt các bài báo, vì vậy nó có thể gặp khó khăn với các mẫu vốn có của tập dữ liệu arXiv.


Lưu ý

Heiko Hotz là Kiến trúc sư giải pháp cao cấp về AI & Machine Learning và lãnh đạo cộng đồng Xử lý ngôn ngữ tự nhiên (NLP) trong AWS. Trước khi đảm nhiệm vai trò này, ông là Trưởng phòng Khoa học Dữ liệu của Dịch vụ Khách hàng EU của Amazon. Heiko giúp khách hàng của chúng tôi thành công trong hành trình AI / ML của họ trên AWS và đã làm việc với các tổ chức trong nhiều ngành, bao gồm Bảo hiểm, Dịch vụ tài chính, Truyền thông và Giải trí, Chăm sóc sức khỏe, Tiện ích và Sản xuất. Khi rảnh rỗi, Heiko đi du lịch nhiều nhất có thể.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?