N-gram言語モデルに基づく補完 (company-ngram)
外国語の文章を書いているときに,次にどんな単語を書くのが自然なのかを知りたいと思ったことはありませんか?
company-ngramというcompany-mode
のバックエンドを使うと,そのような希望を高い可能性で実現できます.
company-ngram
はN-gram言語モデルに基づき,カーソルよりも前に書かれた単語の並びから次に書かれる可能性の高い単語を予想し補完候補を提供します.
company-ngram
による補完候補の例です.
補完候補表示の右側の列の.
の左側の数字はN-gramデータ中での補完候補の頻度を表します.
.
の右側の数字は,カーソルの前のどの単語が補完候補の生成に使われたのかを表します.
1
の位置に対応する単語はN-gramデータにマッチしたことを,(図中には存在しませんが)0
の位置に対応する単語はN-gramデータにはマッチしなかったことを表します.
例えば,a b c
に対してd 42.110
という補完候補が表示された場合,N-gramデータのもとになったテキストデータ中にa b * d
という並び(*
は任意の単語を表す)が42個存在していたということが読み取れます.
利用方法
company-ngram
はMelpaからインストールできます.
インストール後,~/.emacs.d/init.el
に以下の設定を追加してください.
; ~/.emacs.d/init.el
(with-eval-after-load 'company-ngram
; ~/data/ngram/*.txt are used as data
(setq company-ngram-data-dir "~/data/ngram")
; company-ngram supports python 3 or newer
(setq company-ngram-python "/path/to/python3")
(company-ngram-init)
(cons 'company-ngram-backend company-backends)
; or use `M-x turn-on-company-ngram' and
; `M-x turn-off-company-ngram' on individual buffers
;
; save the cache of candidates
(run-with-idle-timer 3600 t
(lambda ()
(company-ngram-command "save_cache")
))
)
(require 'company-ngram nil t)
company-ngram
を使いたいバッファでM-x turn-on-company-ngram
すると,company-ngram
が有効になります.
company-ngram
を使うには,N-gramデータを生成するためのテキストデータが必要です.
デフォルトでは,~/data/ngram/*.txt
がテキストデータとして読み込まれます.
既存のコーパスを利用するか,w3m -dump <URI>
でスクレイピングして自分のコーパスを作っても良いでしょう.
とりあえず試すにはRFCのテキストが手頃です.
詳細は,READMEをご覧ください.
Author And Source
この問題について(N-gram言語モデルに基づく補完 (company-ngram)), 我々は、より多くの情報をここで見つけました https://qiita.com/kshramt/items/9f6ee7d546b711439052著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .