Java实现英汉词典API初版发布在Maven

简介: 基于ECDICT词典数据, 开发一个Java库实现词典接口, 发布到Maven主库. Publish Java library to provide English-to-Chinese dictionary API on Maven Central.

在打算批量代码汉化工具 · Issue #86 · program-in-chinese/overview时, 发现没有现成的Java库实现英汉查询功能. 于是开此项目.

源码库: program-in-chinese/english-chinese-dictionary

API使用中文命名. 源码也是.
2018_09_06_at_11_03_30_PM_java_ecdict_api

使用时在Maven项目中添加依赖:

<dependency>
  <groupId>com.codeinchinese</groupId>
  <artifactId>english-chinese-dictionary</artifactId>
  <version>0.0.1</version>
</dependency>

词典数据来源于skywind3000/ECDICT. 77万个词条, 除不到2千词之外绝大多数有中文释义. 将这个词典数据(csv文件)封装的后果是这个jar包有22MB, 首次调用'查词'接口需要一段时间加载数据(本机测试十秒左右), 之后的查词是哈希表查询, 速度还能接受.

下面是返回词条数据结构:

public class 词条 {

  public String 英文;
  public String 音标;
  public List<String> 英文释义;
  public List<String> 中文释义;
  public String 词语位置;
  public int 柯林斯星级;
  public boolean 为牛津三千核心词;

  // zk/中考,gk/高考,cet4/四级等
  public String 标签;

  // 如果为0, 无词频数据, 否则为正数
  public int 英国国家语料库词频顺序;
  public int 当代语料库词频顺序;

  public List<词形变化> 变形;
  public String 详细;
  public String 在线读音音频;
...
}

词形的几种变化:

public enum 词形变化类型 {
  过去式("p"), // past tense
  过去分词("d"),
  现在分词("i"), // -ing
  第三人称单数("3"),
  形容词比较级("r"), // -er
  形容词最高级("t"), // -est
  名词复数形式("s"),
  原型("0"),
  原型变换形式("1");
...
}

接口定义很简单, 调用:

英汉词典.查词("apple")

返回值打印输出(toString生成类JSON样式, 下同):

{
英文: apple
音标: 'æpl
英文释义: n. fruit with red or yellow or green skin and sweet to tart crisp whitish flesh
n. native Eurasian tree widely cultivated in many varieties for its firm rounded edible fruits

中文释义: n. 苹果, 家伙
[医] 苹果

词语位置: 
柯林斯星级: 3
为牛津三千核心词: true
标签: zk gk
英国国家语料库词频顺序: 2446
当代语料库词频顺序: 2695
变形: 名词复数形式:apples; 
详细: 
在线读音音频: 
}

可以查出原型:

{
英文: shopping
音标: 'ʃɒpiŋ
英文释义: n. searching for or buying goods or services
n. the commodities purchased from stores

中文释义: n. 买东西, 购物
[经] 购物, 买东西

词语位置: 
柯林斯星级: 3
为牛津三千核心词: true
标签: gk cet4 cet6 ielts
英国国家语料库词频顺序: 2763
当代语料库词频顺序: 2713
变形: 原型:shop; 原型变换形式:i; 现在分词:shopping; 
详细: 
在线读音音频: 
}

也有很多常见短语:

{
英文: beat around the bush
音标: 
英文释义: 
中文释义: 转弯抹角, 旁敲侧击, 拖延谈及正题

词语位置: 
柯林斯星级: 0
为牛津三千核心词: false
标签: 
英国国家语料库词频顺序: 0
当代语料库词频顺序: 0
变形: 
详细: 
在线读音音频: 
}

其中释义部分只根据源数据格式说明中按行分拆, 并未进行进一步提取. 打算以后在实际使用中进行改进. 也许"n. 苹果, 家伙"提取为:

{
词性: 名词
释义: ["苹果", "家伙"]
}

欢迎尝鲜.

2018-09-06

相关文章
|
3天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
16 0
|
8天前
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
11天前
|
Java 编译器 API
Java新手必看:轻松掌握API文档使用技巧!
API是预定义的接口,允许开发人员使用一组例程及协议而无需了解内部实现细节。Java API文档详述了标准类库,支持平台无关性和安全性,确保Java程序跨平台的一致性行为。Java类可通过单文件或多文件定义,并支持内部类及包组织。常用API如`Scanner`用于输入处理,`Random`生成随机数,`ArrayList`提供动态列表管理,而`Arrays`和`Math`分别简化数组操作和数学计算。掌握这些API能显著提升Java开发效率。
|
1天前
|
Java API
Java 8新特性:Lambda表达式与Stream API的深度解析
【7月更文挑战第61天】本文将深入探讨Java 8中的两个重要特性:Lambda表达式和Stream API。我们将首先介绍Lambda表达式的基本概念和语法,然后详细解析Stream API的使用和优势。最后,我们将通过实例代码演示如何结合使用Lambda表达式和Stream API,以提高Java编程的效率和可读性。
|
2天前
|
Java API Spring
打造未来电商新引擎:揭秘Java可扩展API设计,让支付与物流灵活如丝,引领电商时代潮流!
【8月更文挑战第30天】本文通过电商平台案例,探讨了如何设计可扩展的Java API。首先定义支付和物流服务的接口与抽象类,然后实现具体服务,接着引入工厂模式或依赖注入管理服务实例,最后通过配置实现灵活扩展。这种设计确保了应用架构的灵活性和长期稳定性。
13 3
|
8天前
|
安全 Java API
|
10天前
|
SQL Java 关系型数据库
理解 Java 持久化 API(JPA)
【8月更文挑战第21天】
10 1
|
11天前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
29 1
|
15天前
|
Java API 开发者
|
5天前
|
Java API 网络安全
探索Java中的Stream API:从基础到高级应用云计算与网络安全:技术融合与挑战
【8月更文挑战第27天】在Java的海洋中,Stream API犹如一艘强大的船,让开发者能以声明式的方式处理集合数据。本文将启航,先带你了解Stream的基本概念和用法,再深入探讨其高级特性,如并行流、管道操作以及性能考量。我们将通过具体代码示例,展示如何高效利用Stream API简化数据处理流程,提升代码的可读性和性能。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往更优雅编程风格的大门。

推荐镜像

更多
下一篇
云函数