shoutenji/mkdict

此包的最新版本(dev-master)没有可用的许可证信息。

PHP应用程序,用于生成在Android应用程序Manakyun中使用的JMDict数据库。

dev-master 2021-07-01 11:24 UTC

This package is auto-updated.

Last update: 2024-09-29 06:03:01 UTC


README

Minimum PHP Version

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)