Revision: 10053
          http://sourceforge.net/p/languagetool/code/10053
Author:   arysin
Date:     2013-05-07 19:30:53 +0000 (Tue, 07 May 2013)
Log Message:
-----------
Ukrainian dictionary and rules update
Ukrainian simple replace rule now supports inflections

Modified Paths:
--------------
    
trunk/languagetool/languagetool-language-modules/uk/src/main/java/org/languagetool/rules/uk/SimpleReplaceRule.java
    
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/src/tagset.txt
    
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/ukrainian.dict
    
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/ukrainian_synth.dict
    
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/ukrainian_tags.txt
    
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/rules/uk/grammar.xml
    
trunk/languagetool/languagetool-language-modules/uk/src/test/java/org/languagetool/rules/uk/SimpleReplaceRuleTest.java
    
trunk/languagetool/languagetool-language-modules/uk/src/test/java/org/languagetool/tagging/uk/UkrainianTaggerTest.java

Modified: 
trunk/languagetool/languagetool-language-modules/uk/src/main/java/org/languagetool/rules/uk/SimpleReplaceRule.java
===================================================================
--- 
trunk/languagetool/languagetool-language-modules/uk/src/main/java/org/languagetool/rules/uk/SimpleReplaceRule.java
  2013-05-07 04:35:58 UTC (rev 10052)
+++ 
trunk/languagetool/languagetool-language-modules/uk/src/main/java/org/languagetool/rules/uk/SimpleReplaceRule.java
  2013-05-07 19:30:53 UTC (rev 10053)
@@ -32,6 +32,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.languagetool.AnalyzedSentence;
 import org.languagetool.AnalyzedTokenReadings;
+import org.languagetool.AnalyzedToken;
 import org.languagetool.JLanguageTool;
 import org.languagetool.rules.Category;
 import org.languagetool.rules.Rule;
@@ -102,18 +103,34 @@
     return FILE_ENCODING;
   }
 
