import java.io.*;
class pro{
int dicnumber;
String[] dic=new String[5000];
double[] p=new double[5000];
int[] z=new int[500];
int[] zz=new int[500];
String[] ph=new String[500];
int s,sx,strlong,phnumber,wordnumber;
String data,str;
int[] np=new int[500];
double point,maxp;
String[] word=new String[500];
int[] nword=new int[500];
int t1,t2,nx;
int[] num=new int[5000];
double[] q=new double[5000];
public static void main(String args[]){
pro test=new pro();
}
pro(){
dicnumber=0;
p[0]=1;
readfile("aa.txt");
String[] x=data.split("。");
System.out.println(x.length);
for(t2=0;t2<x.length;t2++){
str=x[t2];
strlong=str.length();
maxp=-999;
t1=0;
while(t1<10){
z[0]=1;
for(s=1;s<strlong;s++){
z[s]=0;
if(Math.random()>0.5)z[s]=1;
}
sx=1;
zz[1]=0;
for(s=1;s<strlong;s++){
if(z[s]==1)sx=sx+1;
if(z[s]==1)zz[sx]=s;
}
phnumber=sx;
for(s=1;s<phnumber;s++){
ph[s]=str.substring(zz[s],zz[s+1]);
}
s=phnumber;
ph[s]=str.substring(zz[s],strlong);
for(s=1;s<phnumber+1;s++){
np[s]=0;
for(sx=1;sx<dicnumber+1;sx++){
if(ph[s].equals(dic[sx]))np[s]=sx;
}
}
sx=np[1];
point=p[sx];
for(s=2;s<phnumber+1;s++){
sx=np[s];
point=p[sx]*point;
}
if(point>maxp)word=ph;
if(point>maxp)wordnumber=phnumber;
if(point>maxp)maxp=point;
t1=t1+1;
}
for(s=1;s<dicnumber+1;s++){
num[s]=0;
}
for(s=1;s<wordnumber+1;s++){
nx=nword[s];
if(nx>0)num[nx]=num[nx]+1;
if(nx==0)makedic(s);
}
for(s=1;s<dicnumber+1;s++){
q[s]=(double)num[s]/wordnumber;
}
for(s=0;s<dicnumber+1;s++){
p[s]=0.9*p[s]+0.1*q[s];
}
System.out.println(dicnumber);
}
}
void makedic(int s){
int h,sxs;
h=0;
sxs=0;
for(sx=1;sx<dicnumber+1;sx++){
if(word[s].equals(dic[sx]))h=100;
if(word[s].equals(dic[sx]))sxs=sx;
}
if(h<50)dicnumber=dicnumber+1;
if(h<50)dic[dicnumber]=word[s];
if(h<50)num[dicnumber]=1;
if(h>50)num[sxs]=num[sxs]+1;
}
void readfile(String file){
String st;
BufferedReader br;
data="";
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"SJIS"));
while((st = br.readLine()) != null) {
data=data+st;
}
br.close();
} catch (IOException e) {System.out.println(e);}
}
}
最終更新:2011年05月23日 09:25