英単語の原形を取得するRuby Lemmatizerの使い方

英語の単語において、活用形の動詞を原形に戻したり、複数形の名詞を単数形に戻したりできる gem ライブラリ、Ruby Lemmatizer を使ってみました。

要するに、名詞複数形の -s を取ったり、動詞過去形の -ed を取ったりして、語の「原形」を出力するのだ。もちろん不規則変化形にも対応している。

https://github.com/yohasebe/lemmatizer

スポンサーリンク

Ruby Lemmatizer の動作確認

Gemfile に lemmatizer を追加して、bundle install。

Gemfile

Rails プロジェクトでインストールしたので、rails c で pry を起動して ruby-lemmatizer の動作確認を行いました。

まずは lemmatizer を require して、Lemmatizer オブジェクトを生成。

Rails 環境の pry なので、すでに lemmatizer が読み込まれており require は false を返しています。必要に応じて1行目の require “lemmatizer” を実行する。

品詞を指定して単語の原形を取得

任意の単語において、noun(名詞)、verb(動詞)、adj(adjective/形容詞)、adv(adverb/副詞)としての原形を取得します。Lemmatizer#lemma メソッドの第一引数に対象の単語、第二引数に品詞を渡す。Readme を参考。

swimming という英単語で試してみます。swimming は名詞としては「水泳」という意味であり、動詞としては swim「泳ぐ」の進行形(ing形)です。

verb(動詞)を指定すると、ちゃんと動詞の原形 swim が取得できていますね。素晴らしい。

品詞の指定を省略して原形取得

第二引数の品詞指定を省略してもOK。

この場合…

# when part-of-speech symbol is not specified as the second argument,
# lemmatizer tries :verb, :noun, :adj, and :adv one by one in this order.

と Readme にありますので、動詞→名詞→形容詞→副詞の順に原形を検索して、最初に見つかったものを返す。

不規則変化の単語の場合

不規則変化の動詞 write(過去形 wrote / 過去分詞 written) でもOK。

次は leaves を試す。leaves は、動詞としては leave(去る)の三人称単数現在の活用形、名詞としては leaf(葉っぱ)の不規則変化での複数形です。

:verb(動詞)を指定すると、ちゃんと動詞の原形に戻った!

:noun(名詞)を指定したら、こちらもしっかりと単数形の leaf が取得できています。

品詞の指定を省略すると…

上述通り、動詞の原形が優先されます。

辞書インデックスにない単語などその他

固有名詞など辞書インデックスに含まれない単語は、そのまま返される。

lemma(原形)として辞書インデックスに含まれる単語は、そのまま返される。

higher(highの比較級)は、lemma(原形)として辞書インデックスに登録されているので、そのまま higher が返されます。

highest(highの最上級)で試す。

highest の場合は、lemma(原形)としては辞書インデックスに登録されておらず、原形(high)を返すようです。

Ruby Lemmatizer、使い方も簡単ですしかなり良い感じです。

スポンサーリンク
私は以下の本で Ruby を覚えました。メタプログラミングRubyは入門を超える内容で難しめです。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!