2017年7月26日水曜日

Sinsyのインストール

LinuxにSinsyをインストールしてみる
Sinsyの利用に必要なもの


【準備】
// hts_engine_APIのダウンロードと解凍
$ wget http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.10.tar.gz
$ tar -zxvf hts_engine_API-1.10.tar.gz

// インストール
$ ./configure
$ make
$ sudo make install

// Sinsyのダウンロードと解凍
$ wget http://downloads.sourceforge.net/sinsy/sinsy-0.92.tar.gz
$ tar -zxvf sinsy-0.92.tar.gz 

// インストール(pathは適宜変更すること)
$ ./configure \
     --with-hts-engine-header-path=/usr/local/include \
     --with-hts-engine-library-path=/usr/local/lib
$ make
$ sudo make install

【利用】
// xmlのダウンロード
$ wget http://sinsy.sp.nitech.ac.jp/sample/song070_f001_063.xml

// htsvoiceの用意
SinsyのページからHTS voiceのバイナリをダウンロード

// 実行
$ sinsy -x /usr/local/dic/ -m nitech_jp_song070_f001.htsvoice -o out.wav song070_f001_063.xml

htsvoiceファイルは、歌声の学習済みのものでないと、とんでもなくおかしなことになる

2017年5月20日土曜日

Operation not permitted

pythonでauthのmoduleをインストールしようとしたら以下のエラーになった。
error: could not create '/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/greenlet': Operation not permitted

mac OS X 10.11以上になってから、いろいろ変わった模様
system integrity protection

$ sudo pip install --user auth

で解決した

2017年4月29日土曜日

input-buffer overflow. The line is split. use -b #SIZE option.

jawikiなどの大きなファイルをわかち書きしようとすると、以下のようなエラーが出る
$ input-buffer overflow. The line is split. use -b #SIZE option.

-b オプションを付けることで解決できる
$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/ -Owakati -b 781361152 jawiki.txt > jawiki_wakachi.txt

指定するサイズはwcコマンドで確認
$ wc jawiki.txt 
  2351310   3832483 781361152 jawiki.txt

2017年1月26日木曜日

日本語wikiコーパスの作成

wikiコーパスのダウンロード
$ curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2 -o jawiki-latest-pages-articles.xml.bz2

xml形式なので、テキストを抜き出す。
そういったプログラムを用意してくださっているので利用する。
$ git clone https://github.com/attardi/wikiextractor

実行
$ python wikiextractor/WikiExtractor.py jawiki-latest-pages-articles.xml.bz2

抽出された内容はフォルダに分けられるので、catで1つのファイルにまとめる
$ cat text/*/* > jawiki_org.txt

内容に<documetn ...>とあったり、空白行があったりするのでトリミング
$ cat ./jawiki_org.txt | sed -e 's/<.*>//g' | sed -e '/^ *$/d' > ./jawiki.txt

必要あればmecabで分かち書き
$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/ -Owakati jawiki.txt > jawiki_wakachi.txt

以上の操作で完了

2017年1月22日日曜日

ImportError: No module named queue

pythonでword2vecを使おうとしたときのエラー
$ python word2vec.py 
Traceback (most recent call last):
  File "word2vec.py", line 3, in <module>
    from gensim.models import word2vec
  File "/Library/Python/2.7/site-packages/gensim/__init__.py", line 6, in <module>
    from gensim import parsing, matutils, interfaces, corpora, models, similarities, summarization
  File "/Library/Python/2.7/site-packages/gensim/summarization/__init__.py", line 4, in <module>
    from .keywords import keywords
  File "/Library/Python/2.7/site-packages/gensim/summarization/keywords.py", line 13, in <module>
    from six.moves.queue import Queue as _Queue
ImportError: No module named queue

これの原因としては、sixまわりのファイルが以下の2つに重複して入ってたことによる

1. /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/
2. /Library/Python/2.7/site-packages

そもそもの原因は、バージョンが低かったこと。
pipでアップグレードすると、2. のパスが更新される。
でも、実際にプログラムを実行すると1. を見に行く。
なので、バージョンの低いファイルを読み込んでしまい、エラーになっていた。

仕方ないので、1. にあったsix.pyとsix.pycを削除したら動くようになった。
本当なら削除するよりも、パスを変更する等の方がいいのだけれど…

ValueError: numpy.dtype has the wrong size

pythonでword2vecを使おうとしたときに出たエラー
$ python word2vec.py 
Traceback (most recent call last):
  File "word2vec.py", line 3, in <module>
    from gensim.models import word2vec
  File "/Library/Python/2.7/site-packages/gensim/__init__.py", line 6, in <module>
    from gensim import parsing, matutils, interfaces, corpora, models, similarities, summarization
  File "/Library/Python/2.7/site-packages/gensim/models/__init__.py", line 14, in <module>
    from .word2vec import Word2Vec
  File "/Library/Python/2.7/site-packages/gensim/models/word2vec.py", line 108, in <module>
    from gensim.models.word2vec_inner import train_batch_sg, train_batch_cbow
  File "__init__.pxd", line 155, in init gensim.models.word2vec_inner (./gensim/models/word2vec_inner.c:10913)
ValueError: numpy.dtype has the wrong size, try recompiling. Expected 88, got 96

pipでnumpyをインストールしているとダメらしい。
easy_installで入れ直すと動く

$ pip uninstall numpy
$ easy_install numpy