nltkにはwordnetが組み込まれているので、nltkひとつをインストールするだけで、同義語、上位語、下位語などを自由に取得できる。
>>> from nltk import wordnet
>>> dog = wordnet.N["dog"]
>>> dog.synsets()
[{noun: dog, domestic_dog, Canis_familiaris}, {noun: frump, dog},
{noun: dog}, {noun: cad, bounder, blackguard, dog, hound, heel},
{noun: frank, frankfurter, hotdog, hot_dog, dog, wiener,
wienerwurst, weenie}, {noun: pawl, detent, click, dog},
{noun: andiron, firedog, dog, dog-iron}]
英語の検索エンジンの検索クエリ入力画面を作ったときなんかに、このデータでクエリーを膨らませて検索することとかも考えてみると使い手がありそうですね。
より詳しい使い方はnltkのデモでざっと眺める事ができます。
nltkのインストール方法は、自分の過去記事にあります。