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

Reply via email to