shoutenji / mkdict
PHP应用程序,用于生成在Android应用程序Manakyun中使用的JMDict数据库。
Requires
- php: >=7.0
This package is auto-updated.
Last update: 2024-09-29 06:03:01 UTC
README
MKDict
基于Jim Breen的JMDict http://www.edrdg.org/jmdict/j_jmdict.html 的日英词典
概览
一个独立运行的PHP应用程序,用于生成在Android应用程序Manakyun中使用的数据库。此应用程序将下载最新的JMDict文件,解析它,并将相对于上一个版本的任何更改插入到数据库中。此应用程序旨在成为一个完整的、自包含的、开源的JMDict文件的包装器,有助于基于Breen的词典(如Manakyun)的应用程序的开发。
特性
- 需要PHP 7.0
- 基于正则表达式的DTD解析器(如果JMDict的DTD发生变化,MKDict会注意到)
- 基于Unicode的字符串数据规范化填充(安装过程将下载所需的Unicode数据文件)
- 以具有JMDict格式的优势的XML格式导出词典。
- 内存占用低(xml解析、校验和验证等不需要将整个xml文档作为字符串加载)
- 数据库层已缓冲,从而将净处理时间缩短到大约1小时(以前未缓冲的处理时间长达72小时)
- 记录文件详细说明任何错误或由于无效数据而无法导入的元素(这是捕获原始JMDict文件中的错误的好方法)
即将推出的功能
- 句子示例(来自tatoeba.org和JEITA语料库)
- 搭配(使用Python中的NLTK完成)
XML导出格式
请参阅导出文件夹中的XSD文档。此格式的主要优点是每个元素都有一个唯一的id,交叉引用引用此id。另一个优点是,除了复制原始字符串之外,还给出了Unicode规范形式。因此,每个元素都有一个适当的规范形式,可以依赖于搜索和排序。换句话说,这个XML文件基本上是JMDict,但经过清理和组织。
JMDict错误和数据完整性
主要的JMDict文件在每次迭代中都有几个错误,如一个引用先前已删除元素的交叉引用。这些错误不会传播到数据库中。此外,考虑到字典应用程序的数据依赖性,确保数据完整性是强制性的,这就是为什么这个应用程序做了很多事情来过滤和清理原始的JMDict文件。具体来说,使用这个数据库,您可以确信
- 交叉引用没有损坏
- 数字是数字,字符串是字符串(类型应该是这样的,并且两者都包含合理的值)
- 用于分隔读音和汉字条目的有问题“・”字符不再表示这样的分隔
- 没有重复或无效的序列ID
- 没有无效的UTF8
我希望添加有关MKDict如何处理JMDict文件中无效数据的配置选项(例如,是否要截断过长的字符串或安全地忽略包含该长字符串的元素)
安装器选项
(我将删除bash脚本并创建一个安装/导入phar文件)
--create-db
创建manakyun数据库
--test-db
用于开发。创建一个临时表,用utf8数据填充它,并对其进行查询。使用DB库。
--utf-tests
待办事项
–generate-utf-data
待办事项
导入器选项
–local-copy
使用JMDict的本地副本而不是下载它。本地文件应放在MANAKYUN_DIR/var/data,并且应是一个gz文件。必须使用–gz-file指定文件名
–gz-file
指定要使用的本地JMDict文件,例如:–gz-file=20D06965F4FEE90A8_1620819068.gz
–parse-dictionary
待办事项
–version-dictionary
待办事项
–validate-crc32
待办事项
–validate-utf8
待办事项
–with-rollback
待办事项
导出器选项
–export-version
待办事项
–export-type
待办事项
通用选项
–debug-version
用于开发。开启error_reporting(E_ALL)和libxml_use_internal_errors(true)