前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python | 论文降重助手

Python | 论文降重助手

作者头像
PyStaData
发布2021-03-23 11:41:54
1.1K0
发布2021-03-23 11:41:54
举报
文章被收录于专栏:PyStaData

提示:论文降重事情重大,还需端正学术态度、严肃对待。

最近大家都在伤脑筋论文降重,改的改、删的删。不过有的同学思路清奇,完成论文降重的同时,不经意间暴露出超凡脱俗的语言天赋。

不过通过翻译的确是个不改变语义的情况下,给句子改头换面的好方法。那么今天就来探讨下怎么用翻译的方法给论文降重。

解决思路是通过百度翻译的 API 给要降重的文字批量转换,再修改病句。

实现方法

下面这段是百度翻译 API 给的使用示例,可以对照看看构造 API 需要哪些主要字段。

代码语言:javascript
复制
# -*- coding: utf-8 -*-

# This code shows an example of text translation from English to Simplified-Chinese.
# This code runs on Python 2.7.x and Python 3.x.
# You may install `requests` to run this code: pip install requests
# Please refer to `https://api.fanyi.baidu.com/doc/21` for complete api document

import requests
import random
import json
from hashlib import md5

# Set your own appid/appkey.
appid = 'INPUT_YOUR_APPID'
appkey = 'INPUT_YOUR_APPKEY'

# For list of language codes, please refer to `https://api.fanyi.baidu.com/doc/21`
from_lang = 'en'
to_lang =  'zh'

endpoint = 'http://api.fanyi.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path

query = 'Hello World! This is 1st paragraph.\nThis is 2nd paragraph.'

# Generate salt and sign
def make_md5(s, encoding='utf-8'):
    return md5(s.encode(encoding)).hexdigest()

salt = random.randint(32768, 65536)
sign = make_md5(appid + query + str(salt) + appkey)

# Build request
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}

# Send request
r = requests.post(url, params=payload, headers=headers)
result = r.json()

# Show response
print(json.dumps(result, indent=4, ensure_ascii=False))

先去百度翻译 API[1] 申请个 APP ID 和密钥,对照示例可以写出这几个函数:

代码语言:javascript
复制
import requests
import random
import json
from hashlib import md5

def make_md5(s, encoding='utf-8'):
    '''
    生成随机数和签名
    '''
    return md5(s.encode(encoding)).hexdigest()

这个函数用于生成随机数和签名,签名是为了保证调用安全,使用 MD5 算法生成的一段字符串,生成的签名长度为 32 位,签名中的英文字符均为小写格式。

代码语言:javascript
复制
def translate(query, from_lang, to_lang):
    '''
    调用百度翻译 API
    '''
    url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
    salt = random.randint(1, 65536) #随机数
    sign = make_md5(appid + query + str(salt) + appkey)

    # 构造请求
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    payload = {'appid': appid,
               'q': query,
               'from': from_lang,
               'to': to_lang,
               'salt': salt,
               'sign': sign
              }
    r = requests.post(url, params=payload, headers=headers)
    text = r.json()
    result = text['trans_result'][0]['dst']
    return result

这个函数用于请求,函数需要传入的参数有需要转换的文本、初始语言、待转换的语言,运行的结果是:

代码语言:javascript
复制
def transAssistant(query):
    '''
    中-英-日-中
    '''
    en = translate(query,'zh','en') #中文-英文
    jp = translate(en,'en','jp') #英文-日文
    zh = translate(jp,'jp','zh') #日文-中文
    return zh

这个函数用来实现将中文转换成英文、从英文转换成日文,再重日文转换成中文,通过不同语言之间的翻译,在保证语义基本不变的情况下对句子结构和用词进行调整,达到降低重复率的目的。

这就是转换的效果了,将需要转换的文本放在一个文档中,批量转换之后再修改语句,能够提高使用这种“奇技淫巧”降重的目的。

全文代码

代码语言:javascript
复制
import requests
import random
import json
from hashlib import md5

def make_md5(s, encoding='utf-8'):
    '''
    生成随机数和签名
    '''
    return md5(s.encode(encoding)).hexdigest()

def translate(query, from_lang, to_lang):
    '''
    调用百度翻译 API
    '''
    url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
    salt = random.randint(1, 65536) #随机数
    sign = make_md5(appid + query + str(salt) + appkey)

    # 构造请求
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    payload = {'appid': appid,
               'q': query,
               'from': from_lang,
               'to': to_lang,
               'salt': salt,
               'sign': sign
              }
    r = requests.post(url, params=payload, headers=headers)
    text = r.json()
    result = text['trans_result'][0]['dst']
    return result


def transAssistant(query):
    '''
    中-英-日-中
    '''
    en = translate(query,'zh','en') #中文-英文
    jp = translate(en,'en','jp') #英文-日文
    zh = translate(jp,'jp','zh') #日文-中文
    return zh

appid = "XXXXX" #自己申请的 appid
appkey = "XXXXX" # 自己申请的 key
query = '这是我要降低重复率的问题,给我把重复率降低到达到要求,祝大家论文过过过。'
# print(translate(query,"zh","en"))
print(transAssistant(query))

参考资料

[1]

百度翻译 API: https://fanyi-api.baidu.com/product/11

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyStaData 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现方法
  • 全文代码
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档