File size: 3,953 Bytes
dee848c
b796027
 
dee848c
b796027
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6783b8c
b796027
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6783b8c
 
 
b796027
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6783b8c
b796027
6783b8c
 
bd71cd3
 
 
6783b8c
bd71cd3
 
 
6783b8c
 
 
 
 
b796027
 
dee848c
 
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import gradio as gr
import pandas as pd
from util import summarizer, parser

def patent_summarizer(patent_information, summaries_generated, min_char_abs, min_char_bg, min_char_claims):
    
    # TODO: add checker if valid patent info, return None if invalid
    # TODO: add scraper to get document

    # TODO: add parser to get the following info from the base document:
    abstract, background, claims = None, None, None

    summaries = list()
    if "Abstract" in summaries_generated:
        abstract_summary = summarizer.generate_abs_summary(abstract, min_char_abs)
        summaries.append(abstract_summary)
    else:
        summaries.append(None)
  
    if "Background" in summaries_generated:
        background_summary = summarizer.generate_bg_summary(background, min_char_bg)
        summaries.append(background_summary)
    else:
        summaries.append(None)
  
    if "Claims" in summaries_generated:
        claims_summary = summarizer.generate_claims_summary(claims, min_char_claims)
        summaries.append(claims_summary)
    else:
        summaries.append(None)

    return summaries

summary_options = ["Abstract", "Background", "Claims"]
iface = gr.Interface(
    patent_summarizer,
    theme="huggingface",
    examples=[
        [
            "US9820315B2",
            summary_options,
            50,
            250,
            100
        ],
        [
            "https://patents.google.com/patent/US9820315B2",
            summary_options,
            50,
            250,
            100
        ],
        [
            "https://patents.google.com/patent/US10263802B2/en?q=smart+user+interface&oq=smart+user+interface",
            summary_options[:-1],
            75,
            200,
            125
            
        ]
    ],
    inputs=[
        gr.inputs.Textbox(label="Patent Information", 
                          placeholder="US9820315B2 or https://patents.google.com/patent/US9820315B2 ...", 
                          lines=1),
        # gr.inputs.Radio(["Link", "Patent Code"]), # Can be figured out automatically via parsing
        # gr.inputs.Dropdown(["model type 1", "model type 2", "model type 3"]), # Change model type
        gr.inputs.CheckboxGroup(summary_options, 
                                default=summary_options,
                                label="Summaries to Generate"),
        gr.inputs.Slider(minimum=50,
                         maximum=500,
                         step=1,
                         default=75,
                         label="Minimum Characters (Abstract Summary)"),
        gr.inputs.Slider(minimum=50,
                         maximum=500,
                         step=1,
                         default=200,
                         label="Minimum Characters (Background Summary)"),
        gr.inputs.Slider(minimum=50,
                         maximum=500,
                         step=1,
                         default=100,
                         label="Minimum Characters (Per Claims Summary)")
    ],
    outputs=[
        gr.outputs.Textbox(label="Abstract Summary"),
        gr.outputs.Textbox(label="Background Summary"),
        gr.outputs.Textbox(label="Claims Summary")
    ],
    title="Patent Summarizer πŸ“–",
    description="""
    v.1.0.0

    Reading through patent documents is oftentimes a long and tedious task. 
    There are cases wherein one has to manually go through several pages 
    in order to determine if the patent is relevant to the prior art search.
    
    This application is meant to automate the initial phase of going through 
    patents so that the potential inventor or researcher may lessen the time 
    spent trying to filter documents.
    
    The Patent Summarizer:
    ✏️ Provides an interface for user input
    πŸ“‚ Retrieves and parses the document based on the given patent information
    πŸ“‘ Returns summaries for the abstract, background, and/or claims.
    """
)

iface.launch()