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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 172b74ffbc89257e10d65ff26748ec1cd60e8d7a
4
- data.tar.gz: fddc2e767c1e1a0870c2ed56062aee987f88bcf5
3
+ metadata.gz: 5bdd0d35ffbd7b6455086828943281878f4b562a
4
+ data.tar.gz: 0ba6ed9248845aa1ca241f7ec84925397ffbef13
5
5
  SHA512:
6
- metadata.gz: 618bd1860e0809bc81700dc45fc14736bf0045ea6f5681574248e5965a84353753fb9ae2cd6dea2dd398529dfc1f58b32b8d4309f8c5578fdcc45415c571d033
7
- data.tar.gz: 34caf140f11fb16c4a351be843ccabbb70520e1385db435c096f73c733adfba4baaa705f4c183ae354157cd8ddaf59fc3ebbf249a0a2c38dd884f3ebc0f7911e
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
- словаря [АОТ] показало точность около 99%. Оригинальный словарь
188
+ словаря [АОТ] показало аккуратность около 99%. Оригинальный словарь
189
189
  распространяется по лицензии LGPL версии 2.1, однако используется
190
- только в задаче оценки точности данного гема.
190
+ только в задаче оценки аккуратности данного гема.
191
191
 
192
- Для оценки точности достаточно выполнить команду `rake evaluate`. После
192
+ Для оценки аккуратности достаточно выполнить команду `rake evaluate`. После
193
193
  выполнения этой команды в поток стандартного вывода будут напечатаны
194
194
  результаты оценки с данными в словаре АОТ.
195
195
 
196
196
  ```
197
- Pr(nominative|male) = 100.0000%
198
- Pr(genitive|male) = 99.7635%
199
- Pr(dative|male) = 99.7884%
200
- Pr(accusative|male) = 99.8008%
201
- Pr(instrumental|male) = 99.3037%
202
- Pr(prepositional|male) = 99.7759%
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
- Pr(nominative|female) = 100.0000%
206
- Pr(genitive|female) = 99.9102%
207
- Pr(dative|female) = 99.9401%
208
- Pr(accusative|female) = 99.9701%
209
- Pr(instrumental|female) = 99.4636%
210
- Pr(prepositional|female) = 99.9401%
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
- В настоящий момент наблюдается точность в 99.7984% на основе обработки
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
 
@@ -77,7 +77,7 @@ class Petrovich
77
77
  #
78
78
  def detect_gender(midname)
79
79
  case UnicodeUtils.downcase(midname[-2, 2])
80
- when 'ич'
80
+ when /ич|ыч/
81
81
  'male'
82
82
  when 'на'
83
83
  'female'
@@ -66,19 +66,22 @@ class Petrovich
66
66
  end
67
67
 
68
68
  module ClassMethods
69
- def petrovich(options)
70
- class_eval do
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
- }.merge(options)
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
 
@@ -74,14 +74,14 @@ task :evaluate => :petrovich do
74
74
  end
75
75
 
76
76
  total.each do |(gender, gcase), correct_count|
77
- precision = correct[[gender, gcase]] / correct_count.to_f * 100
78
- puts "\tPr(%s|%s) = %.4f%%" % [gcase, gender, precision]
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 precision on %d examples is about %.4f%%.' %
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.' %
@@ -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.5
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-27 00:00:00.000000000 Z
12
+ date: 2014-10-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: unicode_utils