Skip to content

Commit

Permalink
新增全文翻译教程和Xmind
Browse files Browse the repository at this point in the history
  • Loading branch information
kaixindelele committed Jul 23, 2023
1 parent 9cfe10b commit 56526b0
Show file tree
Hide file tree
Showing 14 changed files with 873 additions and 258 deletions.
23 changes: 17 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@
</strong>

💥💥💥<strong>7.22 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。
增加全新的本地PDF全文翻译功能!有空再写配置教程。
增加全新的本地PDF全文翻译功能![⛏️PDF全文翻译配置教程](#任意PDF全文翻译配置教程)
</strong>

<details><summary><code><b>历史重大更新</b></code></summary>

- 🌟*2023.07.23*: [MasterYip](https://github.com/MasterYip) 同学开源了 [ChatPaper2Xmind](https://github.com/MasterYip/ChatPaper2Xmind)!
将论文PDF通过Chat一键生成 图片+公式的简要XMind笔记。
- 🌟*2023.07.22*: 增加全新的本地PDF全文翻译功能!
- 🌟*2023.07.22*: 增加全新的本地PDF全文翻译功能![⛏️PDF全文翻译配置教程](#任意PDF全文翻译配置教程)
- 🌟*2023.07.21*: 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。
- 🌟*2023.07.09*: 师弟[red-tie](https://github.com/red-tie)[auto-draft](https://github.com/CCCBora/auto-draft)的基础上,优化了一款[一键文献综述](https://github.com/kaixindelele/ChatPaper/tree/main/auto_survey)的功能. 适用于大家对具体某个领域快速掌握,并且支持直接生成中文文献调研报告。文件配置简单,欢迎大家使用和反馈!
- 🌟*2023.07.05*: 昨天我做了一个新的小玩具:[ChatSensitiveWords](https://github.com/kaixindelele/ChatSensitiveWords),利用LLM+敏感词库,来自动判别是否涉及敏感词。已经在学术版GPT网页端上线,欢迎LLM的开发者一起完善这个工作。
Expand Down Expand Up @@ -79,6 +79,7 @@
- [💥最新讯息](#最新讯息)
- [💫开发动机](#开发动机)
- [⛏️配置教程](#配置教程)
- [⛏️PDF全文翻译配置教程](#任意PDF全文翻译配置教程)
- [👷‍♂️HuggingFace在线部署](#HuggingFace在线部署)
- [📄本地PDF全文翻译示例](#本地PDF全文翻译示例)
- [📄本地PDF全文总结示例](#本地PDF全文总结示例)
Expand All @@ -94,7 +95,7 @@
## 最新讯息
- 🌟*2023.07.23*: [MasterYip](https://github.com/MasterYip) 同学开源了 [ChatPaper2Xmind](https://github.com/MasterYip/ChatPaper2Xmind)!
将论文PDF通过Chat一键生成 图片+公式的简要XMind笔记
- 🌟*2023.07.22*: 增加全新的本地PDF全文翻译功能!有空再写配置教程
- 🌟*2023.07.22*: 增加全新的本地PDF全文翻译功能![⛏️PDF全文翻译配置教程](#任意PDF全文翻译配置教程)
- 🌟*2023.07.21*: 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。
- 🌟*2023.07.09*: 师弟[red-tie](https://github.com/red-tie)[auto-draft](https://github.com/CCCBora/auto-draft)的基础上,优化了一款[一键文献综述](https://github.com/kaixindelele/ChatPaper/tree/main/auto_survey)的功能. 适用于大家对具体某个领域快速掌握,并且支持直接生成中文文献调研报告。文件配置简单,欢迎大家使用和反馈!
- 🌟*2023.07.05*: 昨天我做了一个新的小玩具:[ChatSensitiveWords](https://github.com/kaixindelele/ChatSensitiveWords),利用LLM+敏感词库,来自动判别是否涉及敏感词。已经在学术版GPT网页端上线,欢迎LLM的开发者一起完善这个工作。
Expand Down Expand Up @@ -391,10 +392,20 @@ python3 app.py
</details>


### 任意PDF全文翻译配置教程:
1. 必须是在Ubuntu或者MacOS下使用!
### 任意PDF全文翻译配置教程
1. 必须是在Ubuntu或者MacOS下使用!接下来的教程默认是Ubuntu18.04/20.04.
2. 在安装了ChatPaper默认依赖之后,激活它的虚拟环境,进入scipdf_parser-master文件夹,进入这个路径后,继续安装这里面的依赖。
3. 安装好了这里的以来后,还需要安装Java的环境,我们推荐安装java11.0.19
4. 先更新系统包:sudo apt-get update
5. 然后命令安装 OpenJDK 11:sudo apt-get install openjdk-11-jdk
6. 完成以上步骤后,你可以用以下命令来确认安装的 Java 版本:java -version
7. 这将返回你当前的 Java 版本信息。到这一步,基本上Java的安装成功
8. 再然后,再后台启动scipdf服务,这里需要下载不少依赖:bash serve_grobid.sh
9. 等服务启动好后,可以不用管它,新开一个终端,启动python程序:python chat_summary.py
10. 也可以后台默认启动serve_grobid.sh: nohup bash serve_grobid.sh

最后祝你使用的开心!

2. 本地

## 本地PDF全文翻译示例

Expand Down
228 changes: 0 additions & 228 deletions chat_summary.py

This file was deleted.

48 changes: 24 additions & 24 deletions chat_translate.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ def parse_pdf(path):
@tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, min=4, max=10),
stop=tenacity.stop_after_attempt(8),
reraise=True)
def chat_translate_part(text, key, title=False, domain="", tokenizer_gpt35=None):
def chat_translate_part(text, key, title=False, domain="", tokenizer_gpt35=None, task="翻译"):
openai.api_key = key
# 这里需要做切分,如果长文本的话,需要多次翻译,或者直接换用16K的api.
# 先判断文本token长度:
token_size = len(tokenizer_gpt35.encode(text))
if token_size > 1800:
model = "gpt-3.5-turbo-16k"
else:
model = "gpt-3.5-turbo-0613"
model = "gpt-3.5-turbo"

if title:
messages = [
Expand All @@ -78,31 +78,29 @@ def chat_translate_part(text, key, title=False, domain="", tokenizer_gpt35=None)
else:
messages = [
{"role": "system",
"content": "You are now a professional Science and technology editor"},
"content": "You are a professional academic paper translator."},
{"role": "assistant",
"content": "Your task now is to translate the Input Contents, which a section, part of a paper, the paper is about "+ domain},
{"role": "user", "content": "Input include section name and section text, Input Contents:" + text +
"""
你的任务是口语化翻译输入的论文章节.
"content": "Your task now is to {} the Input Contents, which a section, part of a paper, the paper is about {}".format(task, domain)},
{"role": "user", "content": f"""
你的任务是口语化{task}输入的论文章节,{task}的内容要遵循下面的要求:
1. 在保证术语严谨的同时,文字表述需要更加口语化。
2. 需要地道的中文{task},逻辑清晰且连贯,少用倒装句式。
3. 对于简短的Input Contents,不要画蛇添足,增加多余的解释和扩展。
4. 对于本领域的专业术语,需要标注英文,便于读者参考。这篇论文的领域是{domain}
5. 适当使用MarkDown语法,比如有序列表、加粗等。
你的输出内容格式需要遵循下面的要求:
1. ## 章节名称,中文翻译(Original English section name)
2. 章节内容的翻译
翻译的内容要遵循下面的要求:
1. 在保证术语严谨的同时,文字表述需要更加口语化。
2. 需要地道的中文翻译,逻辑清晰且连贯。
3. 少用倒装句式,要方便中国读者阅读,需要地道的中文。
4. 对于简短的Input Contents,不要画蛇添足,增加多余的解释和扩展。
5. 对于专业领域的术语,需要加上英文标注。比如 temperature (温度)等,翻译时,需要同时提供中英文。
6. 适当使用markdown语法,比如列表等。
1. ## 章节名称,中文{task}(Original English section name)
2. 章节内容的{task}
Output format is (你需要根据上面的要求,自动填充xxx和yyy的占位符):
\n
## xxx
yyy
\n
\n
Input include section name and section text, Input Contents: {text}
"""},
]
response = openai.ChatCompletion.create(
Expand Down Expand Up @@ -137,7 +135,7 @@ def chat_check_domain(text, key):
{"role": "user", "content": "Input Contents:" + text},
]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0613",
model="gpt-3.5-turbo",
messages=messages,
temperature=0.3,
)
Expand All @@ -155,7 +153,7 @@ def chat_check_domain(text, key):
info['response_time'] = response.response_ms / 1000.0
return info

def main(root_path, pdf_path, key):
def main(root_path, pdf_path, key, task="翻译"):
md_file = root_path + pdf_path.split("/")[-1].replace(".pdf", '.md')
md_str = "\n"
token_consumed = 0
Expand Down Expand Up @@ -205,7 +203,7 @@ def main(root_path, pdf_path, key):
# 判断文本是否为空:
if len(paper_pdf['section_texts'][section_index])>0:
text = "Section Name:" + section_name + "\n Section text:" + paper_pdf['section_texts'][section_index]
return_dict = chat_translate_part(text, key, domain=domains, tokenizer_gpt35=tokenizer_gpt35)
return_dict = chat_translate_part(text, key, domain=domains, tokenizer_gpt35=tokenizer_gpt35, task=task)
result = return_dict['result']
cur_str = "\n"
cur_str += result
Expand All @@ -222,5 +220,7 @@ def main(root_path, pdf_path, key):
if __name__ == "__main__":
root_path = r'./'
pdf_path = r'./demo.pdf'
key = "sk-xxxx"
main(root_path, pdf_path, key)

key = "sk-xxx"
task = "翻译"
main(root_path, pdf_path, key, task)
Loading

0 comments on commit 56526b0

Please sign in to comment.