Nhúng trăn

Trong bài viết này, bạn sẽ tìm hiểu về các số liệu tương tự khác nhau và kỹ thuật nhúng văn bản. Cuối cùng, bạn sẽ nắm rõ thời điểm sử dụng các chỉ số và kỹ thuật nhúng nào. Bạn cũng sẽ chơi với chúng để giúp thiết lập trực giác chung

Nội dung chính Hiển thị

  • Các chủ đề được đề cập trong bài viết này
  • Hiểu sự tương đồng
  • văn bản tương tự
  • Các biện pháp tương tự
  • Chỉ số Jaccard
  • Khoảng cách Euclide
  • Cosin tương tự
  • Số liệu nào để sử dụng?
  • Nhúng văn bản
  • Nhúng từ
  • Mã hóa một chiều & Túi từ
  • Thuật ngữ tần số-nghịch đảo tần số tài liệu (TF-IDF)
  • Khi nào nên sử dụng cái gì?
  • Cần nhúng theo ngữ cảnh
  • Nhúng câu
  • Máy biến áp câu
  • Bộ mã hóa câu phổ quát
  • Nhúng gì để sử dụng?

Nội dung chính

  • Các chủ đề được đề cập trong bài viết này
  • Hiểu sự tương đồng
  • văn bản tương tự
  • Các biện pháp tương tự
  • Chỉ số Jaccard
  • Khoảng cách Euclide
  • Cosin tương tự
  • Số liệu nào để sử dụng?
  • Nhúng văn bản
  • Nhúng từ
  • Mã hóa một chiều & Túi từ
  • Thuật ngữ tần số-nghịch đảo tần số tài liệu (TF-IDF)
  • Khi nào nên sử dụng cái gì?
  • Cần nhúng theo ngữ cảnh
  • Nhúng câu
  • Máy biến áp câu
  • Bộ mã hóa câu phổ quát
  • Nhúng gì để sử dụng?

Thử nghiệm

Nhúng trăn

Bạn có thể tìm thấy ứng dụng web đi kèm tại đây


Các chủ đề được đề cập trong bài viết này

  • Độ tương tự của văn bản - Jaccard, Euclidean, Cosine
  • Nhúng văn bản
  • Nhúng từ
  • Mã hóa một chiều & Túi từ
  • Thuật ngữ tần số-nghịch đảo tần số tài liệu (TF-IDF)
  • Word2Vec
  • Nhúng từ các mô hình ngôn ngữ
  • Nhúng câu. Doc2Vec
  • Máy biến áp câu
  • Bộ mã hóa câu phổ quát

Hiểu sự tương đồng

Độ tương tự là khoảng cách giữa hai vectơ trong đó kích thước vectơ biểu thị các tính năng của hai đối tượng. Nói một cách đơn giản, độ tương tự là thước đo mức độ khác nhau hoặc giống nhau của hai đối tượng dữ liệu. Nếu khoảng cách nhỏ, các đối tượng được cho là có mức độ giống nhau cao và ngược lại. Nói chung, nó được đo trong khoảng từ 0 đến 1. Điểm này nằm trong khoảng [0, 1] được gọi là điểm tương đồng

Một điểm quan trọng cần nhớ về sự giống nhau là nó mang tính chủ quan và phụ thuộc nhiều vào miền và trường hợp sử dụng. Ví dụ, hai chiếc xe có thể giống nhau chỉ vì những điều đơn giản như công ty sản xuất, màu sắc, mức giá hoặc các chi tiết kỹ thuật như loại nhiên liệu, chiều dài cơ sở, mã lực. Vì vậy, cần đặc biệt cẩn thận khi tính toán độ tương tự giữa các tính năng không liên quan đến nhau hoặc không liên quan đến vấn đề

Đơn giản như ý tưởng, sự giống nhau tạo thành nền tảng của nhiều kỹ thuật học máy. Chẳng hạn, bộ phân loại K-Nearest-Neighbors sử dụng tính tương tự để phân loại các đối tượng dữ liệu mới, tương tự, phân cụm K-means sử dụng các biện pháp tương tự để gán điểm dữ liệu cho các cụm thích hợp. Ngay cả các công cụ đề xuất cũng sử dụng các phương pháp lọc cộng tác dựa trên vùng lân cận sử dụng tính tương tự để xác định hàng xóm của người dùng

Việc sử dụng các biện pháp tương tự khá nổi bật trong lĩnh vực xử lý ngôn ngữ tự nhiên. Mọi thứ từ hệ thống truy xuất thông tin, công cụ tìm kiếm, phát hiện cụm từ diễn giải đến phân loại văn bản, liên kết tài liệu tự động, sửa lỗi chính tả đều sử dụng các biện pháp tương tự


