Bracketsが動かない

MacOS X El Capitan)で、Brackets 1.10を立ち上げたところ、フリーズした感じで動作しなかったのでググる

Brackets 1.11にしても同様。

結局のところ、「brackets-shizimily-multiencoding」を「disabled」フォルダに移動して起動したら動作した、とりあえず。

以下のフォルダを、

/Users/<ユーザー名>/Library/Application Support/Brackets/extensions/user/brackets-shizimily-multiencoding

以下のフォルダに退避、起動。

/Users/<ユーザー名>/Library/Application Support/Brackets/extensions/disabled

一応動いた。

参照ページ

  1. Brackets 1.10の罠 – バタイユゲーム情報班ブログSSL
  2. Bracketsが止まる?動かないときに確認すべきこと | ベイクロスマーケティング株式会社

英語の自動Transcriptの後処理

機械的に音声からTranscriptを生成した場合、人間が読むテキストとして整えるには句読点の付与、Capitalizeなどの処理が必要になる。

以下、Postprocessing Framework – CMUSphinx Open Source Speech Recognitionを読んだメモ。

必要な処理:

  1. センテンスに分ける。
    • センテンスに分けるのは音声認識の重要な問題で文脈、文法、意味に依存し、統計的に決めるなどの技術が必要。
  2. 句読点を付与。
    • 「. , ! ? : ; “ ”」等あるが難しいので「. ,」位の付与の検討が妥当。
  3. Capitalization。
  4. 省略形への置き換え。
  5. 数値等の一般的な表記への置き換え。

その他:

  • 話し言葉はテキスト素材と比べると一般的にあまり組織化されていない。

テストデータ:

言語モデルはgutenberg text database:95%、残りの5%はテキストを使用して構築。

実装:

このプロジェクトはCapitalize、句読点付与された言語モデルがベース。 似た実装はdisambig tool from SRILM(これはcapitalizationだけ)。

言語モデル

訓練データでは、コンマは<COMMA>、ピリオドは<PERIOD>に置き換え。センテンスは段落にグループ化されて、始めと終わりを示すセンテンスマーカー<s> </s>はまれ。 言語モデルsphinx_lm_convert(あるいは sphinx3_lm_convert)でARPAフォーマットからDMPフォーマットに圧縮されている必要がある。 gutenberg.DMP 言語モデルは適切にフォーマットされていて、プロジェクトの sourceforge の language model download section にある。

CMU Sphinx - Browse /Acoustic and Language Models at SourceForge.net

から [Archive] → [English Gutenberg Postprocessing] をたどって 「gutenberg.DMP」をダウンロード。

使い方:

プロジェクトは下記からダウンロード可能

https://cmusphinx.svn.sourceforge.net/svnroot/cmusphinx/branches/ppf →以下のURLにリダイレクトされた。 https://svn.code.sf.net/p/cmusphinx/code/branches/ppf/

ダウンロードしてビルドする。

subversionをインストール。

brew install subversion

svnでチェックアウト。

svn co https://svn.code.sf.net/p/cmusphinx/code/branches/ppf/

チェックアウトしたディレクトリに移動。

cd ppf

ant をインストール。

brew install ant

環境変数が設定されているか確認して実行。

ant

テキストの後処理には「postprocess.sh」スクリプトを使用する。

sh ./postprocessing.sh -input_text path_to_file -lm path_to_lm

↑参照ページでは上記のようなコマンドだったが、スクリプトのファイル名とオプション名が異なるようだったので、以下のようなコマンドでいけた。

sh ./postprocess.sh -input_file path_to_file -lm path_to_lm

# 「sample.txt」のファイルを言語モデルに「gutenberg.DMP」を指定したコマンド例

sh ./postprocess.sh -input_file sample.txt -lm gutenberg.DMP

言語モデルに「gutenberg.DMP」を用いて、ざっくりと実際に試した感じだと、最初の方のテキストに関しての処理はまあまあだったが、何らかの原因があるのか、途中からのテキストに関しては単に単語をコンマで区切るだけという感じになった。

色々と試してみればそれなりに使えそうだという印象。

参照ページ:

音声ファイルからテキストに変換

たまに音声ファイルからテキストに変換したくなる時があるので、メモ。

英語のTranscript生成が前提。

有料ソフト等を使わずにMacでやる場合、下記のようなやり方があるようだ。

どちらかと言えば「Mac OS Xのテキスト認識」機能の方が精度がいいような気がする。

そして、いずれの場合でも句読点の付与やCapitalizeなどはされないので、別途方法が必要。

コマンドラインでやる場合。

  • cmu-sphinxを利用して sample.mp3 をテキスト化(Transcript)するとりあえずの手順。
$ brew update
$ brew tap watsonbox/cmu-sphinx
$ brew install --HEAD watsonbox/cmu-sphinx/cmu-sphinxbase
$ brew install --HEAD watsonbox/cmu-sphinx/cmu-pocketsphinx
$ pocketsphinx_continuous -infile sample.mp3
> mp3は対応していないのでエラー出る。
$ brew install ffmpeg
$ ffmpeg -i sample.mp3 -ar 16000 -ac 1 sample.wav
> ffmpegでサンプルレートが16000で1チャンネルのwavファイルに変換
$ pocketsphinx_continuous -infile sample.wav > result.txt
$ cat result.txt
> hoge hoge...

参考ページ

  1. Getting started with CMU Sphinx on Mac OS X
  2. command line - Convert a .mp3 to wav file with mplayer - Super User
  3. CMUSphinx Tutorial For Developers – CMUSphinx Open Source Speech Recognition

Mac OS Xの機能を使う場合

  1. Soundflowerをインストール。
  2. 「音声入力と読み上げ」で「音声入力」を「入」、「拡張音声入力を使用」をオンにして、入力を「Soundflower 2ch」にする。
  3. Audacityなどの音声再生ソフトで出力を「Soundflower 2ch」にする。
  4. TextEdit等を開き、上記の音声再生ソフトで任意の音声を再生したら、即座にTextEdit等をアクティブにして「音声入力を開始」(ショートカット:Fnキー2回押す、などを利用)する。

参考ページ

  1. Convert recorded audio to text | Level Up Lunch
  2. Macの音声入力の残念なところ - IGINブルネイ/syasudaの日記(MT版)

Google音声入力を使う場合

  1. Soundflowerをインストール。
  2. Macの音声の入出力をともにSoundflowerにする
  3. Googleドキュメントで新規ファイルを開く
  4. ツールから音声入力を選択
  5. 音声再生ソフトを再生

参考ページ

  1. 21世紀の文字起こし - the code to rock
  2. 21世紀の文字起こし(2) - the code to rock

webサービスのデモ

webサービス?だと、以下の様なものもあった。

Speech to Text Demo

入力ファイルの整形に使えそうなもの

  1. GitHub - textlint/textlint: The pluggable natural language linter for text and markdown.

参考ページ

  1. textlintで日本語テキストの文字校正を試してみた - the code to rock
  2. textlintで日本語の文章をチェックする | Web Scratch

lessでシンタックスハイライト

lessでシンタックスハイライトされたらいいと思いググった。

方法はいくつかあるみたい。

  1. Pygments という Python のパッケージの中の pygmentize コマンドラインツールを使う
    1. pip とかで Pygments をインストー
    2. パスが通っている場所にpygmentize コマンドを使ってファイルを開くシェルスクリプトlessfilter作成、実行権限を付与
    3. 環境変数LESSにLESS='-R'、LESSOPENにLESSOPEN='| lessfilter.sh %s'を設定
  2. GNU Source-highlightを使う
    1. brew とかで Source-highlight をインストー
    2. 環境変数LESSにLESS='-R'、LESSOPENにLESSOPEN='| /usr/share/source-highlight/src-hilite-lesspipe.sh %s'を設定
  3. Vimのマクロをless代わりにする
    1. locate less.shvimのless.shマクロを探す
    2. alias でless、またはvless等の任意のaliasで上記マクロを設定

手間数で言えば、Source-highlightを使用するほうがやりやすそう。

ただ、Source-highlightは少なくとも標準ではOctaveのコードには対応していない模様。

pygmentizeはOctaveのコードにも対応しているようなので、Octaveのコードを見る場合は pygmentizeのコマンドを使用する方法か、vimOctaveシンタックスハイライトが効く設定にしてvimのマクロを使うことになるだろうか。

中国語を単語分割

中国語を単語に分割したい。Segmentater? Tokenizer? 形態素解析

Chinese Text Analyser

webサービスの。β版だけど。

ライブラリ的なやつだと、それなりにありそうだけど、使いたいだけならハードル高いかも。

Is there any good open-source or freely available Chinese segmentation algorithm available? - Stack Overflow

GitHub - fxsjy/jieba: 结巴中文分词

↑これが比較的手軽に扱えそう。

実行例:

pip install jieba
python
>>> import jieba
>>> seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
>>> print("Full Mode: " + "/ ".join(seg_list))  # 全模式
Full Mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
>>> seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
>>> print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
Default Mode: 我/ 来到/ 北京/ 清华大学

Cheat Sheetとかさくっと見たい

Cheat Sheet、画面上でサクッとみれたり、作れたらいいと思い、ググった。PDFとか、画像とかだとちょっとアレなので。

Build Cheat Sheets and Share Your Favourites! - Cheatography.com: Cheat Sheets For Every Occasion

