精华内容
下载资源
问答
  • 多音字组词归纳成词典文件,解决多音字拼音的问题
  • 多音字姓名拼音表.txt

    2019-08-01 11:21:23
    百家姓当中多音字拼音表,用于通讯录名称排序使用。
  • 中文转拼音 支持多音字中文转拼音 支持多音字中文转拼音 支持多音字中文转拼音 支持多音字
  • 在很时候我们遇到了各种各样的问题,就是在类似于suggest当中需要输入汉字转为拼音或者跟据拼音来产生热门的关键词。 热门关键词在这里我们暂时不做讨论。我们来说一下拼音处理的手法。在拼音处理的过程中有个...

    在很多时候我们遇到了各种各样的问题,就是在类似于suggest当中需要输入汉字转为拼音或者跟据拼音来产生热门的关键词。

    热门关键词在这里我们暂时不做讨论。我们来说一下拼音处理的手法。在拼音处理的过程中有一个方案必须要做到的就是有一个拼音库。在这儿我会把拼音库给大家,让大家进行下载。

    此拼音处理类存在的问题是效率过低,我们在处理的时候建议写成PHP扩展的模式来进行处理。在下一期中我们将使用PHP扩展的模式来进行处理和讲解。

    拼音库的下载地址:http://www.mdbg.net/chindict/chindict.php?page=cedict

    下面是使用演示:

    echo Pinyin::trans(‘带着希望去旅行,比到达终点更美好’), “\n”;

     //output: “dài zhe xī wàng qù lǔ xíng bǐ dào dá zhōng diǎn gèng měi hǎo”* </pre>

    下面是实现的代码:
    class Pinyin
    {

    /**
    * dictionary path
    *
    * @var string
    */
    protected $dictionary;

    /**
    * settings
    *
    * @var array
    */
    protected static $setting = array(
    ‘delimiter’ => ‘ ‘,
    ‘accent’ => true,
    );

    /**
    * instance
    *
    * @var Pinyin
    */
    protected static $instance;

    /**
    * constructor
    *
    * set dictionary path.
    */
    public function __construct()
    {
    ini_set(‘memory_limit’, ‘160M’);
    $this->dictionary = __DIR__ . ‘/cedict/cedict_ts.u8′;
    }

    /**
    * set the dictionary.
    *
    * @param array $setting settings.
    */
    public static function set(array $setting = array())
    {
    self::$setting = array_merge(self::$setting, $setting);
    }

    /**
    * get Pinyin instance
    *
    * @return Pinyin
    */
    public static function getInstance()
    {
    if (is_null(self::$instance)) {
    self::$instance = new self;
    }

    return self::$instance;
    }

    /**
    * chinese to pinyin
    *
    * @param string $string source string.
    * @param array $setting settings.
    *
    * @return string
    */
    public static function trans($string, array $setting = array())
    {
    $instance = self::getInstance();

    // merge setting
    empty($setting) || self::set($setting);

    $dictionary = $instance->loadDictionary();

    // do replace
    foreach ($dictionary as $line) {
    $string = str_replace($line['simplified'], “{$line['pinyin_marks']} “, $string);
    if (!$instance->containsChinese($string)) {
    break;
    }
    }

    // add accents
    if(self::$setting['accent']) {
    $string = $instance->pinyin_addaccents(strtolower($string));
    } else {
    $string = $instance->removeTone(strtolower($string));
    }

    // clean the string
    $string = $instance->removeUnwantedCharacters($string);

    // add delimiter
    $string = $instance->addDelimiter($string);

    return $instance->escape($string);
    }

    /**
    * load dictionary content
    *
    * @return array
    */
    protected function loadDictionary()
    {
    $cacheFilename = $this->getCacheFilename($this->dictionary);

    // load from cache
    if (file_exists($cacheFilename)) {
    return $this->loadFromCache($cacheFilename);
    }

    // parse and cache
    $parsedDictionary = $this->parseDictionary($this->dictionary);
    $this->cache($cacheFilename, $parsedDictionary);

    return $parsedDictionary;
    }

    /**
    * get the filename of cache file.
    *
    * @param string $dictionary dictionary path.
    *
    * @return string
    */
    protected function getCacheFilename($dictionary)
    {
    is_dir(__DIR__ .’/cache/’) || mkdir(__DIR__ .’/cache/’, 0755, true);

    return __DIR__ .’/cache/’ . md5($dictionary);
    }

    /**
    * parse the dict to php array
    *
    * @param string $dictionary path of dictionary file.
    *
    * @return array
    */
    protected function parseDictionary($dictionary)
    {
    //ini_set(‘memory_limit’, ‘180M’);
    $dictionary = file($dictionary);
    $regex = “#(.*?) (.*?) \[(.*?)\] \/(.*)\/#”;

    $content = array();

    foreach ($dictionary as $entry) {
    if (0 === stripos($entry, ‘#’)) {
    continue;
    }

    preg_match($regex, $entry, $matches);

    $content[] = array(
    //’traditional’ => $matches[1],
    ‘simplified’ => $matches[2],
    //’pinyin_numbers’ => $matches[3],
    ‘pinyin_marks’ => $matches[3],
    //’translation’ => $this->escape($matches[4]),
    );
    }

    // sort by simplified string length.
    usort($content, function($a, $b){
    if (mb_strlen($a['simplified']) == mb_strlen($b['simplified'])) {
    return 0;
    }

    return mb_strlen($a['simplified']) < mb_strlen($b['simplified']) ? 1 : -1;
    });

    return $content;
    }

    /**
    * load dictionary from cached file
    *
    * @param string $dictionary cached file name
    *
    * @return array
    */
    protected function loadFromCache($dictionary)
    {
    return include $dictionary;
    }

    /**
    * write array to file
    *
    * @param string $filename filename.
    * @param array $array parsed dictionary.
    *
    * @return void
    */
    protected function cache($filename, $array)
    {
    file_put_contents($filename, “ ‘u’,
    ‘/\d/’ => ”,
    );

    return preg_replace(array_keys($replacement), $replacement, $string);
    }

    /**
    * Credits for these 2 functions go to Bouke Versteegh, who shared these
    * at http://stackoverflow.com/questions/1598856/convert-numbered-to-accentuated-pinyin
    *
    * @param string $string The pinyin string with tone numbers, i.e. “ni3 hao3″
    *
    * @return string The formatted string with tone marks, i.e.
    */
    protected function pinyin_addaccents($string)
    {
    # Find words with a number behind them, and replace with callback fn.
    return str_replace(‘u:’, ‘ü’, preg_replace_callback(
    ‘~([a-zA-ZüÜ]+\:?)(\d)~’,
    array($this, ‘pinyin_addaccents_cb’),
    $string));
    }

    # Helper callback
    protected function pinyin_addaccents_cb($match)
    {
    static $accentmap = null;

    if ($accentmap === null) {
    # Where to place the accent marks
    $stars =
    ‘a* e* i* o* u* ü* ‘ .
    ‘A* E* I* O* U* Ü* ‘ .
    ‘a*i a*o e*i ia* ia*o ie* io* iu* ‘ .
    ‘A*I A*O E*I IA* IA*O IE* IO* IU* ‘ .
    ‘o*u ua* ua*i ue* ui* uo* üe* ‘ .
    ‘O*U UA* UA*I UE* UI* UO* ÜE*';
    $nostars =
    ‘a e i o u ü ‘ .
    ‘A E I O U Ü ‘ .
    ‘ai ao ei ia iao ie io iu ‘ .
    ‘AI AO EI IA IAO IE IO IU ‘ .
    ‘ou ua uai ue ui uo üe ‘ .
    ‘OU UA UAI UE UI UO ÜE';

    # Build an array like array(‘a’ => ‘a*’) and store statically
    $accentmap = array_combine(explode(‘ ‘, $nostars), explode(‘ ‘, $stars));
    }

    static $vowels = array(‘a*’, ‘e*’, ‘i*’, ‘o*’, ‘u*’, ‘ü*’, ‘A*’, ‘E*’, ‘I*’, ‘O*’, ‘U*’, ‘Ü*’);

    static $pinyin = array(
    1 => array(‘ā’, ‘ē’, ‘ī’, ‘ō’, ‘ū’, ‘ǖ’, ‘Ā’, ‘Ē’, ‘Ī’, ‘Ō’, ‘Ū’, ‘Ǖ’),
    2 => array(‘á’, ‘é’, ‘í’, ‘ó’, ‘ú’, ‘ǘ’, ‘Á’, ‘É’, ‘Í’, ‘Ó’, ‘Ú’, ‘Ǘ’),
    3 => array(‘ǎ’, ‘ě’, ‘ǐ’, ‘ǒ’, ‘ǔ’, ‘ǚ’, ‘Ǎ’, ‘Ě’, ‘Ǐ’, ‘Ǒ’, ‘Ǔ’, ‘Ǚ’),
    4 => array(‘à’, ‘è’, ‘ì’, ‘ò’, ‘ù’, ‘ǜ’, ‘À’, ‘È’, ‘Ì’, ‘Ò’, ‘Ù’, ‘Ǜ’),
    5 => array(‘a’, ‘e’, ‘i’, ‘o’, ‘u’, ‘ü’, ‘A’, ‘E’, ‘I’, ‘O’, ‘U’, ‘Ü’)
    );

    list(, $word, $tone) = $match;
    # Add star to vowelcluster
    $word = strtr($word, $accentmap);
    # Replace starred letter with accented
    $word = str_replace($vowels, $pinyin[$tone], $word);

    return $word;
    }

    }

    感谢本文的作者:@安小超 www.joychao.cc

    展开全文
  • android多音字拼音工具分装

    千次阅读 2018-04-12 11:09:57
    将项目中的多音字拼音工具抽取出来了。具备资源小,算法简单的特色。 提供了多音字的字典,放在项目的assert文件夹中。 主要算法如下: public class CharacterParser { private static int[] pyvalue ...

    一.项目结构

    本项目分为两个部分,一部分是多音字资源文件,另外一部分是汉字转拼音以及算法部分。

    下载地址:https://download.csdn.net/download/MatrixMind/15468700

    二.内容截图

    在Android10平台建了一个测试多音字转拼音的demo。内容如下

    1.项目结构图

    2.多音字内容图,用户可以根据实际需求自己添加多音字本项目中搜录了常用的多音字可以应付大部分生活中的场景了。

    3.运行结果图

    实际运行结果如下:

     

    展开全文
  • C# 汉字转拼音 支持多音字

    热门讨论 2013-03-26 11:56:28
    C# 汉字转拼音 支持多音字
  • 中文转拼音 完美支持多音字 中文转拼音 完美支持多音字
  • coreseek4.1 支持多音字拼音索引 win64

    热门讨论 2013-09-03 14:42:01
    Coreseek 是款中文全文检索/搜索软件,以GPLv2许可协议开源...此为win64编译程序(2版,支持utf-8多音字,解决了个内存泄露的bug)。win32(1版)下载地址:http://download.csdn.net/detail/wangshaner1/6192947
  • 主要介绍了android实现汉字转拼音功能,带多音字识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • JAVA pinyin4j 中文多音字拼音转字母大写 /** 汉字转化为拼音的工具类 @author liuyazhuang */ class PinyinTool { /** * 解析并组合拼音,对象合并方案 * * @return */ private static ...

    JAVA pinyin4j 中文多音字转拼音转字母大写;

    class PinyinTool {

    /**
     * 解析并组合拼音,对象合并方案
     *
     * @return
     */
    private static String[] parseTheChineseByObject(
            List<Map<String, Integer>> list) {
        String[] resultStr=new String[]{};
        Map<String, Integer> first = null; // 用于统计每一次,集合组合数据
        // 遍历每一组集合
        for (int i = 0; i < list.size(); i++) {
            // 每一组集合与上一次组合的Map
            Map<String, Integer> temp = new Hashtable<String, Integer>();
            Map<String, Integer> daxTemp = new Hashtable<String, Integer>();
            // 第一次循环,first为空
            if (first != null) {
                // 取出上次组合与此次集合的字符,并保存
                for (String s : first.keySet()) {
                    for (String s1 : list.get(i).keySet()) {
                        if (!Character.isLowerCase(s.charAt(0)))
                        {
                            String dax="";
                            //拼音转大写
                            String daxStr = s1.toUpperCase().charAt(0) + s1.substring(1);
                            if (daxStr.length() > 1) {
                                dax += daxStr.subSequence(0, 1);
                            } else {
                                dax += daxStr;
                            }
                            dax=s+dax;
                            daxTemp.put(dax, 2);//拼音大写
                            continue;
                        }
                        String str = s + s1;
                        temp.put(str, 1);
                    }
                }
                // 清理上一次组合数据
                if (temp != null && temp.size() > 0) {
                    first.clear();
                }
            } else {
                for (String s : list.get(i).keySet()) {
                    String str = s;
                    String dax="";
                    //拼音转大写
                    String daxStr = s.toUpperCase().charAt(0) + s.substring(1);
                    if (daxStr.length() > 1) {
                        dax += daxStr.subSequence(0, 1);
                    } else {
                        dax += daxStr;
                    }
                    daxTemp.put(dax, 2);//拼音大写
                    temp.put(str, 1);
                }
            }
            // 保存组合数据以便下次循环使用
            if (temp != null && temp.size() > 0) {
                first = temp;
                first.putAll(daxTemp);
            }
        }
        if (first != null) {
            // 遍历取出组合字符串
            for (String str : first.keySet()) {
                //取出大写字符串
                if(!Character.isLowerCase(str.charAt(0))){
                    resultStr[0] += (str + ",");
                }
                resultStr[1] += (str + ",");
            }
        }
        if (resultStr[0].length() > 0) {
            resultStr[0] = resultStr[0].substring(0, resultStr[0].length() - 1);
            resultStr[1] = resultStr[1].substring(0, resultStr[1].length() - 1);//大写字符串
        }
        return resultStr;
    }
    
    
    
    /**
     * 汉字转换位汉语全拼,英文字符不变,特殊字符丢失
     * 支持多音字,生成方式如(重当参:zhongdangcen,zhongdangcan,chongdangcen
     * ,chongdangshen,zhongdangshen,chongdangcan)
     *
     * @param chines
     *            汉字
     * @return 拼音
     */
    public static String[] converterToSpell(String chines) {
        StringBuffer pinyinName = new StringBuffer();
        char[] nameChar = chines.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < nameChar.length; i++) {
            if (nameChar[i] > 128) {
                try {
                    // 取得当前汉字的所有全拼
                    String[] strs = PinyinHelper.toHanyuPinyinStringArray(
                            nameChar[i], defaultFormat);
                    if (strs != null) {
                        for (int j = 0; j < strs.length; j++) {
                            pinyinName.append(strs[j]);
                            if (j != strs.length - 1) {
                                pinyinName.append(",");
                            }
                        }
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                pinyinName.append(nameChar[i]);
            }
            pinyinName.append(" ");
        }
        // return pinyinName.toString();
        return parseTheChineseByObject(discountTheChinese(pinyinName.toString()));
    }
    
    /**
     * 去除多音字重复数据
     *
     * @param theStr
     * @return
     */
    private static List<Map<String, Integer>> discountTheChinese(String theStr) {
        // 去除重复拼音后的拼音列表
        List<Map<String, Integer>> mapList = new ArrayList<Map<String, Integer>>();
        // 用于处理每个字的多音字,去掉重复
        Map<String, Integer> onlyOne = null;
        String[] firsts = theStr.split(" ");
        // 读出每个汉字的拼音
        for (String str : firsts) {
            onlyOne = new Hashtable<String, Integer>();
            String[] china = str.split(",");
            // 多音字处理
            for (String s : china) {
                Integer count = onlyOne.get(s);
                if (count == null) {
                    onlyOne.put(s, new Integer(1));
                } else {
                    onlyOne.remove(s);
                    count++;
                    onlyOne.put(s, count);
                }
    
            }
            mapList.add(onlyOne);
        }
        return mapList;
    }
    

    }

    展开全文
  • WP7汉语拼音多音字处理源码 源码描述: Windows Phone 上的汉语拼音以及多音字处理 利用了Reflector,然后提取资源文件(其实就是个字典), 修改移植到了Windows Phone平台。 效率不是很高,欢迎感兴趣的用户...
  • 根据汉字获取汉语拼音的首字母,支持多音字 可以自己维护多音字词汇集 使用中有问题可以私信我解决
  • java 汉字转拼音(解决多音字问题)

    万次阅读 2016-06-29 09:33:36
    某些情况下我们希望能得到多音字的唯一拼音,此时就需要借助多音字字典了,原理很简单:给多音字一个默认的拼音并告诉计算机碰到哪些词的时候使用其它的拼音,例如 长 字,我们可以给它指定默认拼音为 zhang,并标识

    上一篇文章 Java 汉字转拼音 介绍了Java 中利用Pinyin4j 实现汉字转拼音,但是对于多音字问题采取的是组合拼音方式,例如长沙 取拼音结果就是 changsha zhangsha。某些情况下我们希望能得到多音字的唯一拼音,此时就需要借助多音字字典了,原理很简单:给多音字一个默认的拼音并告诉计算机碰到哪些词的时候使用其它的拼音,例如 长 字,我们可以给它指定默认拼音为 zhang,并标识 长沙 拼音为 chang。


    以上是自己搜集的一个多音字词典 duoyinzi_pinyin.txt

    [html] view plain copy
    1. a#阿  
    2. ao#拗  
    3. ai#艾  
    4. bang#膀 磅 蚌  
    5. ba#扒车 扒拉 扒皮  
    6. bai#叔伯 百 柏杨  
    7. bao#剥皮 薄  暴 堡 曝  
    8. beng#蚌埠  
    9. bi#复辟  臂  秘鲁 泌阳  
    10. bing#屏弃 屏气 屏除 屏退 屏息  
    11. bian#扁 便  
    12. bo#薄荷 单薄 伯 伯爵  泊 波 柏 萝卜 孛  
    13. bu#卜  
    14. can#参  
    15. cang#藏  
    16. cen#参差  
    17. ceng#曾 噌  
    18. cha#差 刹那 宝刹 一刹 查  
    19. chai#公差 差役 专差 官差 听差 美差 办差 差事 差使 肥差 当差 钦差 苦差 出差  
    20. chan#颤 单于 禅  
    21. chang#长  厂  
    22. chao#朝 嘲  
    23. che#工尺 车  
    24. chen#称职 匀称 称心 相称 对称  
    25. cheng#称 乘 澄 噌吰 橙 秤  
    26. chu#畜  
    27. chui#椎心  
    28. chuan#传  
    29. chi#匙 尺 吃  
    30. chong#重庆 重重 虫  
    31. chou#臭  
    32. chuang#经幢  
    33. chuo#绰  
    34. ci#参差 伺  龟兹  
    35. cuan#攒钱 攒聚 攒动   
    36. cuo#撮儿 撮要 撮合  
    37. da#大 嗒  
    38. dao#叨  
    39. dai#大夫  
    40. dan#单 弹  
    41. dang#铛  
    42. de#的  
    43. di#堤 底 怎的 有的 目的 标的 打的 的确 的当 的士 地 提防  
    44. diao#蓝调 调调 音调 论调 格调 调令 低调 笔调 基调 强调 声调 滥调 老调 色调 单调 腔调 跑调 曲调 步调 语调 主调 情调  
    45. ding#丁  
    46. du#读 都 度  
    47. dou#全都 句读  
    48. duo#舵 测度 忖度 揣度 猜度  
    49. dun#粮囤 盾 顿 沌 敦  
    50. e#阿谀 阿胶 阿弥 恶心  
    51. er#儿  
    52. fan#番  
    53. feng#冯  
    54. fo#佛  
    55. fu#仿佛 果脯 罘  
    56. fou#否则 否定 应否 是否 与否 否决  
    57. ga#咖喱 伽马  
    58. gai#盖  
    59. gao#告  
    60. gang#扛鼎  
    61. ge#革 蛤蚧 文蛤 蛤蜊 咯  
    62. gei#给  
    63. geng#脖颈  
    64. gong#女红  
    65. gu#谷 中鹄  鼓  
    66. gui#龟 柜 硅  
    67. gua#呱  
    68. guan#纶巾 东莞  
    69. guang#广  
    70. ha#蛤  
    71. hai#还 嗨  
    72. hao#貉子 貉绒  
    73. hang#夯 总行 分行 支行 行业 排行 行情 央行 商行 外行 银行 商行 酒行 麻行 琴行 巷道  
    74. he#和 合 核  
    75. heng#道行  
    76. hu#鹄 水浒  
    77. hua#滑  
    78. huan#归还 放还 奉还  
    79. hui#会 浍河  
    80. hong#红 虹  
    81. huo#软和 热和 暖和  
    82. ji#病革 给养 自给 给水 薪给 给予 供给 稽 缉 藉 奇数 亟 诘屈 荠菜  
    83. jia#雪茄 伽 家 价 贾  
    84. jian#见  
    85. jiang#降  
    86. jiao#嚼舌 嚼子 细嚼 角 剿 饺 脚 蕉 矫  
    87. jie#解 慰藉 蕴藉 诘  
    88. jin#矜 劲  
    89. jing#颈 景  
    90. ju#咀嚼  居 桔 句  
    91. jun#均  
    92. juan#棚圈 圈养  
    93. jv#咀嚼 趑趄  
    94. jvan#猪圈 羊圈  
    95. jue#主角 角色 旦角 女角 丑角 角力 名角 配角 咀嚼 觉  
    96. jun#龟裂 俊  
    97. jvn#龟裂  
    98. ka#咖 卡 喀  
    99. kai#楷  
    100. kang#扛 扛活 扛大  
    101. ke#咳 壳  
    102. keng#吭  
    103. kuai#会计 财会 浍  
    104. kuo#括  
    105. la#癞痢 腊  
    106. lai#癞疮 癞子 癞蛤 癞皮  
    107. lao#积潦 络子 落枕 落价 粩 姥  
    108. le#乐 勒 了  
    109. lei#勒紧  
    110. lo#然咯  
    111. lou#佝偻  
    112. long#里弄 弄堂 泷  
    113. li#跞  
    114. liao#了解 了结  明了 了得 末了 未了 了如  了如指掌 潦  
    115. liang#靓 俩  
    116. liu#六  
    117. lu#碌 陆 露  
    118. luo#络 络 落 漯  
    119. lv#率 绿  
    120. lun#纶  
    121. mai#埋  
    122. man#埋怨 蔓  
    123. mai#脉  
    124. mang#氓 芒  
    125. mao#冒  
    126. meng#群氓 盟  
    127. mei#没  
    128. mo#埋没 隐没 脉脉 模 摩  
    129. mou#绸缪 牟  
    130. mi#秘 泌尿 分泌 谜  
    131. miu#谬 谬论 纰缪  
    132. mu#人模 字模 模板 模样 模具 装模 装模做样 模子  
    133. na#哪 娜 那  
    134. nan#南  
    135. ne#哪吒 呢  
    136. nong#弄  
    137. ni#毛呢 花呢 呢绒 线呢 呢料 呢子 呢喃 溺  
    138. niao#尿 鸟  
    139. nian#粘  
    140. niang#酿  
    141. niu#执拗 拗不  
    142. nu#努  
    143. nue#疟 疟疾  
    144. nuo#婀娜 袅娜  
    145. nv#女  
    146. nve#疟原 疟蚊  
    147. o#喔  
    148. pa#扒  
    149. pai#派 迫击 迫击炮  
    150. pao#刨 炮  
    151. pang#胖 膀胱 膀肿 磅礴  
    152. pi#辟 否极 臧否 龙陂 芘  
    153. pian#扁舟 便宜  
    154. piao#朴姓  
    155. ping#屏 苹  
    156. po#湖泊 血泊  迫 朴刀 坡 陂  
    157. pu#暴十 一曝十寒 里堡 十里堡 脯 朴 曝晒 瀑 埔  
    158. qi#期 其 泣  
    159. qiu#龟兹  
    160. qi#稽首 缉鞋 栖  奇 漆 齐  
    161. qia#卡脖 卡子 关卡 卡壳 哨卡 边卡 发卡  
    162. qiao#雀盲 雀子 地壳 甲壳 躯壳  
    163. qian#纤 乾  
    164. qiang#强  
    165. qie#茄 趔趄   
    166. qin#亲 沁  
    167. qing#干亲 亲家  
    168. qu#区 趣  
    169. quan#圈 券  
    170. que#雀  
    171. ruo#若  
    172. sai#塞  
    173. se#堵塞 搪塞 茅塞 闭塞 鼻塞 梗塞 阻塞 淤塞 拥塞 哽塞  色  
    174. sha#莎 刹车 急刹 急刹车 厦  
    175. shai#色子  
    176. shao#勺  
    177. shan#姓单 单县 杉  
    178. shang#衣裳  
    179. she#拾级 折本 射 蛇  
    180. shen#沙参 野参 参王 人参 红参 丹参 山参 海参 刺参 鹿参 什 身 沈  
    181. sheng#野乘 千乘 史乘  省 晟 盛  
    182. shi#钥匙 拾荒 捡拾 拾物 家什 什物 什锦 麻什  麦什 喀什 牛什  识 似的 食 石 氏 拾 适  
    183. shuai#表率 率性 率直 率真 粗率 率领 轻率 直率 草率 大率 坦率 衰  
    184. shuang#泷水  
    185. shu#属 数 术 熟  
    186. shui#游说  
    187. shuo#数见 数见不鲜  说  
    188. si#窥伺 伺弄 伺机 似 思  
    189. su#宿  
    190. sui#尿泡  
    191. ta#拓本 拓片 碑拓 疲沓 拖沓 杂沓 沓 塔 鸿塔  
    192. tang#汤  
    193. tao#陶  
    194. tan#弹性 弹力 反弹  
    195. ti#提 体  
    196. tiao#调  
    197. ting#町 听  
    198. tui#褪  
    199. tuo#拓  
    200. tun#囤 屯  
    201. wei#尾 蔚 圩  
    202. wu#无 可恶 交恶 好恶 厌恶 憎恶 嫌恶 痛恶 深恶  
    203. wan#藤蔓 枝蔓 瓜蔓 蔓儿  莞  万 百万 皖  
    204. wai#崴  
    205. xia#虾 吓 夏  
    206. xi#栖栖 系  蹊 洗 溪 戏  
    207. xiao#校 切削 削面 刀削 刮削  
    208. xian#纤细 光纤 纤巧 纤柔 纤小 纤维 纤瘦 纤纤 化纤 纤秀 棉纤 纤尘  
    209. xiang#降 巷  
    210. xie#解数 出血 采血 换血 血糊 尿血 淤血 放血 血晕 血淋 便血 吐血 咯血 叶韵 蝎 蝎子 邪  
    211. xiu#铜臭 乳臭 成宿 星宿  
    212. xin#馨 信 鸿信  
    213. xing#深省 省视 内省 不省人事 省悟 省察 行 旅行 例行 行程 行乐 龙行 人行 流行 先行 行星 品行  发行 行政 风行 龙行 龍行 麟行 荥  
    214. xu#牧畜 畜产 畜牧 畜养 吁 麦埂圩 浒  
    215. xue#削  血  
    216. xun#荨 寻  
    217. ya#琊  
    218. yao#钥匙 金钥 耀 曜  
    219. yan#咽  殷红 腌 烟  
    220. ye#液 抽咽 哽咽 咽炎 下咽 呜咽 幽咽 悲咽 叶  葉  
    221. yi#自艾 遗 屹  
    222. yin#殷  
    223. ying#荥经  
    224. yo#杭育  
    225. yong#涌  
    226. yu#余 呼吁 吁请 吁求 育 熨帖 熨烫 於  
    227. yuan#员  
    228. yun#熨  
    229. yue#约 乐音 器乐 乐律 乐章 音乐 乐理 民乐 乐队 声乐 奏乐 弦乐 乐坛 管乐 配乐 乐曲 乐谱  锁钥 密钥 乐团 乐器  
    230. za#绑扎 结扎 包扎 捆扎 咱家  
    231. zan#攒 咱  
    232. zang#宝藏 藏历 藏文 藏语 藏青 藏族 藏医  藏药 藏蓝 西藏  
    233. zai#牛仔 龟仔 龙仔 鼻仔 羊仔  仔仔 麻仔  麵包仔 麦旺仔 鸿仔 煲仔 福仔  
    234. ze#择  
    235. zeng#曾孙 曾祖  
    236. zong#综  
    237. zha#扎  
    238. zhai#宅  
    239. zhan#不粘 粘贴 粘连  
    240. zhao#朝朝 明朝 朝晖 朝夕 朝思 有朝 今朝 朝气 朝三 朝秦 朝霞 鹰爪 龙爪 魔爪 爪牙 失着 着数 龙爪槐  
    241. zhe#折 着  
    242. zhi#标识 吱 殖 枝  
    243. zhong#重 种  
    244. zhou#粥  
    245. zhu#属意 著  
    246. zhua#爪子  
    247. zhui#椎 隹  
    248. zhuo#执著 着装 着落 着意 着力 附着 着笔 胶着 着手 着重 穿着 衣着 执着 着眼 着墨 着实 沉着 着陆 着想 着色  
    249. zhuang#幢房 一幢 幢楼  
    250. zi#仔 兹  
    251. zu#足  
    252. zuo#柞  
    253. zui#咀  


    自己封装了一个获取汉字拼音 全拼和简拼的工具类 PinyinUtils,代码如下:

    [java] view plain copy
    1. package com.ricky.java.suggestion.util;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.File;  
    5. import java.io.FileInputStream;  
    6. import java.io.FileNotFoundException;  
    7. import java.io.IOException;  
    8. import java.io.InputStreamReader;  
    9. import java.io.UnsupportedEncodingException;  
    10. import java.util.HashMap;  
    11. import java.util.Map;  
    12.   
    13. import org.apache.log4j.Logger;  
    14.   
    15. import net.sourceforge.pinyin4j.PinyinHelper;  
    16. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;  
    17. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;  
    18. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;  
    19. import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;  
    20. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;  
    21.   
    22. public class PinyinUtils {  
    23.   
    24.     private static final Logger logger = Logger.getLogger("devLog");  
    25.       
    26.     public static Map<String,String> dictionary = new HashMap<String,String>();  
    27.   
    28.     //加载多音字词典  
    29.     static{  
    30.           
    31.         BufferedReader br = null;  
    32.         try {  
    33.             File file = new File("./config/duoyinzi_pinyin.txt");  
    34.             br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));  
    35.               
    36.             String line = null;  
    37.             while((line=br.readLine())!=null){  
    38.                   
    39.                 String[] arr = line.split("#");  
    40.                   
    41.                 if(StringUtils.isNotEmpty(arr[1])){  
    42.                     String[] sems = arr[1].split(" ");  
    43.                     for (String sem : sems) {  
    44.                           
    45.                         if(StringUtils.isNotEmpty(sem)){  
    46.                             dictionary.put(sem , arr[0]);  
    47.                         }  
    48.                     }  
    49.                 }  
    50.             }  
    51.               
    52.         } catch (UnsupportedEncodingException e) {  
    53.             e.printStackTrace();  
    54.         } catch (FileNotFoundException e) {  
    55.             e.printStackTrace();  
    56.         } catch (IOException e) {  
    57.             e.printStackTrace();  
    58.         }finally{  
    59.             if(br!=null){  
    60.                 try {  
    61.                     br.close();  
    62.                 } catch (IOException e) {  
    63.                     e.printStackTrace();  
    64.                 }  
    65.             }  
    66.         }  
    67.   
    68.     }  
    69.       
    70.     public static String[] chineseToPinYin(char chineseCharacter) throws BadHanyuPinyinOutputFormatCombination{  
    71.         HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();  
    72.         outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
    73.         outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
    74.         outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);  
    75.           
    76.         if(chineseCharacter>=32 && chineseCharacter<=125){    //ASCII >=33 ASCII<=125的直接返回 ,ASCII码表:http://www.asciitable.com/  
    77.             return new String[]{String.valueOf(chineseCharacter)};  
    78.         }  
    79.           
    80.         return PinyinHelper.toHanyuPinyinStringArray(chineseCharacter, outputFormat);  
    81.     }  
    82.       
    83.     /** 
    84.      * 获取汉字拼音的全拼 
    85.      * @param chineseCharacter 
    86.      * @return 
    87.      * @throws BadHanyuPinyinOutputFormatCombination 
    88.      */  
    89.     public static String chineseToPinYinF(String chineseCharacter) throws BadHanyuPinyinOutputFormatCombination{  
    90.         if(StringUtils.isEmpty(chineseCharacter)){  
    91.             return null;  
    92.         }  
    93.           
    94.         char[] chs = chineseCharacter.toCharArray();  
    95.           
    96.         StringBuilder result = new StringBuilder();  
    97.           
    98.         for(int i=0;i<chs.length;i++){  
    99.             String[] arr = chineseToPinYin(chs[i]);  
    100.             if(arr==null){  
    101.                 result.append("");  
    102.             }else if(arr.length==1){  
    103.                 result.append(arr[0]);  
    104.             }else if(arr[0].equals(arr[1])){  
    105.                 result.append(arr[0]);  
    106.             }else{  
    107.                   
    108.                 String prim = chineseCharacter.substring(i, i+1);  
    109. //              System.out.println("prim="+prim+"**i="+i);  
    110.                   
    111.                 String lst = null,rst = null;  
    112.                   
    113.                 if(i<=chineseCharacter.length()-2){  
    114.                     rst = chineseCharacter.substring(i,i+2);  
    115.                 }  
    116.                 if(i>=1 && i+1<=chineseCharacter.length()){  
    117.                     lst = chineseCharacter.substring(i-1,i+1);  
    118.                 }  
    119.                   
    120. //              System.out.println("lst="+lst+"**rst="+rst);  
    121.                   
    122.                 String answer = null;  
    123.                 for (String py : arr) {  
    124.                       
    125.                     if(StringUtils.isEmpty(py)){  
    126.                         continue;  
    127.                     }  
    128.                       
    129.                     if((lst!=null && py.equals(dictionary.get(lst))) ||  
    130.                             (rst!=null && py.equals(dictionary.get(rst)))){  
    131.                         answer = py;  
    132. //                      System.out.println("get it,answer="+answer+",i="+i+"**break");  
    133.                         break;  
    134.                     }  
    135.                       
    136.                     if(py.equals(dictionary.get(prim))){  
    137.                         answer = py;  
    138. //                      System.out.println("get it,answer="+answer+",i="+i+"**prim="+prim);  
    139.                     }  
    140.                 }  
    141.                 if(answer!=null){  
    142.                     result.append(answer);  
    143.                 }else{  
    144.                     logger.warn("no answer ch="+chs[i]);  
    145.                 }  
    146.             }  
    147.         }  
    148.           
    149.         return result.toString().toLowerCase();  
    150.     }  
    151.       
    152.     public static String chineseToPinYinS(String chineseCharacter) throws BadHanyuPinyinOutputFormatCombination{  
    153.         if(StringUtils.isEmpty(chineseCharacter)){  
    154.             return null;  
    155.         }  
    156.           
    157.         char[] chs = chineseCharacter.toCharArray();  
    158.           
    159.         StringBuilder result = new StringBuilder();  
    160.           
    161.         for(int i=0;i<chs.length;i++){  
    162.             String[] arr = chineseToPinYin(chs[i]);  
    163.             if(arr==null){  
    164.                 result.append("");  
    165.             }else if(arr.length==1){  
    166.                 result.append(arr[0].charAt(0));  
    167.             }else if(arr[0].equals(arr[1])){  
    168.                 result.append(arr[0].charAt(0));  
    169.             }else{  
    170.                   
    171.                 String prim = chineseCharacter.substring(i, i+1);  
    172. //              System.out.println("prim="+prim+"**i="+i);  
    173.                   
    174.                 String lst = null,rst = null;  
    175.                   
    176.                 if(i<=chineseCharacter.length()-2){  
    177.                     rst = chineseCharacter.substring(i,i+2);  
    178.                 }  
    179.                 if(i>=1 && i+1<=chineseCharacter.length()){  
    180.                     lst = chineseCharacter.substring(i-1,i+1);  
    181.                 }  
    182.                   
    183. //              System.out.println("lst="+lst+"**rst="+rst);  
    184.                   
    185.                 String answer = null;  
    186.                 for (String py : arr) {  
    187.                       
    188.                     if(StringUtils.isEmpty(py)){  
    189.                         continue;  
    190.                     }  
    191.                       
    192.                     if((lst!=null && py.equals(dictionary.get(lst))) ||  
    193.                             (rst!=null && py.equals(dictionary.get(rst)))){  
    194.                         answer = py;  
    195. //                      System.out.println("get it,answer="+answer+",i="+i+"**break");  
    196.                         break;  
    197.                     }  
    198.                       
    199.                     if(py.equals(dictionary.get(prim))){  
    200.                         answer = py;  
    201. //                      System.out.println("get it,answer="+answer+",i="+i+"**prim="+prim);  
    202.                     }  
    203.                 }  
    204.                 if(answer!=null){  
    205.                     result.append(answer.charAt(0));  
    206.                 }else{  
    207.                     logger.warn("no answer ch="+chs[i]);  
    208.                 }  
    209.             }  
    210.         }  
    211.           
    212.         return result.toString().toLowerCase();  
    213.     }  
    214.           
    215. }  



    测试代码

    [java] view plain copy
    1. package com.ricky.java.suggestion.test;  
    2.   
    3. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;  
    4.   
    5. import com.ricky.java.suggestion.util.PinyinUtils;  
    6.   
    7. public class PinyinTest {  
    8.   
    9.     /** 
    10.      * @param args 
    11.      */  
    12.     public static void main(String[] args) {  
    13.   
    14.         try {  
    15.               
    16. //          String str = "长沙绿爱旅行";  
    17.             String str = "中信银行(长沙旅行社分行)";  
    18.               
    19.             System.out.println(str+" pyf="+PinyinUtils.chineseToPinYinF(str));  
    20.             System.out.println(str + " pys="+PinyinUtils.chineseToPinYinS(str));  
    21.               
    22.         } catch (BadHanyuPinyinOutputFormatCombination e) {  
    23.             e.printStackTrace();  
    24.         }  
    25.     }  
    26.   
    27. }  


    执行结果

    中信银行(长沙旅行社分行) pyf=zhongxinyinhang(changshalvxingshefenhang)
    中信银行(长沙旅行社分行) pys=zxyh(cslxsfh)




    展开全文
  • 汉字转拼音全拼 支持多音字识别
  • gbk汉字拼音对照表(支持多音字

    热门讨论 2012-03-07 15:31:19
    最全的汉字拼音表,支持多音字、音调。CSDN首发啊,
  • 这是本人从汉字输入法中反编译后取出的汉字码表,个20881个汉字,完整的汉语拼音,包括一字多音现象(即多音字)。Acess 2003文件
  • Java汉字转拼音(支持多音字
  • -- 汉字转拼音 --> <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> ...
  • 汉字转拼音首字母(UTF-8支持多音字,GB2312不支持多音字),程序hz2py_GB2312_Non-polyphone.cpp在Windows系统下VC 6.0运行通过,程序hz2py_UTF-8_Polyphone.c在Ubuntu的Linux系统下运行通过,前者不支持多音字,后者...
  • thinkphp5整合系列之汉字转拼音完美支持多音字1.进入thinkphp5项目的根目录,用composer 安装扩展2.接下来需要做的事就是在控制器中引入 /vendor/overtrue/pinyin/src/Pinyin.php 文件里面的Pinyn这个类 项目需求,...
  • 其实也就是建立个多音字词库,把预知范围的多音字写到词库里面,进行转换的时候回去多音字词库进行查找,就会得到我们需要的正确的多音字拼音。 注意事项 多音字词库,需要结合自身的业务需求来进行完善,以下实例...
  • 因项目需求,需要将中文名称转拼音存储,方便查询,考虑到多音字处理,要求最终结果如下: 举例说明:解和景都是多音字(小) 结果: [xiehejingdushiduoyinzi(xiao), xiehuojingdoushiduoyinzi(xiao), ...
  • 汉字转拼音,包含多音字的转换,开头字母的大写。
  • [img=http://hi.csdn.net/attachment/201202/23/76201_1329987018lUva.jpg][/img] [img=http://hi.csdn.net/attachment/201202/23/76201_13299872694OSg.jpg][/img] [img=... ...
  • 汉字转拼音 自适应多音字处理 姓名自动切分 目录 . 概要 二. 适用场景 三.代码运行效果 四.代码的原理 1. 到此为止,你可能会产生两个疑问: 2. 解释第个问题(汉字转拼音使用个函数就可以,为什么我的...
  • 我用过的mysql 在对省份排序时的sql: ...但是有个问题,多音字的识别问题 比如重庆,一直排在最后,数据库识别的是zhong 然后一直在想编码问题,思路方向错了,一直想不明白如何解决多音字,后来…… 发
  • 我的上篇文章实现了拼音搜索中文的功能,但是还存在缺陷,就是无法实现多音字搜索,比如王重阳(wangchongyang,wangzhongyang)只匹配了个。 这篇文章说说如何实现多音字的搜索,进入正题: 功能分析 之前...
  • 第二:句中可能有多种字体 如 的 de di 长 chang zhang de 是第二种字体 chang 是第三种字体才有,所以多音字要可以多次定义字体,即相同字体的要可以公用个字体 第三:这样会出现很多子Text 更改文档内容的...
  • [C#] 汉字转拼音,支持多音字

    万次阅读 2015-06-04 18:02:41
    支持dotnet core的汉字转拼音,而且支持多音字

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,885
精华内容 5,954
关键字:

一的多音字拼音