基于同音别字进行纠错词推荐

基于同音别字进行纠错词推荐流程应该是如下:

根据之前的同音别字词典:
niuyuenikesi -> 纽约尼克斯
huojian -> 火箭
lixiang -> 理想 立项 李湘
zhongkeyuan -> 中科院 钟克媛
NBA -> NBA
linshuhao -> 林书豪
guojingming -> 郭敬明
zidonghuasuo -> 自动化所
yaoming -> 要命 姚明 药名 耀明

进行查询索引测试

  1. package CB_QR;   
  2.   
  3. import java.io.IOException;   
  4. import java.util.ArrayList;   
  5. import java.util.HashMap;   
  6. import java.util.HashSet;   
  7. import java.util.Iterator;   
  8. import java.util.Map;   
  9. import CB_QR_Dictionary.HomoDicAddPY;   
  10. import CB_QR_Tools.*;   
  11.   
  12. public class CB_QR_HomoWordsRec {   
  13.     public static void main(String[] args) throws IOException{   
  14.         //是否已经转换了词典   
  15.         int hasTransDic = 0;   
  16.         if (hasTransDic ==0 ){   
  17.             //进行词典转换   
  18.             DictAddPinyin.transDic2addPY();   
  19.             HomopDictPY.transhomo();   
  20.         }   
  21.                    
  22.         DataManage dm = new DataManage();   
  23.            
  24.         String usrQuery = “姚铭的”;   
  25.         String usrQuePY = Chinese2PY.Ch2PY(usrQuery);   
  26.         //读入同音别字用户词典homoDicAddPY.txt   
  27.         ArrayList <HomoDicAddPY> dictAddPYWordlist = dm.readFile(“CB_QR_Data\\homoDicAddPY.txt”, HomoDicAddPY.class);   
  28.         Map<String, HashSet<String>> HomopDictPYmap = new HashMap<String, HashSet<String>>();   
  29.            
  30.         //把同音别字词典中的拼音和词典全部读出来,并维护一个HashMap映射   
  31.         if (dictAddPYWordlist.size() > 0){   
  32.             Iterator<HomoDicAddPY> itPY = dictAddPYWordlist.iterator();   
  33.             while (itPY.hasNext()) {   
  34.                 HomoDicAddPY homoDic = itPY.next();   
  35.                 //pinyin做key值, 类为value值   
  36.                 HomopDictPYmap.put(homoDic.getusrStringwordPY(), homoDic.getHomoWordSet());   
  37.             }      
  38.         }   
  39.         //判断是词典中是否有同音词   
  40.         if(HomopDictPYmap.containsKey(usrQuePY)){   
  41.             HashSet<String> itWordsSet =  HomopDictPYmap.get(usrQuePY);   
  42.             if (itWordsSet.contains(usrQuery)) {   
  43.                 System.out.println(“词典中存在,如果有其他同音别字词也可以推荐出来”);   
  44.             }   
  45.             else {   
  46.                 System.out.println(“推荐词为:”);   
  47.                 Iterator<String> itorWS = itWordsSet.iterator();   
  48.                 while (itorWS.hasNext()) {   
  49.                     System.out.println(itorWS.next());   
  50.                 }   
  51.             }   
  52.         }   
  53.         else {   
  54.             System.out.println(“拼音输入错误,或者中文字符多漏字”);   
  55.         }   
  56.     }   
  57. }  

如果:usrQuery = “姚明”
返回:词典中存在,如果有其他同音别字词也可以推荐出来

如果:uerQuery = ”姚铭”
返回:推荐词为:
耀明
姚明
药名
要命

如果:uerQuery = ”姚铭的”
返回:拼音输入错误,或者中文字符多漏字

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>