totowa(トトワ)で定義文を検索
  
uroboeで英語表記を検索
  

2017-05-15 Mon

mysql_secure_installation でやること

ローカル開発環境なので、自分が問題を実感できるものだけyesしていく。

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: y


パスワードの強度はわかったほうが良いからyes。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2


パスワードは強いほど良いので2。

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y


匿名ユーザーは消えて大丈夫なのでy。

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y


リモートからアクセスされても困るのでyes。

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n


テストDBは色々なモジュールがインストール時のテストに使ってるからno。

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y


即読み直してくれたら良いからyes。

これで終わり。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

Homebrewで「Error /usr/local must be writable」

久々にWebアプリを書き始めたけど、Web アプリ開発に関しては序盤だけリモート環境よりローカルで開発できた方が捗る。

最近買った MacBook Pro には開発環境を作っていなかったので、MySQLとか入れたいしと作業を始めた途端に以下のエラー。

[overlast@]$brew update
Error: /usr/local must be writable!


このエラーは、引っかかるのが数年に一回(環境以降に失敗した場合)なので毎回、前回自分がどう対応したのかを忘れる。
この状況ということは、Homebrew周りはupgradeしなおす必要がある。

最初に問題になるのは/usr/local以下の権限まわりなので、雑に所有者を「$(whoami):admin」に揃える。

[overlast@]$sudo chgrp -R admin /usr/local
[overlast@]$sudo chown -R $(whoami) /usr/local


その後、以下を順に実行していって諸々確認。

$ brew doctor
$ brew prune
$ brew update


以下の様に表示されたので、/usr/local だけ権限を root:wheel に戻す。

Homebrew no longer needs to have ownership of /usr/local. If you wish you can
return /usr/local to its default ownership with:
  sudo chown root:wheel /usr/local


その後、過去すぎて消えたFormulaをuninstall。

$ brew upgrade
エラーが出る
$ brew uninstall --force [エラーが出たやつ]


削除が一段落するとupgradeが回り始める。

$ brew upgrade
==> Upgrading 64 outdated packages, with result:
いろいろ


その後は、各パッケージの注意書きを読んで Error が出ていたら解決する。
大体、brew link --overwrite で解決していくことに鳴る。

Homebrew でインストールしたものと macos 側の pre-installed なものが被る場合は、メッセージに従って使っているshellの環境設定に書いていく必要がある。

$ brew upgrade
$


終わり。ようやく環境構築を始められる。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2017-02-14 Tue

macos上のpyenvで任意のPythonのインストールに失敗したら

pyenvでPython 3.6.0使おうと思ってinstallしてみたら「zipimport.ZipImportError: can't decompress data; zlib not available」って言われてコンパイル失敗。

pyenvは最新版。macosは10.11.3のEl Capitan。

僕はPythonのインストールすらできないのか。

[overlast@]$pyenv install 3.6.0
Downloading openssl-1.0.2g.tar.gz...
-> https://yyuu.github.io/pythons/b784b1b3907ce39abf4098702dade6365522a253ad1552e267a9a0e89594aa33
Installing openssl-1.0.2g...
Installed openssl-1.0.2g to /Users/overlast/.pyenv/versions/3.6.0

Downloading readline-6.3.tar.gz...
-> https://yyuu.github.io/pythons/56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43
Installing readline-6.3...
Installed readline-6.3 to /Users/overlast/.pyenv/versions/3.6.0

Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...

BUILD FAILED (OS X 10.11.3 using python-build 1.0.7-12-g235eea3)

Inspect or clean up the working tree at /var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487
Results logged to /var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487.log

Last 10 log lines:
  File "/private/var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487/Python-3.6.0/Lib/ensurepip/__main__.py", line 4, in <module>
    ensurepip._main()
  File "/private/var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487/Python-3.6.0/Lib/ensurepip/__init__.py", line 189, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487/Python-3.6.0/Lib/ensurepip/__init__.py", line 102, in bootstrap
    _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/private/var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487/Python-3.6.0/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1


