`
java.jianan
  • 浏览: 19121 次
  • 性别: 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)));  
 
}  
 

分享到:
评论

相关推荐

    solr_拼音分词器_pinyin4j

    标题中的“solr_拼音分词器_pinyin4j”涉及到的是Apache Solr搜索引擎中的一个特定功能,即拼音分词。在中文文本处理中,拼音分词器能够将汉字转换成对应的拼音,这对于搜索和信息检索有着重要的作用。Solr是基于...

    pinyin4j-2.5.0.jar_pinyin_pinyin4j-2.5.0.jar_

    pinyin4j是一个Java语言编写的开源库,专用于处理中文汉字的拼音转换,它为开发者提供了便捷的API接口,使得在Java应用中进行汉字与拼音的相互转化变得轻而易举。标题中的“pinyin4j-2.5.0.jar”即为此库的特定版本...

    pinyin4j-2.5.0

    《pinyin4j-2.5.0:Java实现的汉语拼音转换库》 在Java开发中,有时候我们需要将汉字转换成对应的汉语拼音,以便进行各种处理,如搜索、排序或者处理多音字问题。这时,`pinyin4j-2.5.0`这个开源库就显得尤为重要。...

    拼音分词 Pinyin4j+pinyinAnalyzer+lucene-analyzers

    Pinyin4j是一个Java库,主要用于将汉字转换为拼音,这对于进行基于拼音的搜索和排序非常有用。pinyinAnalyzer是Lucene的一个分析器,它利用了Pinyin4j的功能,能够将输入的中文文本分词并转化为拼音形式,以便于...

    pinyin4j-2.5.0.jar下载

    《pinyin4j-2.5.0.jar:Java与Kotlin中的拼音处理库》 在Java和Kotlin编程中,处理汉字转拼音的需求时有发生,比如在搜索引擎的关键词提取、文本排序或中文输入法的实现等场景。为此,开发者们常常需要借助一些专门...

    汉语转换成拼音的jar包pinyin4j-2.5.0版本

    在处理大量汉字文本时,`pinyin4j`的高效性能和准确度使得它成为Java开发者的首选工具。无论是进行文本分析,还是创建具有拼音功能的应用,`pinyin4j`都能提供坚实的支持。在实际开发中,结合其他文本处理技术,如...

    pinyin4j-2.5.0的jar包、源码、说明文档.zip

    通过阅读源码,我们可以发现pinyin4j使用了多种算法,如基于词典的查找、分词和拼音转换等,从而实现高效且准确的转换。此外,源码分析还能帮助开发者定位潜在问题,进行定制化开发或优化性能。 再者,说明文档是...

    pinyin4j-2.5.0.zip

    在这个过程中,一个名为pinyin4j的Java库起到了关键作用。pinyin4j是一个开源的Java库,其主要功能就是将汉字转换为汉语拼音,支持包括声调在内的多种拼音表示方式。本文将详细介绍如何利用pinyin4j-2.5.0.jar这个库...

    pinyin4j jar包

    《pinyin4j:汉字转拼音的Java库详解》 在Java编程中,有时我们需要将汉字转换为拼音,以便进行各种处理,如关键词提取、文本分析等。这时,pinyin4j库就显得尤为重要。pinyin4j是一个专门用于处理汉字转拼音的Java...

    solr_pinyin

    Pinyin4j是一个Java库,用于处理中文字符并将其转换为拼音。它可以将每个汉字转换为对应的拼音表示,这对于构建基于拼音的索引和查询非常有用。 1. **集成Pinyin4j到Solr**: 首先,你需要将Pinyin4j的JAR文件添加...

    pinyin4j开发架包

    4. 音节分割:pinyin4j可以将连续的汉字转换为单个的拼音音节,这对于处理拼音的分词和搜索有重要作用。 5. 多音字处理:对于同一个汉字有多个读音的情况,pinyin4j会返回所有的读音选项,方便开发者根据上下文选择...

    基于java的中文转拼音库 pinyin4j.zip

    《Java中的中文转拼音库——Pinyin4j详解》 在Java编程中,处理中文字符时,有时我们需要将中文转化为拼音,以便进行后续的文本处理或搜索操作。Pinyin4j是一个广泛使用的Java库,专门用于实现这个功能。本文将详细...

    pinyin4j-2.5

    《pinyin4j:汉字转拼音的Java库详解》 在信息技术领域,处理中文字符时,将汉字转换为拼音是一项常见的需求。pinyin4j是一个专门为Java开发的开源库,专注于实现这一功能,使得开发者能够方便地在程序中进行汉字到...

    pinyin4j.jar+代码

    《pinyin4j.jar:Java实现的汉字拼音处理库》 在编程领域,尤其是在中文处理上,经常会遇到一些挑战,比如字符集支持、乱码问题、汉字排序以及将汉字转换为拼音等。对于这些问题,国外的开发环境往往没有提供足够的...

    pinyinAnalyzer4.3.1pinyin4j-2.5.0

    在实际应用中,我们可以看到以下场景:假设有一个中文搜索引擎,用户输入关键词,PinyinAnalyzer会先对关键词进行分词和拼音化,然后pinyin4j将拼音化后的结果标准化,生成可供搜索引擎查询的拼音索引。这样,即使...

    中文转拼音库 pinyin4j.7z

    - **拼音分词**:在处理连续的汉字时,pinyin4j可以进行拼音分词,使得每个汉字的拼音都清晰可辨。 - **异常处理**:对于无法转换的汉字,pinyin4j会提供合理的错误处理机制,帮助开发者识别并解决潜在问题。 3. ...

    使用Pinyin4j进行拼音分词的方法

    本文将详细介绍如何使用Pinyin4j进行拼音分词,并提供一个简单的示例来演示其实现过程。 首先,为了在项目中使用Pinyin4j,我们需要在构建配置中引入相应的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下...

    pinyin4j-2.5.0.jar附带Util工具类

    4. 自然语言处理:在处理中文文本时,pinyin4j可以帮助进行分词、词性标注等任务。 总之,pinyin4j-2.5.0.jar及其内含的PinyinUtil工具类为Java开发者提供了一套强大而便捷的汉字拼音处理方案。通过理解和熟练运用...

Global site tag (gtag.js) - Google Analytics