↑Cheat Sheet作れたり、他人が作ったのを見れるっぽいWebサービス。 画面左において、縦長でみたいんだけど、なんか横長のが多い?

Cheat Sheet Generator

↑Cheat Sheet作れるっぽいWebサービス。 UI、機能的に微妙だが、一応HTMLとかに書き出せる?

Dash for macOS - API Documentation Browser, Snippet Manager - Kapeli

Macでローカルで動くアプリケーション、各種ドキュメント類のブラウザ、スニペット管理ツール。 CheetSheetをみたり、作ったりもできる。 ただ、開発者がAppleともめたようで、MacAppストアから削除されて、独自配布とかで、心情面で積極的には利用しづらい。 でも、アプリケーション自体は便利っぽい。 iOS版は自分でソースダウンロードしてインストールとかひどいことになってる。

Zeal - Offline Documentation Browser

↑DashにインスパイアされたWindowsLinux用アプリケーション。Macでビルドにチャレンジしたページもあったが、それは色々大変らしい。

Velocity - The Documentation and Docset Viewer for Windows

↑DashにインスパイアされたWindows用アプリケーション。 Macでは動かんからなあ。

DevDocs API Documentation

↑各種ドキュメントのオンラインビューワ。 よさげだけど、Cheat Sheetはみれたり、作れないかな。

機械学習とかAIとかボットとか

気になったページとかをメモ。

Deep LearningとConvolutional Neural Network - Stimulator

ディーブラーニングとかの解説、比較的とっつきやすかった。

25 Chatbot Startups You Should Know – VentureRadar

チャットボットのスタートアップの紹介。いかにして販売等のサポートをするかみたいなのが多い感じ。

What is the best way to learn and write a AI Chat bot? - Quora

AIチャットボット作りたいんだけど何やったらいいの?てきな質問。

【ディープラーニング】10時間でChainerの基本を身につける - あれもPython,これもPython

Chainerでディープラーニングの学習。

深層学習フレームワーク Chainer の開発と今後の展開

Chainerの解説。

対話型AIについて | SENAN

対話型AIについての調査記事。

学習対話エージェント

「対話事例から対話モデルを学習することで,対話ベースで観光案内を行うエージェントを構築する」研究。

Chainerで学習した対話用のボットをSlackで使用+Twitterから学習データを取得してファインチューニング - Qiita

やってみた的なやつ。

An awesomely weird conversation between two AI Cleverbots - Shareables

ボット同士の会話。

Building an IBM Watson powered AI Chatbot

Watsonでチャットボット。

MicrosoftのLUIS

MicrosoftのLUISってどんなことができるのか?

Microsoft Cognitive Services - Documentation


Overview

LUISは機械学習のパワーをアプリケーションにもたらす

LUISはデザインされている、簡便にHTTPエンドポイントをデプロイするのに、エンドポイントは自分が送ったセンテンスを受け取って、意図するところと存在するkeyエンティティーで解釈しする。LUISWebインターフェースを使って、インテンションとエンティティーのセットのデザインを、アプレケーションに沿うようにカスタムして、LUISに言語理解システムを構築するプロセスをガイドさせることができる。

LUISを使う利点

人間とコンピュータのインタラクションで難点になるのは、人が何を欲するか理解し、意図に関連した情報の断片を見つけるコンピュータの能力である。たとえば、〜

一度アプリケーションをデプロイしてトラフィックがスタートすると、LUISはアクティブラーニングを使用して、自分を改善する。アクティブラーニングの過程で、LUISは関係が不確かなインタラクションを特定して、インテントとエンティティーに沿ってラベル付けするように求める。・・・


タイポグラフィーについて

最近はwebでのタイポグラフィーに関しても、意識されるのがあたりまえのようだ。

タイポグラフィーに関して、なんとなくのメモ。

  1. 文字組版としてのタイポグラフィーと図像的な表現としてのタイポグラフィー。
  2. デジタル表現においては、近年までタイプフェイスの再現技術の問題もあり、文字組版としてのタイポグラフィーは品質を追求できない傾向にあったかと思う。
  3. スペースとコンテンツのバランス、相互関係、相互作用、構成。
  4. 文章の内容にふさわしい表現としてのタイプフェイスの選択、タイポグラフィー。理解の邪魔にならない方向と、味付けの方向。
  5. タイポグラフィーに限らず、手をかけられなかった部分から、水は漏れる(品質が落ち、信頼性は低くなる)。

SQLAlchemyの学習

SQLAlchemy関連の学習

公式のサイト:

create_engine()の引数

  1. SQLite3の使用

sql関係ないけど、

クラスの文字列への変換の時に呼び出されるやーつ

object.__repr__(self)