なるほど。こういう意味不明なエラーはLinuxでは出ないからXCodeがらみっぽい。

zlibのインストール


こういうときは、まずはzlibを入れ直す。

[overlast@]$brew install zlib
==> Installing zlib from homebrew/dupes
==> Downloading https://homebrew.bintray.com/bottles-dupes/zlib-1.2.11.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring zlib-1.2.11.el_capitan.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local.

macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

For compilers to find this software you may need to set:
    LDFLAGS:  -L/usr/local/opt/zlib/lib
    CPPFLAGS: -I/usr/local/opt/zlib/include
For pkg-config to find this software you may need to set:
    PKG_CONFIG_PATH: /usr/local/opt/zlib/lib/pkgconfig

==> Summary
🍺  /usr/local/Cellar/zlib/1.2.11: 12 files, 374.5K



xcode-selectのインストール


次にmacos使ってるときは、xcode-selectを入れ直す。
実行したらmacosがxcode-selectをダウンロードしてくれる。

[overlast@]$ xcode-select --install
xcode-select: note: install requested for command line developer tools


ここまでやったら一旦、Pythonのinstallを試みる。

[overlast@]$pyenv install 3.6.0
Downloading openssl-1.0.2g.tar.gz...
-> https://yyuu.github.io/pythons/b784b1b3907ce39abf4098702dade6365522a253ad1552e267a9a0e89594aa33
Installing openssl-1.0.2g...
Installed openssl-1.0.2g to /Users/overlast/.pyenv/versions/3.6.0

Downloading readline-6.3.tar.gz...
-> https://yyuu.github.io/pythons/56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43
Installing readline-6.3...
Installed readline-6.3 to /Users/overlast/.pyenv/versions/3.6.0

Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...
Installed Python-3.6.0 to /Users/overlast/.pyenv/versions/3.6.0


いけた。

今回はいろいろあって何故かmacos上で書いてるから、いろいろ対処方法が未知な不具合で困りそう。


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2016-02-25 Thu

2016年02月25日(木) 昨日とは違ってとても快調

昨日の朝あれほど凄かった頭痛・胃の不快感・貧血・吐き気などは一切無く、とても気持ち良い朝だった。
いったい何だったのだろうか。(後で風邪のひきかけだったのかなと感じた)

会社に向かう道が昨日ほどでは無いけと寒い。
ピリっとした気分で最寄り駅から渋谷に向かった。

電車に乗った時に、たまたま女性の頭が目の前に来たのだが、どう考えても「さんまの蒲焼」の臭いがしてた。
僕も立ち食いそばを食べると頭が醤油臭くなるので、そのようなものだろうなと思ったりした。

会社についてIssueを解決するコードを書いた。
これは週末にテストして、早ければ来週のリリースに反映できると思う。

勢いが余っていたので過去に書いたコードとかも検査してみると、これは完全に駄目だなっていうコードを見つけた。
直すことにして、ある程度直した。直した成果が出るには気長さが必要で多分2ヶ月後位なのではないか。。

ランチを食べるため宮益坂を上がる。牛カツもと村の横を通ったけど、あの列は1時間待ちだ。
宮益坂のもと村も気軽に食べに行けないお店になってしまったか。
結局、吉成で定食を食べた。

午後はデータの精査をしながら少しずつ不具合を減らす作業。
人名と分かっているエントリが人名になるように、辞書の更新に影響出ないような範囲で工夫した。
今日リリースした辞書データは意外と面白い仕上がりになっている。
けど、他の人にはどうでも良いことだ。まだまだ弱点が多い。

夕方は飛行機チケットの取得でワタワタした。
自分で予約しない全てのものは油断ならないということを再確認した。

夜は帰る直前にうっかりDEIMの予稿集を開いてしまい、うっかり辞書の更新を忘れていた。
一応日が変わってすぐにリリースしたので許してください。しかもブログたくさん書きましたし。おやすみなさい。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

DEIM 2016 の予稿集を軽く眺めてみて day1

