public void RoundTripXml() { try { Language lang = XmlLanguageLoader.Load(TestXmlFileName); XmlLanguageWriter.Save(lang, TempXmlFileName); string testXml = File.ReadAllText(TestXmlFileName).Replace("\r\n", "\n"); string tempXml = File.ReadAllText(TempXmlFileName).Replace("\r\n", "\n"); Assert.That(tempXml, Is.EqualTo(testXml)); } finally { if (File.Exists(TempXmlFileName)) { File.Delete(TempXmlFileName); } } }
public ITranslationEngine Create(string engineId) { string engineDir = Path.Combine(_engineOptions.Value.EnginesDir, engineId); string hcSrcConfigFileName = Path.Combine(engineDir, "src-hc.xml"); string hcTrgConfigFileName = Path.Combine(engineDir, "trg-hc.xml"); TransferEngine transferEngine = null; if (File.Exists(hcSrcConfigFileName) && File.Exists(hcTrgConfigFileName)) { var hcTraceManager = new TraceManager(); Language srcLang = XmlLanguageLoader.Load(hcSrcConfigFileName); var srcMorpher = new Morpher(hcTraceManager, srcLang); Language trgLang = XmlLanguageLoader.Load(hcTrgConfigFileName); var trgMorpher = new Morpher(hcTraceManager, trgLang); transferEngine = new TransferEngine(srcMorpher, new SimpleTransferer(new GlossMorphemeMapper(trgMorpher)), trgMorpher); } return(transferEngine); }
public ITranslationEngine Create(Engine engine) { string hcSrcConfigFileName = Path.Combine(engine.ConfigDirectory, "src-hc.xml"); string hcTrgConfigFileName = Path.Combine(engine.ConfigDirectory, "trg-hc.xml"); TransferEngine transferEngine = null; if (File.Exists(hcSrcConfigFileName) && File.Exists(hcTrgConfigFileName)) { var spanFactory = new ShapeSpanFactory(); var hcTraceManager = new TraceManager(); Language srcLang = XmlLanguageLoader.Load(hcSrcConfigFileName); var srcMorpher = new Morpher(spanFactory, hcTraceManager, srcLang); Language trgLang = XmlLanguageLoader.Load(hcTrgConfigFileName); var trgMorpher = new Morpher(spanFactory, hcTraceManager, trgLang); transferEngine = new TransferEngine(srcMorpher, new SimpleTransferer(new GlossMorphemeMapper(trgMorpher)), trgMorpher); } return(transferEngine); }
private bool LoadProject(string fileName) { XElement projectElem; try { projectElem = XElement.Load(fileName); } catch (Exception) { return(false); } XElement engineElem = projectElem.Element("TranslationEngine"); if (engineElem == null) { return(false); } var smtConfig = (string)engineElem.Element("SmtConfig"); if (smtConfig == null) { return(false); } var hcSrcConfig = (string)engineElem.Element("SourceAnalyzerConfig"); var hcTrgConfig = (string)engineElem.Element("TargetGeneratorConfig"); string configDir = Path.GetDirectoryName(fileName); Debug.Assert(configDir != null); ITranslationEngine transferEngine = null; if (hcSrcConfig != null && hcTrgConfig != null) { Language srcLang = XmlLanguageLoader.Load(Path.Combine(configDir, hcSrcConfig)); var srcMorpher = new Morpher(_hcTraceManager, srcLang); Language trgLang = XmlLanguageLoader.Load(Path.Combine(configDir, hcTrgConfig)); var trgMorpher = new Morpher(_hcTraceManager, trgLang); transferEngine = new TransferEngine(srcMorpher, new SimpleTransferer(new GlossMorphemeMapper(trgMorpher)), trgMorpher); } _smtModel = new ThotSmtModel(Path.Combine(configDir, smtConfig)); IInteractiveSmtEngine smtEngine = _smtModel.CreateInteractiveEngine(); _hybridEngine = new HybridTranslationEngine(smtEngine, transferEngine); var sourceTexts = new List <IText>(); var targetTexts = new List <IText>(); var alignmentCollections = new List <ITextAlignmentCollection>(); using (_texts.BulkUpdate()) { foreach (XElement textElem in projectElem.Elements("Texts").Elements("Text")) { var name = (string)textElem.Attribute("name"); var metadataFileName = (string)textElem.Element("MetadataFile"); if (metadataFileName == null) { return(false); } metadataFileName = Path.Combine(configDir, metadataFileName); var srcTextFileName = (string)textElem.Element("SourceFile"); if (srcTextFileName == null) { return(false); } srcTextFileName = Path.Combine(configDir, srcTextFileName); var trgTextFileName = (string)textElem.Element("TargetFile"); if (trgTextFileName == null) { return(false); } trgTextFileName = Path.Combine(configDir, trgTextFileName); var alignmentsFileName = (string)textElem.Element("AlignmentsFile"); if (alignmentsFileName != null) { alignmentsFileName = Path.Combine(configDir, alignmentsFileName); } var text = new TextViewModel(_tokenizer, name, metadataFileName, srcTextFileName, trgTextFileName, alignmentsFileName) { Engine = _hybridEngine }; text.PropertyChanged += TextPropertyChanged; _texts.Add(text); Func <TextSegment, bool> segmentFilter = s => text.IsApproved((TextSegmentRef)s.SegmentRef); sourceTexts.Add(new FilteredText(new TextFileText(_tokenizer, name, srcTextFileName), segmentFilter)); targetTexts.Add(new FilteredText(new TextFileText(_tokenizer, name, trgTextFileName), segmentFilter)); if (alignmentsFileName != null) { alignmentCollections.Add(new TextFileTextAlignmentCollection(name, alignmentsFileName)); } } } if (_texts.Count == 0) { return(false); } _sourceCorpus = new DictionaryTextCorpus(sourceTexts); _targetCorpus = new DictionaryTextCorpus(targetTexts); _alignmentCorpus = new DictionaryTextAlignmentCorpus(alignmentCollections); CurrentText = _texts[0]; AcceptChanges(); RebuildTask.UpdateCanExecute(); return(true); }
public static int Main(string[] args) { Console.OutputEncoding = Encoding.UTF8; string inputFile = null; string outputFile = null; string scriptFile = null; bool showHelp = false; bool quitOnError = true; var p = new OptionSet { { "i|input-file=", "read configuration from {FILE}", value => inputFile = value }, { "o|output-file=", "write results to {FILE}", value => outputFile = value }, { "s|script-file=", "runs commands from {FILE}", value => scriptFile = value }, { "c|continue", "continues when an error occurs while loading the configuration", value => quitOnError = value == null }, { "h|help", "show this help message and exit", value => showHelp = value != null } }; try { p.Parse(args); } catch (OptionException) { ShowHelp(p); return(-1); } if (showHelp || string.IsNullOrEmpty(inputFile)) { ShowHelp(p); return(-1); } HCContext context; TextWriter output = null; try { if (!string.IsNullOrEmpty(outputFile)) { output = new StreamWriter(outputFile); } Console.Write("Reading configuration file \"{0}\"... ", Path.GetFileName(inputFile)); Language language = XmlLanguageLoader.Load(inputFile, quitOnError ? (Action <Exception, string>)null : (ex, id) => { }); Console.WriteLine("done."); context = new HCContext(language, output ?? Console.Out); Console.Write("Compiling rules... "); context.Compile(); Console.WriteLine("done."); Console.WriteLine("{0} loaded.", language.Name); Console.WriteLine(); } catch (IOException ioe) { Console.WriteLine(); Console.WriteLine("IO Error: " + ioe.Message); if (output != null) { output.Close(); } return(-1); } catch (Exception e) { Console.WriteLine(); Console.WriteLine("Load Error: " + e.Message); if (output != null) { output.Close(); } return(-1); } ConsoleCommand[] commands = { new ParseCommand(context), new TracingCommand(context), new TestCommand(context), new StatsCommand(context) }; string input; if (!string.IsNullOrEmpty(scriptFile)) { using (var scriptReader = new StreamReader(scriptFile)) { input = scriptReader.ReadLine(); while (input != null) { if (!input.Trim().StartsWith("#") && input.Trim() != "") { string[] cmdArgs = CommandLineParser.Parse(input); ConsoleCommandDispatcher.DispatchCommand(commands, cmdArgs, context.Out); } input = scriptReader.ReadLine(); } } } else { Console.Write("> "); input = Console.ReadLine(); while (input != null && input.Trim() != "exit") { if (input.Trim().IsOneOf("?", "help")) { ConsoleHelp.ShowSummaryOfCommands(commands, Console.Out); } else { string[] cmdArgs = CommandLineParser.Parse(input); ConsoleCommandDispatcher.DispatchCommand(commands, cmdArgs, context.Out); } Console.Write("> "); input = Console.ReadLine(); } } if (output != null) { output.Close(); } return(0); }