ペトロヴィッチはロシア名を辞退

ロシア語でのユーザー名の減少にしばしば対処する必要がありますか? 手紙を送るとき、ページやメンションを表示するとき、広告を生成するとき? ほとんどの場合、すべてのメッセージを避けて、主格のケース-Pyotr Sergeyevich Ivanovに書き込む必要があります。

それは常に便利であるとは限らず、常に美しいとは限らず、常に適切とは限りません。 ロシア語は豊富な形態学に恵まれており、自動処理が多少複雑になります。 名詞で期待されるように、人名は単語形成のすべての規則に従うことを誰もが知っています。

Rubyを使用しているときにこの問題を解決するために、ロシア語を話す名前、姓、愛称を自動的に拒否する便利な軽量ライブラリであるPetrovichがあります。



エッセンス


Petrovichアルゴリズムは、手動の語形成ルールベースに基づいています。 アプリケーションプログラマがライブラリを操作するのは非常に簡単です。 標準形式の単語は入力で示され、要求された属と単語の単語は出力で取得されます。

使用する


基本的な構文は理解するのに十分簡単です。

petrovich = Petrovich.new(:male) petrovich.lastname('', :dative) # =>  petrovich.firstname('', :dative) # =>  petrovich.middlename('', :dative) # =>  

ご覧のとおり、アナライザーの動作を説明する2つのパラメーターがあります。性別はPetrovichクラスのコンストラクターに渡され、2番目のパラメーターは赤緯メソッドに該当します。

まず、名前の性別。 Petrovichは3つのオプションを検討しています。

第二に、必要なケース。 単語を変更する有効なケースについては、以下の表で説明します。
ケース特徴的な質問指定
属格誰? なに?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 KozlovBonch )とDmitry Ustalovdustalov )です。

Petrovichをインストールして独自のアプリケーションで使用するには、 gem install petrovichか、 Gemfileに適切な行を追加します。

Webインターフェース


"Evil Martians"のAndrei SitnikIskin )が、ブラウザから直接Petrovichでプレイできるクールなインターフェイスを作成してくれたのは素晴らしいことです。



インターフェイスは現在http://petrovich.nlpub.ru/で利用可能です。

移植


他のプログラミング言語で作業している開発者がこのライブラリを自分の言語に移植してくれたら素晴らしいと思います。 ペトロビッチに関するご質問はお気軽にお寄せください。 一般に、移植はルールベースから開始できます。

最後まで読んでくれてありがとう!

ペトロヴィッチのイラストは、ペトロヴィッチに関する漫画の著者であるアンドレイ・ビルジョに属します。

Source: https://habr.com/ru/post/J195874/


All Articles