今日、予稿集が送られて来たので眺めてみて、疲れた脳でも楽しさを理解できたものを挙げてみる。

- DEIM 2016 (第8回データ工学と情報マネジメントに関するフォーラム)
-- http://db-event.jpn.org/deim2016/program.html

(s*)有向グラフ可視化のためのバンドリングとノード配置
十枝 菜穂子(お茶の水女子大学),中澤 里奈(お茶の水女子大学大学院),伊藤 貴之(お茶の水女子大学),齋藤 隆文(東京農工大学)


ふにゃっとしてカラフルで良い。
可視化ライブラリをOSSでリリースして欲しい。多分人気出る。

(s*)共通要素数を重視したハッシュベース集合間類似検索
板橋 大樹(電気通信大学),古賀 久志(電気通信大学),FUENTES PINEDA GIBRAN(Universidad Nacional Autónoma de México),戸田 貴久(電気通信大学)


要素数が大きく違う集合をMinHashをちょっと変えると(2段階にする)そのままMinHashで比較するより良い、、らしい。
テキストでも効果があるなら嬉しいと思うし、暇な時に試してみるかと思った。
C++とかPythonでライブラリをリリースしておいてくれるとすぐに試せて良いのにな。

後悔最小化による交通グラフ上の代表的経路集合の高速計算
秋葉 拓哉(国立情報学研究所),吉田 悠一(国立情報学研究所)


貪欲法だけでは刈りたりない枝もvの値の上界が分かったら刈れる、みたいな流れだなって思って、具体的な内容は後でまた読むのに詰んだ。
DEIMの予稿集の中で最も読む意味がある予稿の一つって感じだった。
予稿集の中でほぼ最後に入っていたということは、、ギリギリ派なのだろうか。

(s*)大規模な単語活用辞書を用いた英単語の見出し語化
駒井 雅之(奈良先端科学技術大学院大学),進藤 裕之(奈良先端科学技術大学院大学),松本 裕治(奈良先端科学技術大学院大学)


英単語の活用形を考慮して複数の単語を自動的に綺麗にまとめる話。かなり有益。
今後資源を公開する方向で進むのだろうから、みんながこの資源を使うようになるのだろう。

温度センサを用いた高齢者の見守り
高木 祐弥(神奈川工科大学),高橋 尚弘(神奈川工科大学),大塚 真吾(神奈川工科大学)


タイトルを読んで水を吹いてしまったのだが、温度センサーで高齢者の体温をモニターするのではなく、高齢者の姿勢をモニターしてモニター結果を分類して姿勢を判定するって話だった。
うちの亡くなった祖父も、一回具合が悪くて倒れててたまたま父親が尋ねたからセーフだったことがあった。
ささっと実用化して売れば、めっちゃ儲かるし良いと思う。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

METAFIVE のアルバム「META」がすごい

METAFIVE のアルバム「META」が凄い。濃い。

META - METAFIVE

[Amazonで詳細を見る]


動画はYouTubeで見られる。例えば「Luv U Tokio」、すごくカッコイイ。
冒頭のSEとシンセ音がすっと入ってきて加速する様なイメージでイントロのフレーズが入ってくる。
TOKIOの音はこの曲のメイン担当の砂原さんが半日がかりで作ったらしい。



で、これをCD + スピーカーで流すとビックリする音が出てくる。

全体的に音が上から下まで分厚くてキラキラ。左右も広い。
奥行きも絶妙で、妙な位置にあるように感じる音もあって驚く。
マスタリングを誰がしてるのかなと見てみたら砂原さんと書いてあって驚愕。

僕は音楽ライターじゃないので書き尽くす努力を避けるけど、2016年のベストが1月に出てしまった、って感じがする。



Maisie’s Avenue は何か泣ける音が入ってるんですよ。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2016-02-18 Thu

2016年02月18(木) 週に1回くらいはブログ書くか

先日の Hadoop / Spark Conference Japan 2016 に参加した時に、ogi先輩と話して「やっぱり、ブログ書かないと駄目だね」っていう話になった。そして週に1回くらいは中身がなくてもブログ書かこう、とお互いに決意をしたので、まずは実行しておく。

