system development

自然言語処理 janome, word2vec

コンテンツ管理システムにおいて、各種データにメタ情報を設定するのは非常に手のかかることです。
大量のデータを非構造から、構造化データに変換したことによって、大きなメリットがありますが
構造化された各トピックデータに対して適切なメタ情報を設定することはなかなか大変なものです。

janome, mecabといった形態素解析モジュールを利用して文章を解析し、各データにどのような
メタデータを設定するかの候補を自動的に設定する(候補としてあげる)ことができます。

また形態素解析の結果データを管理しておけば、word2vecといったモジュールを利用して
このいわば辞書データを利用し文章や単語の類似語や文章を要約するよな情報を抽出することができます。
単語や文章の類似度なども評価することができます。

蓄積されている大量のデータを利用し、的確な情報管理のために有用なツールとなります。

ご興味のある方はお気軽にご連絡下さい。

FrameMaker2019

  • 5th 10月 2018
  • DITA

FrameMaker2019がリリースされましたね。
https://www.adobe.com/jp/products/framemaker/features.html

今までも64bit環境で動作していましたが、内部的な処理をすべて64bit対応したことで
かなりスピードアップしているようです。参照画像などによりパフォーマンスは
異なると思いますが、1000ページ単位のデータでも2,3分でPDFに変換できるとのこと。
「PDFやResponsive HTML5のパブリッシュ速度が最大65%向上します。」
要チェックですね。

MA-CREATE 佐藤

Oxygen XML WebApp

  • 21st 1月 2016
  • DITA

ブラウザベースのXML編集に関してはCKEditorやJQueryを利用したモジュールで構築していることが殆どでしたが
oXygen XML WebAppを利用したシステム構築を検討中です。

demo はこちらです。
https://www.oxygenxml.com/webapp-demo-aws/app/oxygen.html

SDKも公開されているので、細かい部分を調整してかなり便利で安定したEditorに仕上げられそうです。
編集中のツリー表示ができればさらに良いのでこのあたりはJQueryを利用してモジュールを組み込みたいですね。

oxygen

Xpath ロケーションパス(開発メモ)

<p>aaaaaaaaaaaaaaaa<graphic src=”インライン用画像”/>bbbbbbbbbbbbbbbbb</p>
<p><graphic src=”通常画像”/></p>

上記のようなXMLがあった場合にXSLTスタイルシートでPタグ中のテキスト部とgraphicタグ部を
分割して処理させる。しかし、同じグラフィック要素でもインライン用の用途と通常画像用の
グラフィック要素が存在している。

この場合、スタイルシート側では同じgraphicテンプレートでインライン用の処理と
通常用の画像処理を定義してやらなければならない。

この分岐をするためにXPath で ロケーションステップを書く時に以下の
工夫が必要だった。

following-sibling::text()
preceding-sibling::text()

この書き方でgraphicタグの前や後ろにテキストノードがあった場合は
インライン用の画像処理をするという命令を定義した。しかし、
following-sibling::text()はうまく動作するものの、なぜか
preceding-sibling::text()は動作しない・・・。(プロセッサはXerces)

<xsl:when test=”parent::node()/child::text() != ””>
この定義でまかなおうとするがこれでもダメ
<xsl:when test=”normalize-space(parent::node()/child::text()) != ””>
前後のスペースをトリムしたらうまく動作する。なぜ・・・。苦労した・・・。

DITAToo – Review no.4 [データ投入]

  • 11th 12月 2014
  • DITA

map,ditaをアップロードするにはいくつかの方法がある。

手動でアップロード

Repository内のアップロードしたいフォルダを選択して、
DitaTooAuthorのメニュー [File] – [Upload]から[Files…]か[Projects…]をクリックし、
アップロードしたいデータを選択しアップロードする方法。

WS000109

FrameMakerと連携

FrameMakerの標準メニューにある[CMS] – [接続マネージャ] をクリックし必要な情報を設定する。
正しい設定がされるとレポジトリポッドが表示される。

WS000107

WS000108

いずれかの方法でフォルダにアップロードできたら
DitaTooAuthor,FrameMakerから文書をmapに関連づける。
下記の画面参照

WS000112

アップロードされたデータは、DitaTooAutohr上でも配置を編集できる。
勿論、FrameMaker上でmapを編集することも可能

WS000113

Windows上のDitaToo WorkSpace

このようにしてアップされた各データはDitaTooインストール時に設定したWorkSpace上にファイルとして配置されている。
repositoryの階層情報がすべてそのままWorkSpaceフォルダに展開されている。

※ 今日はここまで

次回はアップされたmapとditaデータの関連付けと、履歴管理について考察してみる。

DITAToo – Review no.3 [フォルダ作成]

  • 10th 12月 2014
  • DITA

DitaTooAdmin,DitaTooAuthorのインストールと環境設定などができたので
実際のデータを投入し管理したい。

DitaTooは管理者がDitaTooAdminでフォルダを作成して、
そのフォルダ内に各種プロジェクトデータを格納して管理する。
作成するフォルダを運用上でどのような単位とするのかを
管理者は検討しておく必要がある。

ちなみに、フォルダの下にフォルダ…と階層を深くすることができる。
権限を考慮し必要に応じてフォルダでデータを区切る事が可能。

プロジェクトというのはDITAMAP,BOOKMAPのいずれかとなる
従って構成としては以下のように管理される。

root
  ∟ folderA
       ∟ projectA(mapデータ)
          ∟ 各種ditaデータ
       ∟ projectB(mapデータ)
          ∟ 各種ditaデータ
  ∟ folderB
       ∟ projectC(mapデータ)
          ∟ 各種ditaデータ