+  private String cleanup(String word) {
+    if( ! isCaseSensitive() ) {
+      word = word.toLowerCase(getLocale());
+    }
+    return word;
+  }
+  
   @Override
   public final RuleMatch[] match(final AnalyzedSentence text) {
     List<RuleMatch> ruleMatches = new ArrayList<RuleMatch>();
     AnalyzedTokenReadings[] tokens = text.getTokensWithoutWhitespace();
 
     for (AnalyzedTokenReadings tokenReadings: tokens) {
-       String tokenString = tokenReadings.getToken();
+       String tokenString = cleanup( tokenReadings.getToken() );
 
-       if( ! isCaseSensitive() ) {
-               tokenString = tokenString.toLowerCase(getLocale());
-       }
-       
+        if( ! wrongWords.containsKey(tokenString) ) {
+          for(AnalyzedToken analyzedToken: tokenReadings.getReadings()) {
+           String lemma = analyzedToken.getLemma();
+           if( lemma != null ) {
+             lemma = cleanup(lemma);
+             if( wrongWords.containsKey(lemma) ) {
+               tokenString = lemma;
+               break;
+             }
+           }
+          }
+        }
+
        List<String> replacements = wrongWords.get(tokenString);
       
        if (replacements != null && replacements.size() > 0 ) {

Modified: 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/src/tagset.txt
===================================================================
--- 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/src/tagset.txt
  2013-05-07 04:35:58 UTC (rev 10052)
+++ 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/src/tagset.txt
  2013-05-07 19:30:53 UTC (rev 10053)
@@ -8,6 +8,7 @@
 prysudk_sl      присудкове слово
 insert          вставне слово
 dieprysl        дієприслівник
+impers          безособова форма дієслова
 conj    сполучник
 part    частка
 excl    вигук

Modified: 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/ukrainian.dict
===================================================================
(Binary files differ)

Modified: 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/ukrainian_synth.dict
===================================================================
(Binary files differ)

Modified: 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/ukrainian_tags.txt
===================================================================
--- 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/ukrainian_tags.txt
      2013-05-07 04:35:58 UTC (rev 10052)
+++ 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/resource/uk/ukrainian_tags.txt
      2013-05-07 19:30:53 UTC (rev 10053)
@@ -173,6 +173,7 @@
 noun:m:v_mis:bad
 noun:m:v_naz
 noun:m:v_naz//n:v_naz
+noun:m:v_naz/v_zna//n:v_naz/v_zna
 noun:m:v_oru
 noun:m:v_oru:bad
 noun:m:v_rod
@@ -215,14 +216,33 @@
 noun:v_oru
 noun:v_rod/v_zna/v_mis
 numr
+numr:f:v_dav/v_mis
+numr:f:v_naz
+numr:f:v_oru
+numr:f:v_rod
+numr:f:v_zna
+numr:m:v_dav/v_mis//n:v_dav/v_mis
+numr:m:v_mis//n:v_mis
+numr:m:v_naz/v_zna
+numr:m:v_oru//n:v_oru
+numr:m:v_rod//n:v_rod
+numr:n:v_naz
+numr:n:v_naz/v_zna
+numr:p:v_naz/v_zna
+numr:p:v_oru
+numr:p:v_rod
 numr:v_dav
 numr:v_dav:bad
 numr:v_mis
 numr:v_mis:bad
 numr:v_naz
+numr:v_naz/v_zna
 numr:v_oru
+numr:v_oru/v_zna/v_mis
 numr:v_oru:bad
 numr:v_rod
+numr:v_rod/v_dav/v_mis
+numr:v_rod/v_dav/v_oru/v_mis
 numr:v_rod/v_zna
 numr:v_rod/v_zna/v_mis
 numr:v_rod:bad
@@ -241,6 +261,7 @@
 pron:m:v_naz
 pron:m:v_naz/v_zna
 pron:m:v_oru//n:v_oru
+pron:m:v_oru//n:v_oru//p:v_dav
 pron:m:v_rod/v_zna//n:v_rod/v_zna
 pron:n:v_naz
 pron:n:v_naz/v_zna
@@ -268,8 +289,10 @@
 pryim:rv_rod
 pryim:rv_rod/rv_zna/rv_oru
 pryim:rv_rod:rv_oru
+pryim:rv_rod:rv_zna:rv_oru
 pryim:rv_zna
 pryim:rv_zna:rv_mis
+pryim:rv_zna:rv_mis:rv_rod
 pryim:rv_zna:rv_mis:rv_zna
 pryim:rv_zna:rv_oru
 prysudk_sl

Modified: 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/rules/uk/grammar.xml
===================================================================
--- 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/rules/uk/grammar.xml
        2013-05-07 04:35:58 UTC (rev 10052)
+++ 
trunk/languagetool/languagetool-language-modules/uk/src/main/resources/org/languagetool/rules/uk/grammar.xml
        2013-05-07 19:30:53 UTC (rev 10053)
@@ -139,7 +139,7 @@
             <rule>
                 <pattern case_sensitive="yes">
                     <marker>
-                    <token regexp="yes" 
negate="yes">[\p{Punct}–—«\(]|[нН]у|[АаІіЙй]|але<exception 
postag="SENT_START"></exception></token>
+                    <token regexp="yes" 
negate="yes">[\p{Punct}–—«\(„]|[нН]у|[АаІіЙй]|але<exception 
postag="SENT_START"></exception></token>
                     <token regexp="yes">а|але|однак|проте|зате</token>
                     </marker>
                     <token regexp="yes" negate="yes">[\p{Punct}–—«\(]</token>
@@ -347,24 +347,27 @@
             </rule>
         </rulegroup>
 -->
+<!--
         <rulegroup name="Більш з числівниками" id="BILSHE_WITH_NUMERICS">
             <rule>
                 <pattern>
                     <token>більше</token>
-                    <token postag_regexp="yes" postag="numr.*"/>
+                    <token postag_regexp="yes" postag="numr.*">
+                        <exception regexp="yes" 
inflected="yes">один</exception>
+                    <token>
                 </pattern>
                 <message>З числівником замість «більше» треба вживати «понад»: 
<suggestion>понад <match no="2" postag="numr:v_naz"/></suggestion></message>
                 <example type="correct">Більше галасу</example>
                 <example type="incorrect"><marker>Більше 
ста</marker>.</example>
             </rule>
         </rulegroup>
-    
+-->
         <!-- TODO:
             проблеми: 1) як пропонувати "й", якщо наступне не почитанється з 
"й", і "та", якщо далі не йде "а"
                       2) як пропонувати частину слова "дощ йде" -> "дощ іде"?
         -->
+        <rulegroup name="Милозвучність" id="NICE">
             <!--
-        <rulegroup name="Милозвучність" id="NICE">
                   <rule>
                       <pattern>
                           <token regexp="yes">.*[аеєиіїоуюя]</token>
@@ -555,22 +558,26 @@
                 <example type="incorrect">Родина <marker>з</marker> шести 
осіб.</example>
                 <example type="incorrect">Родина <marker>зі</marker> шести 
осіб.</example>
             </rule>
+            -->
 
             <rule>
                 <pattern>
                     <marker>
                         <token regexp="yes">із|з</token>
                     </marker>
-                    <token 
regexp="yes">[зсцчшщ][ь]*[56789ґйцкнгшщзхфвпрлджчсмтбqwrtpsdfghjklzxcvbnm].*</token>
+                    <token 
regexp="yes">[зсшщ]ь?[56789ґйцкнгшщзхфвпрлджчсмтбqwrtpsdfghjklzxcvbnm].*
+                        <exception regexp="yes">\p{Lu}\p{Lu}.*</exception>
+                    </token>
                 </pattern>
                 <message>Перед сполученням приголосних із початковим свистячим 
або шиплячим пишемо зі: <suggestion>зі</suggestion> \2</message>
                 <example type="correct">Бере книжку зі стола.</example>
                 <example type="correct">Висновок із цього.</example>
+                <example type="correct">Балада зі знаком запитання.</example>
+                <example type="correct">Організація з США підкуплена.</example>
                 <example type="incorrect">Бере книжку <marker>із</marker> 
стола.</example>
                 <example type="incorrect">Бере книжку <marker>з</marker> 
стола.</example>
             </rule>
         </rulegroup>
-            -->
     </category>
 
     <category name="Borrowings">
@@ -704,6 +711,7 @@
             <token>що</token>
          </pattern>
          <message>Правильно: <suggestion>вважати</suggestion>, 
<suggestion>гадати</suggestion></message>
+         <url>http://kurylo.wikidot.com/23-deiaki-khybno-vzhyvani-slova</url>
          <example type="incorrect">Він <marker>рахував</marker>, що все буде 
гаразд.</example>
          <example type="correct">Він вважав, що все буде гаразд.</example>
        </rule>
@@ -714,10 +722,42 @@
             <token>про</token>
          </pattern>
          <message>Правильно: <suggestion>йдеться про</suggestion></message>
+         <url>http://kurylo.wikidot.com/23-deiaki-khybno-vzhyvani-slova</url>
          <example type="incorrect"><marker>Мова йде про</marker> наслідки 
перемовин.</example>
          <example type="correct">Йдеться про наслідки перемовин.</example>
        </rule>
        <rule>
+         <pattern>
+            <token>справа</token>
+            <token>в</token>
+            <token>тому</token>
+         </pattern>
+         <message>Правильно: <suggestion>річ у тому</suggestion>, 
<suggestion>річ у тім</suggestion></message>
+         <url>http://kurylo.wikidot.com/23-deiaki-khybno-vzhyvani-slova</url>
+         <example type="incorrect"><marker>Справа в тому</marker>, що його 
немає.</example>
+         <example type="correct">Річ у тім, що його немає.</example>
+       </rule>
+       <rule>
+         <pattern>
+            <token>без</token>
+            <token regexp="yes" inflected="yes">(усякий|весь)</token>
+         </pattern>
+         <message>Правильно: <suggestion>без ніякого</suggestion>, 
<suggestion>без нічого</suggestion></message>
+         <url>http://kurylo.wikidot.com/23-deiaki-khybno-vzhyvani-slova</url>
+         <example type="incorrect">Вони виходять на попа <marker>без 
усякої</marker> науки.</example>
+         <example type="correct">Вони виходять на попа без ніякої 
науки.</example>
+       </rule>
+       <rule>
+         <pattern>
+            <token>один</token>
+            <token inflected="yes">другий</token>
+         </pattern>
+         <message>Правильно: <suggestion>один одного</suggestion></message>
+         <url>http://kurylo.wikidot.com/23-deiaki-khybno-vzhyvani-slova</url>
+         <example type="incorrect"><marker>Один другому</marker> 
допомагають.</example>
+         <example type="correct">Один одному допомагають.</example>
+       </rule>
+       <rule>
          <pattern> <!-- TODO: make it more generic -->
             <token regexp="yes">(дві|три|чотири)</token>
             <token>неділі</token>

Modified: 
trunk/languagetool/languagetool-language-modules/uk/src/test/java/org/languagetool/rules/uk/SimpleReplaceRuleTest.java
===================================================================
--- 
trunk/languagetool/languagetool-language-modules/uk/src/test/java/org/languagetool/rules/uk/SimpleReplaceRuleTest.java
      2013-05-07 04:35:58 UTC (rev 10052)
+++ 
trunk/languagetool/languagetool-language-modules/uk/src/test/java/org/languagetool/rules/uk/SimpleReplaceRuleTest.java
      2013-05-07 19:30:53 UTC (rev 10053)
@@ -51,5 +51,9 @@
                assertEquals(1, matches.length);
                assertEquals(Arrays.asList("Нападник", "Нападальний", 
"Нападний"), matches[0].getSuggestedReplacements());
 
+               matches = 
rule.match(langTool.getAnalyzedSentence("Нападаючого"));
+               assertEquals(1, matches.length);
+               assertEquals(Arrays.asList("Нападник", "Нападальний", 
"Нападний"), matches[0].getSuggestedReplacements());
+
        }
 }

Modified: 
trunk/languagetool/languagetool-language-modules/uk/src/test/java/org/languagetool/tagging/uk/UkrainianTaggerTest.java
===================================================================
--- 
trunk/languagetool/languagetool-language-modules/uk/src/test/java/org/languagetool/tagging/uk/UkrainianTaggerTest.java
      2013-05-07 04:35:58 UTC (rev 10052)
+++ 
trunk/languagetool/languagetool-language-modules/uk/src/test/java/org/languagetool/tagging/uk/UkrainianTaggerTest.java
      2013-05-07 19:30:53 UTC (rev 10053)
@@ -44,10 +44,10 @@
     TestTools.myAssert("Справу порушено судом", 
       "Справу/[справа]noun:f:v_zna -- порушено/[порушено]impers -- 
судом/[суд]noun:m:v_oru|судом/[судома]noun:p:v_rod",
        tokenizer, tagger);
-    
+       
     String expected = 
-      "Майже/[null]null -- два/[два]noun:m:v_naz//n:v_naz -- 
роки/[рік]noun:p:v_naz|роки/[рік]noun:p:v_zna -- 
тому/[той]pron|тому/[том]noun:m:v_rod"
-    + " -- Люба/[Люба]noun:f:v_naz|Люба/[любий]adj:f:v_naz -- 
разом/[раз]noun:m:v_oru -- із/[із]pryim:rv_rod/rv_zna/rv_oru"
+      "Майже/[null]null -- 
два/[два]noun:m:v_naz|два/[два]noun:m:v_zna|два/[два]noun:n:v_naz|два/[два]noun:n:v_zna
 -- роки/[рік]noun:p:v_naz|роки/[рік]noun:p:v_zna -- 
тому/[той]pron|тому/[том]noun:m:v_rod"
+    + " -- Люба/[Люба]noun:f:v_naz|Люба/[любий]adj:f:v_naz -- 
разом/[раз]noun:m:v_oru -- із/[із]pryim:rv_rod:rv_zna:rv_oru"
     + " -- чоловіком/[чоловік]noun:m:v_oru -- Степаном/[Степан]noun:m:v_oru -- 
виїхали/[виїхати]verb:past:m -- туди/[туди]adv"
     + " -- на/[на]pryim:rv_zna:rv_mis -- 
проживання/[проживання]noun:n:v_naz|проживання/[проживання]noun:n:v_rod|проживання/[проживання]noun:n:v_zna";
   

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


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Languagetool-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-commits

Reply via email to