よくよく考えると、ブログは3日坊主の僕がこの11ヶ月くらい mecab-*-NEologd をできているわけだし決意の力はすごい。
特に公に宣言すると自分の言ったセリフが自分の背中を押してくれる感じがする。
NEologd と同様にこのブログも再開できたら嬉しい。頑張ってくれ僕の脳みそ様。

日記を書くか、テーマを決めて書かないとブログは記事としてまとまらない、という初歩的なことを思い出すのに1時間位かかったりしているし、たった3段落書くためにその数倍も書いて消してるので、ブログを書く作業も当面はリハビリが必要になる。

この1時間で分かったことは、この様に外部に公開されたところに自分のためになる文を残しておくことは、とても癒やされる感じがする、ということだ。自分の考えている仕事と関係のない感情的なことを論理抜きにして形にすることは、とても楽しい。何を書くにしてもいちいち理由の説明をしなくて良い。とても楽だ。

このブログも全体としてはダラダラと10年以上書いてるので、今後もダラダラと書いて行けたらと思う。

本当は画像もペチペチと貼りたい。そのためには、画像を簡単にアップロードできると嬉しい。だが、そのためには今のままでは駄目で、新しいブログシステムを導入するか、ブログポータルに移植する必要がある。勉強になるしまずは前者をやるか。。

あと、記事を書く時はタイマーをかけておくことにしよう。まったく中身は無いが、久々だしこれで良い。おやすみ。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-07-03 Fri

Word2Vec の Web API を作れる word-vector-web-api を公開しました

Word2Vec や GloVe などで構築済みな単語ベクトルのモデルを使った Web API を作ることができる word-vector-web-api を公開しました。🎉🍣🍻🍰🍖



これがあると docker コマンドと1.5 GByte 程度のメモリが使える環境なら、以下の 5 つのコマンドを実行することで(厳密にはもう少し手順がありますが)、以下のサンプルの様な結果(日本語 Wikipedia のダンプデータから word2vec コマンドで作ったモデルを使った Word2Vec の distance アプリケーションと同等の結果)を得られると思います。

$ git clone --depth 1 https://github.com/overlast/word-vector-web-api.git
(略)
$ cd word-vector-web-api
$ ./libexec/download-sample-jawiki-model.sh
(略)
$ ./libexec/create-docker-image-sample-word-vector-web-api-s1.sh
(略)
$ ./libexec/run-docker-container-of-sample-word-vector-web-api-s1.sh
(略)
$ curl "http://0.0.0.0:22670/distance?a1=タモリ"
{"format": "json", "items": [
{"term": "明石家さんま", "score": 0.81528389453887939}, {"term": "さんま", "score": 0.80035871267318726},
{"term": "ビートたけし", "score": 0.79251360893249512}, {"term": "所ジョージ", "score": 0.76938104629516602},
{"term": "とんねるず", "score": 0.7473946213722229}, {"term": "爆笑問題", "score": 0.73406845331192017},
{"term": "司会", "score": 0.72929728031158447}, {"term": "森田一義", "score": 0.72818166017532349},
{"term": "島田紳助", "score": 0.72627973556518555}, {"term": "中居正広", "score": 0.72301918268203735},
{"term": "山田邦子", "score": 0.71929085254669189}, {"term": "笑福亭鶴瓶", "score": 0.71266698837280273},
{"term": "ボキャブラ天国", "score": 0.70373982191085815}, {"term": "笑っていいとも!", "score": 0.70154005289077759},
{"term": "関根勤", "score": 0.70032232999801636}, {"term": "明石家マンション物語", "score": 0.70010024309158325},
{"term": "冠番組", "score": 0.69675129652023315}, {"term": "いいとも", "score": 0.69370967149734497},
{"term": "石橋貴明", "score": 0.68870562314987183}, {"term": "オレたちひょうきん族", "score": 0.68832921981811523},
{"term": "ものまね", "score": 0.68563121557235718}, {"term": "松村邦洋", "score": 0.68541419506072998},
{"term": "ボキャ天", "score": 0.68538647890090942}, {"term": "ウッチャンナンチャン", "score": 0.68278044462203979},
{"term": "テレフォンショッキング", "score": 0.68264764547348022}, {"term": "コーナー司会", "score": 0.68219667673110962},
{"term": "浅草キッド", "score": 0.68129265308380127}, {"term": "今夜は最高!", "score": 0.67805778980255127},
{"term": "今田耕司", "score": 0.67686200141906738}, {"term": "萩本欽一", "score": 0.67244911193847656},
{"term": "みのもんた", "score": 0.67096501588821411}, {"term": "北野ファンクラブ", "score": 0.66866558790206909},
{"term": "中居", "score": 0.66742992401123047}, {"term": "鶴瓶", "score": 0.66699719429016113},
{"term": "志村けん", "score": 0.66617244482040405}, {"term": "大橋巨泉", "score": 0.66485863924026489},
{"term": "上岡龍太郎", "score": 0.66450983285903931}, {"term": "ナインティナイン", "score": 0.66341793537139893},
{"term": "松本人志", "score": 0.66267943382263184}, {"term": "和田アキ子", "score": 0.66127783060073853}
], "query": "タモリ", "method": "distance", "sort": "cosine similarity", "status": "OK", "total_count": 40}


