Cách tìm kiếm nhúng cho trận đấu gần nhất

Cach Tim Kiem Nhung Cho Tran Dau Gan Nhat



Tìm kiếm các phần nhúng cho phù hợp nhất có nghĩa là tìm những phần nhúng có ý nghĩa gần nhất với nhau. Các phần nhúng là biểu diễn véc-tơ của một câu được cung cấp cho các mô hình ngôn ngữ làm đầu vào cho các tác vụ cụ thể. Chúng ta sẽ thảo luận ở đây phương pháp và các kỹ thuật có thể được sử dụng để tìm các phần nhúng tương tự.

cú pháp

Có rất nhiều kỹ thuật và công cụ mà chúng ta có thể sử dụng để tìm ra sự khác biệt giữa các phần nhúng dựa trên sự khác biệt về mức độ giống nhau của chúng. Sau đây là các phương thức và cú pháp liên quan của chúng mà chúng tôi sẽ sử dụng để tìm các điểm tương đồng khi nhúng.







Từ những điểm được đề cập đó, chúng tôi biết các mô hình mà chúng tôi có thể sử dụng để tìm sự tương đồng phù hợp cho các nhúng. Bây giờ, chúng ta sẽ học cách sử dụng từng mô hình này và triển khai các ví dụ riêng lẻ trên từng mô hình này.



Ví dụ 1: Nhúng kết quả khớp gần nhất thông qua Word Embeddings

Trước khi chúng tôi triển khai các từ nhúng cho đối sánh tương tự, chúng ta cần biết về các từ nhúng. Nhúng từ là quá trình chuyển đổi văn bản thành dạng vectơ (giá trị số) vì hệ thống của chúng tôi chỉ hiểu đầu vào ở dạng chữ số.



Có một số cách khác để thực hiện tác vụ này, bao gồm mã hóa một lần nóng, nhưng chúng tôi sẽ sử dụng từ nhúng. Bằng cách này, quá trình nhúng đang được học bởi các mô hình của mạng thần kinh (ví dụ: word2vec hoặc Glove) từ các văn bản. Các từ được ánh xạ tới không gian vectơ chiều cao hơn. Tất cả những từ tương tự trong ngữ cảnh được ánh xạ tới các điểm gần nhất. Bằng cách này, các phần nhúng có thể nắm bắt được các mối quan hệ và sự tương tự giữa các từ khác nhau trong văn bản.





Hãy tạo một từ nhúng cho một câu. Để tạo từ nhúng, Python cung cấp khung “gensim”. Gensim là gói thư viện cho phép sử dụng mô hình “word2vec” giúp tạo các phần nhúng. Để triển khai nhúng, trước tiên chúng tôi đảm bảo cài đặt gensim trên trình biên dịch Python của chúng tôi. Sau đó, từ gensim, chúng tôi nhập mô hình “word2vec”.

Mô hình “word2vec” là một loại thuật toán chỉ sử dụng hai đối số đầu vào trong đó đối số đầu tiên yêu cầu văn bản hoặc câu mà chúng tôi muốn nhúng và đối số thứ hai chỉ định số lượng tối thiểu chỉ định số lần tối thiểu mà một từ được yêu cầu để xuất hiện hoặc được nhìn thấy.



Sau khi nhập mô hình “word2vec”, chúng tôi chỉ định “văn bản”. Khi chúng tôi chỉ định văn bản, chúng tôi sẽ huấn luyện mô hình “word2vec” này bằng cách chuyển nó cùng với văn bản và đặt số lượng tối thiểu bằng “1”. Bây giờ, chúng tôi gọi đây là mô hình “word2vec.wv.most_similar('consume')” đã được đào tạo và cung cấp từ có phần nhúng gần nhất mà chúng tôi muốn kiểm tra trong ví dụ này là “consum”. Để kiểm tra kết quả nhúng, chúng tôi in đầu ra từ mô hình:

từ như một quốc gia người mẫu nhập khẩu Word2Vec
chữ = [ [ 'con thỏ' , 'có' , 'răng' ] ]
người mẫu = Word2Vec ( chữ , min_count = 1 )
similar_embedding = người mẫu. wv . most_similar ( 'con thỏ' )
in ( similar_embedding )

Trong ví dụ này, chúng tôi tạo từ nhúng cho văn bản bằng cách sử dụng mô hình “word2vec” để kiểm tra sự giống nhau của chúng về mặt ngữ cảnh và có thể thấy điều đó trong đoạn mã được đính kèm trước đó, là đầu ra của mã kiểm tra các từ nhúng tương tự của từ “tiêu thụ”.

Ví dụ 2: Nhúng Tìm kiếm Gần nhất thông qua Mô hình BERT

