Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

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à các kỹ thuật nhúng văn bản. Cuối cùng, bạn sẽ nắm bắt được khi nào nên sử dụng các số liệu và kỹ thuật nhúng. Bạn cũng sẽ chơi xung quanh với họ để giúp thiết lập trực giác chung.

Demo:

Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

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


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

  • Văn bản tương tự - Jaccard, Euclide, Cosin
  • Văn bản nhúng
  • Từ nhúng
  • Mã hóa một lần và các từ
  • Tần suất tài liệu có tần số thời hạn (TF-IDF)
  • Word2VEC
  • Nhúng từ các mô hình ngôn ngữ
  • Câu: DOC2VEC
  • Transformers câu
  • Bộ mã hóa câu phổ quát

Hiểu được 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, sự tương đồng là thước đo mức độ khác nhau hoặc giống nhau 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 độ tương tự cao và ngược lại. Nói chung, nó được đo trong phạm vi 0 đến 1. Điểm này trong phạm vi [0, 1] được gọi là điểm tương tự.

Một điểm quan trọng cần nhớ về sự tương đồng là nó 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ể tương tự vì những thứ đơn giản như công ty sản xuất, màu sắc, phạm vi 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 chăm sóc đặc biệt 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 có thể, sự tương đồng là cơ sở của nhiều kỹ thuật học máy. Chẳng hạn, trình phân loại lân cận K-Newest sử dụng độ 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-MEAN sử dụng các biện pháp tương tự để gán các điểm dữ liệu cho các cụm phù hợp. Ngay cả các công cụ khuyến nghị cũng sử dụng các phương pháp lọc hợp tác dựa trên khu phố, sử dụng sự tương đồng để xác định các hàng xóm của người dùng.

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


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

