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