File size: 3,381 Bytes
789033a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3067b08
789033a
3067b08
789033a
3067b08
789033a
3067b08
 
 
 
789033a
3067b08
 
 
 
 
 
789033a
 
 
3067b08
789033a
 
 
 
 
3067b08
789033a
 
3067b08
 
 
789033a
3067b08
789033a
 
 
 
d743531
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- 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)