import java.io.*;
class ren{
String str,data;
String[] ph=new String[500];
String[] word=new String[500];
String[] dic=new String[10000];
int[] np=new int[500];
int[] nword=new int[500];
int s,sx,sxs,phnumber,dicnumber,wordnumber;
double[] p=new double[10000];
double[] q=new double[10000];
double p1,point,maxpoint;
int[][] mk=new int[1000][500];
int[] mknumber=new int[1000];
int[] num=new int[10000];
int t1,t,tr;
int h,t3,database;
public static void main(String args[]){
ren test=new ren();
}
ren(){
readfile("ren.txt");
System.out.println(data);
String[] bun=data.split("。");
t3=bun.length;
dicnumber=0;
p[0]=1;
t=-1;
database=0;
for(tr=1;tr<1000;tr++){
t=t+1;
if(t>t3-1)t=0;
str=bun[t];
maxpoint=-999;
for(t1=1;t1<11;t1++){
makeph mkph=new makeph();
mkph.makedata(str);
ph=mkph.ph;
phnumber=mkph.phnumber;
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];
sx=np[2];
point=p[sx]*point;
for(s=2;s<phnumber-1;s++){
p1=price(np[s],np[s+1],np[s+2]);
point=p1*point;
}
if(point>maxpoint)word=ph;
if(point>maxpoint)wordnumber=phnumber;
if(point>maxpoint)maxpoint=point;
}
for(s=1;s<wordnumber+1;s++){
h=0;
for(sx=1;sx<dicnumber+1;sx++){
if(word[s].equals(dic[sx]))h=100;
}
if(h<50)dicnumber=dicnumber+1;
if(h<50)dic[dicnumber]=word[s];
}
for(s=1;s<wordnumber+1;s++){
sxs=0;
for(sx=1;sx<dicnumber+1;sx++){
if(word[s].equals(dic[sx]))sxs=sx;
}
nword[s]=sxs;
}
for(s=1;s<dicnumber+1;s++){
num[s]=0;
}
for(s=1;s<wordnumber+1;s++){
sx=nword[s];
num[sx]=num[sx]+1;
}
for(s=1;s<dicnumber+1;s++){
q[s]=(double)num[s]/wordnumber;
}
for(s=1;s<dicnumber+1;s++){
p[s]=0.1*q[s]+0.9*p[s];
}
database=database+1;
if(database>999)database=1;
mknumber[database]=wordnumber;
for(s=1;s<wordnumber+1;s++){
mk[database][s]=nword[s];
}
System.out.println(dicnumber);
}
}
double price(int m1,int m2,int m3){
double p1,p2,px;
int tx;
int h;
px=0.01;
p1=0;
p2=0;
for(tx=1;tx<1000;tx++){
for(sx=1;sx<mknumber[tx];sx++){
h=0;
if(mk[tx][sx]==m1)h=h+1;
if(mk[tx][sx+1]==m2)h=h+1;
if(h==2)p1=p1+1;
}
}
for(tx=1;tx<1000;tx++){
for(sx=1;sx<mknumber[tx];sx++){
h=0;
if(mk[tx][sx]==m1)h=h+1;
if(mk[tx][sx+1]==m2)h=h+1;
if(mk[tx][sx+2]==m3)h=h+1;
if(h==3)p2=p2+1;
}
}
if(p1>0)px=(double)p2/p1;
if(px<0.01)px=0.01;
return px;
}
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月24日 09:57