2018年3月26日月曜日

GFについて

今や世界各国の言語が色々なメディアから聞く機会が増えました。
見知らぬ言葉を聞いてこれを調べたい場合には、
一番アクセスで調べたい単語等の場合には、
もちろんグーグルが一番お気軽でしょう。
他にも概念の集合からのアクセス方法として、ワードネットがあります。
ただし、ワードネットはシステム屋さんしか自由にあつかえないツールかもしれません。

ここでもう一つの切口(実用的には使えない)で、今回GFを紹介します。

https://www.grammaticalframework.org/

A programming language for multilingual grammar applications

なにやら、プログラム言語のような感じを受けますが、自然言語を主に扱います。
このツールは自然言語をコントロール言語として扱い、主に文法中心の言語へのアプローチを取っています。
対応言語は広いのが特徴で、世界の主要言語は大体網羅しています。文法に興味がある場合に便利なツールと考えています。
ツールはHaskellで実装されていて、例えばMacにインストールした場合、
gf
コマンドで起動できます。

とにかくアプローチは非常にユニークなので研究するには面白い方法だと思います。ただし、ワードネットよりもよりシステム屋向きのツールと言えます。

これを知ったのは元はプログラム言語の解析でJavaの文法解析で知りました。その頃から更に発展を遂げているようで、再調査が必要なようです。

追伸:
他の件で調査していたら、SyntaxNetがこの道の最新技術らしいです。Googleさんが提供しているオープンソースの技術で、RNN系のNLPで使われている技術です。
大きく異なるのは、GFと違いコントロール自然言語のスコープではなく、本当の自然言語での構文解析で使える技術です。

アラビア語のWordNet

前回はインド語へのアクセス方法を調査してみたが、ついでにアラビア語もワードネットがないか探してみると、やはり存在していた。
こちらはJavaでのアクセスなので、ファイルを直接覗いてみた。

サイトは以下になります。
https://github.com/zouairi/AWN
ファイルを解凍して内容を確認すると、xmlの中が内容のようです。
この他ログにワーニングのようなものが出力されていました。

アラビア語も将来性があるので、情報にアクセスができて勉強になりました。

追記:20180426
もっとまとまったサイトが存在していました。 現在34言語登録されています。

Open Multilingual Wordnet

2018年3月25日日曜日

インド語へのPyiwn

インド語についてYouTubeで文字について興味があったので見てから、今度はWordNetが利用できないか調べてみたら、IndoWordNetの存在を知りましたが、アクセスするとゲートウェイエラーが発生してしまいます。

そこで役立つのがPyiwnです。

これでアクセスすれば、インド語ワードネットへアクセスできます。
そこで早速試してみましたが、ちゃんとアクセスできるようになりました。
インストールも簡単で、

pip install pyiwn

これだけです。ヒンディ語を試すとアクセスできます。
from pyiwn import pyiwn
pyiwn.download()
iwn = pyiwn.IndoWordNet('hindi')

これからインド語への調査で役立つツールになります。
Synset:531
Word:11万
と単語数も十分な数があります。これでヒンディ語の解析も可能な時代になりました。

この他試した言語はいかのようでした。
lng=['assamese',
# 'bangla',
'bodo',
'gujarati',
'hindi',
'kannada',
'kashmiri',
'konkani',
'malayalam',
'meitei',
# 'mrathi',
'nepali',
# 'odia',
'punjabi',
'sanskrit',
'tamil',
'telugu',
'urdu']
for l in lng:
  print(l)
  iwn = pyiwn.IndoWordNet(l)
それにしても1国でこれだけ言語があるので、インドの人が数学でも言語の分野でも苦労が多いことでしょう。

苦労することは知識や知能が発達する可能性が高いと考えられます。

2018年3月8日木曜日

GSSとはCSSの何?

GSSとはGrid Style Sheetをさしているらしい。ググってもほとんど日本のサイトではヒットしない。
なにやら技術的には非常に革新的なものであるが、2014年のYouTubeのデモからもう5年になろうとしているので、これからの技術かもしれない。

特徴を上げると
1.プリプロセッサで利用、CSSを変換
2.グリッドシステム
3.広い範囲で利用できる
4.制約論理をインテリジェントに適用、CCSS
こんな感じです。

感想としては、「CSSが未熟な技術なので、制約表現で記述してくれれば、エンジンを使いクールに表現できます。」という感じでしょうか。

VFLという制約言語でコードを記述するようですが、制約を宣言的に記述すると、自動で動的CSSのコードに変換してくれる仕組みのようです。(VFLはアップル社の技術)

制約論理ではSATやMax-SATだの用語が並んでいるので、かなりインテリジェントなものだと考えられる。CSS polyfillsからの技術ということで先進的なのですが、何故か現在はほとんど議論されていないようなので引き続き調査が必要なようです。
現在はサイトで公開しているようですが、なぜかGitHubの更新が3年前から更新されていないようで不思議な感じがします。

なにやら不思議な感じなまま書いてしまいましたが、オライリーでも取り上げられた内容で、且つ制約論理を使うまれなケースなので、とにかくこんなところまでSATが進出していたとは、この発想にはつくづく感心致します。


2018年3月7日水曜日

マイクロサービスのメモ

ある仕事を終えてから、せっかくScala言語が理解できる状況になったので、ScalaによるWEBについての調査を手前味噌で行った時のメモです。
マイクロサービスとは、かのマーチン・フラウワーさんが提唱したアーキテクチャーです。

結局、Scala言語はJavaなんかよりも開発効率があがるが、あまりコードを開発する技術者も増加しないし、一部複雑な概念(黒魔術ともいうらしい)があり、将来性は今一解らない状況と理解しています。相変わらずJavaのミッションクリティカル系でのレガシーなコードの蓄積の影響力が強い傾向と考えています。ただ次第にPython系の仕事も増加しているようです。

「Lagomでマイクロサービス」

前置きが長くなりましたが、結局マイクロサービスがDOS攻撃にも対応可能であると考え、Scalaでのマイクロサービスの一つである、Lagomのことを書きたかったのです。
Lagomの特徴は、JavaもしくはScalaでのAPIを使うことができるバックエンドで、非同期でリクエスト処理ができる、クラウド向きなマイクロサービスのシステム構築が実現できるものです。
深くは勉強していませんが、工夫しだいではフロントエンドに
DOS攻撃を受けたときにリクエストを判断し破棄する仕組みを作れば、かなり理想的なシステム構築が可能になると考えています。
今は、安定性や将来性を見極める段階ですが、期待したいプロダクトと思い今後も注目していきます。

せっかくScalaのことを書いたので、一つ追加でScalaで実装された、ScarabというSATソルバーがあり、コードもシンプルで且つ高速であるようです。何かSATで実用的なシステムを組みたい時に使える技術だと思います。