随着《轩辕剑》的热播,里面的男主角陈靖仇以“偶像剧方言王子”的称号红遍全国,他那标准的陕西汉中方言戳中了观众的笑点,方言逐渐被人们接受,并以各种表现形式展现在艺术的舞台上,为大家带来欢乐。同时,全国各地也正在加大建立有声数据库保护地方方言的进度。

教育部副部长、国家语委主任李卫红介绍,中国语言资源有声数据库将全面科学地描写、展示中国少数民族语言和汉语方言的面貌,保护民族语言文化遗产。该库的最大的特点是“有声”,将实地采集真实语音并建立真实语音及其转写文本的语料库。

"语言资源有声数据库将记录21世纪中国人说话的样子,在50年、100年后让子子孙孙听到。”国家语委副主任、教育部语信司司长李宇明说。

那么既然我们能够大力开发中文翻译为英文的软件,又为何不为保护国家文化遗产开发一款普通话转方言的分词翻译软件呢。Chinese dialect convert是一款基于方言分词翻译的软件,软件实现的核心就是基于方言分词库的最大粒度分词器。下面我将详细介绍Chinese dialect convert 软件各部分结构和实现。

图1 软件整体流程介绍

方言分词器

方言分词器是基于IK analyzer实现的,同时也对其做了相应的修改。方言分词器是采用基于词库的中文最大分词技术,进行词语切分。词库存储采用与IK相同结构,即数组加哈希表。句子进行词元切分采用正向最大粒度切分,取基于方言词库的最大匹配词为词元,当然在不同语境下切分的粒度应该是不定的,但是为了简单起见,这里一律按最大匹配分词处理。

ConfigurationDialect 类:主要负责各种方言分词器的实例化,以及单例模式词典的初始化启动。

LanDictionary 类 :方言词典的加载,以及扩展词典的加载。

ShanXiSegmenter类:实现了陕西方言分词,主要基于陕西方言词典进行正向最大切分

ShanXiSegmenter类:实现了四川方言分词,主要基于四川方言词典进行正向最大切分

图2 词典存储结构

词典中存放着可以进行方言分词转换的普通话词元,存储结构中当数组中元素大于3时采用哈希表存储。

IK分词器

保留IK分词器已有结构和类。

IKanalyzerSeg 类:提供IK分词的接口,未匹配词使用IK进行分词。这里IK分词器如何进行中文分词不作介绍。

数据库设计

由于方言种类繁多,如果所有都存放在内存中显然是不可能的,将可以进行方言分词转换的普通话词库存放于内存中,用于句子的中文分词,但将该普通话词语对应的方言,以及用于相似度匹配的md5值,和关键字存放于数据库之中,在翻译过程中需要查询数据库中每种方言对应的表来获得结果。(字符集为utf8格式)

图3 数据库方言表结构

结果收集器

结果收集器主要就是对数据库查询接口的一个封装,直接提供对外统一接口,只需要输入对应的普通话句子或者词元,就能获得方言翻译结果,以及未匹配词语的相似词优先级队列,可以选取每个在数据库中存在的相似词补充基于词库翻译的局限性。

如:词库中只有“妈妈”一词,但是用户输入句子是母亲或者娘,其实是一个概念,但是词库未全部收录这些词,就需要进行相似词搜索,首先根据知网词库获得"妈妈"一词的概念,对前三个概念分别进行md5值提取并合并,然后利用合并的md5值模糊查询数据库,目的在于获得含有相同概念的词元,并计算查询词与这些具有相同概念的相似词之间的相似度,并对每个未翻译普通话词元建立其对应的相似词优先级队列。

图4结果收集器整理流程

重要辅助类

原始文件提取类:ExtractFile类,根据提供的方言和普通话对应文件,建立数据库。

主要功能:1 提取方言及其对应普通话 2 提取普通话关键词 3 查询知网概念集,提取该普通话对应的前3个概念集,若不满则提取所有概念集,并对每个概念集进行md5值提取,合并这几个md5值,用于后面的相似词模糊查询

原始文件格式:最好为  方言-普通话

数据库连接辅助类ConnectionHelper类,提供数据库驱动加载,连接建立的辅助工作

数据库采用的是mysql-5.5.20-win32版本,采用jdbc连接数据

由于能力有限,处于摸索阶段,这款开源的中文方言分词软件设计和实现上面还有很多可以改进,同时我想随着词库的扩展,以及普通话转方言语义研究的深入,合理的将普通话转换为对应的方言语句还是有可能的。我也希望作为一款开源的软件,大家能够互相交流,共同完善这款方言转换软件,使它的结构更加合理,翻译更加准确,词库更加完备,为国家文化遗产的保留共享我们ITer的一份力量。

