JSPについてまとめ

JSPのエッセンスだけまとめる。

 

■ディレクティブ

 ●pageディレクティブ

 <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

 <%@ page session="true" %>

 <%@ import="java.util.time" %>

 <%@ info="これは、〇〇〇を表示するページです" %>

 <%@ isErrorPage="true" %>

 <%@ errorPage="errorRoutine.jsp" %>

 <%@ isELIgnore="false" %>

 

■レスポンス出力

 ・Javaのコードを参照

  <% String today = "2020/01/01 00:00:00" %>

  <%=today%>

 

 ・スクリプトレット

  <%

   out.println("abc");

  %>

 

 

 

vim関連

・行番号表示をデフォルトで実施

$ vi ~/.vimrc

set number と書いて保存。

 

 ・文字列置換(%s)

 :%s/xxx/yyy/g ・・・ 一気に全部置換

 :%s/xxx/yyy/gc  ・・・   ひとつずつ確認しながら置換

 :1,100s/xxx/yyy/g ・・・ 1行目から100行目を一気に全部置換

 

・分数行にまとめて"//"を挿入してコメント化

 事前に修正したい行の先頭へカーソルを移動

 ctrl + v  で矩形モードへ

 修正したい最終行へカーソルを移動

 shift + i で入力モードへ。カーソルは自動的に先頭行へ移動する。

 先頭行で // を入力。(別に//以外でも良い)

 esc を押下すると、入力した文字がすべての行に挿入される。

 

・複数行まとめてインデント

 10>> ・・・ 10行まとめてインデント

 または、矩形モードにして ">" を入力

 

・複数行まとめて大文字/小文字変換

 矩形モード(ctrl + v)で矩形を選択後、shift + ~ で大文字/小文字が反転。

 

 ・文字列補完

 数文字入力した後、ctrl + p で候補が pull downされる

 

・ウィンドウ分割

 ctrl + w v ・・・ 左右に分割

 ctrl + w s ・・・ 上下に分割

 ctrl + w w ・・・ アクティブウィンドウ切り替え

 :q ・・・ ウィンドウを閉じる

 

・コピペ

 ノーマルモードで、shift + v で行単位のコピー開始。

 カーソルをコピーしたい最終行まで移動。

 y を押してヤンク。

 p を押してカーソルのある次の行にペースト。

 

 

---------------------------------------
ITとことんのトップページ
┗■Linux関連のトップページ
 ┗■本ページ

Elasticsearchの概要

■Elastic Stack

Elastic Stackは、Kibana, Elasticsearch, beats, logstashのオープンソースをベースとするプロダクト群の総称。

 

(1)Kibana : データを可視化

 Node.jsで作られている。JavaScriptc3.js を使ってグラフを描いている。Elasticsearchが持つアグリゲーション機能を利用し、集計して可視化して表示する。

 

(2)Elasticsearch : データを保存、検索、分析

 全文検索、リアルタイム解析を行う、分散型RESTful検索/分析エンジン。Apache Luceneをコア部分に利用している。Apacheライセンスで提供している。

 JSON形式データをHTTPでElasticsearchへ送ることでデータの登録・更新・削除・取得・検索ができる。

 検索機能には、キーワード検索、絞り込み検索、ハイライト機能、スコア付けといった機能がある。またアグリゲーションと呼ばれる機能で検索結果の中にどういったデータが何件あるのか簡単に集計できる。

 クライアントが使用するRESTful APIとして、Java, C#, Python, JavaScript, PHP, Perl, Ruby, SQLなど言語向けのAPIが用意されている。Java用には以下のものがある。

Java REST Client 7.0

 下記の2つがある。

 ・Java Low Level REST Client

  HTTPでElasticsearchと通信する。

 ・Java High Level REST Client

  Low Level Clientをベースにしてメソッド固有のAPIを提供する。

Java API 7.0

 

(3)Beats : エッジマシンのデータをLogstashやElasticsearchに入れる

 Go言語で書かれている軽量なデータシッパー。データの中から1行取り出してElasticsearchに投げるといったシンプルな作りになっている。

 各対象サーバにAgentとしてbeatsを組み込んでファイルを集め、logstashに投げてログを解析して、Elasticsearchに入れる、といった使い方ができる。また、logstashを介さず直接Elasticsearchに送ることもできる。

 色々なデータ形式に対応したテンプレートが用意されている。MySQLなどのパケットデータを取り込んだり、Windowsのイベントログを取り込んだりすることができる。

 

