Logo Zephyrnet

Công cụ tìm kiếm sử dụng học sâu

Ngày:

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Hướng dẫn từ đầu đến cuối về việc xây dựng hệ thống Truy xuất Thông tin bằng NLP

Công cụ tìm kiếm sử dụng học sâu
                                                                                                                             Nguồn: Naseerali MK

Này mọi người !!

Tôi hy vọng rằng bạn sẽ thích bài viết cuối cùng của tôi nói về Tạo văn bản bằng LSTM, nếu bạn chưa đọc mà vẫn thích bài viết này Link.

Trong bài viết này, chúng tôi sẽ đề cập đến một trường hợp sử dụng rất thú vị nhưng phức tạp của NLP đó là hệ thống truy xuất thông tin. Hệ thống truy xuất thông tin là một ứng dụng được sử dụng rất rộng rãi của NLP.

Trong một hệ thống truy xuất thông tin, chúng ta sẽ có nhiều bộ sưu tập tài liệu khác nhau và chúng ta cần tìm kiếm một tài liệu cụ thể bằng cách chuyển một ý nghĩa ngữ cảnh.

Mục lục

  • Giới thiệu
  • Từ nhúng
  • Triển khai hệ thống IR

Giới thiệu

Google có hàng nghìn tỷ trang web, làm cách nào Google tìm kiếm hiệu quả các trang web có liên quan cho chúng tôi mà không cần lấy URL của trang ?.

Hệ thống IR (truy xuất thông tin) cho phép chúng tôi tìm kiếm tài liệu dựa trên thông tin có ý nghĩa về tài liệu đó một cách hiệu quả.

Như chúng ta biết rằng hai câu có thể có cấu trúc rất khác nhau và các từ khác nhau nhưng chúng có thể có cùng ý nghĩa. Trong NLP, mục tiêu của chúng ta là nắm bắt ý nghĩa của các câu, bằng cách sử dụng các khái niệm NLP khác nhau mà chúng ta sẽ xem chi tiết hơn trong bài viết.

Trong hệ thống IR, chúng tôi sử dụng ý nghĩa ngữ cảnh để tìm kiếm tài liệu.

Báo cáo vấn đề: Thực hiện một hệ thống truy xuất Thông tin sử dụng ý nghĩa ngữ cảnh.

Giải pháp:

Có thể có nhiều cách để thực hiện truy xuất Thông tin. Nhưng cách dễ nhất nhưng rất hiệu quả để làm điều đó là sử dụng tính năng nhúng từ. tính năng nhúng từ sẽ xem xét ngữ cảnh có nghĩa là bất kể cấu trúc câu nào.

Các ứng dụng của hệ thống IR:

  • Truy xuất tài liệu
  • Lấy lại đoạn
  • Công cụ tìm kiếm
  • Câu trả lời câu hỏi

Từ nhúng

Tôi đã viết một bài báo về các kỹ thuật trích xuất tính năng khác nhau bao gồm triển khai nhúng từ, nếu bạn chưa đọc, liên kết là Ở đây.

tính năng nhúng từ có khả năng hiểu ý nghĩa của câu, bất kể cấu trúc từ.

Ví dụ

"tôi yêu anh ấy"Và"tôi thích anh ấy”Sẽ có ý nghĩa gần như tương tự nếu chúng ta sử dụng tính năng nhúng từ

Đây là một kỹ thuật học tính năng tiên đoán trong đó các từ được ánh xạ tới các vectơ bằng cách sử dụng hệ thống phân cấp theo ngữ cảnh của chúng.

Nhúng từ | Công cụ tìm kiếm sử dụng học sâu

nguồn

Như bạn thấy đấy kittenlàm sao được đặt rất chặt chẽ vì chúng có ý nghĩa rất gần gũi.

nhúng từ đã được đào tạo trên hơn 8 tỷ từ sử dụng mạng nơron nông, chúng tôi sẽ sử dụng vectơ nhúng từ được đào tạo trước cho nhiệm vụ của mình.

Triển khai Hệ thống IR

Chúng tôi sẽ triển khai hệ thống truy xuất thông tin bằng python.

Trong khi triển khai hệ thống truy xuất thông tin, chúng tôi cần thực hiện một số bước sau: -

  1. Lấy dữ liệu
  2. Làm sạch dữ liệu
  3. Đang tải word2vec được đào tạo trước
  4. Tìm hiểu ngữ cảnh-ý nghĩa của tài liệu
  5. So sánh truy vấn với tài liệu

1 Lấy tài liệu

chúng tôi đã tạo tập dữ liệu của riêng mình bao gồm 4 tài liệu, để hiểu rõ hơn, chúng tôi sẽ sử dụng một tập dữ liệu nhỏ.

