hvtham's picture
Share
d743531
# -*- 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)