văn bản tương tự

Hãy nhìn vào những câu sau đây

  • cái chai rỗng
  • Không có gì trong chai
  • Là con người, chúng ta thấy rất rõ ràng rằng hai câu có nghĩa giống nhau mặc dù được viết ở các định dạng hoàn toàn khác nhau. Nhưng làm thế nào để chúng ta làm cho một thuật toán đi đến kết luận tương tự?

    Phần đầu tiên của vấn đề này là đại diện. Làm thế nào để chúng tôi đại diện cho văn bản? . Khi chúng tôi có biểu diễn văn bản, chúng tôi có thể tính điểm tương tự bằng cách sử dụng một trong nhiều thước đo khoảng cách/độ tương tự

    Hãy đi sâu hơn vào hai khía cạnh của vấn đề, bắt đầu với các biện pháp tương tự


    Các biện pháp tương tự

    Chỉ số Jaccard

    Chỉ số Jaccard, còn được gọi là hệ số tương tự Jaccard, coi các đối tượng dữ liệu giống như các bộ. Nó được định nghĩa là độ lớn của giao của hai tập hợp chia cho độ lớn của hợp. Hãy tiếp tục với ví dụ trước của chúng tôi

    Sentence 1. cái chai rỗng

    Sentence 2. Không có gì trong chai

    Để tính toán độ tương tự bằng cách sử dụng độ tương tự Jaccard, trước tiên chúng tôi sẽ thực hiện chuẩn hóa văn bản để giảm các từ gốc/bổ đề của chúng. Không có từ nào để giảm trong trường hợp các câu ví dụ của chúng tôi, vì vậy chúng tôi có thể chuyển sang phần tiếp theo. Vẽ sơ đồ Venn của các câu chúng ta nhận được

    Kích thước giao điểm của hai tập hợp. 3

    Kích thước của sự kết hợp của hai bộ. 1+3+3 = 7

    Sử dụng chỉ số Jaccard, chúng tôi nhận được điểm tương đồng là 3/7 = 0. 42

    Hàm Python cho sự giống nhau của Jaccard

    Kiểm tra chức năng cho các câu ví dụ của chúng tôi


    Khoảng cách Euclide

    Khoảng cách Euclide, hay chuẩn L2, là dạng khoảng cách Minkowski được sử dụng phổ biến nhất. Nói chung, khi mọi người nói về khoảng cách, họ đề cập đến khoảng cách Euclide. Nó sử dụng định lý Pythagoras để tính khoảng cách giữa hai điểm như được chỉ ra trong hình bên dưới

    Khoảng cách d giữa hai vectơ càng lớn thì điểm tương đồng càng thấp và ngược lại.  

    Hãy tính toán sự giống nhau giữa các câu lệnh ví dụ của chúng ta bằng cách sử dụng khoảng cách Euclide

    Để tính toán khoảng cách Euclide, chúng tôi cần các vectơ, vì vậy chúng tôi sẽ sử dụng mô hình Word2Vec có sẵn của spaCy để tạo nhúng văn bản. (Chúng ta sẽ tìm hiểu thêm về điều này sau trong bài viết)

    Được rồi, vậy chúng ta có khoảng cách Euclide là 1. 86, nhưng điều đó có nghĩa là gì? . Khoảng cách có thể thay đổi từ 0 đến vô cùng, chúng ta cần sử dụng một số cách để chuẩn hóa chúng trong phạm vi từ 0 đến 1

    Mặc dù chúng tôi có công thức chuẩn hóa điển hình sử dụng giá trị trung bình và độ lệch chuẩn, nhưng nó rất nhạy cảm với các giá trị ngoại lai. Điều đó có nghĩa là nếu có một vài khoảng cách cực lớn, mọi khoảng cách khác sẽ trở nên nhỏ hơn do hoạt động chuẩn hóa. Vì vậy, lựa chọn tốt nhất ở đây là sử dụng một cái gì đó giống như hằng số Euler như sau


    Cosin tương tự

    Độ tương tự Cosine tính toán độ tương tự của hai vectơ là cosin của góc giữa hai vectơ. Nó xác định xem hai vectơ có chỉ theo cùng một hướng hay không. Vì vậy, nếu góc giữa các vectơ là 0 độ, thì độ tương tự cosin là 1

    Nó được đưa ra như

    Trong đó ||v|| biểu thị độ dài của vectơ v, 𝜃 biểu thị góc giữa vw và '.' biểu thị toán tử tích


    Số liệu nào để sử dụng?

    Tính tương tự của Jaccard chỉ tính đến tập hợp các từ duy nhất cho mỗi tài liệu văn bản. Điều này làm cho nó trở thành ứng cử viên có khả năng đánh giá sự giống nhau của các tài liệu khi sự lặp lại không phải là vấn đề. Một ví dụ điển hình của ứng dụng như vậy là so sánh các mô tả sản phẩm. Chẳng hạn, nếu một thuật ngữ như “HD” hoặc “hiệu suất nhiệt” được sử dụng nhiều lần trong một mô tả và chỉ một lần trong một mô tả khác, thì khoảng cách Euclide và độ tương tự cosine sẽ giảm xuống. Mặt khác, nếu tổng số từ duy nhất không đổi, thì độ tương tự của Jaccard sẽ không thay đổi.  

    Cả chỉ số tương tự Euclide và cosin đều giảm nếu thêm từ 'trống' vào câu ví dụ đầu tiên của chúng tôi

    Điều đó đang được nói, sự giống nhau của Jaccard hiếm khi được sử dụng khi làm việc với dữ liệu văn bản vì nó không hoạt động với nhúng văn bản. Điều này có nghĩa là nó chỉ giới hạn trong việc đánh giá sự giống nhau về mặt từ vựng của văn bản, tôi. e. , các tài liệu tương tự như thế nào ở cấp độ từ

    Đối với các số liệu cosine và Euclidean, yếu tố khác biệt giữa hai yếu tố này là độ tương tự cosine không bị ảnh hưởng bởi độ lớn/độ dài của các vectơ đặc trưng. Giả sử chúng ta đang tạo thuật toán gắn thẻ chủ đề. Nếu một từ (e. g. thượng viện) xảy ra thường xuyên hơn trong tài liệu 1 so với tài liệu 2, chúng ta có thể cho rằng tài liệu 1 liên quan nhiều hơn đến chủ đề Chính trị. Tuy nhiên, cũng có thể xảy ra trường hợp chúng tôi đang làm việc với các bài báo có độ dài khác nhau. Sau đó, từ 'senate' có lẽ xuất hiện nhiều hơn trong tài liệu 1 đơn giản vì nó dài hơn nhiều. Như chúng ta đã thấy trước đó khi từ 'trống rỗng' được lặp lại, độ tương tự cosin ít nhạy cảm hơn với sự khác biệt về độ dài

    Thêm vào đó, khoảng cách Euclide không hoạt động tốt với các vectơ thưa thớt của phần nhúng văn bản. Vì vậy, độ tương tự cosine thường được ưu tiên hơn khoảng cách Euclide khi làm việc với dữ liệu văn bản. Trường hợp sử dụng tương tự văn bản nhạy cảm với độ dài duy nhất xuất hiện trong tâm trí là phát hiện đạo văn.  


    Nhúng văn bản

    Con người có thể dễ dàng hiểu và rút ra ý nghĩa từ các từ, nhưng máy tính không có khả năng ngôn ngữ thần kinh tự nhiên này. Để làm cho các từ có thể hiểu được bằng máy, chúng ta cần mã hóa chúng thành dạng số, để máy tính có thể áp dụng các công thức và phép toán toán học để hiểu chúng. Thậm chí ngoài nhiệm vụ tương tự văn bản, biểu diễn tài liệu dưới dạng số và vectơ là một lĩnh vực nghiên cứu tích cực.  


    Nhúng từ

    Nói một cách đơn giản, nhúng từ là biểu diễn véc-tơ của một từ. Họ nhằm mục đích nắm bắt ý nghĩa, ngữ cảnh và mối quan hệ ngữ nghĩa của các từ. Rất nhiều từ nhúng được tạo ra dựa trên khái niệm về “giả thuyết phân phối” được giới thiệu bởi Zellig Harris. những từ được sử dụng gần nhau thường có cùng một ý nghĩa.  


    Mã hóa một chiều & Túi từ

    Cách đơn giản nhất để biểu thị các từ bằng số là thông qua phương pháp mã hóa một lần nóng. Ý tưởng rất đơn giản, hãy tạo một vectơ có kích thước bằng tổng số từ duy nhất trong kho ngữ liệu. Mỗi từ duy nhất có một tính năng độc đáo và sẽ được biểu thị bằng số 1 với số 0 ở mọi nơi khác.   

    Tài liệu chứa khối văn bản lớn với khả năng lặp lại. Chỉ cần đánh dấu sự hiện diện hoặc vắng mặt của các từ dẫn đến mất thông tin. Trong biểu diễn "túi từ" (còn được gọi là vector hóa số đếm), mỗi từ được biểu diễn bằng số đếm của nó thay vì 1. Bất kể điều đó, cả hai cách tiếp cận này đều tạo ra các vectơ lớn, thưa thớt, hoàn toàn không thu được thông tin quan hệ nào

    Thực hiện

    Mô-đun scikit-learning thực hiện phương pháp này, hãy sử dụng nó để tính toán độ giống nhau của các tiêu đề tin tức sau

    Để tạo ra kết quả tốt hơn, hãy tạo một hàm tạo bản đồ nhiệt về điểm tương đồng

    Bây giờ chúng ta đã có dữ liệu và hàm trợ giúp, chúng ta có thể kiểm tra countvectorizer


    Thuật ngữ tần số-nghịch đảo tần số tài liệu (TF-IDF)

    Các vectơ TF-IDF là phần mở rộng của mô hình mã hóa một lần nóng. Thay vì xem xét tần suất của các từ trong một tài liệu, tần suất của các từ trong toàn bộ văn bản được tính đến. Ý tưởng lớn là những từ xuất hiện nhiều ở khắp mọi nơi mang rất ít ý nghĩa hoặc tầm quan trọng. Chẳng hạn, những từ tầm thường như “and”, “or”, “is” không mang nhiều ý nghĩa như danh từ và danh từ riêng ít xuất hiện hơn

    Về mặt toán học, tần suất thuật ngữ (TF) là số lần một từ xuất hiện trong tài liệu chia cho tổng số từ trong tài liệu. Và Nghịch đảo Tần suất Tài liệu (IDF) = log(N/n) trong đó N là tổng số tài liệu và n là số tài liệu mà một thuật ngữ đã xuất hiện trong. Giá trị TF-IDF cho một từ là tích của tần suất thuật ngữ và tần suất tài liệu nghịch đảo.  

    Mặc dù các vectơ TF-IDF mang lại một cải tiến nhỏ so với vectơ đếm đơn giản, nhưng chúng vẫn có số chiều rất cao và không nắm bắt được các mối quan hệ ngữ nghĩa.  

    Thực hiện

    Scikit-learning cũng cung cấp một lớp `TfidfVectorizer` để tạo các vectơ TF-IDF từ văn bản.  


    Word2Vec

    Word2Vec là một phương pháp dự đoán để hình thành từ nhúng. Không giống như các phương thức trước đây cần được “đào tạo” trên kho dữ liệu đang hoạt động, Word2Vec là mạng nơ-ron hai lớp được đào tạo trước. It takes as input the text corpus and outputs a set of feature vectors that represent words in that corpus. Nó sử dụng một trong hai phương pháp dựa trên mạng thần kinh.  

    • Túi từ liên tục (CBOW)
    • Bỏ qua Gram

    Túi từ liên tục lấy ngữ cảnh của từng từ làm đầu vào và cố gắng dự đoán từ tương ứng với ngữ cảnh. Ở đây, bối cảnh chỉ đơn giản có nghĩa là các từ xung quanh.  

    Ví dụ, xem xét lời chào. "Chúc một ngày tốt lành"

    Giả sử chúng ta sử dụng từ 'nice' làm đầu vào cho mạng thần kinh và chúng ta đang cố gắng dự đoán từ 'day'. Chúng tôi sẽ sử dụng mã hóa one-hot của từ đầu vào 'nice', sau đó đo lường và tối ưu hóa lỗi đầu ra của từ mục tiêu 'day'. Trong quá trình cố gắng dự đoán từ mục tiêu, mạng nông này học biểu diễn véc-tơ của nó

    Giống như cách mô hình này sử dụng một từ ngữ cảnh để dự đoán mục tiêu, nó có thể được mở rộng để sử dụng nhiều từ ngữ cảnh để làm điều tương tự

    So CBOW generates word representations based on the context words, but there’s another way to do the same. Chúng ta có thể sử dụng từ mục tiêu, tôi. e. , từ chúng tôi muốn tạo đại diện cho, để dự đoán ngữ cảnh

    Đó là những gì Skip-gram làm. Trong quá trình dự đoán các từ ngữ cảnh, mô hình Skip-gram học biểu diễn véc-tơ của từ mục tiêu. đại diện được tạo ra bằng cách sử dụng các từ ngữ cảnh


    Khi nào nên sử dụng cái gì?

    Theo trực giác, tác vụ CBOW đơn giản hơn nhiều vì nó sử dụng nhiều đầu vào để dự đoán một mục tiêu trong khi Skip-gram dựa vào đầu vào một từ. Điều này được phản ánh trong thời gian hội tụ nhanh hơn của CBOW, trong bài báo gốc, các tác giả đã viết rằng CBOW mất hàng giờ để đào tạo, trong khi Skip-gram mất 3 ngày

    Tiếp tục trên cùng một dòng suy nghĩ, CBOW học tốt hơn các mối quan hệ cú pháp giữa các từ trong khi Skip-gram hiểu các mối quan hệ ngữ nghĩa tốt hơn. Về mặt thực tế, điều này có nghĩa là đối với một từ như 'chó', CBOW sẽ trả về các từ tương tự về mặt hình thái như số nhiều như 'chó'. Mặt khác, Skip-gram sẽ xem xét các từ khác nhau về mặt hình thái nhưng giống nhau về mặt ngữ nghĩa như 'mèo' hoặc 'hamster'

    Và cuối cùng, vì Skip-gram dựa vào đầu vào một từ nên ít nhạy cảm hơn với việc khớp quá nhiều từ thường dùng. Bởi vì ngay cả khi một số từ xuất hiện nhiều lần hơn trong quá trình đào tạo, họ đã xem xét từng từ một. CBOW có xu hướng khớp các từ phổ biến vì chúng có thể xuất hiện nhiều lần trong cùng một nhóm từ ngữ cảnh. This characteristic also allows Skip-gram to be more efficient in terms amount of documents required to achieve good performance.  

    TLDR. Skip-gram hoạt động tốt hơn khi làm việc với một lượng nhỏ dữ liệu, tập trung vào sự giống nhau về ngữ nghĩa của các từ và thể hiện tốt các từ hiếm. Mặt khác, CBOW nhanh hơn, tập trung nhiều hơn vào sự giống nhau về hình thái của từ và cần nhiều dữ liệu hơn để đạt được hiệu suất tương tự

    Thực hiện

    Word2Vec được sử dụng trong spaCy để tạo vectơ từ, một điều quan trọng cần lưu ý. Để tạo các vectơ từ, chúng tôi cần các mô hình spaCy lớn hơn. Ví dụ: Mô hình tiếng Anh vừa hoặc lớn, nhưng không phải là mô hình nhỏ. Vì vậy, nếu chúng ta muốn sử dụng vectơ, chúng ta sẽ sử dụng mô hình kết thúc bằng 'md' hoặc 'v0'. Thông tin chi tiết về điều này có thể được tìm thấy ở đây

    Cài đặt spaCy và tải xuống một trong những mô hình lớn hơn

    Tạo một đối tượng đường dẫn và sử dụng nó để tạo các tiêu đề trong Tài liệu

    Chúng ta có thể tra cứu vectơ nhúng cho `v1` hoặc các mã thông báo riêng lẻ bằng cách sử dụng thuộc tính `v2`. Hãy xem phần nhúng tiêu đề trông như thế nào

    Kết quả là một vectơ 300 chiều của tiêu đề đầu tiên. Chúng ta có thể sử dụng các vectơ này để tính toán độ tương tự cosin của các tiêu đề. đối tượng spaCy `v3` có phương thức `v4y` riêng để tính toán độ tương tự cosin


    Cần nhúng theo ngữ cảnh

    Cho đến nay, tất cả các cách nhúng văn bản mà chúng tôi đã đề cập đều tìm hiểu về cách nhúng từ toàn cầu. Trước tiên, họ xây dựng vốn từ vựng gồm tất cả các từ duy nhất trong tài liệu, sau đó học các cách diễn đạt tương tự cho các từ thường xuyên xuất hiện cùng nhau. Vấn đề với cách biểu thị từ như vậy là nghĩa theo ngữ cảnh của từ bị bỏ qua. Trong thực tế, cách tiếp cận biểu thị từ này không đề cập đến tính đa nghĩa hoặc sự cùng tồn tại của nhiều nghĩa có thể có đối với một từ hoặc cụm từ nhất định. Chẳng hạn, hãy xem xét tuyên bố sau

    “Sau khi lấy trộm vàng từ hầm ngân hàng, tên cướp ngân hàng được nhìn thấy đang câu cá trên bờ sông. ”

    Các kỹ thuật nhúng từ truyền thống sẽ chỉ học một biểu diễn cho từ 'ngân hàng'. Nhưng 'ngân hàng' có hai ý nghĩa khác nhau trong câu và cần có hai cách thể hiện khác nhau trong không gian nhúng. Các phương pháp nhúng theo ngữ cảnh như BERT và ELMo học ngữ nghĩa ở cấp độ trình tự bằng cách xem xét trình tự của tất cả các từ trong tài liệu. Kết quả là, các kỹ thuật này học các cách biểu diễn khác nhau cho các từ đa nghĩa như 'ngân hàng' trong ví dụ trên, dựa trên ngữ cảnh của chúng.  


    ELMo

    ELMo tính toán các phần nhúng từ các trạng thái bên trong của Mô hình ngôn ngữ hai chiều (LM) hai lớp, do đó có tên là “ELMo”. Nhúng từ các mô hình ngôn ngữ. Nó gán cho mỗi từ một biểu diễn là chức năng của toàn bộ ngữ liệu câu. Các nhúng ELMo là một chức năng của tất cả các lớp bên trong của biLM. Các lớp khác nhau mã hóa các loại thông tin khác nhau cho cùng một từ. Ví dụ: các cấp thấp hơn hoạt động tốt để gắn thẻ Part-Of-Speech, trong khi các cấp cao hơn xử lý tốt hơn các từ đa nghĩa.  

    Kết hợp các kích hoạt của tất cả các lớp cho phép ELMo kết hợp nhiều loại biểu diễn từ hoạt động tốt hơn trong các tác vụ xuôi dòng. Thêm vào đó, ELMo hoạt động ở cấp độ ký tự thay vì từ ngữ. Điều này cho phép nó tận dụng lợi thế của các đơn vị từ phụ để rút ra các nhúng có ý nghĩa cho cả những từ nằm ngoài từ vựng.  

    This means that the way ELMo is used is quite different compared to traditional embedding methods. Thay vì có một từ điển các từ và các vectơ tương ứng của chúng, ELMo tạo ra các nhúng một cách nhanh chóng

    Thực hiện

    Có nhiều cách triển khai ELMo, chúng tôi sẽ thử mô-đun v5. Chúng tôi cũng sẽ cần tải xuống một mô hình được đào tạo trước để tạo các phần nhúng

    Bây giờ, hãy tạo một phiên bản ElmoModel và tải mô hình được đào tạo trước mà chúng tôi vừa tải xuống

    Tạo văn bản nhúng

    Chiều thứ hai của Tensor là 92 tương ứng với 92 ký tự trong câu. Để có được các phần nhúng từ, chúng ta có thể tính trung bình các phần nhúng của các ký tự cho mỗi từ. Mối quan tâm chính của chúng tôi là khả năng trích xuất thông tin theo ngữ cảnh của ELMo, vì vậy hãy chỉ tập trung vào ba trường hợp của từ “ngân hàng”

    Bây giờ chúng ta có thể đánh giá mức độ giống nhau của ba trường hợp


    Nhúng câu

    Cho đến giờ chúng ta đã thảo luận về cách nhúng từ thể hiện nghĩa của từ trong tài liệu văn bản. Nhưng đôi khi chúng ta cần tiến thêm một bước và mã hóa ý nghĩa của cả câu để dễ hiểu ngữ cảnh mà các từ được sử dụng. Biểu diễn câu này rất quan trọng đối với nhiều nhiệm vụ xuôi dòng. Nó cho phép chúng tôi hiểu ý nghĩa của câu mà không cần tính toán các từ nhúng riêng lẻ. Nó cũng cho phép chúng ta so sánh ở cấp độ câu.  

    Sử dụng thao tác toán học đơn giản, có thể điều chỉnh việc nhúng câu cho các tác vụ như tìm kiếm ngữ nghĩa, phân cụm, phát hiện ý định, phát hiện cụm từ. Ngoài ra, các mô hình nhúng câu đa ngôn ngữ có thể được sử dụng để khai thác văn bản song song hoặc phát hiện cặp dịch. Ví dụ: Thị trường dữ liệu TAUS sử dụng kỹ thuật làm sạch dữ liệu sử dụng nhúng câu để tính toán sự giống nhau về ngữ nghĩa giữa các đoạn văn bản song song ở các ngôn ngữ khác nhau để đánh giá chất lượng bản dịch.   

    Một cách tiếp cận đơn giản để tạo nhúng câu là sử dụng mô hình nhúng từ để mã hóa tất cả các từ của câu đã cho và lấy giá trị trung bình của tất cả các vectơ từ. Mặc dù điều này cung cấp một cơ sở vững chắc, nhưng nó không nắm bắt được thông tin liên quan đến trật tự từ và các khía cạnh khác của ngữ nghĩa câu tổng thể


    Doc2Vec

    Mô hình Doc2Vec (hoặc Paragraph Vector) mở rộng ý tưởng của thuật toán Word2Vec. Thuật toán tuân theo giả định rằng nghĩa của một từ được đưa ra bởi các từ xuất hiện gần đó. Tương tự như Word2Vec, Doc2Vec có hai biến thể.  

    Mô hình bộ nhớ phân tán (DM)

    Mỗi từ và câu của kho dữ liệu đào tạo được mã hóa một lần và được lưu trữ trong ma trận D và W, tương ứng. Quá trình đào tạo liên quan đến việc chuyển một cửa sổ trượt qua câu, cố gắng dự đoán từ tiếp theo dựa trên các từ trước đó và vectơ câu (hoặc Ma trận đoạn văn trong hình trên). Dự đoán từ tiếp theo này được thực hiện bằng cách nối các vectơ câu và từ và chuyển kết quả vào một lớp softmax. Các vectơ câu thay đổi theo câu, trong khi các vectơ từ vẫn giữ nguyên. Cả hai đều được cập nhật trong quá trình đào tạo.  

    Quá trình suy luận cũng liên quan đến cách tiếp cận cửa sổ trượt tương tự. Sự khác biệt là tất cả các vectơ của các mô hình đều cố định ngoại trừ vectơ câu. Sau khi tất cả các dự đoán của từ tiếp theo được tính toán cho một câu, câu nhúng là vectơ câu kết quả

    Mô hình túi từ phân phối (DBOW)

    Mô hình DBOW bỏ qua trật tự từ và có kiến ​​trúc đơn giản hơn. Mỗi câu trong kho dữ liệu đào tạo được chuyển đổi thành một biểu diễn one-hot. Trong quá trình đào tạo, một câu ngẫu nhiên được chọn từ kho ngữ liệu và từ câu đó, một số từ ngẫu nhiên. Mô hình cố gắng dự đoán những từ này chỉ sử dụng ID câu và vectơ câu được cập nhật (ID đoạn và Ma trận đoạn trong hình)

    Trong quá trình suy luận, ID câu mới được đào tạo với các từ ngẫu nhiên từ câu. Vectơ câu được cập nhật trong từng bước và vectơ câu kết quả là phần nhúng cho câu đó


    Biến thể nào để sử dụng?

    Mô hình DM tính đến thứ tự từ, mô hình DBOW không. Ngoài ra, mô hình DBOW không sử dụng vectơ từ nên ngữ nghĩa của từ không được bảo toàn. Do đó, khó phát hiện ra sự giống nhau giữa các từ hơn. Và do kiến ​​trúc đơn giản hơn, mô hình DBOW yêu cầu đào tạo nhiều hơn để có được các vectơ chính xác. Hạn chế chính của mô hình DM là thời gian và tài nguyên cần thiết để tạo nhúng, cao hơn so với mô hình DBOW

    Cách tiếp cận nào tạo ra Nhúng câu tốt hơn? . Tuy nhiên, các nghiên cứu sau đó cho thấy phương pháp DBOW tốt hơn cho hầu hết các nhiệm vụ. Vì lý do đó, việc triển khai trong v6 của Doc2Vec sử dụng phương pháp DBOW làm thuật toán mặc định.  

    Thực hiện

    Cài đặt Gensim, lấy tập dữ liệu “v7” để huấn luyện mô hình Doc2Vec

    Gắn thẻ dữ liệu văn bản, sau đó sử dụng nó để xây dựng từ vựng mô hình và đào tạo mô hình

    Sử dụng mô hình để lấy các phần nhúng câu của các tiêu đề và tính toán độ tương tự cosin giữa chúng


    Máy biến áp câu

    Giống như ELMo, có một số bộ mã hóa câu dựa trên LSTM hai chiều (InferSent, v.v.) nhưng LSTM có một số vấn đề nhất định. Đầu tiên, họ sử dụng một vector ẩn để biểu diễn bộ nhớ ở trạng thái hiện tại của đầu vào. Nhưng đối với các chuỗi đầu vào dài chẳng hạn như câu, một vectơ đơn lẻ không đủ để cung cấp tất cả thông tin cần thiết để dự đoán chính xác trạng thái tiếp theo. Nút cổ chai về kích thước của vectơ ẩn này làm cho các phương pháp dựa trên LSTM dễ mắc lỗi hơn, vì trong thực tế, nó chỉ có thể chứa thông tin từ một số bước quay lại hạn chế. Cơ chế Chú ý trong máy biến áp không có vấn đề thắt cổ chai này vì nó có quyền truy cập vào tất cả các trạng thái ẩn trước đó để đưa ra dự đoán.  

    Một vấn đề khác với LSTM là thời gian đào tạo. Vì đầu ra luôn phụ thuộc vào đầu vào trước đó, quá trình đào tạo được thực hiện tuần tự. Điều này làm cho việc song song hóa trở nên khó khăn hơn và dẫn đến thời gian đào tạo lâu hơn. Kiến trúc Transformer song song hóa việc sử dụng cơ chế Chú ý trong mạng thần kinh cho phép giảm thời gian đào tạo.  

    Các mô hình hiểu ngôn ngữ chung dựa trên máy biến áp hoạt động tốt hơn nhiều so với tất cả các mô hình tiền nhiệm của chúng. Khi BERT được giới thiệu, nó đã đạt được kết quả tiên tiến nhất trong một loạt các nhiệm vụ như trả lời câu hỏi hoặc suy luận ngôn ngữ với những điều chỉnh nhỏ trong kiến ​​trúc của nó. Điều đó đang được nói, nó có một chi phí tính toán lớn. Ví dụ: tìm cặp câu giống nhau nhất trong bộ sưu tập 10.000 yêu cầu khoảng 50 triệu phép tính suy luận (~65 giờ). Cấu trúc của BERT làm cho nó không phù hợp cho việc tìm kiếm sự tương đồng về ngữ nghĩa cũng như cho các tác vụ không được giám sát như phân cụm.  

    Câu-BERT (SBERT) là một mạng BERT đã được sửa đổi, sử dụng các cấu trúc mạng xiêm và bộ ba để rút ra các nhúng câu có ý nghĩa về mặt ngữ nghĩa. Điều này làm giảm nỗ lực tìm cặp giống nhất từ ​​65 giờ với BERT / RoBERTa xuống còn khoảng 5 giây với SBERT, trong khi vẫn duy trì độ chính xác từ BERT.  

    Thực hiện

    Chúng tôi sẽ thử các mô hình dựa trên RoBERTa được triển khai trong mô-đun v8

    Tải xuống mô hình 'v9'

    Sử dụng nó để tính toán các phần nhúng tiêu đề và độ tương tự theo cặp của chúng


    Bộ mã hóa câu phổ quát

    Bộ mã hóa câu phổ biến(USE) của Google tận dụng khung học tập đa tác vụ một-nhiều để học cách nhúng câu phổ biến bằng cách chuyển đổi giữa một số tác vụ. 6 nhiệm vụ, dự đoán bỏ qua suy nghĩ của câu tiếp theo/trước đó, dịch máy thần kinh, phân tích cú pháp bầu cử và suy luận ngôn ngữ tự nhiên, chia sẻ cùng một câu nhúng. Điều này làm giảm đáng kể thời gian đào tạo trong khi vẫn duy trì hiệu suất trên nhiều nhiệm vụ chuyển giao

    Một phiên bản của mô hình Bộ mã hóa câu phổ quát sử dụng bộ mã hóa mạng trung bình sâu (DAN), trong khi một phiên bản khác sử dụng Máy biến áp

    Kiến trúc Transformer phức tạp hơn hoạt động tốt hơn mô hình DAN đơn giản hơn trên nhiều tác vụ phân loại tình cảm và tương đồng. Thời gian tính toán cho phiên bản Transformer tăng đáng kể khi độ dài câu tăng lên. Mặt khác, thời gian tính toán cho mô hình DAN gần như không đổi khi độ dài câu tăng lên

    Thực hiện


    Nhúng gì để sử dụng?

    Theo nguyên tắc chung, các kỹ thuật nhúng truyền thống như Word2Vec và Doc2Vec mang lại kết quả tốt khi tác vụ chỉ yêu cầu ý nghĩa chung của văn bản. Điều này được phản ánh trong hiệu quả vượt trội của họ đối với các kỹ thuật học sâu hiện đại đối với các nhiệm vụ như độ tương đồng của văn bản ngữ nghĩa hoặc phát hiện cụm từ diễn giải. Mặt khác, khi nhiệm vụ cần một cái gì đó cụ thể hơn chứ không chỉ là ý nghĩa toàn cầu, ví dụ như phân tích tình cảm hoặc ghi nhãn trình tự, các phương thức theo ngữ cảnh phức tạp hơn sẽ hoạt động tốt hơn

    Vì vậy, hãy luôn bắt đầu với một phương pháp đơn giản và nhanh chóng làm cơ sở trước khi chuyển sang các phương pháp phức tạp hơn nếu cần