Doc1 = ["" "Lãng phí tài nguyên thiên nhiên là một vấn đề rất nghiêm trọng, vì chúng ta đều biết rằng tài nguyên thiên nhiên là có hạn nhưng chúng ta vẫn không cảm nhận được. Chúng ta sử dụng nó nhiều hơn mức cần thiết, Chính phủ cũng đang khuyến khích mọi người tiết kiệm tài nguyên thiên nhiên" ""] Doc2 = ["" "Máy học ngày nay là một lĩnh vực nghiên cứu rất phổ biến, việc tìm kiếm lại liên tục đang diễn ra, Máy học là tất cả về toán học. Phân tích các patters giải quyết công việc." ""] Doc3 = [ "" "Sách ngày nay đang mất dần đi sức hấp dẫn của nó vì điện thoại và các thiết bị thông minh đã chiếm ưu thế hơn xưa, Sách hiện được in theo cách Kỹ thuật số, Điều này giúp tiết kiệm giấy tờ và cuối cùng tiết kiệm hàng nghìn cây" ""] Doc4 = ["" " Người đứng sau wicket là MS DHONI, tay nhanh sau wicket là một lợi thế lớn cho Ấn Độ, nhưng pant giờ đã mang di sản của DHONI nhưng anh ấy không nhanh như vậy "" "]

ở đây chúng tôi có 4 tài liệu và tập dữ liệu của chúng tôi sẽ là danh sách các tài liệu được phân tách bằng dấu phẩy.

# ------ hợp nhất tất cả các tài liệu ------- data = doc1 + doc2 + doc3 + doc4 print (data)
Công cụ tìm kiếm sử dụng học sâu
Nguồn: Tác giả

2 Nhập các thư viện cần thiết

Chúng tôi đang nhập tất cả các phụ thuộc sẽ được sử dụng cùng một lúc.

import numpy as np import nltk import itertools from nltk.corpus import stopwords from nltk.tokenize import sent_tokenize, word_tokenize import scipy from scipy import spatial import re tokenizer = ToktokTokenizer () stopword_list = nltk.corpus.stopwords.words ('english')

3 Làm sạch dữ liệu

Trong NLP, việc làm sạch dữ liệu luôn tổng quát hóa quá trình đào tạo của chúng tôi và hứa hẹn kết quả tốt hơn. Luôn luôn là một phương pháp hay để thực hiện dọn dẹp dữ liệu sau khi tải dữ liệu.

tạo một chức năng để làm sạch dữ liệu

def remove_stopwords (text, is_lower_case = False): pattern = r '[^ a-zA-z0-9s]' text = re.sub (pattern, "", ''. join (text)) tokens = tokenizer.tokenize ( text) tokens = [tok.strip () for tok in tokens] if is_lower_case: clean_token = [tok for tok in tokens if tok not in stopword_list] else: clean_tokens = [tok for tok in tokens if tok.lower () not in stopword_list] filter_text = '' .join (clean_tokens) trả lại filter_text

Các chức năng remove_stopwords lấy từng tài liệu một và trả lại tài liệu đã được làm sạch.

  • trước tiên chúng tôi đã loại bỏ tất cả các ký tự không cần thiết bằng cách sử dụng biểu thức chính quy.
  • Sau khi loại bỏ các ký tự không cần thiết, chúng tôi mã hóa từ đã lọc và sử dụng stopword_list để lọc ra tất cả các từ dừng.

4 Thực hiện Nhúng Word

Chúng tôi sẽ sử dụng một vector từ được đào tạo trước có 300 chiều. bạn có thể tải xuống vector từ bằng cách sử dụng cái này Link. Tôi khuyên bạn nên tạo một sổ ghi chép trên Kaggle là một lựa chọn tốt hơn nếu bạn không muốn tải xuống tệp lớn vectơ thế giới.

Đang tải các vectơ từ

vectơ từ là một tệp văn bản chứa các từ và các vectơ tương ứng của chúng.

Công cụ tìm kiếm sử dụng học sâu
Nguồn: Tác giả
glove_vectors = dict () file = open ('../ input / glove6b / glove.6B.300d.txt', encoding = 'utf-8') cho dòng trong tệp: giá trị = line.split () word = giá trị [ 0] vectors = np.asarray (giá trị [1:]) glove_vectors [word] = vectors file.close ()
  • glove_vector Đó là một từ điển chứa các từ dưới dạng khóa và giá trị dưới dạng vectơ đặc trưng.
  • glove.6B.300dCách nhúng từ này được đào tạo dựa trên 6 Cụm từ và độ dài vectơ đặc trưng là 300.
  • Nếu một từ không có trong từ điển vectơ từ của chúng tôi, nó sẽ trả về một vectơ không có độ dài 300.

thí dụ:

glove_vectors ['cat']
sâu
Nguồn: Tác giả

Vectơ đối tượng địa lý trả về cho con mèo có 300 giá trị đối tượng địa lý.

Tạo vectơ đặc trưng cho tài liệu của chúng tôi bằng cách sử dụng nhúng từ.

Chúng tôi đang tạo một hàm nhận một câu và trả về vectơ đặc trưng của 300 chiều.

vec_dimension = 300 def get_embedding (x): arr = np.zeros (vec_dimension) text = str (x) .split () for t in text: try: vec = glove_vectors.get (t) .astype (float) arr = arr + vec ngoại trừ: pass arr = arr.reshape (1, -1) [0] return (arr / len (text))

5 Tóm tắt tài liệu

Một tài liệu có nhiều câu và một câu có nhiều vectơ dựa trên số lượng từ có trong câu đó.

Để tổng hợp ý nghĩa của một tài liệu, chúng ta cần tính trung bình ý nghĩa của tất cả các câu bên trong tài liệu đó.

Trong ngôn ngữ của NLP, chúng tôi tính trung bình tất cả các vectơ đặc trưng của tất cả các câu bên trong tài liệu đó.

out_dict = {} for sen in fin: average_vector = (np.mean (np.array ([get_embedding (x) for x in nltk.word_tokenize (remove_stopwords (sen))]), axis = 0)) dict = {sen: (average_vector)} out_dict.update (dict)
Nguồn: Tác giả
  • Từ điển out_dict chứa các tài liệu làm khóa và các vectơ đặc trưng trung bình của chúng là các giá trị tương ứng.
  • Các vectơ tính năng trung bình mã hóa ý nghĩa của tài liệu thành các vectơ.

6 So sánh ý nghĩa của bối cảnh

Hiện tại, chúng ta có vectơ đặc trưng của mỗi và mọi tài liệu và chúng tôi cần xây dựng một hàm có thể so sánh các vectơ đặc trưng dựa trên ý nghĩa của chúng.

Độ giống nhau của hai từ có thể được tính bằng cách sử dụng khoảng cách cosin giữa các vectơ đặc trưng của chúng.

def get_sim (query_embedding, average_vector_doc): sim = [(1 - scipy.spatial.distance.cosine (query_embedding, average_vector_doc))] trả về sim
  • chức năng get_sim lấy đặc trưng-vectơ của các truy vấn và vectơ đặc trưng của tất cả các tài liệu và trả về sự giống nhau giữa truy vấn và tài liệu.
  • Nếu sự giống nhausim cao hơn, gần hơn với 1, chúng ta có thể nói nó có ý nghĩa gần như tương tự.
  • Nếu sự giống nhau simgần với 0, chúng ta có thể nói rằng ý nghĩa của chúng là khác nhau.
  • gói scipycung cấp lớp học scipy.spatial.distance.cosine để tính khoảng cách cosine.

7 Thực hiện truy vấn

Chúng tôi đã sẵn sàng với các vectơ đặc trưng của tài liệu cũng như chúng tôi đã tạo chức năng so sánh sự giống nhau của hai vectơ đặc trưng.

def Xếp hạng_documents (truy vấn): query_word_vectors = (np.mean (np.array ([get_embedding (x) for x in nltk.word_tokenize (query.lower ())], dtype = float), axis = 0)) rank = [ ] cho k, v trong out_dict.items (): rank.append ((k, get_sim (query_word_vectors, v))) rank = sorted (rank, key = lambda t: t [1], reverse = True) print (' Tài liệu được xếp hạng: ') trả về xếp hạng [0]
  • query_word_vectors Nó chứa các vectơ đặc trưng của truy vấn đầu vào.
  • Các chức năng Ranked_document so sánh sự giống nhau giữa các vectơ đặc trưng của truy vấn với các vectơ đặc trưng của tài liệu theo cách lặp đi lặp lại.
  • chúng tôi chỉ trả lại một tài liệu tương tự nhất làm đầu ra của chúng tôi.

Kết quả 8

Khi chúng tôi gọi Ranked_document bằng cách chuyển một truy vấn, hàm sẽ trả về một tài liệu phù hợp nhất liên quan đến truy vấn của chúng ta.

Example1:

Xếp_lục_điểm ('dơi và bóng')
Kết quả
Nguồn: Tác giả

Như bạn thấy đấy bat and ball có liên quan đến cricket khi chúng tôi tìm kiếm từ khóa này, mô hình trả về tài liệu liên quan đến cricket. Hơn nữa, trong tài liệu không có chữ dơi và bóng.

Example2:

Tài liệu_đã xếp_ hạng ('khoa học máy tính')
Ví dụ
Nguồn: Tác giả

Như chúng ta đều biết rằng khoa học máy tính có liên quan đến học máy. khi chúng tôi truy vấn từ khóa computer science nó trả về tài liệu liên quan đến khoa học máy tính.

Kết luận

Trong bài viết này, chúng tôi đã thảo luận về hệ thống truy xuất tài liệu, dựa trên việc so sánh ý nghĩa của một tài liệu / câu bằng cách so sánh các vectơ đặc trưng.

Chúng tôi đã triển khai hệ thống truy xuất tài liệu bằng cách sử dụng python và nhúng từ được đào tạo trước. Có nhiều cách để thực hiện đối sánh tài liệu nhưng sử dụng tính năng nhúng từ và scipy’s khoảng cách cosine nó trở nên dễ thực hiện hơn.

Hy vọng bạn thích bài viết của tôi trên các công cụ tìm kiếm sử dụng học sâu?

Bạn có thể sao chép và tải xuống các mã được sử dụng trong bài viết này bằng cách sử dụng Link.

Hãy thoải mái đánh tôi Linkedin nếu bạn có bất kỳ câu hỏi hoặc đề xuất cho tôi.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả. 

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

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

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