(4)Logstash : 動的にデータ収集しElasticsearchに入れる

 Rubyで書かれている。データを収集して解析してコード化してJSONに変換してElasticsearchに投げる。結構重い。

 

 

■X-Pack

Elastic Stackの機能を拡張するアプリとして、X-Packプラグインがあり、以下の強化ができる。

(1)セキュリティ

 Elasticsearchには認証機能がなく、誰が格納したデータなのか不明であるし、誰が入れたデータでも消し放題である。X-Packを使うことで認証機能を追加することができ、データを入れられる人やデータを消せる人を制限することができる。

 

(2)アラート

 Kibanaはデータを可視化して表示する事はできるが、しきい値に達したときのアラート機能がない。X-Packを使うことでアラートをあげる事ができる。

 

■Elastic Cloud

AWS上で起動する(?)。

 

 

 

 

 

MeCab(めかぶ)の概要

MeCabは、京都大学情報学研究科、および日本電信電話株式会社コミュニケーション科学基礎研究所の共同研究ユニットプロジェクトを通じて開発された、形態素解析器のひとつ。パラメータの推定にCRF(Conditional Random Fields)を採用し、品詞体系, 単語長, 辞書の変更に対し柔軟にかつ低コストで対応できるようになるなど、HMMよりも性能が向上した。平均的に ChaSen, Juman, KAKASIより高速に動作する。

 

■プログラム・ダウンロード

C++で書かれており、2019年4月時点の最新バージョンは、MeCab 0.996だ。なかなか1.0にならないw(0.999の次は、きっと0.9991が出るに違いない)

UNIX向けにはソース(mecab-0.996.tar.gz)が、Windows向けにはバイナリ(mecab-0.996.exe)が、ダウンロード可能。

 

■ライセンス

GPL, LGPL, BSDいづれかに沿って配布可能。

 

mecabコマンドの出力フォーマット

出力フォーマットは、茶筌とは異なり、以下となる。

層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音

 

mecabコマンドの引数に、「-O」オプションを付加することで、出力フォーマットを指定できる。

 

mecab 引数なし

庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
二 名詞,数,*,*,*,*,二,ニ,ニ
羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ
にわとり 名詞,一般,*,*,*,*,にわとり,ニワトリ,ニワトリ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
いる 動詞,自立,*,*,一段,基本形,いる,イル,イル
。 記号,句点,*,*,*,*,。,。,。
EOS

 

mecab -Oyomi ・・・ 読み方を出力

ニワニハニワニワトリガイル。

 

mecab -Owakati ・・・ わかち書きを出力

庭 に は 二 羽 にわとり が いる 。

 

mecab -Ochasen ・・・ 茶筌形式で出力

庭 ニワ 庭 名詞-一般
に ニ に 助詞-格助詞-一般
は ハ は 助詞-係助詞
二 ニ 二 名詞-数
羽 ワ 羽 名詞-接尾-助数詞
にわとり ニワトリ にわとり 名詞-一般
が ガ が 助詞-格助詞-一般
いる イル いる 動詞-自立 一段 基本形
。 。 。 記号-句点
EOS

 

mecab -Odump ・・・ 全情報を出力

