nunif 文本资源模块解析:面向合成文本图像数据集的日语文料与字符集体系

发布时间:2026/10/5 2:03:21
nunif 文本资源模块解析:面向合成文本图像数据集的日语文料与字符集体系 人工智能深度学习计算机视觉图像处理视频处理预训练【免费下载链接】nunifMisc; latest version of waifu2x; 2D video to stereo 3D video conversion项目地址https://gitcode.com/gh_mirrors/nu/nunif点击查看免费下载导读本文围绕 nunif 仓库中的 text_resource 模块展开系统讲解该模块为生成合成文本图像数据所准备的日文语料、词典与字符集资源以及它们如何被 waifu2x 训练管线 中的TextImageGenerator实际消费。读完本文你将掌握该模块的数据来源、目录结构、下载脚本用法、文本清洗与台词/旁白分离的实现原理并能在本地复现合成日文文本图像数据的生成流程。模块定位为合成文本图像提供日文资源与元数据text_resource/README.md 将本模块定位为Text resources and their metadata for generating synthetic text image data即面向合成文本图像数据生成所需的文本资源及其元数据。它并非一个可独立运行的算法模块而是为训练管线提供原材料的数据资源层语料Text Data青空文库、Project Gutenberg 等公版日文/英文作品文本词典Word/Vocabulary DictionaryUniDic、mecab-ipadic-NEologd、american-english 等词汇资源字符集Character SetsJIS 第一水准汉字、平假名等字符枚举用于约束渲染文本的字符范围。该模块当前仅支持日文字体Currently only Japanese Font is supported这一限制直接决定了其语料选择以日文为主。其下游消费者是 waifu2x/training/text_image_generator.py 中的TextImageGenerator——一个为 waifu2x 训练合成带文字图像数据集的生成器。目录结构总览从仓库目录树可以看到text_resource下包含两个子包text_resource/ ├── README.md # 模块总览与数据来源清单 ├── __init__.py # 空包初始化 ├── aozora/ # 青空文库Aozora Bunko语料下载与解析 │ ├── __init__.py │ ├── db.py # 文库元数据数据库 AozoraDB │ ├── download.py # 下载脚本 │ └── utils.py # 文本清洗与台词行提取 └── char/ # 日文字符集资源 ├── __init__.py # 导出 Char 类 ├── char.py # Char 类JIS1 / HIRAGANA / HIRAGANA_BASIC ├── hiragana.txt # 完整平假名含浊音、半浊音、小假名等 ├── hiragana_basic.txt # 基础平假名 46 音 └── jis1.txt # JIS X 0208 第一水准汉字全表其中__init__.py均为空文件从源码看text_resource/__init__.py与text_resource/aozora/__init__.py无内容真正的实现集中在aozora/与char/两个子包中。词典资源Word/Vocabulary DictionaryREADME 列出三类词汇资源对应不同用途资源来源/位置说明UniDic国立国语研究所日语形态素解析用词典覆盖现代日语书面语mecab-ipadic-NEologdGitHub 上的 Neologd 项目基于 mecab-ipadic 持续追加新词的日文词典american-english/usr/share/dict/american-english系统自带的英文单词表常见于 Linux 发行版说明README 仅列出这些资源的外部来源链接未给出仓库内的消费代码。从源码结构看text_resource模块内尚未出现直接调用 UniDic / mecab-ipadic-NEologd / american-english 的代码可以推断它们属于预留的数据源清单供后续词典类词汇数据生成使用。字符集资源char日文字符的三种枚举text_resource/char/char.py 定义了Char类通过类属性懒加载三个字符集合首次访问时从同目录文本文件读入编码为 UTF-8.strip()后转为setChar.JIS1读入jis1.txt即JIS X 0208 第一水准汉字全表约 2965 字。该文件以 UTF-8 存储、每字符一字地排列覆盖了日本义务教育阶段使用的主要汉字是日文文本渲染中最常用的汉字集合。Char.HIRAGANA读入hiragana.txt为完整平假名集合除 46 个基本清音外还包含浊音が・ざ・だ・ば、半浊音ぱ、促音っ、拗音用小假名ゃ・ゅ・ょ、ゔ、ゕ、ゖ 等。Char.HIRAGANA_BASIC读入hiragana_basic.txt仅含46 个基础平假名あ行わ行、を、ん含ゐ・ゑ不含浊音、半浊音与变体。对照文件内容可验证hiragana.txt 内容为ぁあぃいぅうぇえぉおかがきぎ…ゔゕゖ确实比基础集更长hiragana_basic.txt 内容为あいうえおかきくけこ…わゐゑをん正好 46 个基本假名jis1.txt 从一丁七万丈三…开始到…齢龍结束为 JIS 第一水准汉字的完整枚举。Char类的实现要点char.pyclass Char(): jis1 None hiragana None hiragana_basic None classmethod property def JIS1(cls): if cls.jis1 is None: with open(path.join(path.dirname(__file__), jis1.txt), moder, encodingutf-8) as f: cls.jis1 set(f.read().strip()) return cls.jis1三个属性均以classmethod property组合暴露None哨兵保证同一进程内只读一次文件、后续访问直接复用内存中的set。该模块的消费者之一可见于 playground/gan/train_font_dcgan.pyfrom text_resource.char import Char用于字体相关的 GAN 训练脚本。青空文库语料Aozora Bunko下载、索引与解析青空文库Aozora Bunko是日文公版文学作品库README 给出两个数据镜像官方网站 https://www.aozora.gr.jp/正文 官方 GitHub 仓库 aozorabunko/aozorabunko纯文本版aozorahack/aozorabunko_text去除了 HTML 包装、便于程序直接处理的cards/目录结构本项目下载脚本正是使用后者。下载脚本text_resource/aozora/download.py 提供一键下载命令为python3 -m text_resource.aozora.download脚本内部定义了两个 URLAOZORA_TEXT_URL https://github.com/aozorahack/aozorabunko_text/archive/master.zip AOZORA_CSV_URL http://www.aozora.gr.jp/index_pages/list_person_all.zip下载流程download.py以zip格式下载list_person_all.zip作品元数据 CSV编码为 cp932解压后复制出list_person_all.csv到text_resource/aozora/data/以zip格式下载aozorabunko_text的 master 分支归档解压后将aozorabunko_text-master/cards整个目录树复制到text_resource/aozora/data/cards/。下载完成后text_resource/aozora/data/下应包含data/ ├── list_person_all.csv # 全作品元数据cp932 编码 └── cards/ # 按作者 ID 分目录的纯文本正文 └── 人物ID/ └── files/ └── 作品ID_*/作品ID_*.txt实现细节两个下载器均继承nunif.utils.downloader.ArchiveDownloader来自 nunif/utils/downloader.py通过handle()回调把解压后的内容搬运到目标目录复用了 nunif 统一的归档下载基础设施。注意AozoraTextDownloader.handle使用shutil.copytree(..., dirs_exist_okTrue)重复下载可安全覆盖。元数据库 AozoraDBtext_resource/aozora/db.py 实现了AozoraDB它读取list_person_all.csvcp932 编码并关联cards/目录下的实际文本文件构造出作品条目列表。核心数据结构为AozoraItemdataclass class AozoraItem(): author_id: str author: str title_id: str title: str kana_type: str # 仮名遣い種別如新字新仮名 file_path: str file_size: intAozoraDB的关键行为db.pyload(modern_onlyFalse)逐行解析 CSVcsv.DictReader对每行调用find_file_path()找到实际文本文件modern_onlyTrue时只保留仮名遣い種別 新字新仮名的现代假名用法作品KANA_TYPE_MODERN 新字新仮名。find_file_path(author_id, title_id)定位作者ID/files/作品ID_*/作品ID_*.txt。当同一作品存在多个更新版本目录时通过文件名尾缀txt/ruby/ 数字更新 ID计算update_id并降序排序优先选取最新版若目录内有多个 txt 文件则打印 warning 并取第一个。find_by_title(titleNone, keywordNone)按作品名精确匹配或关键词模糊匹配。find_by_author(authorNone, keywordNone, modern_onlyTrue, size_orderTrue, limitNone)按作者名精确/模糊匹配默认只取现代假名用法modern_onlyTrue、按文件大小降序size_orderTrue并支持limit截断。该类的__main__演示db.py展示了典型用法加载全库后用db.find_by_author(夢野 久作)按作者检索、用db.find_by_title(keyword吾輩)按标题关键词检索。文本清洗与台词行提取text_resource/aozora/utils.py 把青空文库的原始正文清洗成可渲染的句子行。其清洗管线load_content()utils.py逐步处理从首个----分隔行且下一行为空行之后才开始正文跳过作品题解头每行去除首尾空白与全角空格跳过以、、开头的行跳过整行全为―的分隔线用正则删除青空文库特有的注记标记※…外字注记、…注记、…ルビ/注记、[ ]*校订符号、《…》ルビ以及ルビ親文字記号遇到底本起始的行即视为正文结束停止读取逐行收集为\n.join(content)。清洗后的文本进入load_resource()调用 nunif 通用文本工具 nunif/utils/text.py 的separate_speech_lines()将文本拆分为台词行speech_lines与非台词行non_speech_lines两组。该分离基于括号模式匹配text.pySPEECH_BLOCK_PATTERNS ( r[^]{0,512}, r\([^\(\)]{0,512}\), r『[^『』]{0,512}』, r「[^「」]{0,512}」, r〝[^〝〟]{0,512}〟, r“[^“”]{0,512}”, r[^]{0,512}, r[^]{0,512}, r[^]{0,512} )其中512是防止括号未闭合导致正则灾难性回溯的跳跃阈值代码注释原文512 is the threshold for skipping over a forgotten closing parenthesis。流程为先用正则收集所有括号包围的台词块从文本中剔除后得到非台词文本再各自经split_sentence()按。/.//等句读切分为单句。对外提供的两个便捷入口def load_speech_lines(text_file, remove_punctFalse, min_len3, max_lenmath.inf): # 台词行remove_punctTrue 时先经 text.remove_punct 去掉句读 def load_non_speech_lines(text_file, remove_punctFalse, min_len3, max_lenmath.inf): # 非台词行两者均支持按字符长度过滤filter_length默认min_len3便于剔除过短的碎片。模块自带的__main__演示utils.py会加载 AozoraDB、取《吾輩は猫である》并打印提取出的台词行。在训练管线中的实际应用TextImageGeneratortext_resource最直接的消费方是 waifu2x/training/text_image_generator.py 中的TextImageGenerator。它把上述资源串成一条完整的合成数据流水线1. 语料装配text_image_generator.pyclass TextGenerator(): AOZORA_AUTHORS (夢野 久作, 太宰 治, 芥川 竜之介, 夏目 漱石, 森 鴎外) def __init__(self): db AozoraDB() items [] for author in TextGenerator.AOZORA_AUTHORS: ret db.find_by_author(author, modern_onlyTrue, size_orderTrue, limit20) items ret lines [] for item in items: lines AU.load_speech_lines(item.file_path, remove_punctTrue, min_len4) self.lines lines即对五位近代文学名家夢野 久作、太宰 治、芥川 竜之介、夏目 漱石、森 鴎外各取 20 部作品现代假名用法、按大小降序用load_speech_lines(remove_punctTrue, min_len4)提取长度 ≥ 4 的台词行作为渲染语料库。2. 文本块渲染gen_text_block_image随机抽取台词行在画布上逐行绘制vertical以 50% 概率切换竖排/横排small_block50% 概率时每行截取 28 字、最多 14 行模拟小型文本块字号 85% 概率取 16–64、其余取 64–256字距、行距、阴影宽度均随机。3. 背景与色彩gen_basecolor、gen_bg20% 概率生成随机彩色前景/背景其余为黑白对比50% 概率叠加bg_dir提供的真实图像背景经 ReflectionResize、ColorJitter、RandomInvert、RandomAutocontrast、RandomGrayscale 等变换。4. 几何变换transforms以 20:1:1 权重随机选择恒等变换、±45° 随机旋转扩展画布或随机透视扭曲最后CenterCrop回目标尺寸。命令行用法文件头注释及 main 的参数解析# 直接生成合成文本图像数据集DEBUG1 开启调试日志 DEBUG1 python3 -m waifu2x.training.text_image_generator \ -n 100 -o ./text_test --bg-dir /bg/eval --seed 73常用参数--size/-s输出尺寸默认 640、--num-samples/-n必填生成数量、--output-dir/-o必填输出目录、--seed随机种子默认 71、--font-names字体名默认DEFAULT_FONT_NAMES、--font-dir字体目录默认DEFAULT_FONT_DIR、--bg-dir背景图像目录可选、--num-workers默认 CPU 核数减 2。生成的图片以__TEXT_{i}_{postfix}.png命名。字体文件列表由load_fonts(args.font_names, font_dirargs.font_dir)解析而字体资源的下载与管理可参考 font_resource 模块含 download_google_fonts.py 与 font_map.py。前置依赖与使用前提在本地运行text_resource相关脚本前需要注意必须先执行下载脚本AozoraDB在构造时会打开data/list_person_all.csv若未先运行python3 -m text_resource.aozora.download会因数据缺失而失败日文编码约定CSV 与青空文库正文均为cp932Shift_JIS 系编码见 download.py 与 utils.py而字符集文件char/*.txt为UTF-8Python 版本char.py 中assert sys.version_info (3, 9)要求 Python 3.10网络环境下载脚本依赖 GitHub 与 aozora.gr.jp 可达重复运行时dirs_exist_okTrue保证可安全覆盖日文专属模块当前仅支持日文字体英文语料american-english与 UniDic/NEologd 词典仅作为数据源清单出现在 README尚未在仓库内看到对应消费代码。小结text_resource模块是 nunif 生态中日文合成文本图像的数据基础设施其价值体现在三个层面字符集层char/以 UTF-8 文本文件 懒加载set的形式提供 JIS 第一水准汉字与平假名枚举供训练脚本做字符范围约束语料层aozora/通过下载脚本、AozoraDB元数据库与utils.py清洗管线把青空文库公版日文作品转化为按作者/作品可检索、按台词/旁白可分离、按长度可过滤的句子库应用层waifu2x 的TextImageGenerator将上述语料与font_resource字体、随机背景/色彩/几何变换组合规模化生成逼真的日文文本图像用于 waifu2x 训练数据的合成增强。读者若需在此基础上扩展英文文本或自建语料可参照aozora/的下载 → 元数据索引 → 清洗 → 行级过滤四段式结构在 text_resource 下新增子模块并复用 nunif/utils/text.py 的通用文本处理函数。赞分享人工智能深度学习计算机视觉图像处理视频处理预训练【免费下载链接】nunifMisc; latest version of waifu2x; 2D video to stereo 3D video conversion项目地址https://gitcode.com/gh_mirrors/nu/nunif点击查看免费下载相关推荐Flair 图文数据集模块解析FeideggerCorpus 与图像-文本任务的实战指南Flair 图文数据集模块解析FeideggerCorpus 与图像 文本任务的实战指南 导读 本文聚焦 Flair 项目中的 docs/api/dataseNLP深度学习机器学习SyRI终极指南5步掌握基因组同线性与重排分析SyRI终极指南5步掌握基因组同线性与重排分析 SyRISynteny and Rearrangement Identifier是一款专业用于识别基因组同TinyLlama数据增强库面向低资源语言的文本生成工具TinyLlama数据增强库面向低资源语言的文本生成工具 低资源语言Low Resource Language在自然语言处理领域长期面临数据匮乏挑战导致预训练大模型人工智能基础模型微调模型评测本地部署上一篇Logseq知识管理平台从本地笔记到实时协作的完整解决方案下一篇5步精通流放之路角色构建从新手到专家的PoB完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考