Revision: 6147
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=6147&view=rev
Author:   gulp21-1
Date:     2012-01-02 12:55:41 +0000 (Mon, 02 Jan 2012)
Log Message:
-----------
[de] GermanWordRepeatRule: ignore cases like "Das Haus, in das das Kind 
l?\195?\164uft."
     DASSELBE_DAS_GLEICHE: corrected suggestion (das selbe -> dasselbe)
     VOLTZAHL: added Stundenkilometern

Modified Paths:
--------------
    
trunk/JLanguageTool/src/java/org/languagetool/rules/de/GermanWordRepeatRule.java
    trunk/JLanguageTool/src/rules/de/grammar.xml
    trunk/JLanguageTool/src/test/org/languagetool/rules/WordRepeatRuleTest.java

Modified: 
trunk/JLanguageTool/src/java/org/languagetool/rules/de/GermanWordRepeatRule.java
===================================================================
--- 
trunk/JLanguageTool/src/java/org/languagetool/rules/de/GermanWordRepeatRule.java
    2012-01-01 23:06:13 UTC (rev 6146)
+++ 
trunk/JLanguageTool/src/java/org/languagetool/rules/de/GermanWordRepeatRule.java
    2012-01-02 12:55:41 UTC (rev 6147)
@@ -30,8 +30,15 @@
   public boolean ignore(final AnalyzedTokenReadings[] tokens, final int 
position) {
     // Don't mark error for cases like:
     // "wie Honda und Samsung, die die Bezahlung ihrer Firmenchefs..."
-    if (position >= 2 && ",".equals(tokens[position - 2].getToken())) {
-      return true;
+    // "Das Haus, in das das Kind läuft."
+    if (tokens[position - 1].getToken().length() == 3) {
+      if (position >= 2 && ",".equals(tokens[position - 2].getToken())) {
+        return true;
+      }
+      if (position >= 3 && ",".equals(tokens[position - 3].getToken()) &&  
tokens[position - 2].getToken().matches("auf|nach|für|in|über")) {
+        return true;
+      }
+      return false;
     }
     return false;
   }

Modified: trunk/JLanguageTool/src/rules/de/grammar.xml
===================================================================
--- trunk/JLanguageTool/src/rules/de/grammar.xml        2012-01-01 23:06:13 UTC 
(rev 6146)
+++ trunk/JLanguageTool/src/rules/de/grammar.xml        2012-01-02 12:55:41 UTC 
(rev 6147)
@@ -15,6 +15,7 @@
 <!ENTITY advende " hier als Adverb gebraucht wird und daher kleingeschrieben 
werden muss.">
 <!ENTITY inwend "In der Wendung ">
 <!ENTITY getrennt "Bitte prüfen Sie die Getrenntschreibung: ">
+<!ENTITY umgangsspr " ist eine umgangssprachliche Bezeichnung.">
 <!ENTITY sprachadj1 
"afrikanisch|altarabisch|altchinesisch|altgriechisch|altpersisch|amerikanisch|arabisch|chinesisch|dänisch|deutsch|englisch|finnisch|französisch|frühneuhochdeutsch|germanisch|griechisch|hocharabisch|hochchinesisch|hochdeutsch|holländisch|italienisch|japanisch|jiddisch|jugoslawisch|koreanisch|kroatisch|lateinisch|luxemburgisch|mittelhochdeutsch|neuhochdeutsch|niederländisch|norwegisch|persisch|polnisch|portugiesisch|russisch|schwedisch|schweizerisch|semitisch|serbisch|serbokroatisch|slawisch|spanisch|tschechisch|türkisch|ukrainisch|ungarisch|weißrussisch">
 <!ENTITY sprachadj2 
"agglutinierend|algorithmisch|asiatisch|ausgestorben|bilderreich|bildlich|deutlich|dichterisch|europäisch|extensional|flektierend|formal|gesprochen|indogermanisch|intensional|klangvoll|konsonantenreich|maschinenorientiert|metaphorisch|poetisch|prosaisch|romanisch|schön|selten|vokalreich|wunderschön">
 <!ENTITY mahlennomen "Zahn|Mühle|Korn|Weizen|Getreide|.*Mehl|Müller">
@@ -2613,27 +2614,29 @@
           <token skip="-1" postag="SENT_START"><exception scope="next" 
regexp="yes">geb(urt|or).*</exception></token>
           <token regexp="yes">(am|in|im)</token>
           <token regexp="yes">gleiche.*</token>
-          <token regexp="yes" skip="-1">(Tag|Nacht|Monat|Jahr.*)<exception 
scope="next" regexp="yes">geb(urt|or).*</exception></token>
+          <token regexp="yes" 
skip="-1">Tag|Nacht|Monat|Jahr.*|(Vor|Nach)?mittag|Abend<exception scope="next" 
regexp="yes">geb(urt|or).*</exception></token>
           <token postag="SENT_END"/>
         </pattern>
         <message>Wenn man 'ein und dasselbe' sagen kann, sollte 'dasselbe' 
statt 'das gleiche' verwendet werden. Vorschlag: <suggestion><match no="3" 
regexp_match="gleiche" regexp_replace="selbe"/></suggestion>.</message>
         <example type="incorrect" correction="selben">Noch am 
<marker>gleichen</marker> Tag ist er gekommen.</example>
+        <example type="incorrect" correction="selben">Noch am 
<marker>gleichen</marker> Nachmittag ist er gekommen.</example>
+        <example type="incorrect" correction="selben">Noch am 
<marker>gleichen</marker> Mittag ist er gekommen.</example>
         <example type="correct">Noch am <marker>selben</marker> Tag ist er 
gekommen.</example>
         <example type="correct">Er hat am <marker>gleichen</marker> Tag wie 
ich Geburtstag, aber nicht im selben Jahr.</example>
         <example type="correct">Geburtstag hat er am <marker>gleichen</marker> 
Tag wie ich.</example>
       </rule>
       <rule>
-        <pattern mark_from="3" mark_to="-2">
+        <pattern mark_from="2" mark_to="-2">
           <token skip="-1" postag="SENT_START"><exception scope="next" 
regexp="yes">geb(urt|or).*</exception></token>
           <token>in</token>
           <token regexp="yes">(der|dem)</token>
           <token regexp="yes">gleiche.*</token>
-          <token regexp="yes" skip="-1">(Tag|Nacht|Monat|Jahr.*)<exception 
scope="next" regexp="yes">geb(urt|or).*</exception></token>
+          <token regexp="yes" skip="-1">Tag|Nacht|Monat|Jahr.*<exception 
scope="next" regexp="yes">geb(urt|or).*</exception></token>
           <token postag="SENT_END"/>
         </pattern>
-        <message>Wenn man 'ein und dasselbe' sagen kann, sollte 'dasselbe' 
statt 'das gleiche' verwendet werden. Vorschlag: <suggestion><match no="4" 
regexp_match="gleiche" regexp_replace="selbe"/></suggestion>.</message>
-        <example type="incorrect" correction="selben">Noch in der 
<marker>gleichen</marker> Nacht ist er gekommen.</example>
-        <example type="correct">Noch in der <marker>selben</marker> Nacht ist 
er gekommen.</example>
+        <message>Wenn man 'ein und dasselbe' sagen kann, sollte 'dasselbe' 
statt 'das gleiche' verwendet werden. Vorschlag: <suggestion>\3<match no="4" 
regexp_match="gleiche" regexp_replace="selbe"/></suggestion>.</message>
+        <example type="incorrect" correction="derselben">Noch in <marker>der 
gleichen</marker> Nacht ist er gekommen.</example>
+        <example type="correct">Noch in <marker>der selben</marker> Nacht ist 
er gekommen.</example>
       </rule>
     </rulegroup>
     <rulegroup id="VOLTZAHL" name="Umgangssprache: Einheitsbezeichnungen 
('Voltzahl', 'Stundenkilometer' etc.)">
@@ -2641,7 +2644,7 @@
         <pattern>
           <token regexp="yes">(Volt(-)?zahl(en)?)</token>
         </pattern>
-        <message>Meinten Sie <suggestion>elektrische Spannung</suggestion>? 
'Volt-Zahl' ist eine umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>elektrische Spannung</suggestion>? 
'Volt-Zahl'&umgangsspr;</message>
         <example type="correct">Die <marker>elektrischen 
Spannungen</marker></example>
         <example type="incorrect">Die <marker>Volt-Zahlen</marker></example>
       </rule>
@@ -2649,7 +2652,7 @@
         <pattern>
           <token regexp="yes">(Ampere(-)?zahl(en)?)</token>
         </pattern>
-        <message>Meinten Sie <suggestion>elektrische Stromstärke</suggestion>? 
'Ampere-Zahl' ist eine umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>elektrische Stromstärke</suggestion>? 
'Ampere-Zahl'&umgangsspr;</message>
         <example type="correct">Die <marker>elektrischen 
Stromstärken</marker></example>
         <example type="incorrect">Die <marker>Amperezahlen</marker></example>
       </rule>
@@ -2657,7 +2660,7 @@
         <pattern>
           <token regexp="yes">(Coulomb(-)?zahl(en)?)</token>
         </pattern>
-        <message>Meinten Sie <suggestion>elektrische Ladung</suggestion>? 
'Coulomb-Zahl' ist eine umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>elektrische Ladung</suggestion>? 
'Coulomb-Zahl'&umgangsspr;</message>
         <example type="correct">Die <marker>elektrische 
Ladung</marker></example>
         <example type="incorrect">Die <marker>Coulombzahl</marker></example>
       </rule>
@@ -2665,7 +2668,7 @@
         <pattern>
           <token regexp="yes">(.*Watt(-)?zahl(en)?)</token>
         </pattern>
-        <message>Meinten Sie <suggestion>Leistung</suggestion> oder 
<suggestion>Leistungsangabe</suggestion>? 'Watt-Zahl' ist eine 
umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>Leistung</suggestion> oder 
<suggestion>Leistungsangabe</suggestion>? 'Watt-Zahl'&umgangsspr;</message>
         <example type="correct">Die <marker>Leistungsangaben</marker></example>
         <example type="incorrect">Die <marker>Kilowattzahlen</marker></example>
       </rule>
@@ -2673,7 +2676,7 @@
         <pattern>
           <token regexp="yes">(.*Gramm(-)?zahl(en)?)</token>
         </pattern>
-        <message>Meinten Sie <suggestion>Masse</suggestion>? 'Gramm-Zahl' ist 
eine umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>Masse</suggestion>? 
'Gramm-Zahl'&umgangsspr;</message>
         <example type="correct">Die <marker>Masse</marker> beträgt 5 
kg.</example>
         <example type="incorrect">Die <marker>Kilogrammzahl</marker> ist 
5.</example>
       </rule>
@@ -2681,17 +2684,25 @@
         <pattern>
           <token>Stundenkilometer</token>
         </pattern>
-        <message>Meinten Sie <suggestion>Kilometer pro Stunde</suggestion> 
oder <suggestion><match regexp_match="Stundenkilometer" regexp_replace="km/h" 
case_conversion="startlower" no="1"/></suggestion>? 'Stundenkilometer' (stünde 
für 'Kilometer mal Stunde') ist eine umgangssprachliche Bezeichnung.</message> 
<!-- TODO startlower not working?-->
+        <message>Meinten Sie <suggestion>Kilometer pro Stunde</suggestion> 
oder <suggestion><match regexp_match="Stundenkilometer" regexp_replace="km/h" 
case_conversion="startlower" no="1"/></suggestion>? 'Stundenkilometer' (stünde 
für 'Kilometer mal Stunde')&umgangsspr;</message> <!-- TODO startlower not 
working?-->
         <example type="incorrect">5 <marker>Stundenkilometer</marker> 
schnell</example>
         <example type="correct">5 <marker>Kilometer pro Stunde</marker> 
schnell</example>
       </rule>
       <rule>
+        <pattern>
+          <token>Stundenkilometern</token>
+        </pattern>
+        <message>Meinten Sie <suggestion>Kilometern pro Stunde</suggestion> 
oder <suggestion><match regexp_match="Stundenkilometer" regexp_replace="km/h" 
case_conversion="startlower" no="1"/></suggestion>? 'Stundenkilometer' (stünde 
für 'Kilometer mal Stunde')&umgangsspr;</message> <!-- TODO startlower not 
working?-->
+        <example type="incorrect">mit 5 
<marker>Stundenkilometern</marker></example>
+        <example type="correct">mit 5 <marker>Kilometern pro 
Stunde</marker></example>
+      </rule>
+      <rule>
         <pattern mark_from="2">
           <token inflected="yes" skip="2">wiegen<exception 
scope="next">,</exception></token>
           <token regexp="yes">[0-9]+</token>
           <token>Kilo</token>
         </pattern>
-        <message>Meinten Sie <suggestion>Kilogramm</suggestion>? 'Kilo' ist 
eine umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>Kilogramm</suggestion>? 
'Kilo'&umgangsspr;</message>
         <example type="incorrect">Er wiegt mehr als 5 
<marker>Kilo</marker>.</example>
         <example type="correct">Er wiegt 5 
<marker>Kilogramm</marker>.</example>
       </rule>
@@ -2701,7 +2712,7 @@
           <token postag="ZAL"/>
           <token>Kilo</token>
         </pattern>
-        <message>Meinten Sie <suggestion>Kilogramm</suggestion>? 'Kilo' ist 
eine umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>Kilogramm</suggestion>? 
'Kilo'&umgangsspr;</message>
         <example type="incorrect">Er wiegt mehr als fünf 
<marker>Kilo</marker>.</example>
         <example type="correct">Er wiegt fünf 
<marker>Kilogramm</marker>.</example>
       </rule>
@@ -2711,7 +2722,7 @@
           <token skip="2">Kilo<exception scope="next">,</exception></token>
           <token inflected="yes" regexp="yes">(wiegen|schwer)</token>
         </pattern>
-        <message>Meinten Sie <suggestion>Kilogramm</suggestion>? 'Kilo' ist 
eine umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>Kilogramm</suggestion>? 
'Kilo'&umgangsspr;</message>
         <example type="incorrect">Es ist nicht schlimm, zwei 
<marker>Kilo</marker> schwerer zu sein.</example>
         <example type="correct">Es ist nicht schlimm, nur vier 
<marker>Kilogramm</marker> zu wiegen.</example>
       </rule>
@@ -2721,7 +2732,7 @@
           <token skip="2">Kilo<exception scope="next">,</exception></token>
           <token inflected="yes" regexp="yes">(wiegen|schwer)</token>
         </pattern>
-        <message>Meinten Sie <suggestion>Kilogramm</suggestion>? 'Kilo' ist 
eine umgangssprachliche Bezeichnung.</message>
+        <message>Meinten Sie <suggestion>Kilogramm</suggestion>? 
'Kilo'&umgangsspr;</message>
         <example type="incorrect">Es ist nicht schlimm, nur 4,5 
<marker>Kilo</marker> zu wiegen.</example>
         <example type="correct">Es ist nicht schlimm, nur 4,5 
<marker>Kilogramm</marker> zu wiegen.</example>
       </rule>

Modified: 
trunk/JLanguageTool/src/test/org/languagetool/rules/WordRepeatRuleTest.java
===================================================================
--- trunk/JLanguageTool/src/test/org/languagetool/rules/WordRepeatRuleTest.java 
2012-01-01 23:06:13 UTC (rev 6146)
+++ trunk/JLanguageTool/src/test/org/languagetool/rules/WordRepeatRuleTest.java 
2012-01-02 12:55:41 UTC (rev 6147)
@@ -59,11 +59,17 @@
     assertEquals(0, matches.length);
     matches = rule.match(langTool.getAnalyzedSentence("Sätze, die die 
testen."));
     assertEquals(0, matches.length);
+    matches = rule.match(langTool.getAnalyzedSentence("Das Haus, auf das das 
Mädchen zeigt."));
+    assertEquals(0, matches.length);
     // incorrect sentences:
     matches = rule.match(langTool.getAnalyzedSentence("Die die Sätze zum 
testen."));
     assertEquals(1, matches.length);
     matches = rule.match(langTool.getAnalyzedSentence("Und die die Sätze zum 
testen."));
     assertEquals(1, matches.length);
+    matches = rule.match(langTool.getAnalyzedSentence("Auf der der Fensterbank 
steht eine Blume."));
+    assertEquals(1, matches.length);
+    matches = rule.match(langTool.getAnalyzedSentence("Das Buch, in in dem es 
steht."));
+    assertEquals(1, matches.length);
   }
   
   public void testRulePolish() throws IOException {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Languagetool-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs

Reply via email to