petrovich 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +19 -19
- data/lib/petrovich.rb +1 -1
- data/lib/petrovich/extension.rb +12 -9
- data/lib/tasks/evaluate.rake +3 -3
- data/rules/rules.yml +8 -29
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bdd0d35ffbd7b6455086828943281878f4b562a
|
4
|
+
data.tar.gz: 0ba6ed9248845aa1ca241f7ec84925397ffbef13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d743a612fdc52f4f3992fffe81e4ffe4867e93a971aaa05b8c1aacb15b332df6ba591379c25e368acfea5e547c503e31b9bae59f6d7a9202dd97dfc1dccac73
|
7
|
+
data.tar.gz: b254a76b0922ed3b752ca40cfe87a11ea25e0025133295c508617a45d67ba12549ce307b5cd63a9e7112991ce936813bcdee423cea72136d2383da68c7a0509a
|
data/README.md
CHANGED
@@ -48,7 +48,7 @@ p.middlename('Сергеевич', :dative) # => Сергеевичу
|
|
48
48
|
украинские фамилии, как Симоненко, а также заимствованные фамилии,
|
49
49
|
такие как Нельсон.
|
50
50
|
|
51
|
-
Важно понимать, что явное указание пола повышает
|
51
|
+
Важно понимать, что явное указание пола повышает аккуратность обработки слов.
|
52
52
|
Если пол неизвестен, однако известно отчество, то гем постарается
|
53
53
|
определить по пол отчеству на основе простой эвристики.
|
54
54
|
|
@@ -182,35 +182,35 @@ p.middlename('Золовне', :accusative, :dative) # => Золовну
|
|
182
182
|
p.lastname('Соловецкой', :accusative, :dative) # => Соловецкую
|
183
183
|
```
|
184
184
|
|
185
|
-
## Оценка
|
185
|
+
## Оценка аккуратности
|
186
186
|
|
187
187
|
Тестирование гема при склонении коллекции фамилий из морфологического
|
188
|
-
словаря [АОТ] показало
|
188
|
+
словаря [АОТ] показало аккуратность около 99%. Оригинальный словарь
|
189
189
|
распространяется по лицензии LGPL версии 2.1, однако используется
|
190
|
-
только в задаче оценки
|
190
|
+
только в задаче оценки аккуратности данного гема.
|
191
191
|
|
192
|
-
Для оценки
|
192
|
+
Для оценки аккуратности достаточно выполнить команду `rake evaluate`. После
|
193
193
|
выполнения этой команды в поток стандартного вывода будут напечатаны
|
194
194
|
результаты оценки с данными в словаре АОТ.
|
195
195
|
|
196
196
|
```
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
197
|
+
Ac(nominative|male) = 100.0000%
|
198
|
+
Ac(genitive|male) = 99.7635%
|
199
|
+
Ac(dative|male) = 99.7884%
|
200
|
+
Ac(accusative|male) = 99.8008%
|
201
|
+
Ac(instrumental|male) = 99.3037%
|
202
|
+
Ac(prepositional|male) = 99.7759%
|
203
203
|
```
|
204
204
|
```
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
205
|
+
Ac(nominative|female) = 100.0000%
|
206
|
+
Ac(genitive|female) = 99.9102%
|
207
|
+
Ac(dative|female) = 99.9401%
|
208
|
+
Ac(accusative|female) = 99.9701%
|
209
|
+
Ac(instrumental|female) = 99.4636%
|
210
|
+
Ac(prepositional|female) = 99.9401%
|
211
211
|
```
|
212
212
|
|
213
|
-
В настоящий момент наблюдается
|
213
|
+
В настоящий момент наблюдается аккуратность в 99.7984% на основе обработки
|
214
214
|
88314 примеров.
|
215
215
|
|
216
216
|
[АОТ]: http://seman.svn.sourceforge.net/viewvc/seman/trunk/Docs/Morph_UNIX.txt?revision=HEAD&view=markup
|
@@ -227,7 +227,7 @@ Pr(prepositional|female) = 99.9401%
|
|
227
227
|
## Благодарности
|
228
228
|
|
229
229
|
Эта библиотека не была бы столь замечательна без содействия Павла Скрылёва,
|
230
|
-
Никиты Помящего, Игоря
|
230
|
+
Никиты Помящего, Игоря Бочкарёва, и других хороших людей.
|
231
231
|
|
232
232
|
## Портирование
|
233
233
|
|
data/lib/petrovich.rb
CHANGED
data/lib/petrovich/extension.rb
CHANGED
@@ -66,19 +66,22 @@ class Petrovich
|
|
66
66
|
end
|
67
67
|
|
68
68
|
module ClassMethods
|
69
|
-
def
|
70
|
-
|
71
|
-
class << self
|
72
|
-
attr_accessor :petrovich_configuration
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
self.petrovich_configuration = {
|
69
|
+
def petrovich_configuration
|
70
|
+
@petrovich_configuration ||= {
|
77
71
|
:lastname => nil,
|
78
72
|
:firstname => nil,
|
79
73
|
:middlename => nil,
|
80
74
|
:gender => nil
|
81
|
-
}
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
def petrovich(options)
|
79
|
+
self.petrovich_configuration.update(options)
|
80
|
+
end
|
81
|
+
|
82
|
+
def inherited(subclass)
|
83
|
+
subclass.petrovich_configuration.update(self.petrovich_configuration)
|
84
|
+
super
|
82
85
|
end
|
83
86
|
end
|
84
87
|
|
data/lib/tasks/evaluate.rake
CHANGED
@@ -74,14 +74,14 @@ task :evaluate => :petrovich do
|
|
74
74
|
end
|
75
75
|
|
76
76
|
total.each do |(gender, gcase), correct_count|
|
77
|
-
|
78
|
-
puts "\
|
77
|
+
accuracy = correct[[gender, gcase]] / correct_count.to_f * 100
|
78
|
+
puts "\tAc(%s|%s) = %.4f%%" % [gcase, gender, accuracy]
|
79
79
|
end
|
80
80
|
|
81
81
|
correct_size = correct.values.inject(&:+)
|
82
82
|
total_size = total.values.inject(&:+)
|
83
83
|
|
84
|
-
puts 'Well, the
|
84
|
+
puts 'Well, the accuracy on %d examples is about %.4f%%.' %
|
85
85
|
[total_size, (correct_size / total_size.to_f * 100)]
|
86
86
|
|
87
87
|
puts 'Sum of the %d correct examples and %d mistakes is %d.' %
|
data/rules/rules.yml
CHANGED
@@ -1,32 +1,3 @@
|
|
1
|
-
# Набор правил для склонения русских имён, фамилий и отчеств по падежам.
|
2
|
-
#
|
3
|
-
# = Описание формата файла
|
4
|
-
#
|
5
|
-
# Файл содержит 3 группы правил. Это +lastname+, +firstname+ и +middlename+. Каждая группа
|
6
|
-
# содержит подгруппы с правилами:
|
7
|
-
#
|
8
|
-
# * Подгруппа +exceptions+ (её может не быть)
|
9
|
-
# * Подгруппа +suffixes+
|
10
|
-
#
|
11
|
-
# == Правила
|
12
|
-
#
|
13
|
-
# В свою очередь, каждая подгруппа содержит набор правил. Каждое правило содержит 3 составляющие:
|
14
|
-
#
|
15
|
-
# * Пол (gender). Допустимые значения: +male+, +female+, +androgynous+
|
16
|
-
# * Что заменять (test). Массив суффиксов для замены.
|
17
|
-
# * На что заменять (mods). Массив модификаторов. Модификатор может иметь впереди один или
|
18
|
-
# дефис, он означает количество символов, которые нужно будет вырезать из слова.
|
19
|
-
#
|
20
|
-
# Правила отделяются друг от друга переносом строки для лучшего восприятия.
|
21
|
-
#
|
22
|
-
# === Из чего состоят суффиксы
|
23
|
-
#
|
24
|
-
# === Из чего состоят модификаторы
|
25
|
-
#
|
26
|
-
# [родительный, дательный, винительный, творительный, предложный]
|
27
|
-
#
|
28
|
-
# == Как добавить новое правило
|
29
|
-
#
|
30
1
|
lastname:
|
31
2
|
exceptions:
|
32
3
|
# Неизменяемые первые части двойных русских фамилий.
|
@@ -291,6 +262,14 @@ firstname:
|
|
291
262
|
test: [я]
|
292
263
|
mods: [-и, -е, -ю, -ей, -е]
|
293
264
|
|
265
|
+
- gender: male
|
266
|
+
test: [ия]
|
267
|
+
mods: [-и, -и, -ю, -ей, -и]
|
268
|
+
|
269
|
+
- gender: male
|
270
|
+
test: [я]
|
271
|
+
mods: [-и, -е, -ю, -ей, -е]
|
272
|
+
|
294
273
|
- gender: male
|
295
274
|
test: [ей]
|
296
275
|
mods: [-я, -ю, -я, -ем, -е]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: petrovich
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozloff
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02
|
12
|
+
date: 2014-10-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: unicode_utils
|