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