如何利用Python實現一個論文降重工具

前言

時值畢業季,有不少小夥伴深受論文查重的困擾。因此我便想到做一個簡單的自動去重的工具,先看看效果,我們再對原理或是代碼實現做進一步的分析。

首先需要輸入appid以及key,這些可以在百度翻譯開放平臺申請一個賬號,可以免費申請一個賬號。接著將需要進行降重的文本內容復制到相應的輸入框內,點擊開始按鈕,即可輸出不同但意思相近的語句,即達到降重去重的作用。點擊復制按鈕便可以將得到的新文本復制到剪貼板上,點擊清楚按鈕可以重新輸入需要降重的文本,並且循環往復地進行。

去重原理

論文查重的粒度是句子,兩個句子的相似度主要取決於句子包含哪些詞,以及詞在句子中的位置。句子相似度隻是文字上的對比,不考慮語義上的相近。

正因如此,我們可以采取的措施便是變換句子結構,使用近似詞替換。

為瞭完成這些句子的自動替換,從而達到降重的目的,這裡很容易便想到利用不同語種之間的互相轉換來生成新文本。比如在本工具中,我采用瞭中文→英文→韓文→中文的策略,你也可以采取更長的轉換路徑,但那樣似乎會在很大程度上降低文本的可讀性。

開放平臺的使用

語句的翻譯我采用瞭百度翻譯開放平臺的接口,簡單地申請之後就可以獲取每個月200萬的免費字符翻譯權限。

此API的接入方式略微有些麻煩,需要生成簽名sign並且拼接完整的url。

def translate(q,lan_from,lan_to):
    url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
    salt = random.randint(1, 65536)
    sign = hashlib.md5((str(appid)+str(q)+str(salt)+str(key)).encode('utf-8')).hexdigest()
    params = {
        'from' :lan_from,
        'to' :lan_to,
        'salt' : salt,
        'sign' : sign,
        'appid' : appid,
        'q': q
    }
    r = requests.get(url,params=params)
    txt = r.json()
    if txt.get('trans_result', -1) == -1:
        print('ERROR Code:{}'.format(txt))
        return q
    return txt['trans_result'][0]['dst']

總結

在弄清楚原理以及API的調用方法之後,我們可以輕松地寫出一個GUI界面,也就是這個降重工具。當然這個工具非常初級,大傢可以進行更加全面的擴展。

到此這篇關於如何利用Python實現一個論文降重工具的文章就介紹到這瞭,更多相關Python論文降重工具內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: