[前回記事] [トップ] [次回記事]

2004年6月号掲載 よしだともこのルート訪問記

第92回 テキスト抽出をコア技術とした商品群でより良いネットワーク社会を
〜株式会社 データ変換研究所〜


畑中豊司(はたなか とよし)
株式会社 データ変換研究所 代表取締役 社長

株式会社 データ変換研究所とは http://www.dehenken.co.jp
テキストファイルこそ再利用の可能性の最も高いものであるという信念のもと、テキストの文字コード変換、Microsoft Officeのデータからのテキスト抽出、PC UNIX用新規ソフトウェアの創造などを目指して、1999年に有限会社として設立した。2000年には、株式会社に組織変更をはたしている。
 2002年には、オムロンソフトウェア(株)とテキスト処理プログラムの販売提携を発表。同年に、Windows/Solaris/Linuxサーバー上にある大量の文書ドキュメントに対して、高速なキーワード検索を行える全文検索エンジン「Akao」を公開。小規模LAN環境向け「Akao パーソナル」も開発した。2003年には、高速パターン検出ソフトウェア「ParaGREP」の販売を開始している。
 また、設立当初からパッケージソフトとして、Microsoft WordなどWindowsの文書ファイルからテキスト情報を抽出するフィルタプログラム「DocCat」を販売し、2年後には、BMP、JPEG、PNG、TIFFなど画像ファイルからテキスト情報を抽出する「GazoCat」を開発。
 UNIX系テキスト情報自動抽出ソフトウェア技術で、京都府知事より平成14年度の京都中小企業優秀技術賞を受賞。また、(財)京都産業21注1において副賞を受賞した。

■テキスト抽出をコア技術にすえてさまざまな商品群を開発

よしだ(以下、Y):こんにちは。まずは、会社概要を紹介してください。

畑中:またの取材、ありがとうございます。前回(2000年2月号のルート訪問記)は、会社の設立直後にインタビューをしていただきました。あのころは、自宅で1名で創業した状態で、応接間兼仕事場での取材でしたよね。あれから無事に何とか約4年半が経過して、2004年3月現在の社員数は、10名となっています。
 会社定款には、「ソフトウェア業、それに附帯する一切の業務」と書いています。ソフトウェア業というのは、ソフトウェアを開発して、販売して、保守するような一連の業務を指すもので、京都地方法務局の指導によると、「ソフトウェアの開発・販売」とするよりも、「ソフトウェア業」のほうが法務局としては無難ということでした。ただ、ソフトウェアに関係している人は、「ソフトウェア業」というのは範囲が広すぎてかえってよく分からないという印象を持つようです。

Y:発売されている製品で、全文検索エンジンがAkaoという名前なのはなぜですか?

畑中:有名な全文検索エンジンである、Namazu注2に対抗した商用ソフトウェアだからです。
 アマゾン川に住む「大ナマズ」に、red-tailed catfish(レッドテールキャットフィッシュ)という種類があります。Namazuに対抗して、Namazu対red-tailed catfishとしたかったのですが、このままでは口頭でいいにくい。そこで、red-tailed catfishそのものの名前の由来が、赤い尾っぽをしているナマズだということからAkaoとしました。
 2003年からは、対象文章中に目的のキーワードが存在するかどうかを高速に検出する「ParaGREP」の販売も開始しています。

Y:データ変換研究所(以下、デ変研)の商品群は、テキスト抽出と全文検索システムに関連したものですね。

畑中:デ変研のコア技術は、テキスト抽出の技術です。これがなぜ必要かという説明で一番分かりやすい例となるのが、InfoseekやGoogleなどの検索エンジンだと思います。インターネット検索(Webページの検索)では、インデックス(索引ファイル)を作って検索するのですが、同じ仕組みを使ってイントラネットの文書を検索する場合、WordやExcelなどの固有データに対して、ある文字列で検索して必要な文書を見つけ出すことになります。
 これを可能にするには、まずDocCat注3でテキスト抽出しておき、後は既存の全文検索システムの仕組みを使って全文検索を実行できるというわけです。おかげさまで、Infoseekさんをはじめ、10社ほどにこの仕組みを使ってもらっています。
 コア技術の応用例としては、携帯電話でWord文書の内容を読めるようにしたものがあります。携帯電話でメールが交換できるとはいっても、通常、メールに添付されたWordファイルなどは読めません。そこで、DocCatを使ってテキストを抽出し、携帯電話で読めるようにする仕組みとして使ってもらっています。
 これら以外では、ソフトメーカー向けのライセンス、ライブラリ商品として、デ変研TFライブラリ、デ変研IFライブラリ、デ変研AKエンジン注4を販売しています。OEMで技術供給してロイヤルティや年間保守料を得るというビジネスモデルですね。
 「デ変研AKエンジン」は、Namazuと比較するとインデックス作成を10倍の速度で行えます。カスタマイズを要する検索システム、特定ソフトウェアに組み込んでの検索機能を実現する場合の事例が増え、デ変研AKエンジンが認知されるようになってきました。全文検索は10年ぐらいの歴史がありますが、いまでは、1つの機能として全文検索機能が必要とされているようです。
 また、当社を取り巻く協力関係図としては、経営支援先に「京都商工会議所ビジネスモデル推進センター」、技術提携先にInfoseek、技術・販売提携先にオムロンソフトウェア(株)、多数のOEM客先、販売代理店があります。たとえば、私が以前勤めていたオムロンソフトウェア(株)とは、GazoCatに関して技術・販売提携していますので、売れるたびに何%かのライセンス料を払っています。元社員とはいいながら、給料をもらわずに売り上げをあげているので、これほど優秀な社員はいませんよね(笑)。とはいえ、まだまだ少ないので、もっと優秀と認めてもらえるようになるまで頑張っていきたいと思っています。
 テキスト抽出技術を使った商品は、ニッチ(すき間)産業ですから、市場がそう大きく増えることもないかわり減ることもない。一方、全文検索の市場規模は3年で2倍程度増えると予測できるので、デ変研の商品もジワジワとシェアを拡大しています。そこに、ParaGREPという新技術を導入して、シェアをさらに拡大できればよいと考えています。

■特許申請した新技術ParaGREP対grep

Y:高速パターン検出技術「ParaGREP」について、詳しく紹介してください。

畑中:パターン検出を行うUNIXコマンドとして、grep注5がありますよね。このgrepで、あるキーワードを総当たり的に検出しようとした場合、キーワードの数がいくつもあると非常に時間がかかってしまいます。それに対して、ParaGREPは、内部メモリ配置を工夫することで、大量のキーワード文字の有無を高速に検出できるようにしています。
 また、キーワード辞書は、辞書ごとにIDを振り分けることでどの辞書から検出されたのか判別できるようにしています。そのため、本文を1度読むだけで、複数のキーワードがどこにあったかという結果を戻せるようになりました。ParaGREPのキーワード辞書は、2000語から40万語におよぶ大量のデータを想定しており、重複した場合には1つの単語が複数辞書で該当していることを返します。
 この、ParaGREPで実現したパターン検出技術は、辞書数が何万語増えても、検索する速度はgrepの30倍程度で完了するという画期的発明で、2003年7月1日に特許を申請しました(特願2003-270131)。
 具体的にParaGREPとgrepを比較すると、30語から1万語にデータが増加した場合、ParaGREPなら時間は微増するだけです。これに対してgrepでは、同様にデータを333倍増加させた場合、時間が約360倍増加します(コラム参照)。
 ParaGREPの技術が応用できそうな分野としては、「検索連動広告、メール広告支援事業」、「掲示板の禁止用語置き換え処理」、「スパムメールの自動削除(メール受信)」、「社外へのメール送信監査」の4点を考えています。
 最初の「検索連動広告」から説明しましょう。検索サイトで、利用者がキーワードを入力すると、関連する広告を表示するシステムです。まず、広告主さんから「この検索キーに、この広告を出したい」という要望を聞いておき、辞書に組み入れます。その上で、検索キーワードを入れた人を瞬時に判断し、その広告主さんの広告を提示します。このキーワードのチェックに、ParaGREPが利用できるだろうと考えているのです。ところが、市場には、Overture注6やGoogle Adwords注7があって、ちょっと出遅れた感じです。
 次の「メール広告支援事業」は、広告が自動添付される無料メールサービスを対象としています。事前に辞書に組み込んだキーワードがメール本文の内容にあった場合、それに合わせた広告内容を選んで添付します。ParaGREPは、大量のキーワードを高速チェックできるため、メール内容から判断して、メールの受信者に関係ある広告を付けられるというわけです。しかし、この仕組みは、メールの内容を検閲するような行為になるので、市場への提供は難しい面があります。

