`
java.jianan
  • 浏览: 18607 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java分词_pinyin4j

阅读更多
import java.util.HashSet;  
import java.util.Set;  
 
import net.sourceforge.pinyin4j.PinyinHelper;  
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;  
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;  
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;  
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;  
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;  
 
public class pinyin4j {  
   
/** 
  * 字符串集合转换字符串(逗号分隔) 
  * @author wyh 
  * @param stringSet 
  * @return 
  */ 
public static String makeStringByStringSet(Set<String> stringSet){  
  StringBuilder str = new StringBuilder();  
  int i=0;  
  for(String s : stringSet){  
   if(i == stringSet.size() - 1){  
    str.append(s);  
   }else{  
    str.append(s + ",");  
   }  
   i++;  
  }  
  return str.toString().toLowerCase();  
}  
   
/** 
  * 获取拼音集合 
  * @author wyh 
  * @param src 
  * @return Set<String> 
  */ 
public static Set<String> getPinyin(String src){  
  if(src!=null && !src.trim().equalsIgnoreCase("")){  
   char[] srcChar ;  
   srcChar=src.toCharArray();  
   //汉语拼音格式输出类  
   HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();  
 
//输出设置,大小写,音标方式等  
   hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
   hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE)  
   hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);  
     
   String[][] temp = new String[src.length()][];  
   for(int i=0;i<srcChar.length;i++){  
    char c = srcChar[i];  
    //是中文或者a-z或者A-Z转换拼音(我的需求,是保留中文或者a-z或者A-Z)  
    if(String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")){  
     try{  
      temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);  
     }catch(BadHanyuPinyinOutputFormatCombination e) {  
      e.printStackTrace();  
     }  
    }else if(((int)c>=65 && (int)c<=90) || ((int)c>=97 && (int)c<=122)){  
     temp[i] = new String[]{String.valueOf(srcChar[i])};  
    }else{  
     temp[i] = new String[]{""};  
    }  
   }  
   String[] pingyinArray = Exchange(temp);  
   Set<String> pinyinSet = new HashSet<String>();  
   for(int i=0;i<pingyinArray.length;i++){  
    pinyinSet.add(pingyinArray[i]);  
   }  
   return pinyinSet;  
  }  
  return null;  
}  
   
/** 
  * 递归 
  * @author wyh 
  * @param strJaggedArray 
  * @return 
  */ 
    public static String[] Exchange(String[][] strJaggedArray){  
        String[][] temp = DoExchange(strJaggedArray);  
        return temp[0];         
    }  
     
    /** 
     * 递归 
     * @author wyh 
     * @param strJaggedArray 
     * @return 
     */ 
    private static String[][] DoExchange(String[][] strJaggedArray){  
        int len = strJaggedArray.length;  
        if(len >= 2){             
            int len1 = strJaggedArray[0].length;  
            int len2 = strJaggedArray[1].length;  
            int newlen = len1*len2;  
            String[] temp = new String[newlen];  
            int Index = 0;  
            for(int i=0;i<len1;i++){  
                for(int j=0;j<len2;j++){  
                    temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];  
                    Index ++;  
                }  
            }  
            String[][] newArray = new String[len-1][];  
            for(int i=2;i<len;i++){  
                newArray[i-1] = strJaggedArray[i];                             
            }  
            newArray[0] = temp;  
            return DoExchange(newArray);  
        }else{  
         return strJaggedArray;     
        }  
    }  
     
/** 
  * @param args 
  */ 
public static void main(String[] args) {  
  String str = "单田芳";  
  System.out.println(makeStringByStringSet(getPinyin(str)));  
 
}  
 

分享到:
评论

相关推荐

    java开源包4

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java开源包101

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    java开源包11

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包6

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包9

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包8

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包5

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包10

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包1

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包3

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    pinyin-plus:简繁体汉字转拼音的项目,解决多音字的问题。ElasticSearch,solr的拼音分词工具

    pinyin pinyin-plus的特点是,索引分词的词库和拼音的词库是基于同一套词库,所以多音词的准确度特别高,而且词库的格式保留了开源词典的格式,词库可以轻松的定时更新。同时也替换了自定义词库的扩展界面,保留定制...

    java开源包2

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包7

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    pinyin:用于Java的高性能拼音工具。(java高性能中文转拼音工具。支持同音字。)

    支持中文分词 支持中文繁简体 支持自定义拼音词库 支持判断是否为同音字 支持单独获取声调信息 支持获取声母韵母信息 v0.1.6主要变更 依赖版本优化 快速开始 准备 杰克1.7+ 专家约会 &lt; groupId&gt;...

    Java资源包01

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    lucene-simple-pinyin:支持,Lucene,Solr5.x拼音分词插件

    应用场景:1: 按拼音排序2: 中文网站一般都有suggest功能,是支持拼音的suggest的用到的技术:1,开源的Pinyin4j2,开源的lucene3,开源的solr如何在Lucene里使用? public static void testExec&#40;&#41;throws ...

Global site tag (gtag.js) - Google Analytics