トップ > Other > StemmerとLemmatizer

StemmerとLemmatizer

辞書や検索エンジンなど、文字列による検索が必要な場合、その単語だけではなく、関連語句も検索結果として表示したいことが多い。

そのためには、原形あるいは語幹を得ることが必要である。

まず、語幹を求めるには Stem、Stemmingと呼ばれる処理で、これには大きく Porter StemmingLovins Stemming がある。

Porter Stemming は様々な言語での実装が用意されており、C# の実装もあるので、比較的容易に利用できる。Lovins Stemming は C での実装がある。

これらの Stemmer を通すことで、tools などの複数形を単数形にしたり、動詞の活用から原形を求めたりするだけでなく、spiritual の語幹である spirit を取得することもできる。

ただし、この Stemmer では不規則変化動詞(Irregular verbs)に対応することができない。 たとえば Had、Wrote を Have、Write に変換することはできない。

ここで必要となるのが、Lemmatize(lemma(見出し語)にすること)である。

これに用いる Lemmatizer も LemmaGen にいくつかの言語による実装がある(2011年10月現在 C++、Python、C#)。

これで不規則動詞も原形を得ることが可能だが、なぜか got などいくつかの動詞は原形が取得できない。原因については調べ切れていない。

原因がわかれば随時更新する。

(2011/10/14 12:36:58)
8278
プロフィール

Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。 好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。 詳しくは Web mixi で。

Bookmark and Share