Revision: 6512
http://languagetool.svn.sourceforge.net/languagetool/?rev=6512&view=rev
Author: dnaber
Date: 2012-02-12 00:05:17 +0000 (Sun, 12 Feb 2012)
Log Message:
-----------
[de] work around / fix more false alarms (from
http://sourceforge.net/tracker/?func=detail&atid=655717&aid=3486436&group_id=110216)
Modified Paths:
--------------
trunk/JLanguageTool/src/java/org/languagetool/rules/de/AgreementRule.java
trunk/JLanguageTool/src/resource/de/added.txt
trunk/JLanguageTool/src/test/org/languagetool/rules/de/AgreementRuleTest.java
Modified:
trunk/JLanguageTool/src/java/org/languagetool/rules/de/AgreementRule.java
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/rules/de/AgreementRule.java
2012-02-11 23:26:47 UTC (rev 6511)
+++ trunk/JLanguageTool/src/java/org/languagetool/rules/de/AgreementRule.java
2012-02-12 00:05:17 UTC (rev 6512)
@@ -21,10 +21,7 @@
import java.io.IOException;
import java.util.*;
-import org.languagetool.AnalyzedSentence;
-import org.languagetool.AnalyzedTokenReadings;
-import org.languagetool.JLanguageTool;
-import org.languagetool.Language;
+import org.languagetool.*;
import org.languagetool.rules.Category;
import org.languagetool.rules.RuleMatch;
import org.languagetool.tagging.de.AnalyzedGermanToken;
@@ -44,7 +41,9 @@
*
* Note that this rule only checks agreement inside the noun phrase, not
whether
* e.g. the correct case is used. For example, "Es ist das Haus dem Mann" is
not
- * detected as incorrect.
+ * detected as incorrect.
+ *
+ * <p>TODO: the implementation could use a re-write that first detects the
relevant noun phrases and then checks agreement
*
* @author Daniel Naber
*/
@@ -112,6 +111,7 @@
"ich",
"du",
"er", "sie", "es",
+ //"wir",
"mir",
"euch",
"ihm",
@@ -186,7 +186,7 @@
break;
AnalyzedGermanTokenReadings nextToken =
(AnalyzedGermanTokenReadings)tokens[tokenPos];
nextToken = maybeAddAdjectiveReadings(nextToken, tokens, tokenPos);
- if (nextToken.hasReadingOfType(POSType.ADJEKTIV)) {
+ if (isNonPredicativeAdjective(nextToken)) {
tokenPos = i + 2;
if (tokenPos >= tokens.length)
break;
@@ -214,6 +214,18 @@
return toRuleMatchArray(ruleMatches);
}
+ private boolean isNonPredicativeAdjective(AnalyzedGermanTokenReadings
tokensReadings) {
+ for (AnalyzedToken reading : tokensReadings.getReadings()) {
+ if (reading instanceof AnalyzedGermanToken) {
+ final AnalyzedGermanToken germanReading = (AnalyzedGermanToken)
reading;
+ if (germanReading.getType() == POSType.ADJEKTIV &&
!germanReading.getPOSTag().contains("PRD")) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
private boolean isRelevantPronoun(AnalyzedTokenReadings[] tokens, int pos) {
final AnalyzedGermanTokenReadings analyzedToken =
(AnalyzedGermanTokenReadings)tokens[pos];
boolean relevantPronoun = analyzedToken.hasReadingOfType(POSType.PRONOMEN);
Modified: trunk/JLanguageTool/src/resource/de/added.txt
===================================================================
--- trunk/JLanguageTool/src/resource/de/added.txt 2012-02-11 23:26:47 UTC
(rev 6511)
+++ trunk/JLanguageTool/src/resource/de/added.txt 2012-02-12 00:05:17 UTC
(rev 6512)
@@ -412,3 +412,11 @@
Bildnisses Bildnis SUB:GEN:SIN:NEU
Bildnis Bildnis SUB:DAT:SIN:NEU
Bildnis Bildnis SUB:AKK:SIN:NEU
+Schwinge Schwinge SUB:NOM:SIN:FEM
+Schwinge Schwinge SUB:GEN:SIN:FEM
+Schwinge Schwinge SUB:DAT:SIN:FEM
+Schwinge Schwinge SUB:AKK:SIN:FEM
+Schwingen Schwinge SUB:NOM:PLU:FEM
+Schwingen Schwinge SUB:GEN:PLU:FEM
+Schwingen Schwinge SUB:DAT:PLU:FEM
+Schwingen Schwinge SUB:AKK:PLU:FEM
Modified:
trunk/JLanguageTool/src/test/org/languagetool/rules/de/AgreementRuleTest.java
===================================================================
---
trunk/JLanguageTool/src/test/org/languagetool/rules/de/AgreementRuleTest.java
2012-02-11 23:26:47 UTC (rev 6511)
+++
trunk/JLanguageTool/src/test/org/languagetool/rules/de/AgreementRuleTest.java
2012-02-12 00:05:17 UTC (rev 6512)
@@ -108,7 +108,8 @@
assertGood("Das Stuttgarter Auto.");
assertGood("Das Bielefelder Radio.");
assertGood("Das Gütersloher Radio.");
-
+ assertGood("Das wirklich Wichtige kommt jetzt erst.");
+
// incorrect sentences:
assertBad("Es sind die Tisch.");
assertBad("Es sind das Tisch.");
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Languagetool-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs