入門 自然言語処理

「入門 自然言語処理」関連のページ

原著の1版

NLTK Book

原著のPython3対応の奴

NLTK Book

原著のerrata

Confirmed Errata | O'Reilly Media Natural Language Processing with Python

Unconfirmed Errata | O'Reilly Media Natural Language Processing with Python

日本語版の日本語に関する12章

Python による日本語自然言語処理

Python による日本語自然言語処理 http://www.nltk.org/book-jp/ch12.html#id36

12.2.2 文字単位分かち書きを使う なお、TinySegmenter in Python の最新版は https://code.google.com/p/mhagiwara/source/browse/trunk/nltk/jpbook/jptokenizer.py から入手することができる。

上記URLからのダウンロードはできなくなった模様。下記URLに移動?

nltk/jptokenizer.py at master · mhagiwara/nltk https://github.com/mhagiwara/nltk/blob/master/jpbook/jptokenizer.py


続きを読む

Summpyの動かせる環境を作る楽な手順

pythonは色んな選択肢があるようで、なかなか迷ってしまった。

なんやかんやで楽だったのは下記のような手順になろうか。

python2.7系で動くのでそんな感じの環境を作る。

MacのYosemiteでやってみた場合。

  1. pyenv入れる
  2. pyenvでAnaconda 4.1.0以上入れる
  3. pip install janome
  4. pip install summpy

開発環境とは別のサーバにあげて動かす時は、pip freezeで追加パッケージの名前とバージョンをrequirements.txtに書き出したものから不要なものを消してサーバにインストールする。

% pip freeze > requirements.txt

% pip install -r requirements.txt

ApacheでPythonアプリのデプロイ

いやー、沼だ。PythonでWebアプリをまるっと作ろうとすると、初心者には荷が重い。

足掻くだけあがいたが、わからないなりに多少は目星がついてくるのが救いか。

PythonでFlaskとかで作ったアプリのデプロイをApacheでやろうとする場合、mod_wsgiを使うといいらしい。

で更に、デーモンモードと、組み込みモードがあると(また選択肢があるんかい)。

参考ページ:

文書の要約技術について

文書の要約技術について。

下記書籍参照。

自然言語処理の基本と技術 (仕組みが見えるゼロからわかる)


文書要約の分類

  1. 単一文書要約
    • リード法
      • 文書の最初の数行を提示
      • 単純だが強力
      • ニュース記事などに特に有用
  2. 複数文書要約

  3. 抽出型要約

    • 文を抽出して変更せずに提示
    • 実用化されている手法のほとんどはこれ
    • MMR(maximal marginal relevance)
      • なるべく代表的な文を選択しながら、なるべく冗長でない文を選択
      • 類似度に基づく尺度
        • コサイン類似度など
  4. 抽象型要約
    • 新しい文章を生成しながら内容を抽象的に要約

日本語の要約に関して。


日本語要約の実装例

  1. GitHub - recruit-tech/summpy
  2. 日本語文書の自動要約アルゴリズムを60年近く前の論文を頼りに再記述する | Welcome to Singularity

過去にググった時の記事



要約とはまた違うけど日本語関係のPyPI


Tensorflowで要約


スライド資料等

Treeコマンドのインストール

Macの場合はHomebrewで、CentOSの場合は Yum でインストールできるとの事。

CentOSの場合は Yum でインストール可能です。 $ sudo yum -y install tree

Treeコマンドの使い方とオプションについて (Mac/CentOS) - TASK NOTES

VimでPython

インデントとかシンタックスハイライティングとか。

インデントに関してはpythonファイルとして読み込まれたファイルにpython式のインデントを施す為に、下記の設定を。

  1. ~/.vim/ftplugin/python.vimを作成
  2. 下記内容を記述
set tabstop=8
set expandtab
set shiftwidth=4
set softtabstop=4

シンタックスハイライトはバージョンによってはデフォルトで有効になっている。

有効になっていない場合は下記の設定を。

設定ファイルは/etc/vimrcか、できれば、ホームディレクトリの.vimrc

syntax on 

黒画面でやるなら下記設定を追加するといい感じにカラーリング。

set background=dark

vimでフォーマット

vim - Reformat a Python file to have 4 space indentations - Stack Overflow

↑このページだと、いい感じにしてくれるPythonスクリプト?として、下記のものが紹介されている。

Reindent 0.1.0 : Python Package Index

:%! reindent

autopep8 1.2.4 : Python Package Index

:%! autopep8 -

あとはVimプラグインとして、汎用のフォーマッタ?もあるようだ。

GitHub - Chiel92/vim-autoformat: Provide easy code formatting in Vim by integrating existing code formatters.

↑のプラグインVimにNeoBundleとかでインストールして、言語ごとのフォーマッタ(前述のautopep8とか)インストールした後、

:Autoformat

で整形。

Python限定ならautopep8 1.2.4 : Python Package Index入れるだけでも楽かな?

NeoBundle

NeoBundleが便利そうとのことでインストール。

でも

Note: Active developement on NeoBundle has stopped. The only future changes will be bug fixes.

参考URL:

GitHub - Shougo/neobundle.vim: Next generation Vim package manager

"NeoBundle Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath^=/Users/ken/.vim/bundle/neobundle.vim/

" Required:
call neobundle#begin(expand('/Users/ken/.vim/bundle'))

" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'

" Add or remove your Bundles here:
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'ctrlpvim/ctrlp.vim'
NeoBundle 'flazz/vim-colorschemes'

" You can specify revision/branch/tag.
NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }

" Required:
call neobundle#end()

" Required:
filetype plugin indent on

" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck
"End NeoBundle Scripts-------------------------

Vagrantのboxの検索

A list of base boxes for Vagrant - Vagrantbox.es

Discover Vagrant Boxes | Atlas by HashiCorp

参考サイト:

vagrantのboxをvagrant cloudからもらってくる - わすれっぽいきみえ

怠け者のためのVagrant+Chef入門 - Qiita

初めての Vagrant + Chef zero + Berkshelf - Qiita

UUIDとか

UUIDはなんだろう?とググったら、色々とググる感じになった。

UUID - Wikipedia

UUID(Universally Unique Identifier)とは、ソフトウェア上でオブジェクトを一意に識別するための識別子である。UUIDは128ビットの数値だが、通常は16進数で550e8400-e29b-41d4-a716-446655440000のように表現する。元来は分散システム上で統制なしに作成できる識別子として設計されており、したがって将来にわたって重複や偶然の一致が起こらない前提で用いることができる。マイクロソフトによるGUIDはUUIDの実装の1つと見なせる。

誕生日のパラドックス - Wikipedia

鳩の巣原理 - Wikipedia

床関数と天井関数 - Wikipedia

UUIDはなぜ、分散環境で好き勝手に生成しても衝突しないのか。RFC4122規格とUUIDの性質。 | 三度の飯とエレクトロン