package fenci;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*;
public class ReadFileToVector {
/**
* @param str
* @author:
* <p>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 {
/**
* <p>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(j<str.length()){ //循环到句子末尾
for(int i=maxlen;i>0;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;
}
}
}
}
}
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*;
public class ReadFileToVector {
/**
* @param str
* @author:
* <p>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 {
/**
* <p>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(j<str.length()){ //循环到句子末尾
for(int i=maxlen;i>0;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;
}
}
}
}
}