Y:「またコーヒーを飲みに行きたいね」とメール本文に書くと、「コーヒーならスターバックス」といった広告が付くと、効果的ですよね。

畑中:そうですね。そう思うのですが、普段やり取りするメールの中身を常に検索することを許可するように、メール利用者に対して同意を求める必要があります。そのため、こういった仕組みを導入してもらうことは難しいよう注8です。
 「掲示板の禁止用語置き換え処理」は、ParaGREPを使うことで、禁止用語にマッチするキーワードを、即座に伏せ字に置き換えます。たとえば、Web上のチャットや掲示板に書き込まれた差別用語などは、従来、管理者がそれを目撃してから削除していました。この手間を低減するためのもので、現在、辞書も多少用意して市場調査中というところです。
 「スパムメールの自動削除(メール受信)」に関しては、社外から社内へのスパムメールに対して、文面をPara
GREPでチェックして、広告メールを排除するような使い方ができます。これには、すでにいろいろなツールがあります。
 「社外へのメール送信監査」は、学校・官公庁・企業などあらゆるところで活用できるでしょう。社員個人の電話番号や住所を外部漏洩から守る際、社外発信情報に対する漏れのないチェックツールとしてParaGREPを利用できます。これらも、いま流行のようで、メール監査ソフトが続々と出回っています。

Y:より良いネットワーク社会のために、ParaGREPがいろいろな場面で活躍してくれるといいですね。

畑中:そうですね。ただ、ソフトウェアって、新しい何かを発見しても、市場を調べるとすでに同じようなソフトウェアが出回っていたりしています。せっかくのParaGREPの技術も何らかのお役に立てるように、あきらめないでしつこくやってみようと思います。

Y:ところで、デ変研には、どのくらいの頻度で、バグレポートが届くのですか。

畑中:これはお恥ずかしい話ですが、多い週では2〜3個程度あります。相手の勘違いは少なくて、こちら側の問題の場合がほとんどです。しかし、いったん解決した問題が再発することはほとんどなく、落ち着きやすいですね。
 DocCatは、日本中のファイルが対象となるのでメンテナンスの継続性が自慢なのですが、世の中にはいろいろなものがあって、次から次へと課題が見つかっていると感じることがあります。お客さまには、対応が早いと評価してもらっていますけれど、できれば、問題が起こらないようにすることがベストですし。テキスト抽出は私の選んだ道ですので、不具合があっても順番に対処し安心できるようにしたいと考えています。また、DocCatは、この記事が出るまでにいまよりも2倍ぐらい高速にした最新版をリリースする予定です。

■「常に世の中、元のもくあみ」スパイラルとは?

Y:畑中さんが、オムロン(株)のUNIXワークステーション上のソフトウェアを開発していた同じ時期に、私もオムロン(株)にいたんですよね注9