実はかなり前から GitHub 上には公開していたのですが、決して使いやすい状態とはいえませんでした。
なので、かなりシンプルにサンプル出力を試せる状態にしました。

どこがポイントなのか


今回、word-vector-web-api をまとめるに当たってのポイントは以下の3点でした。

- 構築済みの日本語 Wikipedia モデルを配布
- Dockerfile を配布
- インストール手順書を記述

簡単に説明してみます。

構築済みの日本語 Wikipedia モデルを配布

Word2Vec はすぐに試せる構築済みな日本語のモデルがあまり積極的に配布されていなかったので、使っていなかった人も多かったのでは無いでしょうか。

今回は、いろいろ試した結果、Google Drive さんを利用させて頂いてモデルを配布しています。

モデルをダウンロードして解凍するためのダウンローダーを作ってみて、意外と便利だったので今後も再利用していこうと思います。

配布しているモデルは限られた時間の中で複数の前処理を一応試してみて、構築後のモデルを使ってみた結果が一番良さそうなものをアップロードしました。

パラメタの探索とか、定期的なアップデートとか、いろいろな課題がありますがこれはmecab-ipadic-NEologdと同じで、ぼちぼち更新していこうと思います。

今後は日本語 Wikipedia 以外のコーパスを使ったモデルの構築や、Word2Vec より顕著に良い性能がでる手法が出てきたらそれを使っての構築を考えていますので、自前のモデルを構築しない派の方はご期待ください。

Dockerfile を配布

環境構築は Ansible の Playbook とか用意しとけば済むかなと思いましたけど、@chezou さんと @sowawa さんから「Dockerfile 書きましょう」と同日に言われたので、今の時代は Dockerfile が無いと駄目な時代なのだなと勉強になりました。ありがとうございました。

結果として docker build できる環境と 1.5GByte 程度のメモリがあれば、環境に依存するトラブルは少なくなったので良かったです。

実際に製品として使う場合は、Docker のままだと厳しいでしょうし、研究寄りのエンジニアさんは OS に直にインストールしたword2vec-msgpack-rpc-server に直にリクエストした方が無駄が無くてより良いでしょう。



そもそも word-vector-web-api を作ったのは、word2vec-msgpack-rpc-server と nginx-msgpack-rpc-module が個人的に便利なのでオススメしたいけど単体だと試すのが面倒で試してもらえ無さそうだから妥当なパッケージングをしてモデルも付けて配布してより便利な世の中にしよう、という考えがあってのことです。



