アットウィキロゴ

ほぼ成功 自然言語

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