最大正向匹配算法(JAVA版)

icttdj 贡献于2013-06-22

作者 USER  创建于2012-07-05 08:46:00   修改者USER  修改于2012-07-05 13:44:00字数1773

文档摘要:最大正向匹配算法(JAVA版)
关键词:

(转)最大正向匹配算法(JAVA版)   2009-09-06 20:12:47|  分类: 默认分类 |  标签: |字号大中小 订阅 package fenci; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.*; public class ReadFileToVector {     /**      * @param str      * @author:      *

Description:从文件中读取一行内容,把读取的内容放入vector中返回      */     public static Vector ReadFile(String str)     {           String word=null;         Vector vectors=new Vector();         int i=0;         try {             FileInputStream fi=new FileInputStream(str);             BufferedReader  input=new BufferedReader (new InputStreamReader(fi));             while((word=input.readLine())!=null){ //                System.out.println(input.readLine());                vectors.add(word); //               System.out.println(vectors.get(i)); //               i++;             }     System.out.println("加载字典单词总数是:"+vectors.size());         } catch (Exception e) {             e.printStackTrace();         }            return vectors;             }     public static void main(String[] args) {         ReadFileToVector.ReadFile(".\\fenci\\data.txt");     } } package fenci; import java.util.*; public class PositiveMatch {     /**      *

Description:最大正向匹配算法      * @author:      */     public static void main(String[] args) {         int maxlen=12;         String str="我爱中华人民共和国";         Vector vc=new Vector();         vc=ReadFileToVector.ReadFile(".\\fenci\\data.txt");//从文件中加载词典,结果放到vector向量中         int j=0;int k=0;         while(j0;i--){ //从句子中切出词典中单词的最大长度              k=i+j;                  //从句子的词的当前位置开始,切分出词的最大长度              if (k>str.length())//当需要切分的最大长度大于句子的总长度时,只切分到句子末尾                 {k=str.length();}             String key=str.substring(j,k);//切出最大字符串             if (vc.contains(key)){ //判断当前字符串是否在词典中                 System.out.print(key+" ");                 j+=i;                 break;             }                      }         }             } }   正向最大匹配算法基本思想:假设字典中最长的词语字数为m,先根据汉语标点符号及特征词把汉语句子切分为短语,然后去取短语的前m个字,在字库里面查找时候存在这个词语,如果存在,短语就去掉在个词;如果不存在就去掉这m个字的最后一个字,检查是否是单字,若是输出此字并将短语减去此字,若不是则继续判断看字库是否存在这个词,如此反复循环,直到输出一个词,此后继续取短语的前m个字反复循环。这样就可以将一个短语分成词语的组合了。 下图为正向最大匹配算法的流程图 如图: 正向最大匹配算法是基于字符串匹配的分词方法,此外还有逆向最大匹配法、双向最大匹配法等。以后有机会会总结一下! 相对于基于理解和统计的算法来说,正向最大匹配算法复杂度比较小,技术实现比较容易,仅需要建立词表即可。但是他对歧义识别比较差,分词的准确性不高。在实际中我们不能仅仅简单的使用正向最大匹配算法,还需要对其进行改进,可以和逆向匹配算法一起使用,这样可以提高歧义的识别,使他的准确度更高。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享文档获得金币 ] 4 人已下载

下载文档