Hãy xem các câu sau:

  • Chai trống.
  • Không có gì trong chai.
  • Là con người, chúng ta 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 ta đại diện cho văn bản? Chúng tôi có thể để lại văn bản như nó là hoặc chuyển đổi nó thành các vectơ tính năng bằng cách sử dụng một kỹ thuật nhúng văn bản phù hợp. Khi chúng ta có biểu diễn văn bản, chúng ta có thể tính điểm tương tự bằng cách sử dụng một trong nhiều biện pháp khoảng cách/tương tự.

    Hãy cùng đ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 đồng

    Chỉ số Jaccard

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

    Câu 1: Chai trống.: The bottle is empty.

    Câu 2: Không có gì trong chai.: There is nothing in the bottle.

    Để tính toán sự tương đồng bằng cách sử dụng sự tương đồng của 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ừ rễ/bổ đề của họ. 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 tôi nhận được:

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Kích thước của giao điểm của hai bộ: 33

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

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

    Hàm Python cho sự tương đồng 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, hoặc định mức L2, là dạng được sử dụng phổ biến nhất của khoảng cách & nbsp; Minkowski. 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 dưới đây:

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Khoảng cách d lớn hơn giữa hai vectơ, điểm tương tự càng thấp và ngược lại & nbsp;

    Hãy để tính toán sự tương đồng giữa các câu lệnh ví dụ của chúng tôi 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 xây dựng của Spacy, để tạo văn bản nhúng. (Chúng tôi sẽ tìm hiểu thêm về điều này sau trong bài viết)

    Được rồi, vì vậy chúng ta có khoảng cách Euclide là 1,86, nhưng điều đó có nghĩa là gì? Hãy xem, vấn đề với việc sử dụng khoảng cách là nó khó có ý nghĩa nếu không có gì để so sánh. 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 để bình thường hóa chúng đến 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 của chúng tôi sử dụng độ lệch trung bình và độ lệch chuẩn, nhưng nó rất nhạy cảm với các ngoại lệ. Đ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 hậu quả của hoạt động bình thường hóa. Vì vậy, tùy chọn tốt nhất ở đây là sử dụng một cái gì đó như hằng số Euler như sau:

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python


    Sự tương đồng cosine

    Độ tương tự cosine tính toán sự giống nhau 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.

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

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

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    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ử sản phẩm DOT.||v|| represents the length of the vector v, 𝜃 denotes the angle between v and w, and ‘.’ denotes the dot product operator.


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

    Sự tương đồng 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à một vấn đề. Một ví dụ điển hình của một ứng dụng như vậy là so sánh các mô tả sản phẩm. Ví dụ, nếu một thuật ngữ như HD 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 ở một mô tả khác, khoảng cách Euclide và sự tương tự cosin sẽ giảm. Mặt khác, nếu tổng số từ duy nhất vẫn giữ nguyên, độ tương tự của jaccard sẽ không thay đổi. & NBSP;

    Cả hai số liệu tương tự Euclide và cosine đều giảm nếu thêm ’trống rỗng được thêm vào câu ví dụ đầu tiên của chúng tôi:

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Điều đó đang được nói, độ tương tự 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 các bản nhúng văn bản. Điều này có nghĩa là giới hạn trong việc đánh giá sự tương đồng từ vựng của văn bản, tức là, các tài liệu tương tự như thế nào ở cấp độ từ.

    Theo như các số liệu cosin và Euclide có liên quan, hệ số khác biệt giữa hai là sự tương đồng cosin không bị ảnh hưởng bởi độ lớn/chiều dài của các vectơ tính năng. Hãy nói rằng chúng tôi đang tạo một thuật toán gắn thẻ chủ đề. Nếu một từ (ví dụ: Thượng viện) xảy ra thường xuyên hơn trong tài liệu 1 so với trong tài liệu 2, & nbsp; Chúng ta có thể giả định rằng tài liệu 1 có liên quan nhiều hơn đến chủ đề chính trị. Tuy nhiên, nó cũng có thể là 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ừ ‘Thượng viện có thể xảy ra nhiều hơn trong tài liệu 1 đơn giản vì nó dài hơn. Như chúng ta đã thấy trước đó khi từ ’trống rỗng được lặp lại, độ tương tự cosine í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 văn bản nhúng. Vì vậy, độ tương tự cosine thường được ưa thích hơn khoảng cách Euclide khi làm việc với dữ liệu văn bản. & NBSP; Trường hợp sử dụng tương tự văn bản có độ dài duy nhất xuất hiện trong tâm trí là phát hiện đạo văn. & NBSP;So cosine similarity is generally preferred over Euclidean distance when working with text data.  The only length-sensitive text similarity use case that comes to mind is plagiarism detection. 


    Văn bản nhúng

    Con người có thể dễ dàng hiểu và có được ý 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, chúng ta cần mã hóa chúng thành một dạng số, vì vậy máy tính có thể áp dụng các công thức và hoạt động toán học để có ý nghĩa về chúng. Thậm chí vượt ra ngoài nhiệm vụ tương tự văn bản, đại diện cho các 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. & NBSP;


    Từ nhúng

    Nói một cách đơn giản, nhúng từ là biểu diễn vectơ của một từ. Họ nhằm mục đích nắm bắt ý nghĩa, bối 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ủa người Hồi giáo được giới thiệu bởi Zellig Harris: các từ được sử dụng gần nhau thường có cùng nghĩa. & NBSP;


    Mã hóa một lần và túi từ & nbsp;

    Cách đơn giản nhất để biểu diễn số từ là thông qua phương thức mã hóa một lần nóng. Ý tưởng rất đơn giản, tạo một vectơ với kích thước của tổng số từ duy nhất trong Corpora. & NBSP; Mỗi từ duy nhất có một tính năng duy nhất và sẽ được biểu diễn bằng 1 với 0 ở mọi nơi khác. & NBSP; & nbsp;

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Các tài liệu chứa những khối văn bản lớn với khả năng lặp lại. Chỉ đơn giản là đá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. & NBSP; Trong biểu diễn "Túi từ" (còn được gọi là vector hóa đếm), mỗi từ được thể hiện bằng số lượng 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 mà nắm bắt hoàn toàn không có thông tin quan hệ.

    Thực hiện

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

    Để tạo ra đầu ra tốt hơn, hãy để tạo ra một chức năng tạo ra một bản đồ nhiệt của điểm số tương tự.

    Bây giờ chúng tôi có chức năng dữ liệu và người trợ giúp của mình, chúng tôi có thể kiểm tra countvectorizercountvectorizer

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python


    Tần suất tài liệu có tần số thời hạn (TF-IDF)

    Các vectơ TF-IDF là một 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ừ trên toàn bộ kho văn bản được tính đến. Ý tưởng lớn là những từ xảy ra rất nhiều ở khắp mọi nơi mang rất ít ý nghĩa hoặc ý nghĩa. Chẳng hạn, những từ tầm thường như và và, hay, hay, là một người khác mang ý nghĩa như danh từ và danh từ thích hợp xảy ra ít thường xuyên hơn.

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Về mặt toán học, tần số thuật ngữ (TF) là số lần một từ xuất hiện trong một tài liệu chia cho tổng số từ trong tài liệu. Và tần số tài liệu nghịch đảo (IDF) = log(N/n) trong đó n là tổng số tài liệu và n là số lượng tài liệu mà một thuật ngữ đã xuất hiện. Giá trị TF-idf cho một từ là sản phẩm của tần số thuật ngữ và tần số tài liệu nghịch đảo. & Nbsp;(IDF) = log(N/n) where N is the total number of documents and n is the number of documents a term has appeared in. The TF-IDF value for a word is the product of the term frequency and the inverse document frequency. 

    Mặc dù các vectơ TF-IDF cung cấp một sự cải thiện nhỏ về vectơ số đơn giản, nhưng chúng vẫn có tính chiều rất cao và không thể nắm bắt các mối quan hệ ngữ nghĩa. & NBSP;

    Thực hiện

    Scikit-Learn cũng cung cấp một lớp `____ 8` để tạo các vectơ TF-idf từ văn bản. & NBSP;TfidfVectorizer` class for creating TF-IDF vectors from the text. 

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python


    Word2Vec

    Word2VEC là một phương pháp dự đoán để hình thành các từ nhúng từ. Không giống như các phương pháp trước đó cần được đào tạo trên mạng trên cơ quan làm việc, Word2VEC là một mạng lưới thần kinh hai lớp được đào tạo trước. Nó lấy làm đầu vào văn bản và đầu ra một tập hợp các vectơ tính năng đại diện cho các từ trong kho văn bản đó. & NBSP; Nó sử dụng một trong hai phương pháp dựa trên mạng thần kinh: & NBSP;

    • Túi từ liên tục (CBow)
    • Skip-Gram 

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Túi từ liên tục lấy bối cảnh của mỗi từ là đầu vào và cố gắng dự đoán từ tương ứng với ngữ cảnh. Ở đây, bối cảnh đơn giản có nghĩa là các từ xung quanh. & Nbsp; takes the context of each word as the input and tries to predict the word corresponding to the context. Here, context simply means the surrounding words. 

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Ví dụ, hãy xem xét lời chào: “Chúc một ngày tốt lành”

    Hãy nói rằng chúng tôi sử dụng từ ’tốt đẹp làm đầu vào cho mạng lưới thần kinh và chúng tôi đang cố gắng dự đoán từ’ ngày. Chúng tôi sẽ sử dụng mã hóa một lần của từ đầu vào ‘Nice, sau đó đo và tối ưu hóa lỗi đầu ra của từ đích‘ ngày. & NBSP; Trong quá trình cố gắng dự đoán từ mục tiêu, mạng nông này tìm hiểu biểu diễn vectơ của nó.

    Giống như cách mô hình này sử dụng một từ ngữ cảnh duy nhất để 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 như vậy:

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Vì vậy, CBow tạo ra các biểu diễn từ dựa trên các từ ngữ cảnh, nhưng có một cách khác để làm điều tương tự. Chúng ta có thể sử dụng từ đích, tức là, từ chúng ta muốn tạo biểu diễn cho, để dự đoán ngữ cảnh.

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Đó 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 tìm hiểu biểu diễn vectơ của từ mục tiêu. Các biểu diễn được tạo ra bằng cách sử dụng các từ ngữ cảnh.Skip-gram does. In the process of predicting the context words, the Skip-gram model learns the vector representation of the target word. representations are generated using the context words.


    Khi nào nên sử dụng những gì? & NBSP;

    Theo trực giác, tác vụ CBow đơn giản hơn nhiều vì nó đang 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 các đầ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 & nbsp; 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 chuyến tàu suy nghĩ, CBow tốt hơn trong việc học các mối quan hệ cú pháp giữa các từ trong khi Skip-gram tốt hơn trong việc hiểu các mối quan hệ ngữ nghĩa. Về mặt thực tế, điều này có nghĩa là với một từ như ‘chó, CBow sẽ trả lại những từ tương 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 như về mặt ngữ nghĩa như ‘Cat, hay‘ Hamster.

    Và cuối cùng, vì Skip-Gram dựa vào đầu vào một từ, nó ít nhạy cảm hơn với các từ thường xuyên quá mức. 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 một lần. CBow có xu hướng quá mức các từ thường xuyên vì chúng có thể xuất hiện nhiều lần trong cùng một tập hợp các từ ngữ cảnh. Đặc điểm này cũng cho phép Skip-gram hiệu quả hơn về số lượng tài liệu cần thiết để đạt được hiệu suất tốt. & NBSP;

    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ự tương đồng về ngữ nghĩa của các từ và đại diện cho các từ hiếm. Mặt khác, CBow nhanh hơn, & nbsp; Tập trung nhiều hơn vào sự tương đồng về hình thái của các từ và cần nhiều dữ liệu hơn để đạt được hiệu suất tương tự.: Skip-gram works better when working with a small amount of data, focuses on semantic similarity of words, and represents rare words well. On the other hand, CBOW is faster,  focuses more on the morphological similarity of words, and needs more data to achieve similar performance.

    Thực hiện

    Scikit-Learn cũng cung cấp một lớp `____ 8` để tạo các vectơ TF-idf từ văn bản. & NBSP;md' or 'v0'. More details about this can be found here.

    Cài đặt Spacy và tải xuống một trong các mô hình lớn hơn:

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

    Chúng ta có thể tra cứu vectơ nhúng cho các mã thông báo `____ 11` hoặc cá nhân bằng cách sử dụng thuộc tính` ____ 12`. Hãy cùng xem các tiêu đề nhúng tiêu đề trông như thế nào.v1` or individual tokens using the `v2` attribute. Let’s see what the headline embeddings look like.

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    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 đề. Spacy `________ 13` Đối tượng có phương pháp` ____ 14y` của riêng họ tính toán độ tương tự cosine.v3` object have their own `v4y` method that calculates the cosine similarity.

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python


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

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

    Sau khi ăn cắp vàng từ kho ngân hàng, tên cướp ngân hàng đã được nhìn thấy câu cá trên bờ sông.

    Các kỹ thuật nhúng từ truyền thống sẽ chỉ tìm hiểu một đại 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 phải có hai đại diệ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 các ngữ nghĩa cấp độ trình tự bằng cách xem xét chuỗi của tất cả các từ trong tài liệu. Do đó, các kỹ thuật này tìm hiểu các biểu diễn khác nhau cho các từ chính trị như ‘Ngân hàng trong ví dụ trên, dựa trên bối cảnh của chúng. & NBSP;


    Elmo

    ELMO tính toán các nhúng từ các trạng thái bên trong của mô hình ngôn ngữ hai chiều hai lớp (LM), do đó, tên là Elm 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à một hàm của toàn bộ câu. ELMO nhúng 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 cho việc gắn thẻ một phần giọng nói, trong khi các cấp cao hơn trong việc xử lý các từ chính trị. & NBSP;Embeddings from Language Models. It assigns each word a representation that is a function of the entire corpus of sentences. ELMo embeddings are a function of all of the internal layers of the biLM. Different layers encode different kinds of information for the same word. For example, the lower levels work well for Part-Of-Speech tagging, while the higher levels are better at dealing with polysemous words. 

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    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 một loạt các biểu diễn từ hoạt động tốt hơn trên các nhiệm vụ hạ nguồn. Thêm vào đó, Elmo làm việc ở cấp độ nhân vật thay vì các từ. Điều này cho phép nó tận dụng các đơn vị từ phụ để rút ra các nhúng có ý nghĩa cho các từ ngoài văn bản. & NBSP;

    Điều này có nghĩa là cách sử dụng Elmo khá khác biệt so với các phương pháp nhúng truyền thống. Thay vì có một từ điển của các từ và các vectơ tương ứng của chúng, Elmo tạo ra việc nhúng khi đang bay.

    Thực hiện

    Có nhiều triển khai của Elmo, chúng tôi sẽ thử ____ 15module. & NBSP; Chúng tôi cũng cần tải xuống một mô hình được đào tạo trước để tạo ra các nhúngv5module.  We’ll also need to download a pre-trained model to create the embeddings

    Bây giờ, hãy tạo một thể hiệ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

    Kích thước thứ hai của tenor là 92 tương ứng với 92 ký tự trong câu. Để có được từ nhúng, chúng ta có thể trung bình các bả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 để tập trung vào ba trường hợp của từ Ngân hàng Ngân hàng:

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

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python


    Câu nhúng

    Cho đến nay chúng tôi đã thảo luận về cách các từ nhúng từ thể hiện ý nghĩa của các từ trong một 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 toàn bộ câu để dễ dàng hiểu được bối cảnh mà các từ được sử dụng. Đại diện câu này rất quan trọng đối với nhiều nhiệm vụ hạ nguồn. Nó cho phép chúng ta hiểu được ý nghĩa của câu mà không tính toán các bản nhúng riêng lẻ của các từ. Nó cũng cho phép chúng tôi so sánh ở cấp độ câu. & NBSP;

    Sử dụng thao tác toán học đơn giản, có thể điều chỉnh các bản 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 diễn giải. Ngoài ra, các mô hình nhúng câu chéo 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 các bản nhúng câu để tính toán sự tương đồng về ngữ nghĩa giữa các phân đoạn song song của văn bản trong các ngôn ngữ khác nhau để đánh giá chất lượng dịch. & NBSP; & NBSP;

    Một cách tiếp cận đơn giản để tạo ra các câu nhúng là sử dụng một mô hình nhúng từ để mã hóa tất cả các từ của câu đã cho và lấy trung bình của tất cả các vectơ từ. Mặc dù điều này cung cấp một đường cơ sở mạnh mẽ, nhưng nó thiếu 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 vectơ đoạn văn) mở rộng ý tưởng về thuật toán Word2VEC. Thuật toán tuân theo giả định rằng một từ có nghĩa là 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ể. & NBSP;

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

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Mỗi từ và câu của tập đoàn đào tạo được mã hóa và lưu trữ một lần nóng trong ma trận D và W, tương ứng. Quá trình đào tạo liên quan đến việc truyề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 trong hình trên). Dự đoán này của từ tiếp theo được thực hiện bằng cách ghép các vectơ từ 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. & NBSP;

    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 được 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, việc nhúng câu là vectơ câu kết quả.

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

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Mô hình DBow bỏ qua thứ tự từ và có kiến ​​trúc đơn giản hơn. Mỗi câu trong tập đoàn đào tạo được chuyển đổi thành một đại diện một lời. Trong quá trình đào tạo, một câu ngẫu nhiên được chọn từ kho văn bản và từ câu, một số từ ngẫu nhiên. Mô hình cố gắng dự đoán các từ này chỉ bằng ID câu và vectơ câu được cập nhật (ID đoạn ID và ma trận đoạn trong hình).

    Trong quá trình suy luận, một 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 mỗi bước và vectơ câu kết quả là nhúng cho câu đó.


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

    Mô hình DM có tính đến thứ tự từ, mô hình DBow không có. Ngoài ra, mô hình DBow không sử dụng các vectơ từ nên ngữ nghĩa của các từ không được bảo tồn. Kết quả là, nó khó hơn để phát hiện sự tương đồng giữa các từ. Và vì 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à các tài nguyên cần thiết để tạo ra một nhúng, cao hơn so với mô hình DBow.

    Cách tiếp cận nào tạo ra sự nhúng câu tốt hơn? Trong bài báo gốc, các tác giả nói rằng mô hình DM là tốt hơn so với DB DBow. Tuy nhiên, các nghiên cứu sau đó cho thấy phương pháp DBow tốt hơn đối với 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. & NBSP;v6 of Doc2Vec uses the DBOW approach as the default algorithm. 

    Thực hiện

    Cài đặt Gensim, & NBSP; Nhận bộ dữ liệu của ____ ____17 để đào tạo mô hình Doc2VEC.v7” dataset to train the Doc2Vec model.

    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 để có được các bản nhúng câu của các tiêu đề và tính toán độ tương tự cosin giữa chúng.

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python


    Transformers câu

    Giống như Elmo, có một vài 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 vectơ ẩn để thể hiệ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 như câu, một vectơ duy nhất không đủ để cung cấp tất cả thông tin cần thiết để dự đoán trạng thái tiếp theo một cách chính xác. Cá chai này có kích thước của vectơ ẩn làm cho các phương pháp dựa trên LSTM dễ bị lỗi hơn, vì trong thực tế, nó chỉ có thể giữ thông tin từ một số bước hạn chế trở lại. Cơ chế chú ý trong Transformers không có vấn đề về nú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. & NBSP;

    Một vấn đề khác với LSTMS là thời gian để đào tạo. Vì đầu ra luôn phụ thuộc vào đầu vào trước đó, việc đào tạo được thực hiện tuần tự. Điều này làm cho song song hóa khó hơn và dẫn đến thời gian đào tạo dài hơn. Kiến trúc máy biến áp song song với việc sử dụng cơ chế chú ý trong mạng lưới thần kinh cho phép thời gian đào tạo thấp hơn. & NBSP;

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    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 tiền thân của họ. Khi Bert được giới thiệu, nó đã đạt được kết quả tiên tiến 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 các tinh 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ụ, việc tìm kiếm một cặp câu tương tự nhất trong bộ sưu tập 10.000 yêu cầu khoảng 50 triệu tính toán suy luận (~ 65 giờ). Cấu trúc của Bert làm cho nó không phù hợp cho tìm kiếm tương tự ngữ nghĩa cũng như các tác vụ không được giám sát như phân cụm. & NBSP;

    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 của Xiêm và Triplet để rút ra các bản 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 kiếm cặp tương tự 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. & NBSP;

    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.v8 module.

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

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

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python


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

    Trình mã hóa câu toàn cầu của Google (sử dụng) tận dụng khung học tập đa tác vụ một-nhiều nhiều để tìm hiểu một câu phổ quát nhúng bằng cách chuyển đổi giữa một số nhiệm vụ. 6 nhiệm vụ, dự đoán bỏ qua của câu tiếp theo/trước, dịch máy thần kinh, phân tích cú pháp khu vực 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 thời gian đào tạo rất nhiều trong khi duy trì hiệu suất trên nhiều nhiệm vụ chuyển nhượng.

    Một phiên bản của mô hình bộ mã hóa câu Universal 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.

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python

    Kiến trúc máy biến áp phức tạp hơn thực hiện tốt hơn mô hình Dan đơn giản hơn trên nhiều nhiệm vụ phân loại tình cảm và tương tự. Thời gian tính toán cho phiên bản biến áp 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 vẫn gần như không đổi khi độ dài câu tăng lên.

    Thực hiện

    Hướng dẫn cosine similarity between embeddings python - sự giống nhau về cosine giữa các nhúng python


    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 tiêu đề nhúng và độ tương tự cặp của chúng.

    Word2VEC có sử dụng tương tự cosine không?

    Word2VEC là một mô hình được sử dụng để thể hiện các từ thành các vectơ.Sau đó, giá trị tương tự có thể được tạo bằng cách sử dụng công thức tương tự cosine của các giá trị vectơ từ được tạo bởi mô hình Word2VEC.the similarity value can be generated using the Cosine Similarity formula of the word vector values produced by the Word2Vec model.

    Tại sao sự tương đồng cosine được sử dụng cho các từ nhúng?

    Tương tự cosine là một phương pháp NLP phổ biến để xấp xỉ mức độ tương tự như hai vectơ từ/câu.Trực giác đằng sau sự tương tự cosin tương đối thẳng về phía trước, chúng tôi chỉ cần sử dụng cosin của góc giữa hai vectơ để định lượng hai tài liệu tương tự như thế nào.to quantify how similar two documents are.

    Sự tương đồng cosine có sử dụng TF IDF không?

    Có, TFIDF chỉ là một trong nhiều cách để tính toán vectơ tính năng (không âm) cho tài liệu văn bản và độ tương tự cosine chỉ là một trong nhiều cách để so sánh các vectơ tính năng cho sự tương đồng.Cosine Similarity is just one of several ways to compare feature vectors for similarity.

    Sự tương đồng cosine trở lại trong Python là gì?

    Độ tương tự cosin đo lường sự giống nhau giữa hai vectơ bằng cách tính toán cosin của góc giữa hai vectơ.measures the similarity between two vectors by calculating the cosine of the angle between the two vectors.