それは常に便利であるとは限らず、常に美しいとは限らず、常に適切とは限りません。 ロシア語は豊富な形態学に恵まれており、自動処理が多少複雑になります。 名詞で期待されるように、人名は単語形成のすべての規則に従うことを誰もが知っています。
Rubyを使用しているときにこの問題を解決するために、ロシア語を話す名前、姓、愛称を自動的に拒否する便利な軽量ライブラリであるPetrovichがあります。

エッセンス
Petrovichアルゴリズムは、手動の語形成ルールベースに基づいています。 アプリケーションプログラマがライブラリを操作するのは非常に簡単です。 標準形式の単語は入力で示され、要求された属と単語の単語は出力で取得されます。
使用する
基本的な構文は理解するのに十分簡単です。
petrovich = Petrovich.new(:male) petrovich.lastname('', :dative) # => petrovich.firstname('', :dative) # => petrovich.middlename('', :dative) # =>
ご覧のとおり、アナライザーの動作を説明する2つのパラメーターがあります。性別は
Petrovich
クラスのコンストラクターに渡され、2番目のパラメーターは赤緯メソッドに該当します。
まず、名前の性別。 Petrovichは3つのオプションを検討しています。
- 男性性別
:male
; - 女性性別
:female
; - "
:androgynous
具有"性別:androgynous
、姓の形は人の性別に依存しません。 たとえば、 Prokopenko 。
第二に、必要なケース。 単語を変更する有効なケースについては、以下の表で説明します。
ケース | 特徴的な質問 | 指定 |
---|---|---|
属格 | 誰? なに? | genitive
|
与格 | 誰に? なんで? | dative
|
対格 | 誰? なに? | accusative
|
インストゥルメンタル | 誰によって? なに? | instrumental
|
前置詞 | 誰について? どう? | prepositional
|
Petrovich::Extension
モジュールを任意のクラスに混在させることができます。 これは、ActiveRecordおよび類似のORMを使用する場合に特に便利です。
class User < ActiveRecord::Base include Petrovich::Extension petrovich :firstname => :my_firstname, :middlename => :my_middlename, :lastname => :my_lastname, :gender => :my_gender def my_firstname '' end def my_middlename '' end def my_lastname '--' end # , # . , # . def my_gender :male # :male, :female :androgynous end end
petrovich
メソッドを使用して、姓、名、およびミドルネームを表すメソッドを指定します。 この例は、
my_firstname
メソッドが名を表し、
my_lastname
メソッドが姓を表し、
my_middlename
メソッドがミドルネームを表すことを示しています。 モジュールを通常のクラスに混ぜることを妨げるものは何もありません。すべてが同様に機能します。 表で説明されているケースを持つメソッドは、ターゲットクラスに追加されます。
user = User.new user.my_firstname # => user.my_firstname_genitive # => user.my_middlename_genitive # => user.my_lastname_genitive # => --
ロシア語の綴りのいくつかの機能は非常によく考慮されています。
精度評価
良識のために、言葉の偏角の正確さを評価した。 AOT形態学的辞書の姓とその形式のリストが参照として使用されます。 88,314の例の処理に基づいて、式により精度を推定しました

ここで、 ケースはケース、 性別は性別、 V ケース、性別は指定されたケースと性別の正しい変曲の数、 N ケース、性別は指定されたケースと性別の例の総数です。
執筆時点では、88,314の例の処理に基づいた平均精度は99.6614%です。 詳細は以下の表に記載されています。 この情報は、戦闘でペトロヴィッチを使用するときに役立つ場合があります。
性別/ケース | 属格 | 与格 | 対格 | インストゥルメンタル | 前置詞 |
---|---|---|---|---|---|
男性 | 99.7137% | 99.7386% | 99.7635% | 97.9858% | 99.7261% |
雌 | 99.9102% | 99.9401% | 99.9701% | 99.4636% | 99.9401% |
必要条件
GitHubのリポジトリはpetrovich / petrovich-rubyにあります。 ライブラリは、MITライセンスの条件の下で配布されます。 ライブラリの作成者は、 Andrey Kozlov ( Bonch )とDmitry Ustalov ( dustalov )です。
Petrovichをインストールして独自のアプリケーションで使用するには、
gem install petrovich
か、 Gemfileに適切な行を追加します。
Webインターフェース
"Evil Martians"のAndrei Sitnik ( Iskin )が、ブラウザから直接Petrovichでプレイできるクールなインターフェイスを作成してくれたのは素晴らしいことです。

インターフェイスは現在http://petrovich.nlpub.ru/で利用可能です。
移植
他のプログラミング言語で作業している開発者がこのライブラリを自分の言語に移植してくれたら素晴らしいと思います。 ペトロビッチに関するご質問はお気軽にお寄せください。 一般に、移植はルールベースから開始できます。
最後まで読んでくれてありがとう!
ペトロヴィッチのイラストは、ペトロヴィッチに関する漫画の著者であるアンドレイ・ビルジョに属します。