「Introduction to Information Retrieval」[1]の第二章
(次回の輪講の範囲)の2.2.4に出てくるステミング (Stemming) の
話題をまとめました。
§
英語などの欧米系の言語では、
意味的には同じ単語が語形変化により表層文字列が異なることがある。
例えば、"retrieves", "retrieved", "retrieving", "retrieval"
などで[2]、実用上これらを同じ意味のものと見なし
インデックス作成時に同じ単語として扱いたいという要求がある。
ステミング (stemming) はこのような語形変化を取り除き
同一の単語表現に変換する処理である。
ステミングの手法として、
ポーターのアルゴリズム (Porter's algorithm) [3]がよく知られている。
ポーターのアルゴリズムは、経験則に基づく変換ルールを持ち、
それらを数段階で適用していくという方法でステミングを行う。
ルールの例と変換例を図に示す[1]。
他のステミング手法として、
Lovins[4]、Lancaster (Paice/Husk)[5] などがある。
なお、ポーターのアルゴリズムを使った Perl Module が CPAN にある。
Perl な人はお試しあれ。
http://search.cpan.org/perldoc?Text::English
サンプルコード:
参考文献:
[1] Christopher D. Manning, Prabhakar Raghavan and Hinrich Schu"tze:
Introduction to Information Retrieval, Cambridge University Press, 2008.
(http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html)
[2] 北研二, 津田和彦, 獅々堀正幹: 情報検索アルゴリズム,
共立出版, 2002.
[3] Porter Stemming Algorithm
http://tartarus.org/~martin/PorterStemmer/
[4] The (un)official Lovins stemmer page
http://www.cs.waikato.ac.nz/~eibe/stemmers/
[5] The Lancaster Stemming Algorithm
http://www.comp.lancs.ac.uk/computing/research/stemming/
(間違いや補足などありましたら下記フォームからご連絡頂けると幸いです)
(次回の輪講の範囲)の2.2.4に出てくるステミング (Stemming) の
話題をまとめました。
§
英語などの欧米系の言語では、
意味的には同じ単語が語形変化により表層文字列が異なることがある。
例えば、"retrieves", "retrieved", "retrieving", "retrieval"
などで[2]、実用上これらを同じ意味のものと見なし
インデックス作成時に同じ単語として扱いたいという要求がある。
ステミング (stemming) はこのような語形変化を取り除き
同一の単語表現に変換する処理である。
ステミングの手法として、
ポーターのアルゴリズム (Porter's algorithm) [3]がよく知られている。
ポーターのアルゴリズムは、経験則に基づく変換ルールを持ち、
それらを数段階で適用していくという方法でステミングを行う。
ルールの例と変換例を図に示す[1]。
Rule | Example |
SSES → SS | caresses → caress |
IES → I | ponies → poni |
SS → SS | caress → caress |
S → "" | cats → cat |
他のステミング手法として、
Lovins[4]、Lancaster (Paice/Husk)[5] などがある。
なお、ポーターのアルゴリズムを使った Perl Module が CPAN にある。
Perl な人はお試しあれ。
http://search.cpan.org/perldoc?Text::English
サンプルコード:
use Text::English; @words = qw( cats went retrieval ); @stems = Text::English::stem( @words ); print "@stems\n"; # 実行結果: cat went retriev
参考文献:
[1] Christopher D. Manning, Prabhakar Raghavan and Hinrich Schu"tze:
Introduction to Information Retrieval, Cambridge University Press, 2008.
(http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html)
[2] 北研二, 津田和彦, 獅々堀正幹: 情報検索アルゴリズム,
共立出版, 2002.
[3] Porter Stemming Algorithm
http://tartarus.org/~martin/PorterStemmer/
[4] The (un)official Lovins stemmer page
http://www.cs.waikato.ac.nz/~eibe/stemmers/
[5] The Lancaster Stemming Algorithm
http://www.comp.lancs.ac.uk/computing/research/stemming/
(間違いや補足などありましたら下記フォームからご連絡頂けると幸いです)