/** * Copyright 2016 * Ubiquitous Knowledge Processing (UKP) Lab * Technische Universität Darmstadt * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package de.tudarmstadt.ukp.lmf.transform.framenet; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import de.saar.coli.salsa.reiter.framenet.FrameNet; import de.tudarmstadt.ukp.lmf.model.core.GlobalInformation; import de.tudarmstadt.ukp.lmf.model.core.LexicalResource; import de.tudarmstadt.ukp.lmf.model.core.Lexicon; import de.tudarmstadt.ukp.lmf.model.enums.ELanguageIdentifier; import de.tudarmstadt.ukp.lmf.model.semantics.SemanticPredicate; /** * Instance of this class converts <a * href="URL#https://framenet.icsi.berkeley.edu/fndrupal/">FrameNet 1.5</a> to LMF-format * * @author Zijad Maksuti * @author Silvana Hartmann */ public class FNConverter { private final FrameNet fn; // FrameNet Object private final String dtd_version; private final LexicalResource lexicalResource; private final String resourceVersion; private final Log logger = LogFactory.getLog(getClass()); /** * Constructs a {@link FNConverter} based on the consumed parameters * * @param frameNet * initialized {@link FrameNet} object * @param resourceVersion version * of this resource * @param lexicalResource * initialized object of {@link LexicalResource}, which will be filled with * FrameNet's data * @param dtd_version * specifies the version of the .dtd which will be written to lexicalResource */ public FNConverter(FrameNet frameNet, LexicalResource lexicalResource, String resourceVersion, String dtd_version){ this.fn = frameNet; this.lexicalResource = lexicalResource; this.resourceVersion = resourceVersion; this.dtd_version = dtd_version; } /** * Converts the informations provided by the initialized {@link FrameNet} object to LMF-format. * The result of the conversion can be obtained by calling * {@link FNConverter#getLexicalResource()} */ public void toLMF() { // Setting attributes of LexicalResource lexicalResource.setName("FrameNet"); lexicalResource.setDtdVersion(this.dtd_version); // *** Setting GlobalInformation *** // GlobalInformation globalInformation = new GlobalInformation(); globalInformation.setLabel("LMF representation of FrameNet 1.5"); lexicalResource.setGlobalInformation(globalInformation); //*** Setting Lexicon (only one since FrameNet is monolingual)***// Lexicon lexicon = new Lexicon(); lexicon.setLanguageIdentifier(ELanguageIdentifier.ENGLISH); lexicon.setId("FN_Lexicon_0"); lexicon.setName("FrameNet"); LinkedList<Lexicon> lexicons = new LinkedList<Lexicon>(); lexicons.add(lexicon); lexicalResource.setLexicons(lexicons); // *** Creating SemanticPredicates *** // logger.info("Generating SemanticPredicates..."); SemanticPredicateGenerator semanticPredicateGenerator = new SemanticPredicateGenerator(fn, resourceVersion); List<SemanticPredicate> semanticPredicates = new ArrayList<SemanticPredicate>(); semanticPredicates.addAll(semanticPredicateGenerator.getSemanticPredicates()); lexicon.setSemanticPredicates(semanticPredicates); logger.info("Generating SemanticPredicates done"); // *** Creating LexicalEntries *** // logger.info("Generating LexicalEntries..."); LexicalEntryGenerator lexicalEntryGenerator = new LexicalEntryGenerator(fn, semanticPredicateGenerator, resourceVersion); lexicon.setLexicalEntries(lexicalEntryGenerator.getLexicalEntries()); logger.info("Generating LexicalEntries done"); } /** * Returns the {@link LexicalResource} object, which contains the results of the conversion * * @return the lexicalResource */ public LexicalResource getLexicalResource() { return lexicalResource; } }