Spaces:
Runtime error
Runtime error
| ''' | |
| This script is used to generate the most relevant papers of a given title. | |
| - Search for as many as possible references. For 10~15 keywords, 10 references each. | |
| - Sort the results from most relevant to least relevant. | |
| - Return the most relevant using token size. | |
| Note: we do not use this function in auto-draft function. It has been integrated in that. | |
| ''' | |
| import os.path | |
| import json | |
| from utils.references import References | |
| from section_generator import keywords_generation # section_generation_bg, #, figures_generation, section_generation | |
| import itertools | |
| from gradio_client import Client | |
| def generate_raw_references(title, description="", | |
| bib_refs=None, tldr=False, max_kw_refs=10, | |
| save_to="ref.bib"): | |
| # load pre-provided references | |
| ref = References(title, bib_refs) | |
| # generate multiple keywords for searching | |
| input_dict = {"title": title, "description": description} | |
| keywords, usage = keywords_generation(input_dict) | |
| keywords = list(keywords) | |
| comb_keywords = list(itertools.combinations(keywords, 2)) | |
| for comb_keyword in comb_keywords: | |
| keywords.append(" ".join(comb_keyword)) | |
| keywords = {keyword:max_kw_refs for keyword in keywords} | |
| print(f"keywords: {keywords}\n\n") | |
| ref.collect_papers(keywords, tldr=tldr) | |
| paper_json = ref.to_json() | |
| with open(save_to, "w") as f: | |
| json.dump(paper_json, f) | |
| return save_to, ref # paper_json | |
| def generate_top_k_references(title, description="", | |
| bib_refs=None, tldr=False, max_kw_refs=10, save_to="ref.bib", top_k=5): | |
| json_path, ref_raw = generate_raw_references(title, description, bib_refs, tldr, max_kw_refs, save_to) | |
| json_content = ref_raw.to_json() | |
| client = Client("https://shaocongma-evaluate-specter-embeddings.hf.space/") | |
| result = client.predict( | |
| title, # str in 'Title' Textbox component | |
| json_path, # str (filepath or URL to file) in 'Papers JSON (as string)' File component | |
| top_k, # int | float (numeric value between 1 and 50) in 'Top-k Relevant Papers' Slider component | |
| api_name="/get_k_relevant_papers" | |
| ) | |
| with open(result) as f: | |
| result = json.load(f) | |
| return result | |
| if __name__ == "__main__": | |
| import openai | |
| openai.api_key = os.getenv("OPENAI_API_KEY") | |
| title = "Using interpretable boosting algorithms for modeling environmental and agricultural data" | |
| description = "" | |
| save_to = "paper.json" | |
| save_to, paper_json = generate_raw_references(title, description, save_to=save_to) | |
| print("`paper.json` has been generated. Now evaluating its similarity...") | |
| k = 5 | |
| client = Client("https://shaocongma-evaluate-specter-embeddings.hf.space/") | |
| result = client.predict( | |
| title, # str in 'Title' Textbox component | |
| save_to, # str (filepath or URL to file) in 'Papers JSON (as string)' File component | |
| k, # int | float (numeric value between 1 and 50) in 'Top-k Relevant Papers' Slider component | |
| api_name="/get_k_relevant_papers" | |
| ) | |
| with open(result) as f: | |
| result = json.load(f) | |
| print(result) | |
| save_to = "paper2.json" | |
| with open(save_to, "w") as f: | |
| json.dump(result, f) |