- stem-english 20170113.24(in MELPA)
- - routines for stemming English word
概要
stem-english.el
は、
英語の活用語尾を取り除いて
語幹を得るライブラリです。
英語には、
- 比較級
- 最上級
- 三人称単数現在形
- 複数形
- 過去形
- 過去分詞
- 現在分詞
で語尾が変化しますね。
他にも
- active→activeness
- emotion→emotional
などの変形もあります。
buy→boughtのような
不規則動詞は独特のもので、
覚えるのに苦労した人もいるでしょう。
このライブラリで使われているアルゴリズムは、
論文『An algorithm for suffix stripping (M.F.Porter)』
によるものです。
元々は昔にあった辞書検索ツール
sdicに付属していたstem.elを
現在のEmacsで動くようにしたものです。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてstem-englishを使う方は
以下のコマンドを実行します。
M-x package-install stem-english
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name stem-english
使用例
エントリポイントは stem-english
関数です。
(stem-english "worked") ; => ("work" "worked") (stem-english "healthier") ; => ("health" "healthy" "healthie" "healthier") (stem-english "teacher") ; => ("teach" "teache" "teacher") (stem-english "blew") ; => ("blew" "blow") (stem-english "came") ; => ("came" "come") (stem-english "thankful") ; => ("thank" "thankful") (stem-english "rationale") ; => ("rational" "rationale") (stem-english "bit") ; => ("bit" "bite") (stem-english "heroic") ; => ("heroic") (stem-english "debianize") ; => ("debian" "debianize") (stem-english "criticism") ; => ("critic" "criticism") (stem-english "was") ; => ("am" "be" "is" "are" "was") (stem-english "been") ; => ("am" "be" "is" "are" "been") (stem-english "fallen") ; => ("fall" "fallen") (stem-english "cable") ; => ("cabl" "cable") (stem-english "challenger") ; => ("challeng" "challenge" "challenger") ;;; 不完全なので… (stem-english "happiness") ; => ("happi" "happines" "happiness") (stem-english "ironic") ; => ("iron" "ironic") ;;; ableやmentは活用語尾に含まれているのでバグかな? (stem-english "chewable") ; => ("chewabl" "chewable") (stem-english "agreement") ; => ("agreement")
正規表現で応用する 170119051551.stem-english.regexp.el(以下のコードと同一)
helm-swoop と併用させてみました。
ただ、原形から不規則動詞や
活用語尾を含めるところまではできていません。
(require 'stem-english) (defun stem-english-make-regexp (word) "活用語尾を考えた単語の正規表現を作成する" (concat "\\b" (regexp-opt (stem-english word) t) "\\b")) ;;; bought ;;; buy ;;; catch (defun helm-swoop-stem-word () "活用語尾が含まれる現在の単語を検索する" (interactive) (helm-swoop :$query (concat (stem-english-make-regexp (thing-at-point 'word)) " ")))
Fig1: boughtの位置でM-x helm-swoop-stem-wordするとbuyにもヒットする
本サイト内の関連パッケージ
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。