word2vec-msgpack-rpc-server と nginx-msgpack-rpc-module を使って自分の実装を世に広めたり、または word-vector-web-api をカスタマイズして便利な機能を製品に組み込んで見たり、いろいろ試してみてください😊。

インストール手順書を記述

とても詳細な手順書を書きましたので、慎重に読み、コピペすることでつまづく確率が激減すると思います。

Docker 自体や Unix コマンドに関する知識は自分で調べなきゃいけませんけど、それは許してくださいね😓💦。

終わりに


word-vector-web-api は、僕が社内でコンテンツ管理ツール向けなどで作った Web API の OSS 版です。

割と簡単な作りですが、このくらいでもメモリを増やしてサーバプロセスを増やせばレスポンスに関する問題は減ります。

精度に関しては、距離関数よりはモデルの構築手法と検索クエリの作成手法に強く依存するので、word-vector-web-api の外側で解決すべき問題が山積みになっている状態だと思います。

モデルの構築の際には mecab-ipadic-NEologd を使うことで多くの問題が解決できると思います。



リリース済みのものの改善、サンプルモデルの種類の追加、演算に必要なメソッドの追加は予定があるので、今後のアップデートを生暖かく見守りつつ、たま〜に Update してみて下さい。🍻

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-06-23 Tue

mecab-ipadic-NEologd v0.0.2 をリリースした

今日、6/23の朝 [2015-06-23] に、mecab-ipadic-NEologd の v0.0.2 をリリースしました🎉。

https://github.com/neologd/mecab-ipadic-neologd/releases/tag/v0.0.2

前回の v0.0.1 からの大きな差分は以下の5点です。

- 3ヶ月分の新語
- Unicode 6.0以前の絵文字に読みと品詞情報を付与
- IPA辞書に未再録で区切り間違う or 読みを付与できない副詞
- unk.defを変更して記号を記号,一般に
- IPA辞書の一部のエントリの読み仮名誤りを修正

3ヶ月分の新語


v0.0.1以降に新しく再録したエントリは、diff以下で記録しています。

https://github.com/neologd/mecab-ipadic-neologd/tree/master/diff

v0.0.2以降の新語についても diff以下に出力しますのでご参照ください。

Unicode 6.0 以前の絵文字に読みと品詞情報を付与



Unicode 6.0 以前の絵文字への読み付与を行いました。
Unicode絵文字の文中での使われ方によって、品詞情報や付与されると期待される読み仮名が変わることから、一つの絵文字に複数の品詞情報と読み仮名を付与する必要がありました。

このようなタスクに利用できる既存のリソースにmozcの絵文字に関するエントリが挙げられます。

- mozc/emoji_data.tsv at master · google/mozc
-- https://github.com/google/mozc/blob/master/src/data/emoji/emoji_data.tsv

日本語入力用の辞書は複数のキーワードから一つの絵文字にたどり着く用途のエントリになっています。それに対して、形態素解析用の辞書は一つの絵文字にマッチするエントリ群を、その絵文字が出現した文脈にふさわしい順に並べ替えるのが目的になっています。

例えば、日本語入力が⚾️や🏀に「ボール」という文字列で見つかれば良いのに対して、形態素解析ではこれらの絵文字をボールとして扱ったり、競技名として扱ったりする必要があります。

そのため、mozcのリソースを参考にしながら結局全部自分で手打ちする必要がありました。

その結果、意外と面白い仕上がりになっています。



今後は Unicode 7.0 以降の絵文字に対応したり、文脈ごとによりふさわしい品詞情報が選ばれるようにコストを調整したり、より妥当な読み仮名を付与したりします。

IPA辞書に未再録で区切り間違う or 読みを付与できない副詞



IPA辞書とその他のオープンソースな形態素解析辞書の一番大きな違いは、実は用言系のエントリにあると僕は個人的に感じています。

今回は用言の中でもあまり空間が大きくない副詞エントリを充実することに着手しました。

行ったことは以下の二つです。

