none.gif

a5539f2f

关于P站上那些日文小说

除了人肉翻译,机翻一般都什么比较好用的啊,百度还是有道,或者那个翻译软件?

a5.gif

好好活下去,懂吗!

有道

918506.jpg

只如初见

B2F  2023-06-03 17:15
(我不是机器人)
chatgpt,用AiNiee-ChatGPT翻译:https://github.com/NEKOparapa/AiNiee-chatgpt
它这个翻译文件的格式是这样的

可以先把小说用爬虫爬下来,储存为字典,用AiNiee-ChatGPT翻译,翻译完后通过输出的文件重新合成小说
翻译完后键是原文,值是翻译

none.gif

相关第三方

回 2楼(只如初见) 的帖子

求教 怎么储存为字典以及怎么重新合成小说
谢谢大佬

海棠


918506.jpg

只如初见

B5F  2023-06-04 17:08
(我不是机器人)

回 3楼(相关第三方) 的帖子

import chardet,re, json  # 须安装第三方库,为获得文件编码


def get_jp_text(path):
    with open(path, "rb") as f:
        # 获得文件编码
        full_data = f.read()
        chaInfo = chardet.detect(full_data)
        if chaInfo["encoding"].upper() in ["GB2312", "GBK"]:
            chaInfo["encoding"] = "GB18030"

        # 将日文存为列表
        f.seek(0)
        list_data = f.readlines()
        jp_texts = []
        for data in list_data:
            text = data.decode(chaInfo["encoding"])
            jp_texts.append(text.rstrip("\n").rstrip("\r"))

        # 将jp文本转换为字典
        """
        发现一个bug,用json会将相同的key去掉
        但小说中有啊啊啊之类的相同段 所以用笨办法安全点
        """
        with open("TransFile.json", "w", encoding="UTF-8") as f:
            f.write("{\n")
            for text in jp_texts:
                if text != jp_texts[-1]:
                    f.write(f"""    "{text}":"{text}",\n""")
                else:
                    f.write(f"""    "{text}":"{text}"\n""")
            f.write("}")

def zh_novel(path):
    with open(path, "r", encoding="utf-8") as f:
        """
        这里原本也是用json实现的,不过相同键会被删除,改成正则吧
        """
        data = f.readlines()
        data = data[1:-1]
        new_data = []
        for text in data:
            zh_text = re.search(r'".+"\:"(.+)",{0,1}$', text)
            new_data.append(zh_text[1])
    with open("中文翻译.txt", "w", encoding="utf-8") as f:
        for data in new_data:
            f.write(f"{data}\n")

if __name__ == "__main__":
    # 将路径换成你的文件路径
    get_jp_text(r"C:\人間失格.txt")  # 将txt转为字典

    # 将翻译后的字典路径替换下方TransFile.json,取消注释状态
    # zh_novel(r"TransFile.json")  # 将翻译后的字典转为txt

918506.jpg

只如初见

B6F  2023-06-04 17:15
(我不是机器人)

Re:回 3楼(相关第三方) 的帖子

引用
引用第5楼6834f17d于2023-06-04 17:08发表的 回 3楼(相关第三方) 的帖子 :
import chardet, json  # 须安装第三方库,为获得文件编码


def get_jp_text(path):
    with open(path, "rb") as f:
.......

基本是这样吧,应该不用改,chardet是第三方库,用来获得编码的,不过,你用爬虫爬下来的文件一般自己知道编码,而且编码统一,这样可以直接改成
    with open(path, "r",encoding="你文件的编码") as f:
        list_data = f.readlines()
        jp_texts = []
        for data in list_data:
            jp_texts.append(text.rstrip("\n").rstrip("\r"))

        # 将jp文本转换为字典
        jp_dict = {text: text for text in jp_texts}
        with open("TransFile.json", "w", encoding="UTF-8") as f:
            json.dump(jp_dict, f, ensure_ascii=False, indent=4)

none.gif

相关第三方

回 6楼(只如初见) 的帖子

感谢大佬细心讲解