畑中:UNIX関連のソフトウェア開発技術者として、1984年からの11年間、UNIX OS、コマンド開発、dp/
NOTE注10などを担当し、その後の4年間、UNIX上のパッケージソフトウェアの営業を担当していました。
 営業を担当していたころ、「もう1度、開発者として復活して、自分が作った商品を自分で販売したい」という思いに駆られるようになりました。そこで、1999年3月にオムロンソフトウェア(株)を退社し、半年後の9月に会社を設立しました。
 営業よりも開発に戻ろうと、会社を作って技術者として再出発しましたが、それができた時点で、今度は販売のためにまた不得意な営業をせざるを得なくなりました。「常に世の中、元のもくあみ」スパイラルなんですよね。「それが嫌」、「辛い」といって逃げると、後になって、必ずまた逃げたところに舞い戻らざるをえない、そういうスパイラルがあるように思います。
 神様は、それを克服するまで先へは進めないように試練を与えてくれるのです。そんなこんなで5年弱経ち、つたない営業でも、自分(と社員)が食べていけると分かってきて、「元のもくあみスパイラル」も何とかなったかなという感じです。

Y:なるほどねぇ……。でも、会社員のときはできなかったけれど、いまならできるという楽しみもありますよね?

畑中:それはそうですよ。会社は、起業フェーズは完了し、現在は第2フェーズとして2〜5億円の売り上げになるように取り組んでいきます。そうして、売り上げを増やすと同時に雇用も増やして社会的責任を果たす必要があると思っています。もっともっとうまくいけば、株式公開もと考えています。
 いまは、やりやすいところから、たとえば学生のアルバイトに来てもらったり、インターンを受け入れたりして、人員増の布石を打っています。そういう目標を達成するのに、あれこれ(上司から)指示が飛んでくることもなく、マイペースでできるのが一番いい点ですね。

Y:私たちがいたオムロン(株)の社憲注11が、「われわれの働きで、われわれの生活を向上し、よりよい社会を作りましょう」でしたよね。毎朝、社憲を唱和する中で、入社当時どうも好きになれなくて、「われわれの生活を向上し」じゃなくて、「われわれの生活を向上させ」が、日本語として正しいのではないですか? などと上司に尋ねたりしました(上司の困ったような、あきれたような顔が忘れられない)。でも、最近、ときどきふと懐かしく思い出して、「われわれの働きで、……より良いネットワーク社会を作りましょう」とつぶやいてみたりします。

 その「より良いネットワーク社会」では、あるソフトウェアでしか読めない形式ではなく、誰でも読めるテキストファイルを流通させるべきだと、私は常々思っているのです。そのためにも、デ変研は、「よりよいネットワーク社会を作る」上で大切な会社だと思うのです。これからも応援しますから、ますますのご発展をお祈りしています。

高速パターン検出技術「ParaGREP」の応用の可能性

コラム ParaGREPとgrepの速度評価(畑中豊司)

 ParaGREPの実行速度を測定し、その結果とgrepコマンドでの実行の速度結果を比較することで、ParaGREPの処理の高速性についての結果を報告する。
 今回、データを測定したサーバーのマシンスペックは次のとおりである。

CPU:Pentium2/300MHz
メモリ:512MB
HDD:UrtraATA/33
OS:Red Hat Linux 8.0(カーネル2.4.18)

●用意した辞書

 キーワード辞書aとして、2〜4文字までの日本語文字列を30語用意した。このキーワードの1つに「情報」という語を含めている。また、辞書bでは、1〜10文字までのキーワード情報を1万語用意した。これらの辞書に用意した単語は、すべて同じものはないようにして、この中の1つに「情報」というキーワードを含めている。

●ターゲット文書

 ターゲット文書として、テキスト形式で次の内容の文書を用意した。先頭に「情報」という語があり、その後は「あ」が63文字と改行が1文字の構成で78回繰り返し、最後は「あ」が47文字と改行が1文字で構成されるファイルである。全文字数は1万1文字である。

●辞書aを利用したパターン検索

 ターゲット文書に対して、辞書aのキーワードにマッチする語を含む行を検索する。grepの場合は、「grep <辞書aの1つ> <ターゲット>」を連続して行うようにシェルスクリプト化した。

