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