java 中文分词转拼音_如何实现拼音与汉字的互相转换
基于词库的汉字转拼音
词库中既要包含每个字的拼音,也要包含常用单词/短语的读音。有些字是多音字,所以至少要保存其最常用的读音,不常用的读音多出现在单词/短语里。
好了,词库准备好了,现在手头有一句话要转换要转换为拼音,这句话是:
你好世界杯
我们的词库是这样子的:
你:nǐ
好:hǎo,hào
世:shì
界:jiè
杯:bēi
世界:shì,jiè
你好:nǐ,hǎo
苦尽甘来:kǔ,jìn,gān,lái
词库中最长的词苦尽甘来包含4个字。所以你好世界杯从4个字开始匹配:
判断你好世界是否在词库中,不在;
判断你好世是否在词库中,不在;
判断你好是否在词库中,在,得到nǐ,hǎo;
判断世界杯是否在词库中,不在;
判断世界是否在词库中,在,得到shì,jiè;
判断杯是否在词库中,在,得到bēi;
于是你好世界杯被转换为nǐ,hǎo,shì,jiè,bēi。
基于词库和分词工具的汉字转拼音
纯粹的基于词库的方法在实际的使用中会遇到问题,例如提出了解决方案这句话中了解会被当作一个单词,所以会得到错误的结果:
tí,chū,liǎo,jiě,jué,fāng,àn
更好的方法是先进行分词得到:
提出
了
解决
方案
然后基于词库对每个结果分别处理。
基于HMM的拼音转汉字
这里的拼音一般不带声调。
将汉字作为隐藏状态,拼音作为观测值,使用viterbi算法可以将多个拼音转换成合理的汉字。例如给出ti,chu,le,jie,jue,fang,an,viterbi算法会认为提出了解决方案是最合理的状态序列。
HMM需要三个分布,分别是:
初始时各个状态的概率分布
各个状态互相转换的概率分布
状态到观测值的概率分布
这个3个分布就是三个矩阵,根据一些文本库统计出来即可。
viterbi算法基于动态规划,维基百科 - Viterbi algorithm给出了很好的解释和示例。
基于词库的拼音转汉字
原则:
词的权重大于字的权重;
转换中匹配的词越多,权重越小。
词库的格式是:
拼音:单词:权重
例如:
ni:你:0.15
ni:泥:0.12
a:啊:0.18
hao:好:0.14
nihao:你好:0.6
假如输入是ni,hao,a,我们计算一下各种组合的权重:
组合
权重
你,好,啊
0.15*0.14*0.18 = 0.00378
泥,好,啊
0.12*0.14*0.18 = 0.003024
你好,啊
0.6*0.18 = 0.108
可以看出,你好,啊是最好的结果。
实际实现中需要用到动态规划, 和求有向无环图中两点之间最短距离类似。
代码实现
java 中文分词转拼音_如何实现拼音与汉字的互相转换相关推荐
- 开源 Java 中文分词器 Ansj 作者孙健专访
Ansj 是一个开源的 Java 中文分词工具,基于中科院的 ictclas 中文分词算法,比其他常用的开源分词工具(如mmseg4j)的分词准确率更高. 在线演示: http://ansj.sdap ...
- Java中文分词组件 - word分词(skycto JEEditor)
转自:https://my.oschina.net/apdplat/blog/228619#OSC_h4_8 Java分布式中文分词组件 - word分词 word分词是一个Java实现的分布式的中文 ...
- java中文分词的简单实现
java中文分词的简单实现 中文分词 算法 算法思路 算法实现 代码及注释 评价 结语 中文分词 通俗来讲,中文分词是指将一句中文句子中的所有中文词汇相互分隔开来.它是文本挖掘的基础,有着十分广阔的应 ...
- java 中文分词转拼音_java 支持分词的高性能拼音转换工具, 速度是 pinyin4j 的两倍...
java 支持分词的高性能拼音转换工具, 速度是 pinyin4j 的两倍 pinyin https://github.com/houbb/pinyin 是 java 实现的高性能中文拼音转换工具. ...
- java 中文分词转拼音_Java实现将汉字转化为汉语拼音的方法
本文实例讲述了Java实现将汉字转化为汉语拼音的方法.分享给大家供大家参考,具体如下: 网上乱转,偶然看到一个很有意思的小工具,名字叫pinyin4j,可以把汉字转换为汉语拼音,利用他的话再配合上lu ...
- java中文分词工具_中文分词工具(LAC) 试用笔记
一.背景 笔者2年前写过一篇<PHP使用elasticsearch搜索安装及分词方法>的文章,记录了使用ES的分词的实现步骤,最近又需要用到分词,在网上发现一个百度的中文分词项目,中文词法 ...
- java中文分词工具_中文分词常用方法简述
中文分词 就是将一句话分解成一个词一个词,英文中可以用空格来做,而中文需要用一些技术来处理. 三类分词算法: 1. 基于字符串匹配: 将汉字串与词典中的词进行匹配,如果在词典中找到某个字符串,则识别出 ...
- Jcseg是基于mmseg算法的一个轻量级Java中文分词器
Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同 ...
- java jcseg 官网_Jcseg轻量级Java中文分词器2.6.5最新版
Jcseg分词器官方版是一款简单且超级好用的轻量级Java分词工具,它可以帮助用户轻松提取关键词和关键词,并为Java的使用提供帮助,该软件还提供了一个基于Jetty的Web服务器,可以满足用户的各种 ...
- java中文分词算法_Java实现逆向最大匹配中文分词算法
写道 //Java实现逆向最大匹配中文分词算法 public class SplitChineseCharacter { public static void main(String[] args) ...
最新文章
- 老谢oracle视频笔记_day02
- 如何按PHP中给定键的值对关联数组进行排序?
- modelling notes and trails
- Mybatis+MySQL动态分页查询数据经典案例
- rpm linux gcc安装目录,Linux环境下通过rpm安装gcc的顺序
- Java中包、导包、修饰符和内部类
- Uva 437 - The Tower of Babylon(DP)
- 2019-4-21 - plan
- mysql可变数据类型_【Python面试】 说说Python可变与不可变数据类型?
- Linux查找命令与find命令详解
- 通过java下载B站视频
- 南京大学计算机考研的重点,南京大学计算机考研
- PCB表面贴片元件的手工焊接技巧
- 回声消除(AEC)初体验之matlab仿真
- SSL/TLS 受诫礼攻击漏洞的问题的解决记录
- 计算机用户名英文名称,好听的电脑英文用户名
- R语言forestplot 根据分组设置不同颜色
- 【MySQL5.7指南】第一章——概述
- 第14章传智书城前台程序设计
- 修改电脑C:\User\用户名文件夹的名字
热门文章
- C# 报错 provisional headers are shown learn more
- 计算机装系统找不到硬盘分区,系统安装找不到现有分区,教您如何解决系统安装找不到现有分区...
- 检测到硬盘错误:在MBR硬盘上没有找到可以引导的分区
- Windows微信双开,三开,多开小程序!start C:\“Program Files (x86)“\Tencent\WeChat\WeChat.exe
- LaTeX 页眉和页脚
- word文档单独删除或修改首页或某一页的页眉页脚及其下划线
- ubuntu 18.04设置静态ip(固定IP地址)
- 微信H5禁止分享功能
- LabVIEW编程LabVIEW控制GPS例程与相关资料
- acl 影响因子_计算机领域EI和SCI收录期刊及影响因子