Có tồn tại các mô hình xử lý ngôn ngữ tự nhiên được đào tạo trước có thể được sử dụng để tính toán sự giống nhau giữa các văn bản vì chúng có thể hiểu và tìm hiểu mối quan hệ theo ngữ cảnh giữa các từ. BERT là một trong những mô hình ngôn ngữ được đào tạo trước từ “sentence_transformers” và nó có thể tìm hiểu những điểm tương đồng giữa các văn bản. Để tìm sự giống nhau giữa các văn bản, trước tiên chúng ta phải tinh chỉnh mô hình này cho phù hợp với văn bản hoặc câu.

Khi điều này được thực hiện, chúng ta có thể sử dụng mô hình này để tìm hiểu các phần nhúng. Sau đó, chúng ta có thể tính toán độ tương tự giữa các văn bản bằng cách sử dụng hàm “độ tương tự cosine”. Chúng tôi triển khai ví dụ này trên nền tảng Python trực tuyến là “google colab”. Để tinh chỉnh mô hình, chúng tôi tải mô hình (BERT). Với mục đích đó, trước tiên chúng tôi cài đặt và nhập “SentenceTransformers”. Sau đó, chúng tôi tải mô hình từ mô hình được đào tạo trước của nó bằng công cụ Chuyển đổi câu. Để tải mô hình, chúng tôi gọi cùng nhau là SentenceTransformer và mô hình BERT là “$SentenceTransformer('bert-base-nli-mean-tokens')” trong đó chúng tôi chỉ định tên của mô hình BERT được đào tạo trước trong tham số đầu vào và sau đó chúng tôi lưu cái này trong biến “BERTmodel”.

Sau khi chúng tôi tải xong mô hình này, bây giờ chúng tôi chỉ định bốn văn bản, mỗi văn bản bao gồm một câu để kiểm tra sự giống nhau giữa chúng. Ví dụ: khi chúng tôi chỉ định các văn bản, bây giờ chúng tôi tạo các phần nhúng cho văn bản này. Chúng tôi tạo riêng các phần nhúng cho từng văn bản bằng cách sử dụng chức năng “mã hóa”.

Chúng tôi gọi hàm mã hóa với tiền tố của mô hình BERT là “BERTmodel.encoding()”. Sau đó, chúng tôi chuyển “văn bản” và “độ dài tối đa” mà chúng tôi đã cố định bằng “512” cho các tham số của hàm này. Chúng tôi gọi chức năng mã hóa này trên mỗi văn bản và nó chuyển đổi văn bản thành các phần nhúng.

Bây giờ, chúng tôi sử dụng từng phép nhúng này và thay thế chúng vào hàm tương tự cosine để tìm sự giống nhau giữa các phép nhúng này. Hàm tương tự cosine được sử dụng rộng rãi trong tất cả các tác vụ xử lý ngôn ngữ tự nhiên để phân loại và phân cụm văn bản/tài liệu.

Để tìm sự giống nhau giữa các câu nhúng này, ta sử dụng hàm cosin đồng dạng và thay thế giá trị của câu nhúng có chỉ số “0” và câu nhúng còn lại có chỉ số “1 đến 3” để kiểm tra sự giống nhau của câu 0 với 3 câu nhúng còn lại. câu. Các giá trị đầu ra của hàm tương tự cosine nằm trong khoảng từ -1 đến 1. Ở đây, 1 cho biết rằng hai cách nhúng giống nhau và -1 nói rằng hai cách nhúng không giống nhau. Chúng tôi đã đính kèm đoạn mã hiển thị phương pháp triển khai hàm tương tự cosine bằng cách sử dụng bốn câu nhúng mà chúng tôi vừa tạo trong các ví dụ bằng cách sử dụng mô hình BERT được đào tạo trước.

!pip cài đặt câu_transformers
câu = [
'bốn năm trước, cái chai thậm chí còn đầy và .',
'Con chó mơ thấy mình trốn thoát khỏi lồng và trên đường phố nơi nó nhìn thấy bạn mình đang đi.',
'Người này đã chơi với sứa trong nhiều tháng .',
'Anh ấy tìm thấy một con ốc sên trong tủ quần áo của mình.']
từ câu_transformers nhập CâuTransformer
Bertmodel = CâuTransformer('bert-base-nli-mean-tokens')
câu_embeddings = Bertmodel.encode(câu)
câu_embeddings.shape
từ sklearn.metrics.pairwise nhập cosine_similarity
# tính toán=ing đồng dạng cosine cho câu 0:
cosine_similarity(
[sentence_embeddings[0]],
câu_embeddings[1:])

Mảng trong đầu ra hiển thị giá trị tương tự của “câu 0” với ba câu còn lại, ví dụ: 1, 2 và 3.

Phần kết luận

Chúng tôi đã thảo luận về các phương pháp để tìm ra sự giống nhau giữa các phần nhúng. Chúng tôi đã trình bày hai ví dụ khác nhau để tìm kiếm kết quả phù hợp nhất của phần nhúng bằng cách sử dụng mô hình gensim “word2vec” và mô hình BERT được đào tạo trước.