数万~数十万語規模の単語が含まれた英語のテキストファイルがあり、そのテキストに含まれる全単語の出現頻度を求めたいと考えています。

ただし動詞の時制や三単現、名詞の複数形などの理由により単語に変化があっても、それらは同一視した上での頻度を求めたいです。

例えばテキスト中に以下の単語がそれぞれ

go : 3
gone : 6
went : 2
goes : 1
going : 4

の回数だけ出現したとして、これらを全て巻き上げて基本型go : 16とカウントしたいということです(さすがに have gone などまでは同一視しなくてよいです)。また動詞だけでなく名詞の複数形、形容詞の比較級なども同一視してカウントしたいです。文脈を見ないと区別の付かない lie - lay / lay - laid のような単語の問題はありますが、それについては考慮せずにどちらかに寄せてしまって構いません。

何も考慮しなくてよければ shell でワンライナーで書けてしまう処理であることは理解しています。しかし単語の変化まで考慮するとなると、すぐに思いつく手では、別途単語辞書を持った上でマッピングしていくような処理が必要となりそうで、結構ごりごりと力技が要りそうに思われます。

しかしこのような要求ははるか昔からありそうに思われるので、もしすでに同様の処理を行うスクリプトなりツールなりが存在するなら助かるのですが、どなたかご存知ないでしょうか。
あるいは、このような処理を簡便に行うアプローチが他にありますでしょうか。

条件としては

  • Linux / FreeBSD / Windows のいずれかの環境で動作するもの
  • できれば無償で手に入るもの

であることが望ましいです。