今回「sample」というプロジェクトを作成してみる。
プロジェクトを作成した場合に、データベースや
ワークスペースがどのように変化したのかを調べてみた。

ditatooのデータベースは以下のテーブル構成からなっている。

  • prolog
  • repository
  • settings
  • translations
  • users

プロジェクトの作成で更新されたのはrepositoryテーブルであった。
repositoryテーブルの構造定義は以下のようになっている。

※ インストール直後ではrootフォルダに関する定義のみが存在している。

WS000105

Id:オートインクリメント
Fileid:NULL
Title:NULL
Name:指定したプロジェクト名
Path:空
Type:FOLDER
Size:dataカラムサイズ
Createor:フォルダ作成ユーザー名
Modified:フォルダ作成日時
Data:XMLデータが格納されている以下のようなXMLデータとなっていた。

WS000105

恐らくは作成したフォルダに関する各種プロパティ情報が定義されたXML
だと思われる。主にフォルダに関する権限情報と思われる。
画面上の「dev」は、今回レビュー用に定義したユーザー名。

※ 上記以外のカラムはすべてNULLとなっていた。

今日はここまで

DITAToo – Review no.2 [DITATooAuthorインストール]

  • 8th 12月 2014
  • DITA

DITAToo Authorをインストールする。

WS000091

DITATooとしてのインストール作業はこれで終わりですね。
非常に簡単にインストールできる。

ちなみにデータベース側はこのような構成になっている。

WS000095

データベースも非常にシンプルな構成。
仕様が公開されていなくても、開発者が見ればだいたいのことは
つかめると思われる。

手始めにDITATooAdminでユーザーを追加し、ユーザーにパーミッションを設定する。
パーミッションの設定画面は以下のようになっていた。

WS000096

設定可能なのは閲覧、追加、削除、サブフォルダの追加、削除これらが
どのような意味で、どのような単位で処理されるのかは要調査。

DITATooAuthorを起動し、指定されたユーザーでログインする。
以下に環境設定画面を示す。
※ 各画面詳細仕様についてのドキュメントは存在していない

WS000097

表示系の設定、ログ、警告、リンクの設定が可能なよう。
リンク時の元画像を別管理するか、ブランチ時の画像リンクの設定などができるようだ。

WS000094

利用するエディタ(プライマリ、セカンダリ)の設定、DITA OTの場所、ワークスペースの設定が可能。

WS000099

HTML、PDF、CHM、RTFに関連したカスタマイズ設定

WS000100

トピック特殊化に関連したテンプレート設定?

WS000101

翻訳作業時、別環境で作業時の間処理をスキップする設定やダウンロード時のZIP化の設定
実際にどのような設定がされるのかは、今後確かめてみる。

WS000102

MYSQLの設定

今日はここまで。

DITAToo – Review no.1 [DITATooAdminインストール]

  • 5th 12月 2014
  • DITA

DITAに対応した軽量のCCMSであるDITATooに関して今後何回かにわたってメモする。
※ レビュー時のVerはv1.9
※ DITATooレビューについてはインフォパース株式会社 関根様のご協力を得ています。

基本的な情報については
http://www.infoparse.com/files/user/ADOBE_WP04_excerpt.pdf
こちらを参照のこと

DITATooのシステム要件は、「.NET Framework3.5」がインストール可能なこと
・Windows Server 2003 〜 2012
・Windows XP,Vista,7,8
この辺りで使えるということ。

メモリは256MB推奨というところか…

データベースはMySQLを利用

DITATooは、DITATooAdmin,DITATooAuthorからなっており
ユーザーは必ず1つのDITATooAdmin,DITAauthorを購入する必要がある。
あとは必要に応じてDITATooAuthorを購入

DITATooAdminインストール用のインストーラーからは必要に応じてMySQLも
インストールされる。
DITATooAutorインストールでJavaRunTime,DITA OpenToolKit,FrameMakerコネクタが
インストールされる。

DITATooAdminインストール後の初期画面

※ 次回はDITATooAuthorをインストールして実際に触ってみる。

XMLをInDesignタグ(タグ付けテキスト)に変換

XMLをInDesignに読み込ませてレイアウトを整えるとなると複雑な表レイアウトが多いマニュアルでは
レイアウトを再現するまでのスピードの問題が発生する。
そこで、取り込む表についてはXMLからInDesignタグへと変換してしまい。
それをそのままInDesign上に配置ことで時間の短縮を図る。

InDesignタグ仕様 -> 「InDesignタグ付きテキスト ユーザーガイド

※ InDesign自動組版の場合、表以外のレイアウトでもタグ付きテキストにしてしまった方が
  レイアウト処理はスムーズである。各種書式の変更やマスターページの変更といった
  ことが頻繁に起こるのであればメンテナンス性にかけるこの手法は面倒な点があるものの
  変換処理の安定性やコーディングの難易度からすると、はるかにInDesignタグを利用する
  ことに利点があると言える。

AH Formatter アラビア語対応

アラビア語は文字が右から左に流れるために以下の属性をblock要素に付与する。

  • writing-mode=”rl-tb” (文字の流れ右から左)
  • language=”ar” (言語)

表罫線の指定の仕方にも注意する。通常、罫線の表示指定については
border-left-style, border-right-style
といった設定を利用して罫線のスタイルを指定するが、
組みの流れが逆になっているため、これも逆に考える必要がある。

しかし、border-start-style, border-end-style
という指定の仕方で指定しておけば、組の流れが右から左でも左から右でも、
組の流れに対して相対的に指定することができる。
左から右の流れの場合の左端罫線はborder-start-style
右から左の流れの場合の左端罫線もborder-start-styleとなる。