0

GATE で TermRaider の機能を使いたい。このリソースをロードしてJavaクラスで使用するためのサンプルコードを投稿してください。以下で試しましたが失敗しました。

 Gate.getCreoleRegister().registerDirectories(new URL("file:///D:/misc_workspace/gate-7.1-build4485-SRC/plugins/TermRaider"));

    ProcessingResource termRaider = (ProcessingResource) Factory.
    createResource("gate.termraider.TermRaiderEnglish",Factory.newFeatureMap());

Exception:
gate.termraider.TermRaiderEnglish cannot be cast to gate.ProcessingResource

どなたか、どうすればよいか教えていただけないでしょうか。

4

2 に答える 2

0

TermRaider システムは単一の PR ではなく、アプリケーション全体 (実際には Groovy ScriptableController) です。TermraiderEnglishResource は、そのアプリケーションを GATE Developer GUI の「ready-made applications」メニューに表示させるための単なるフックです。

埋め込みコードでは、次を使用してアプリケーションをロードできます。PersistenceManager

File termRaiderPlugin = new File(Gate.getPluginsHome(), "TermRaider");
File gappFile = new File(new File(termRaiderPlugin, "applications"),
            "termraider-eng.gapp");
CorpusController trApp = (CorpusController)PersistenceManager.loadObjectFromFile(
    gappFile);

コーパスに対してアプリケーションを実行すると、新しく発見された用語に関する情報を含む 3 つの「termbank」LR の新しいインスタンスが作成されます。バニラ アプリケーションは、実際には組み込みでの使用ではなく GUI を対象としているため、これらの新しい LR への参照を有用な場所には保存しませんCreoleRegister。それらを見つけるには、 に問い合わせる必要があります。Corpusアプリケーションの独自のコピーを作成し、次のようなものを追加して、制御スクリプトを微調整して、termbank インスタンスを (たとえば) の機能として保存することをお勧めします。

corpus.features.tfidfTermbank = termbank0
corpus.features.annotationTermbank = termbank1
corpus.features.hyponymyTermbank = termbank2

制御スクリプトの最後まで。corpus.getFeatures().get("tfidfTermbank")その後、Java コードでetcを介してそれらにアクセスできます。

これらの Termbank クラスはそれ自体がプラグインの一部であるため、TermRaiderおそらく.gate-termraider.jarGateClassLoader

于 2013-03-10T21:35:05.503 に答える
0
import gate.Corpus;
import gate.CorpusController;
import gate.Document;
import gate.Factory;
import gate.FeatureMap;
import gate.Gate;
import gate.termraider.bank.AbstractTermbank;
import gate.termraider.output.CsvGenerator;
import gate.util.GateException;
import gate.util.Out;
import gate.util.persistence.PersistenceManager;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;


public class termraider {
    public static void main(String[] args) throws IOException, GateException {

        // initialise the GATE library
        Out.prln("Initialising GATE...");
        Gate.init();

        // Initialize GATE
        File gateHome = Gate.getGateHome();
        Out.prln("...GATE initialised");

        //Load TermRaider plugin
        File termRaiderPlugin = new File(Gate.getPluginsHome(), "TermRaider");
        File gappFile = new File(new File(termRaiderPlugin, "applications"),
                   "termraider-eng.gapp");
        CorpusController trApp = (CorpusController)PersistenceManager.loadObjectFromFile(gappFile);
        System.out.println("TermRaider loaded successfully!!!");


    //Loading txt files from a folder path
        Corpus corpus = (Corpus) Factory.createResource("gate.corpora.CorpusImpl");
        //String dirname = "Desktop/Gate_corpus/About Us/New Folder";
        String dirname = "Desktop/GermanHPFCompetition/termRaider";
        File f1 = new File(dirname);
        String s[] = f1.list();
        for (int i=0; i < s.length; i++) {
            String path = dirname + "/" + s[i];
            path = URLDecoder.decode(path, "utf-8");
            path = new File(path).getPath();
            URL u=new URL("file:\\\\\\"+path);

          FeatureMap params = Factory.newFeatureMap();
          params.put("sourceUrl", u);
          params.put("preserveOriginalContent", new Boolean(true));
          params.put("collectRepositioningInfo", new Boolean(true));
          //Out.prln("Creating doc for " + u);
          Document doc = (Document)
          Factory.createResource("gate.corpora.DocumentImpl", params);
          corpus.add(doc);
        } // for each file in the folder

        //running TermRaider plugin with the corpus
        trApp.init();
        trApp.setCorpus(corpus);
        trApp.execute();
        Corpus output_corpus = (Corpus) Factory.createResource("gate.corpora.CorpusImpl");
        output_corpus=trApp.getCorpus();
        System.out.println("TermRaider executed successfully!!!");

        //Creating csv files as output
        AbstractTermbank tb1 = (AbstractTermbank) output_corpus.getFeatures().get("tfidfTermbank");
        AbstractTermbank tb2 = (AbstractTermbank) output_corpus.getFeatures().get("hyponymyTermbank");
        AbstractTermbank tb3 = (AbstractTermbank) output_corpus.getFeatures().get("annotationTermbank");

        System.out.println(tb1);
        System.out.println(tb2);
        System.out.println(tb3);

        CsvGenerator generator = new CsvGenerator();
        File outputFile1 = new File("Desktop/GermanHPFCompetition/termRaider/tfidfTermbank.csv");
        File outputFile2 = new File("Desktop/GermanHPFCompetition/termRaider/hyponymyTermbank.csv");
        File outputFile3 = new File("Desktop/GermanHPFCompeti`enter code here`tion/termRaider/annotationTermbank.csv");
        double threshold1 = 0;
        double threshold2 = 0;
        double threshold3 = 0;
        generator.generateAndSaveCsv(tb1, threshold1, outputFile1);
        generator.generateAndSaveCsv(tb2, threshold2, outputFile2);
        generator.generateAndSaveCsv(tb3, threshold3, outputFile3);
        System.out.println("CSV files created!!!");

    }//end of main

}//end of class
于 2014-03-05T04:26:48.513 に答える