petrovich 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|