Spaces:
Sleeping
Sleeping
File size: 3,214 Bytes
bf7bb36 d471a4c bf7bb36 d297372 bf7bb36 e73caa2 2f72203 bf7bb36 798de62 bf7bb36 e9be370 798de62 bf7bb36 700a24f 5320c21 e9be370 5320c21 e9be370 5320c21 e9be370 5320c21 bf7bb36 5320c21 798de62 5320c21 6a79721 e9be370 5320c21 6a79721 bf7bb36 6a79721 |
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 |
import os
import sys
import subprocess
if not os.path.exists("ChatGLM-6b-onnx-u8s8"):
subprocess.run(["git", "lfs", "install"])
subprocess.run(["git", "clone", "https://huggingface.co/K024/ChatGLM-6b-onnx-u8s8"])
os.chdir("ChatGLM-6b-onnx-u8s8")
subprocess.run(["pip", "install", "-r", "requirements.txt"])
sys.path.append(os.getcwd())
else:
sys.path.append(os.path.join(os.getcwd(), "ChatGLM-6b-onnx-u8s8"))
from model import ChatGLMModel#, chat_template
model = ChatGLMModel()
# history = []
max_tokens = 2048
temperature = 0.7
top_p = 0.7
top_k = 50
prompt = """
現在有些文本,文本詳細且複雜。 它包含細節,可以縮減和綜合為關鍵要點。 你的任務是提取最重要的概念,重點關注主要思路,提供一個概述而不失去精髓。 你的總結應該:
• 簡潔但足夠充分,可以代表所有重要信息
• 使用正確的句式和連貫的流程
• 捕捉誰、什麼、何時、在哪裡、為什麼和如何
• 盡可能地保留原始風格和風格
• 你必須遵循“摘要”格式:
摘要:
用2至3個句子簡要陳述主要主題和主要發現。
主要要點:
• 要點1 - 最重要的發現或細節
• 要點2 - 第二重要的觀黵
• 要點3 - 第三個重要的信息
• 要點4(可選) - 另一個要點
• 要點5(可選) - 最後的關鍵總結要點
文本:
"""
def sum_chain_l1(text, p_bar):
docs = []
for i in p_bar(range(len(text)//2000+1)):
t = text[i*2000:i*2000+2048]
if len(t) > 0:
for answer in model.generate_iterate(prompt+t,
max_generated_tokens=max_tokens,
top_k=top_k,
top_p=top_p,
temperature=temperature):
yield f"{'='*8} {i+1}/{len(text)//2000+1} {'='*8}\n{answer}"
docs.append(answer)
return docs
def sum_chain_l2_deprecated(docs, p_bar):
hist = docs[0]
i = 0
for doc in p_bar(docs[1:]):
i += 1
for answer in model.generate_iterate(prompt+"\n"+hist+"\n"+doc,
max_generated_tokens=max_tokens,
top_k=top_k,
top_p=top_p,
temperature=temperature):
yield f"{'='*8} {i}/{len(docs)} {'='*8}\n{answer}"
hist = answer
return hist
import gradio as gr
def greet(text, progress=gr.Progress()):
progress(0, desc="Reading")
docs = []
for doc in sum_chain_l1(text, progress.tqdm):
yield '# drafting summary', doc
# yield 'stage 1 finished', '\n===== summarized parts =====\n'.join(doc)
print('stage 1 finished\n'+'\n===== summarized parts =====\n'.join(doc))
progress(0, desc="Refinement")
for ans in sum_chain_l2_deprecated(doc, progress.tqdm):
yield '# refining summary', ans
return '# final result', ans
gr.Markdown("# Text Summarization\nStage 1 = draft -> Stage 2 = refine -> final result")
iface = gr.Interface(fn=greet,
inputs=gr.Textbox(lines=20,
placeholder="Text Here..."),
outputs=["text", "text"])
iface.queue(concurrency_count=3).launch()
|