- IPA辞書に再録されていない副詞を集めて、副詞のシードとする
- 笹野さんの論文で述べられている未知語処理のルールの一部を参考にして、副詞のシードを展開する
-- 参考文献 : 「笹野遼平, 黒橋禎夫, 奥村学: 日本語形態素解析における未知語処理の一手法 -既知語から派生した表記と未知オノマトペの処理-, 自然言語処理, Vol.21, No.6, pp.1183-1205 」
-- https://www.jstage.jst.go.jp/article/jnlp/21/6/21_1183/_article/-char/ja/

このくらいやると、以下のようになります。



「じゅわっ」とか「じゅわっと」が副詞なの?っていうことも議論できると思いますが、副詞的な機能をもつトークンの過分割を抑制することを主目的としており、まずはアウトプットしようということで、このまま出しています。

品詞情報の調整とか、Web固有の曖昧な表記の回収をしてエントリを取捨選択する必要は大いにありますし、原型をどこにマッピングするのかも悩みどころです。

もう少し詳しく書きますね。

IPA辞書に再録されていない副詞を集めて、副詞のシードとする


この作業のために各種形態素解析辞書と Web上をクロールしたエントリからテーブルを作り、そのテーブルから副詞として再録するのが妥当なエントリを高精度なルールと、人手によるチェックで選びました。

今のところ既存の形態素解析辞書が対応できている副詞が再録されていないことが多々あります。

そのようなエントリは「副詞なのか形容詞なのか名詞なのか、、」と迷っているものだったりします。

笹野さんの論文で述べられている未知語処理のルールの一部を参考にして、副詞のシードを展開する


展開する際には色々試したのですが、生成されたエントリ全体を見て、辞書エントリ化しても大きな影響がなさそうに感じた生成ルールだけ足しています。

先行研究は文脈が与えられたうえで行う推定なので、あらかじめエントリ化する場合との違いを感じながらトライ&エラーしていました。

展開する際のルールの一部を挙げておきます。

- 文字 ngram の繰り返し検知と、繰り返し回数の追加
- 「HHっと」などの副詞シードに対して「HHッと」「KKっと」「KKッと」を生成
- 「HHっと」などの副詞シードに対して、長音記号と小書き文字を挿入
- 「HHっ」な副詞シードに対して「HHッ」「HHっと」「HHッと」を生成
- など

unk.defを変更して記号を記号,一般に



今まで、mecab-ipadic-NEologdではunk.defに手を加えていませんでした。

ただ、記号は記号になって欲しいなという気持ちがあったので、SYMBOLだけいじりました。

https://github.com/neologd/mecab-ipadic-neologd/blob/master/misc/dic/unk.def

IPA辞書の一部のエントリの読み仮名誤りを修正


これはWeb上でMeCabの読み付与に関するtweetを見ていて気がついたのですが、確かに読み仮名がかなり明らかに最適ではないエントリがありました。

ただ、誤りがある位置のヒントがあって誤りを探すのと、全体を漠然と探すのとでは難易度が大きく違います。

https://github.com/neologd/mecab-ipadic-neologd/tree/master/misc/patch

前者は今後も個人的に続ければ良くて、後者はハッカソンとかで複数の辞書エントリ作成タスクの適合者な方と一緒に、目標を定めながら(例 : 今回は動詞!とか)行うのが良いのかなと思っています。




おわりに


3ヶ月分の成果の一部をまとめて v0.0.2 をリリースしました。

次の v0.0.3 は形容詞対応が終わったら出そうと思います。

定期的なアップデートは次の3ヶ月も継続します。まずは一年続けてみます。

3ヶ月経ってみたら、GitHub の unique cloners が1000を超えていて(ありがとうございます)、いろいろな人が形態素解析を利用しているのだなという雰囲気は感じました。でも、どこでご利用頂いてるのかは教えて頂けた分以外は全くわかりません。

mecab-ipadic-NEologd をご利用頂いている方は事例をネット上で呟いたり、イベントでご発表いただいたり、 @overlast まで DM などでコッソリ教えて頂けますと、とてもやる気が出ますので、是非教えてくださいね。

今後もよろしくお願いいまします。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