在此感谢IK analyzer的作者,以及基于知网语义相似度的计算作者,和北航的一位同学实现的词语相似度计算的开源程序库,我才能结合他们的程序和思想来初步实现自己对于方言转换器这款软件的设计和实现。

附录:

该软件sourceforge地址: https://sourceforge.net/projects/chinese-dialect/

该软件 oschina地址: http://www.oschina.net/p/chinese-dialect/edit

我的邮件地址 : handsomestone@gmail.com

开源方言分词转换软件Chinese dialect convert诞生了相关推荐

  1. handbrake 下载是php,Handbrake 优秀开源视频转换软件

    它叫handbreak,但却不是手刹的意思,它是一款优秀的开源视频转换软件.与大量的X264 GUI软件不同的是,handbreak不仅支持Windows平台,更是提供了MAC OS以及Ubuntu版 ...

  2. 常用的开源中文分词工具

    转载自:  http://www.scholat.com/vpost.html?pid=4477 常用的开源中文分词工具 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及 ...

  3. 中文开源汉语分词工具

    本文转载自:http://www.scholat.com/vpost.html?pid=4477 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及切词,这里整理了一些中文 ...

  4. 基于HTTP协议的开源中文分词系统:HTTPCWS 1.0.0 发布

    基于HTTP协议的开源中文分词系统:HTTPCWS 1.0.0 发布[原创] 发布版本: httpcws 1.0.0 (最新版本:2009-08-10发布) 程序网址:http://code.goog ...

  5. 11大Java开源中文分词器的使用方法和分词效果对比,当前几个主要的Lucene中文分词器的比较...

    本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那 ...

  6. 11大Java开源中文分词器的使用方法和分词效果对比

    2019独角兽企业重金招聘Python工程师标准>>> 本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了1 ...

  7. 【Shotcut】开源免费视频编辑软件 - 微信视频编辑利器

    博文目录 一.Shotcut是什么?有什么特点? 二.Shotcut下载.安装 2.1 官网下载 2.2 Shotcut安装 2.3 Shotcut启动 三.编辑一个简单的微信视频号 3.1 设置项目 ...

  8. 【分词器】11大Java开源中文分词器的使用方法和分词效果对比

    本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那 ...

  9. 11大Java开源中文分词器的使用方法和分词效果对比(转)

    原文出处: 杨尚川 本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码 ...

最新文章

  1. 互联网公司「敏捷开发」,打造高效执行能力
  2. pandas将dataframe原有的数据列名称转化为整数数值列名称(convert dataframe column labelsl into integers)
  3. php 如何判断是否搜索出结果,搜索PHP - 如何调出搜索框没有结果
  4. Confluence 6 CSS 编辑快速入门
  5. pdf导入ps颜色太浅_PDF 文件编辑转换难?或许你需要一个扫描全能王!
  6. 【数据结构基础】【散列表】
  7. 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev
  8. 浏览器的cookie和服务器存储的session有什么关联,下面妙文为你解答
  9. “地球观光之旅”来到这座赛博朋克的城市了!
  10. python基础知识-Python学习--最完整的基础知识大全
  11. java calendar 时分秒_Java中Calendar类的常用方法(对时间进行计算的类)
  12. Atitit 编程语言知识点tech tree v2 attilax大总结
  13. Java 加密解密工具类 数据加密后如何查询
  14. 3dmax导出fbx事项注意
  15. java局域网发送文件_Java如何实现局域网文件传输代码案例分享
  16. C语言例题:输入某年某月某日,判断这一天是这一年的第几天?
  17. fscanf php,php fscanf() 函数使用方法
  18. 2ASK、2FSK、2PSK、2DPSK、4ASK、4FSK、4PSK、4DPSK、QPSK,以及4QAM、16QAM和MSK、GMSK这些调制和解调过程
  19. 慢啃《编程珠玑》【持续更新ing……】
  20. 商城系统开发使用微信服务号和小程序那个好?

热门文章

  1. 根据下图实现类。在CylinderTest类中创建Cylinder类的对象,设置圆柱的底面半径和高,并输出圆柱的体积,继承性
  2. Python:实现carrier concentration载流子浓度算法(附完整源码)
  3. oracle电子商务套件使用手册,Oracle电子商务套件概述.pdf
  4. 营销活动此起彼伏,KTV加盟宝乐迪再掀新浪潮
  5. iOS WebDriverAgent 环境搭建
  6. python环境配置(MacWindows)
  7. 下载Stani‘s Python Editor
  8. Fun with Unit Tests – Testing abstract classes
  9. 【20200208】【lyk】牛牛的DRB迷宫
  10. 日拱一卒——LeetCode 51.N皇后