アットウィキロゴ

ぢcx

package dic;
 
import tool.*;
 
import java.io.File;
import java.io.*;
 
public class pro {
 
   int s,datanumber;
   String[] data=new String[50000];
    String[] dic=new String[50000];
      String[] word=new String[50000];
    int number,dicnumber;
 int[] op=new int[1000];
 
      public static void main(String[] args) {
        pro test=new pro();
    }
 
    pro(){
 
          File g=new File("gdata");    
    String[] gx=g.list();
 
 
 
   int sx;
 
    int tr;
 
    word sub=new word();
   sub.makedata("gdata/"+gx[s]);
   word=sub.dic;
   number=sub.number;
   System.out.println(number);
 
 
    for(s=2;s<47;s++){
   word sub2=new word();
   sub.makedata("gdata/"+gx[s]);
   dic=sub.dic;
   dicnumber=sub.number;
 
 
  optimal sub5=new optimal();
   sub5.dicnumber=dicnumber;
   sub5.number=number;
   sub5.dic=dic;
   sub5.word=word;
   sub5.makedata();
   op=sub5.op;  
 
 
   writexml("dic/"+gx[s]);
 
 
 }
 
 
 
 
 
 
 
 
    }
    void writexml(String file){ 
 
    int s,sx;
 
try{ 
PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter(file))); 
 
for(s=1;s<dicnumber+1;s++){  
pw.print("<index>"); 
pw.print(dic[s]); 
pw.print("</index>"); 
sx=op[s];
pw.print("<code>");
pw.print(sx);
pw.print("</code>");
pw.print("<credit>");
pw.print(word[sx]);
pw.println("</credit>"); 
}
 
 
System.out.println("ファイルに書きこみました。"); 
pw.close(); 
} catch(IOException ep){ System.out.println("入出力エラーです。"); } 
 
 
} 
 
 
 
 
}
 
 
 
package dic;
 
 
public class optimal {
 
    int number,dicnumber;
 String[] dic=new String[50000];
      String[] word=new String[50000];
      double[][] v=new double[201][201]; 
 
      int[][] gotox=new int[201][201];
    int[] op=new int[1001]; 
 
void makedata(){
 
    int n;
 
for(n=1;n<dicnumber+1;n++){
 v[1][n]=u(n,1);
    }
 
int s,sx;
 
       for(s=2;s<dicnumber+1;s++){
       for(n=1;n<number+1;n++){    
       double minv=-99999; 
       int sxs=0;
       double u1=u(n,s);
       for(sx=1;sx<n+1;sx++){
       double v1=u1+v[s-1][sx];    
       if(v1>minv)sxs=sx;
       if(v1>minv)minv=v1;
       }    
       gotox[s][n]=sxs;
       v[s][n]=minv;
       }   
       }
 
 
 
   op[dicnumber]=number-1;
 
   for(s=1;s<dicnumber;s++){
   n=dicnumber-s+1;
   sx=op[n];
   op[n-1]=gotox[n][sx];
   }
 
 
  for(s=1;s<dicnumber+1;s++){
   sx=op[s];   
  System.out.println(dic[s]+","+word[sx]);    
  } 
 
 
 
}
double u(int s1,int s2){
 
    String[] w1=new String[600];
    String[] w2=new String[600];
    int n1=word[s1].length();
    int n2=dic[s2].length();
    int s;
    for(s=1;s<n1+1;s++){
    w1[s]=word[s1].substring(s-1,s);    
    }
 
   for(s=1;s<n2+1;s++){
    w2[s]=dic[s2].substring(s-1,s);    
    }
    int sx;
    int p1=0;
   for(s=1;s<n1+1;s++){
   int k=0;
   for(sx=1;sx<n2+1;sx++){
   if(w1[s].equals(w2[sx]))k=100;    
   }    
   if(k>50)p1=p1+1;    
   }
 
 
   double z=0;
 if(n1>0)z=  (100*p1)/n1;
 
 
 return  z;  
}    
 
 
}
 
 
 
 
package dic;
 
import tool.*;
 
import java.io.File;
import java.io.*;
 
public class word {
 
   int s,datanumber;
   String[] data=new String[50000];
    String[] index=new String[50000];
      String[] dic=new String[50000];
 int dicnumber;
    int number;
    void makedata(String file){
 
 
     int dicnumber=0;
   int sx;
 
    int tr;
 
     readfile sub=new readfile();
   sub.makedata(file,"UTF-8");
   data=sub.data;
   datanumber=sub.datanumber;
 
   for(s=1;s<datanumber+1;s++){
   catchword sub2=new catchword();
index[s]=   sub2.makedata(data[s],"index");
    index[s]=index[s].replace("  ","");  
   }
 
   for(s=1;s<datanumber+1;s++){
   int p1=index[s].indexOf("0");
   int p2=index[s].indexOf(" ",p1);
   if(p2>0)index[s]=index[s].substring(p2,index[s].length());
   index[s]=index[s].trim();
    }
 
 
 
 
   for(s=1;s<datanumber+1;s++){
int h=0;
for(sx=1;sx<dicnumber+1;sx++){    
if(index[s].equals(dic[sx]))h=100;
}
if(h<50)dicnumber=dicnumber+1;
if(h<50)dic[dicnumber]=index[s];
}
 
 
 
    number=0;
    for(s=1;s<dicnumber+1;s++){
    int h=0;
   if(dic[s].indexOf("計")>-1)h=h+1;
   if(dic[s].indexOf("部")>-1)h=h+1;
   if(dic[s].indexOf("生")>-1)h=h+1;
   if(h==3)number=s-1;
 
    }
 
 
 
 
 
    }
 
 
 
}
 
最終更新:2016年05月17日 10:01