●辞書bを利用したパターン検索

 ターゲットに対して、辞書bのキーワードにマッチする語を含む行を検索する。辞書の場合と同じく、grepでは、「grep <辞書bの1つ> <ターゲット>」を連続して行うようにシェルスクリプト化した。

■テスト結果

 Linux上のtimeコマンドにてreal時間を測定したテスト結果の比較を、表Aに示す。ParaGREPでは、30から1万語にデータが333倍増加しても時間は微増しているだけである。grepにおいては、333倍にデータが増加すると、時間も約360倍増加する結果が得られた。これは、ParaGREPによるパターン検出の手法がgrepに比べて明らかに優れていることを示すものと考えられる。

表A ParaGREPとgrepの検索結果 (単位:秒)
辞書a(30語)辞書b(1万語)
ParaGREP 0.106 0.112
grep 0.085 30.575

注1 (財)京都産業21
京都企業の事業活動の発展と、京都産業の振興に貢献することを目指す団体。顧問として、京都府知事、京都市市長、京都商工会議所会頭が名を連ねる。
http://www.ki21.jp/

注2 Namazu
GPLベースの日本語全文検索システム。CGIとして動作させることで中規模のWeb全文検索システムを構築できる。また個人用途では、コマンドラインやEmacs上から利用するといった使い方も可能だ。4月14日に最新版のバージョン2.0.13がリリースされた。
http://www.namazu.org/

注3 DocCatの語源
DocCatの名前の由来は、Word文書の拡張子がdocであることと、テキストファイルの内容を標準出力に書き出すUNIXコマンドのcatを組み合わせたというもの。catコマンドは、たとえば「$ cat myfile」と入力すると、myfileというファイルの内容を標準出力に書き出せる。また、次のように実行すると、複数のファイルを連結できる。

$ cat doc1 doc2 > doc.all

注4 デ変研TFライブラリ、デ変研IFライブラリ、デ変研AKエンジン
デ変研TFライブラリは、Microsoft Word、Microsoft Excel、Microsoft PowerPoint、PDF、一太郎、OASYSのファイルを直接読み込み、ファイルに含まれているテキストを抽出するライブラリ。デ変研IFライブラリは、BMP、PNG、TIFFなど画像ファイルからテキスト情報を抽出するライブラリ。デ変研AKエンジンは、N-gram(エヌグラム)方式を採用した全文検索エンジン。N-gram方式とは、文書中のテキストを任意のN文字ごとに区切り、すべての文字列ごとに索引を作るというもの。

注5 grep
ファイル名や任意の文字列など、指定したパターンにマッチする行を表示するコマンド。正規表現を利用した検索と表示も行える。
http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

注6 Overture
1997年に設立されたOvertureによる、検索キーワード広告サービス。2003年10月にYahoo!に買収された。検索サービス利用者が検索を行うと、1クリックあたりの入札金額が高い情報から順に検索結果を表示する。日本国内でも、検索結果のデータベースをYahoo! JAPAN、NIKKEI NET、MSNなどに提供している。
http://www.content.overture.com/d/?mkt=jp

注7 Google Adwords
Googleが新しく始めた、CPC(Cost Per Click、コスト・パー・クリック)型の広告サービスで、検索ワード広告としては日本で最も普及している。自分のWebサイトに関連するキーワードを購入すると、Googleサイト利用者が検索を行った際に自サイトの広告が検索結果画面に表示される。
https://adwords.google.co.jp/select/

注8 こういった仕組みを導入してもらうことは難しい
検索サイトのGoogleが、保存容量1GBの無料電子メールサービスGmailを開始する計画を公表した。しかし、メール内容をスキャンして広告を挿入する技術、またメールを削除してもシステム上に残ってしまう可能性などがあることから、プライバシー侵害の恐れがあると問題視され、各国で調査が始まっている。
http://www.itmedia.co.jp/lifestyle/articles/0404/20/news016.html

注9
実は同期入社