0 BOS BOS/EOS,*,*,*,*,*,*,*,* 0 0 0 0 0 0 2 1 0.000000 0.000000 0.000000 0
1 庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ 0 3 1285 1285 38 2 0 1 0.000000 0.000000 0.000000 5935
2 に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 3 6 151 151 13 6 0 1 0.000000 0.000000 0.000000 5782
7 は 助詞,係助詞,*,*,*,*,は,ハ,ワ 6 9 261 261 16 6 0 1 0.000000 0.000000 0.000000 6004
10 二 名詞,数,*,*,*,*,二,ニ,ニ 9 12 1295 1295 48 8 0 1 0.000000 0.000000 0.000000 9284
16 羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ 12 15 1300 1300 53 2 0 1 0.000000 0.000000 0.000000 8686
24 にわとり 名詞,一般,*,*,*,*,にわとり,ニワトリ,ニワトリ 15 27 1285 1285 38 6 0 1 0.000000 0.000000 0.000000 16346
43 が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 27 30 148 148 13 6 0 1 0.000000 0.000000 0.000000 15491
56 いる 動詞,自立,*,*,一段,基本形,いる,イル,イル 30 36 619 619 31 6 0 1 0.000000 0.000000 0.000000 17920
60 。 記号,句点,*,*,*,*,。,。,。 36 39 8 8 7 3 0 1 0.000000 0.000000 0.000000 14206
62 EOS BOS/EOS,*,*,*,*,*,*,*,* 39 39 0 0 0 0 3 1 0.000000 0.000000 0.000000 12670

 

■各種言語からの利用

Perl

use MeCab;
$m = new MeCab::Tagger ("-Ochasen");
print $m->parse ("今日もしないとね");

 

Ruby

require 'MeCab'
m = MeCab::Tagger.new ("-Ochasen")
print m.parse ("今日もしないとね")

 

python

import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print m.parse ("今日もしないとね")

 

Java

import org.chasen.mecab.Tagger;
import org.chasen.mecab.Node
public static void main(String[] argv) {
   Tagger tagger = new Tagger ("-Ochasen");
   System.out.println (tagger.parse ("太郎は二郎にこの本を渡した."));
}

 

 

---------------------------------------
ITとことんのトップページ

 ┗■形態素解析とかのトップページ

   ┗■本ページ

 

 

ライセンスと日本語訳のまとめ

日本語訳をまとめてくれているページ

 

必須・許可・禁止事項をまとめてくれているページ

 

■個々のライセンスの気になった話題

(1) Apache Licence

 ・でかい企業のOSSがApache License 2.0だと嬉しい理由

 

(2)GNU

 

 

 

 

 

JUMAN++の概要

 

JUMAN++は、京都大学の黒橋・河原研究室で開発された、形態素解析システムだ。

<デモページ>

JUMANの改良版で、RNNLM(Recurrent Neural Network Language Model)という意味的に汎化された言語モデルを利用する。RNNLMは、単語を意味的に汎化したベクトルとして扱い、品詞等の素性によるスコアと合わせて解析に利用するもの。

Wikipediaなどから集めた単語90万語からなる辞書を持つ。2019年4月時点の最新バージョンは2.0だ。

 

■速度・解析精度

 V1に比べてV2は250倍も高速になったが、MeCabに比べると11分の1と劣っている。しかし、解析精度はMeCabをやや上回っている。

 

■解析例

「感想やご要望」という文字を、JUMANとJUMAN++で解析してみる。

JUMANの場合は、「感想/やご/要望」となった。「やご」はトンボの幼虫である。

-------------------------------------------------------------------------------------------------------

感想やご要望
感想 かんそう 感想 名詞 6 普通名詞 1 * 0 * 0 "代表表記:感想/かんそう カテゴリ:抽象物"
やご やご やご 名詞 6 普通名詞 1 * 0 * 0 "代表表記:やご/やご カテゴリ:動物"
要望 ようぼう 要望 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:要望/ようぼう 補文ト カテゴリ:抽象物"
-------------------------------------------------------------------------------------------------------

 

JUMAN++の場合は、「感想/や/ご/要望」となり、意味的に正しい解析をしている。

-------------------------------------------------------------------------------------------------------

感想 かんそう 感想 名詞 6 普通名詞 1 * 0 * 0 "代表表記:感想/かんそう カテゴリ:抽象物 漢字"
や や や 助詞 9 接続助詞 3 * 0 * 0 NIL
ご ご ご 接頭辞 13 名詞接頭辞 1 * 0 * 0 "代表表記:御/お"
要望 ようぼう 要望 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:要望/ようぼう 補文ト カテゴリ:抽象物 漢字"

-------------------------------------------------------------------------------------------------------

 

■ライセンス

Apache License, Version 2

 

 

 

 

 

 

 

---------------------------------------
ITとことんのトップページ

 ┗■形態素解析とかのトップページ

   ┗■本ページ