use of org.languagetool.JLanguageTool in project languagetool by languagetool-org.
the class Main method tagTextAndDisplayResults.
private void tagTextAndDisplayResults() {
JLanguageTool langTool = ltSupport.getLanguageTool();
// tag text
List<String> sentences = langTool.sentenceTokenize(textArea.getText());
StringBuilder sb = new StringBuilder();
if (taggerShowsDisambigLog) {
sb.append("<table>");
sb.append("<tr>");
sb.append("<td><b>");
sb.append(messages.getString("token"));
sb.append("</b></td>");
sb.append("<td><b>");
sb.append(messages.getString("disambiguatorLog"));
sb.append("</b></td>");
sb.append("</tr>");
boolean odd = true;
try {
for (String sent : sentences) {
AnalyzedSentence analyzed = langTool.getAnalyzedSentence(sent);
odd = appendTagsWithDisambigLog(sb, analyzed, odd);
}
} catch (Exception e) {
sb.append(getStackTraceAsHtml(e));
}
sb.append("</table>");
} else {
try {
for (String sent : sentences) {
AnalyzedSentence analyzed = langTool.getAnalyzedSentence(sent);
String analyzedString = StringTools.escapeHTML(analyzed.toString(",")).replace("<S>", "<S><br>").replace("[", "<font color='" + TAG_COLOR + "'>[").replace("]", "]</font><br>");
sb.append(analyzedString).append('\n');
}
} catch (Exception e) {
sb.append(getStackTraceAsHtml(e));
}
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (taggerDialog == null) {
taggerDialog = new JDialog(frame);
taggerDialog.setTitle(messages.getString("taggerWindowTitle"));
taggerDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
taggerDialog.setResizable(true);
taggerDialog.setSize(640, 480);
taggerDialog.setLocationRelativeTo(frame);
KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
ActionListener actionListener = actionEvent -> taggerDialog.setVisible(false);
taggerDialog.getRootPane().registerKeyboardAction(actionListener, stroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
JPanel panel = new JPanel(new GridBagLayout());
taggerDialog.add(panel);
taggerArea = new JTextPane();
taggerArea.setContentType("text/html");
taggerArea.setEditable(false);
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridwidth = 2;
c.gridy = 0;
c.weightx = 1.0;
c.weighty = 1.0;
c.insets = new Insets(8, 8, 4, 8);
c.fill = GridBagConstraints.BOTH;
panel.add(new JScrollPane(taggerArea), c);
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 1;
c.weightx = 0.0;
c.weighty = 0.0;
c.insets = new Insets(4, 8, 8, 8);
c.fill = GridBagConstraints.NONE;
c.anchor = GridBagConstraints.EAST;
JCheckBox showDisAmbig = new JCheckBox(messages.getString("ShowDisambiguatorLog"));
showDisAmbig.setSelected(taggerShowsDisambigLog);
showDisAmbig.addItemListener((ItemEvent e) -> {
taggerShowsDisambigLog = e.getStateChange() == ItemEvent.SELECTED;
ltSupport.getConfig().setTaggerShowsDisambigLog(taggerShowsDisambigLog);
});
panel.add(showDisAmbig, c);
c.gridx = 1;
JButton closeButton = new JButton(messages.getString("guiCloseButton"));
closeButton.addActionListener(actionListener);
panel.add(closeButton, c);
}
// orientation each time should be set as language may is changed
taggerDialog.applyComponentOrientation(ComponentOrientation.getOrientation(languageBox.getSelectedLanguage().getLocale()));
taggerDialog.setVisible(true);
taggerArea.setText(HTML_FONT_START + sb + HTML_FONT_END);
}
});
}
use of org.languagetool.JLanguageTool in project languagetool by languagetool-org.
the class ToolsTest method testCorrect.
@Test
public void testCorrect() throws IOException, ParserConfigurationException, SAXException {
JLanguageTool tool = new JLanguageTool(new Polish());
tool.setCleanOverlappingMatches(false);
String correct = Tools.correctText("To jest całkowicie prawidłowe zdanie.", tool);
assertEquals("To jest całkowicie prawidłowe zdanie.", correct);
correct = Tools.correctText("To jest jest problem.", tool);
assertEquals("To jest problem.", correct);
// more sentences, need to apply more suggestions > 1 in subsequent sentences
correct = Tools.correctText("To jest jest problem. Ale to już już nie jest problem.", tool);
assertEquals("To jest problem. Ale to już nie jest problem.", correct);
correct = Tools.correctText("To jest jest problem. Ale to już już nie jest problem. Tak sie nie robi. W tym zdaniu brakuje przecinka bo go zapomniałem.", tool);
assertEquals("To jest problem. Ale to już nie jest problem. Tak się nie robi. W tym zdaniu brakuje przecinka, bo go zapomniałem.", correct);
}
use of org.languagetool.JLanguageTool in project languagetool by languagetool-org.
the class SpellCheckEvaluation method run.
private void run(Language language, File file) throws IOException {
JLanguageTool lt = getLanguageToolForSpellCheck(language);
checkFile(file, lt);
}
use of org.languagetool.JLanguageTool in project languagetool by languagetool-org.
the class ConfusionRuleEvaluator method evaluate.
@SuppressWarnings("ConstantConditions")
private void evaluate(List<Sentence> sentences, boolean isCorrect, String token, String homophoneToken, List<Long> evalFactors) throws IOException {
println("======================");
printf("Starting evaluation on " + sentences.size() + " sentences with %s/%s:\n", token, homophoneToken);
JLanguageTool lt = new JLanguageTool(language);
List<Rule> allActiveRules = lt.getAllActiveRules();
for (Rule activeRule : allActiveRules) {
lt.disableRule(activeRule.getId());
}
for (Sentence sentence : sentences) {
String textToken = isCorrect ? token : homophoneToken;
String plainText = sentence.getText();
String replacement = plainText.indexOf(textToken) == 0 ? StringTools.uppercaseFirstChar(token) : token;
String replacedTokenSentence = isCorrect ? plainText : plainText.replaceFirst("(?i)\\b" + textToken + "\\b", replacement);
AnalyzedSentence analyzedSentence = lt.getAnalyzedSentence(replacedTokenSentence);
for (Long factor : evalFactors) {
rule.setConfusionSet(new ConfusionSet(factor, homophoneToken, token));
RuleMatch[] matches = rule.match(analyzedSentence);
boolean consideredCorrect = matches.length == 0;
String displayStr = plainText.replaceFirst("(?i)\\b" + textToken + "\\b", "**" + replacement + "**");
if (consideredCorrect && isCorrect) {
evalValues.get(factor).trueNegatives++;
} else if (!consideredCorrect && isCorrect) {
evalValues.get(factor).falsePositives++;
println("false positive with factor " + factor + ": " + displayStr);
} else if (consideredCorrect && !isCorrect) {
//println("false negative: " + displayStr);
evalValues.get(factor).falseNegatives++;
} else {
evalValues.get(factor).truePositives++;
//System.out.println("true positive: " + displayStr);
}
}
}
}
use of org.languagetool.JLanguageTool in project languagetool by languagetool-org.
the class RuleSimplifier method run.
private void run(Language lang) throws IOException {
File basePath = new File("/lt/git/languagetool/languagetool-language-modules");
if (!basePath.exists()) {
throw new RuntimeException("basePath does not exist: " + basePath);
}
String langCode = lang.getShortCode();
File xml = new File(basePath, "/" + langCode + "/src/main/resources/org/languagetool/rules/" + langCode + "/grammar.xml");
List<String> xmlLines = IOUtils.readLines(new FileReader(xml));
JLanguageTool tool = new JLanguageTool(lang);
int totalRules = 0;
for (Rule rule : tool.getAllActiveRules()) {
if (!(rule instanceof PatternRule)) {
continue;
}
PatternRule patternRule = (PatternRule) rule;
String id = patternRule.getFullId();
if (isSimple((PatternRule) rule)) {
System.err.println("Simplifying: " + id);
simplify(patternRule, xmlLines);
} else {
System.err.println("Can't simplify: " + id);
}
totalRules++;
}
System.err.println("touchedRulesCount: " + touchedRulesCount + " out of " + totalRules);
for (String xmlLine : xmlLines) {
System.out.println(xmlLine);
}
}
Aggregations