動詞の原型を取得 [Python]

8月 9, 2020

なぜかimportの仕方によって、出力結果が異なる

以下のimportだと、sinteringはsinterに変換されるが、heatingはheatにならない。

from nltk.corpus import wordnet as wn

nltk.download('wordnet') # wordnetを取得していないときはこのコマンドでダウンロード

print(wn.morphy('copied'))
>>> copy

print(wn.morphy('sintering'))
>>> sinter

print(wn.morphy('dried'))
>>> dry

print(wn.morphy('heating'))
>>> heating

一方、以下のimportだとheatingがheatに正しく変換される。

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()

lemmatizer.lemmatize("copied", pos="v")
>>> copy

lemmatizer.lemmatize("sintering", pos="v")
>>> sinter

lemmatizer.lemmatize("dried", pos="v")
>>> dry

lemmatizer.lemmatize("heating", pos="v")
>>> heat

なぜこのようなことが起こるのだろうか? 同じWordNetを使っているようにみえるが、lemmatizerとwn.morphyでは変換の方法が異なるのか? この件については後日調査し、なぜか分かり次第追記する。

NLTK,Python

Posted by vastee