Hướng dẫn python text similarity library - thư viện tương tự văn bản 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.

Nội phân Chính showShow

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

Nội phân chính

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

Demo:

Hướng dẫn python text similarity library - thư viện tương tự văn bản python

Nội phân chính


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

  • Các chủ đề được đề cập trong bài viết này
  • Văn bản nhúng
  • Từ nhúng
  • Mã hóa một lần và túi từ & nbsp;
  • Tần suất tài liệu có tần số thời hạn (TF-IDF)
  • Khi nào nên sử dụng những gì? & NBSP;
  • Cần nhúng theo ngữ cảnh
  • Câu nhúng
  • Transformers câu
  • Bộ mã hóa câu phổ quát

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

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

Nội phân chính

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

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


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

Văn bản tương tự - Jaccard, Euclide, cosin

  • 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


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

    Chỉ số Jaccard

    Độ 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 đề.: The bottle is empty.

    Đơ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.: There is nothing in the bottle.

    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ự.

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

    Chai trống.1+3+3 = 7

    Không có gì trong chai.0.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:

    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:


    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.

    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ử 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:

    Đ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;

    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


    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.

    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

    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:TfidfVectorizer` class for creating TF-IDF vectors from the text. 


    Word2Vec

    Để 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 countvectorizer
    • Skip-Gram 

    Tần suất tài liệu có tần số thời hạn (TF-IDF) 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. 

    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.

    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;

    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;

    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;

    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;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.


    Túi từ liên tục (CBow)

    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;

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

    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

    Word2VEC được sử dụng trong Spacy để tạo các vectơ từ, một điều quan trọng cần lưu ý: Để tạo các vectơ từ, chúng ta cần các mô hình Spacy lớn hơn. Ví dụ, ví dụ, mô hình tiếng Anh trung bình 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 các vectơ, chúng ta sẽ đi với một mô hình kết thúc trong 'md' hoặc 'v0'. Thông tin chi tiết về điều này có thể được tìm thấy ở đây.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.

    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.


    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. 

    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

    Word2VEC được sử dụng trong Spacy để tạo các vectơ từ, một điều quan trọng cần lưu ý: Để tạo các vectơ từ, chúng ta cần các mô hình Spacy lớn hơn. Ví dụ, ví dụ, mô hình tiếng Anh trung bình 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 các vectơ, chúng ta sẽ đi với một mô hình kết thúc trong 'md' hoặc 'v0'. Thông tin chi tiết về điều này có thể được tìm thấy ở đây.v5module.  We’ll also need to download a pre-trained model to create the embeddings

    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.

    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.


    Sentence Embeddings

    So far we have discussed how word embeddings represent the meaning of the words in a text document. But sometimes we need to go a step further and encode the meaning of the whole sentence to readily understand the context in which the words are used. This sentence representation is important for many downstream tasks. It enables us to understand the meaning of the sentence without calculating the individual embeddings of the words. It also allows us to make comparisons on the sentence level. 

    Using simple mathematical manipulation, it is possible to adapt sentence embeddings for tasks such as semantic search, clustering, intent detection, paraphrase detection. In addition to that, cross-lingual sentence embedding models can be used for parallel text mining or translation pair detection. For example, the TAUS Data Marketplace uses a data cleaning technique that uses sentence embeddings to compute the semantic similarity between parallel segments of text in different languages to assess translation quality.  

    A straightforward approach for creating sentence embeddings is to use a word embedding model to encode all words of the given sentence and take the average of all the word vectors. While this provides a strong baseline, it falls short of capturing information related to word order and other aspects of overall sentence semantics.


    Doc2Vec

    The Doc2Vec model (or Paragraph Vector) extends the idea of the Word2Vec algorithm. The algorithm follows the assumption that a word’s meaning is given by the words that appear close by. Similar to Word2Vec, Doc2Vec has two variants. 

    Distributed Memory Model(DM)

    Each word and sentence of the training corpus are one-hot encoded and stored in matrices D and W, respectively. The training process involves passing a sliding window over the sentence, trying to predict the next word based on the previous words and the sentence vector (or Paragraph Matrix in the figure above). This prediction of the next word is done by concatenating the sentence and word vectors and passing the result into a softmax layer. The sentence vectors change with sentences, while the word vectors remain the same. Both are updated during training. 

    The inference process also involves the same sliding window approach. The difference is that all the vectors of the models are fixed except the sentence vector. After all the predictions of the next word are computed for a sentence, the sentence embedding is the resultant sentence vector.

    Distributed Bag-Of-Words (DBOW) Model

    The DBOW model ignores the word order and has a simpler architecture. Each sentence in the training corpus is converted into a one-hot representation. During training, a random sentence is selected from the corpus, and from the sentence, a random number of words. The model tries to predict these words using only the sentence ID, and the sentence vector is updated(Paragraph ID and Paragraph Matrix in the figure).

    During inference, a new sentence ID is trained with random words from the sentence. The sentence vector is updated in each step, and the resulting sentence vector is the embedding for that sentence.


    What Variant To Use?

    The DM model takes into account the word order, the DBOW model doesn’t. Also, the DBOW model doesn’t use word vectors so the semantics of the words are not preserved. As a result, it’s harder for it to detect similarities between words. And because of its simpler architecture, the DBOW model requires more training to obtain accurate vectors. The main drawback of the DM model is the time and the resources needed to generate an embedding, which is higher than with the DBOW model.

    What approach produces better Sentence Embeddings? In the original paper, the authors state that the DM model is “consistently better than” DBOW. However, later studies showed that the DBOW approach is better for most tasks. For that reason, the implementation in the v6 of Doc2Vec uses the DBOW approach as the default algorithm. 

    Implementation

    Install Gensim,  get the “v7” dataset to train the Doc2Vec model.

    Tag the text data, then use it to build the model vocabulary and train the model.

    Use the model to get the sentence embeddings of the headlines and calculate the cosine similarity between them.


    Sentence Transformers

    Much like ELMo, there are a few bidirectional LSTM based sentence encoders (InferSent, etc) but LSTMs have certain problems. Firstly, they use a hidden vector to represent the memory at the current state of the input. But for long input sequences such as sentences, a single vector isn't enough to provide all the information needed to predict the next state correctly. This bottleneck of the size of the hidden vector makes LSTM based methods more susceptible to mistakes, as in practice it can only hold information from a limited number of steps back. The Attention mechanism in transformers doesn’t have this bottleneck issue as it has access to all the previous hidden states for making predictions. 

    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;

    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.


    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.

    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


    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.