関連エントリ

[2015-06-23-1] mecab-ipadic-NEologd v0.0.2 をリリースした
[-] 1

2015-05-29 Fri

UniDic に固有表現やUnicode 絵文字などを足す mecab-unidic-NEologd を公開しました

今年3月中旬 [2015-03-13] に mecab-ipadic-NEologd をリリースして以来、mecab-ipadic-NEologd はとても順調に普及しています。

さて、今回は UniDic に新語や固有表現、Unicode 絵文字などを足すことができる mecab-unidic-NEologd を公開しました。
mecab-ipadic-NEologd を生成する手法を使っています。

https://github.com/neologd/mecab-unidic-neologd/blob/master/README.ja.md

シードデータの性質上、構築されるシステム辞書には国語研短単位の条件を満たさないエントリも入りますので、あらかじめご了承ください。

これを MeCab と一緒に使うと要するにこういうことができます。

$ mecab -d /usr/local/lib/mecab/dic/mecab-unidic-neologd
アップルは Apple Watchを4月24日に国内発売しました。⌚
アップル	アップル	アップル	アップル-apple	名詞-普通名詞-一般
は	ワ	ハ	は	助詞-係助詞
Apple Watch	アップルウォッチ	アップルウォッチ	Apple Watch	名詞-固有名詞-一般
を	オ	ヲ	を	助詞-格助詞
4月24日	シガツニジュウヨッカ	シガツニジュウヨッカ	4月24日	名詞-固有名詞-一般
に	ニ	ニ	に	助詞-格助詞
国内	コクナイ	コクナイ	国内	名詞-普通名詞-一般
発売	ハツバイ	ハツバイ	発売	名詞-普通名詞-サ変可能
し	シ	スル	為る	動詞-非自立可能	サ行変格	連用形-一般
まし	マシ	マス	ます	助動詞	助動詞-マス	連用形-一般
た	タ	タ	た	助動詞	助動詞-タ	終止形-一般
。		。	補助記号-句点
⌚	トケイ	トケイ	時計	記号-一般
EOS


かなり便利そうですよね?!!!!!!!!!!

個人的に UniDic を使用してテキストデータから特徴ベクトルを生成する際や、UniDic を使用してテキストマイニングをする際には、 UniDic と mecab-unidic-NEologd を併用するのがオススメです。

unidic-mecab 2.1.2 との処理結果の差にもご注目ください。

unidic-mecab 2.1.2	     |	mecab-unidic-NEologd
今 いく よ 	     |	今いくよ
絢爛 舞踏 	     |	絢爛舞踏
るみ るみ 	     |	るみるみ
レー カン 	     |	レーカン
この 前 バイト で 化粧 品 選ん で� |	この 前 バイト で 化粧品 選ん でる
今 いくよ くるよ 	     |	今いくよくるよ
ワ カコ 酒 	     |	ワカコ酒
中村 蒼 	     |	中村蒼
俺 ガイ ル 	     |	俺ガイル
で ん ぱ 組 . i n c 	     |	でんぱ組.inc
ボトル の お ぱんつ 	     |	ボトル の おぱんつ
いろは す 		     |	いろはす
北越 紀州 製紙 	     |	北越紀州製紙
メガネ びいき 	     |	メガネびいき
パンチ ライン 	     |	パンチライン


チャンキングなしに上記のように固有表現が得られた方が嬉しい場合もあります。
両方の辞書の出力結果をマージして使った方が良い場合もあります。

mecab-unidic-NEologd は辞書の性能を BCCWJ を使用して、ある程度定量的に評価しようと考えて生成しました。
でも、手元にあるだけでは勿体無いので公開することになりました。

mecab-unidic-NEologd も mecab-ipadic-NEologd と同様に Apache License 2.0 ですし、シードデータは月に最低2回(初旬と中旬)の更新を予定しています。

何かご意見やアドバイスがございましたら、函館で開催される JSAI2015 に行きますのでお声がけ下さい。

参考リンク


- mecab-ipadic-NEologd
-- https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |