# -*- coding: utf-8 -*- """21C11027.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1z_jG4sUgsIhZRoikoXxYMHNAMpiYlWAW **KHAI THÁC NGỮ LIỆU VĂN BẢN NÂNG CAO** * **Họ và tên:** Huỳnh Viết Thám * **Mã số học viên:** 21C11027 # Cài đặt thư viện cần thiết """ from serpapi import GoogleSearch def checkPaper(publication_name): params = { "api_key": "3fb62919a0e61a6a58cf9815798253799210ab69fbc3c9c9a81785c7cabcc3fa", "engine": "google", "q": "*", "location": "Austin, Texas, United States", "google_domain": "google.com", "gl": "us", "hl": "en", "as_sitesearch": "github.com" } # q ở đây là query. Ở bước này, tiến hành gán input mà người dùng nhập vào vào trong param đã khởi tạo ở trên params["q"] = publication_name # Ở bước này, tiến hành search bằng thư viện GoogleSearch đã import ở trên, với tham số là param sau khi đã cập nhập câu query q search = GoogleSearch(params) # Tiến hành lưu kết quả tìm được vào results, để từ đó có thể dễ dàng truy xuất khi cần thiết results = search.get_dict() # Lấy top 5 kết quả search ra đầu tiên dưới dạng json top5_result=results["organic_results"][0:5] # Bây giờ sẽ tạo 2 biến, biến thứ nhất là github_link, biến này sẽ kiểm tra xem là kết quả tìm được trong top5 đó có link github hay không? nếu có thì sẽ lưu thông tin vào backup_link github_link = False backup_link = None # Tổng số từ khoá trong việc tìm kiếm nếu trên 70% thì sẽ cho ra kết quả. # Số 70% ở đây là một con số có thể thay đổi được, chưa có thống kê cụ thể sử dụng số nào thì hiệu quả cao hơn threshold = 0.7 #Chạy vòng for để tìm kiếm link github trong top5 đã lấy ở trên for result in top5_result: # Tách các từ trong tên bài báo nhập vào ở trên. Mục tiêu là để ở bước so sánh mình sẽ lấy từng từ ra dò vào kết quả cho nhanh chóng word_list = publication_name.split(' ') len_word_list = len(word_list) count = 0 # Trong các kết quả trả về, nếu không có link github thì bỏ qua, còn nếu có link github thì sẽ tiến hành kiểm tra xem từng từ được tách ở trên so với từ trong link git trùng khớp được bao nhiêu phần trăm. Trên 70% như đã khai báo ở trên là được. if "https://github.com/" in result['link']: for word in word_list: if word in result['snippet']: count+=1 if count >= count/len_word_list: github_link = True backup_link = result['link'] break # Kiểm tra xem biến check link git đã là true hay chưa, nếu là true thì là có link, còn không thì không có link if github_link == False: return "Currently, the github link for the entered article title has not been found. Please check back later!" else: return backup_link + " | Here is the link github found based on your input. Please check the link above." import gradio as gr demo = gr.Interface(fn=checkPaper, inputs="text", outputs="text") demo.launch(share=True)