注10 dp/NOTE
オムロンソフトウェア(株)からリリースされた、UNIX上で動作する日本語ワープロ。現在は、PC UNIX向けに「dp/NOTE for Linux/BSD Ver2.0」が発売されている。
http://www.omronsoft.co.jp/SP/pcunix/dpnote/

注11 オムロン(株)のの社憲
http://www.omron.co.jp/corporate/about_omron/philosophy.html

私のUNIX #18 〜畑中豊司さんのUNIX〜

●OS環境:Fedora Core

 最近Fedora Coreに変えました。それまでは1年ぐらいRed Hat Linux 8.0でした。それよりもっと前はFreeBSD 1.1.6のころぐらいで、かなり長かったと思います。Fedora Coreでは、ネットワークやら環境設定やらをGUIで設定できることもあって、書籍を片手に画面コピーの案内を読みながら操作しています。Fedora Core導入の前にPlamo Linuxなどもインストールしてみましたが、古いCUIのものは、だんだん面倒になってしまっていて、ついていけなくなってしまったみたいです。昔は苦ではなかったのですが。

●ウィンドウマネージャ

 通常、Windows 98からターミナルログインを行っています。ドキュメント作成の際は、WindowsでMicrosoft OfficeやInternet Explorerを使いますが、プログラム開発では、Linux上でCで開発するというスタイルを取っています。

●シェル:bash

 最近は、bashを使っていますが、スクリプトを組むときはcshでないと組めません。あまり面倒なことはしなくなっていますが、プロセスをフォークしすぎて、きれいに消さなければならなくなった場合のスクリプトを最近作りました。必要に迫られてという感じです。

●シェルの設定

 aliasでhをhistoryにすること、aliasでaを開発最新のDocCatを起動するように設定すること、umaskを002にして、会社内の開発グループで読み書き可能にすること、PATHをDocCat開発用のためのbinを指すように設定することです。

●エディタ

 ソフトウェア開発用にはviを使います。LinuxおよびUNIX上で、日本語ファイルを作成したり編集したりするときがあります。Readme.txtや、Relnotice.txtなどを書きますが、このときのエディタは「デ変研TEXT」を使います。
 私の自作テキストエディタで、これを使っています。1999年にベクターからシェアウェアとして販売を開始しましたが、DocCatが誕生してからは販売はやめています。そもそも以前勤務していたオムロンソフトウェアにいたときは、UNIX用ワードプロセッサのdp/NOTEを開発していまして、そのときに、UNIX上で日本語の入力に利用していました。このキーバインドに慣れてしまっていて、その習性に答えてくれるエディタがないと不便なのです。それで、デ変研創業段階において、エディタであるデ変研TEXTを自作してしまいました。
 テキストの文字コードについては、EUC/シフトJIS/JIS/UCS2/UTF8に対応していて、Uuicodeを問題なく可視化し、編集・保存できます。Fedora CoreのターミナルがUTF8しか受け付けないみたいで、デ変研TEXTを改造してターミナル出力をUTF8にすることで、快適に日本語入力ができるのではないかともくろんでいます。いずれこの自己満足課題に挑戦してみたいと考えております。普段はTera Termなので不便は感じていません。

●そのほかのこだわり

 私のような、昔取ったきねづかタイプのプログラマにとっては、Perl、Ruby、PHPなど、新しいものにはついていけなくなっています。いまなおCを使っていますし、これからもCでいくと思います。年を取ると、プログラムの修正・デバッグは画面を見て、変更して、動かしてみてといったことをしなくなりました。プログラムを紙に印刷して、喫茶店でコーヒーを飲みながらあれやこれや修正の印を入れたり、コーディングしたりします。ただその代わり、それを打ち込んで動作させると、自分でも驚くほど一発で動くのです。ははぁ、さすがですねと1人で喜んでいます。また、プログラム仕様書もきちんと書くようになってきました。
 これがないと、テストのポリシーというか方針というか、それが定まらないことにようやく気付いたのです。

[前回記事] [トップ] [次回記事]

Last modified: Mon May 21 13:27:30 JST 2007 by Tomoko Yoshida