中国人の通病って自分をデカそうにみえる偽り
間違いと言われない
絶対に変えちゃうか
A Blog from silence
Posted by rafa | Filed under NLP
機械翻訳の2つのアプローチ 平田 周 昨日、ブログで伊藤和夫氏のことを紹介し、最後に、同氏が主張する文章構造の分析を中心にする英文解釈法に関連して、機械翻訳もその人から教わればよかったのにと書いた。 機械翻訳についての坂本義行氏の講演記録(情報管理 1992年7月)を読んでいたら、「句構造表現」と「依存構造表現」の違いがわかりやすく説明されていた。 I went to the station yesterday.という文章をあげ、次のように両者を説明する。 句構造表現では、「私は/昨日/駅に」という3つの格に対し、「行った」という述語がついていると考える。このような構造の文法は、英語のように、語順を大事にする言語にはよく適合する。 一方、同じ文章を「行く」という動詞を中心に考えるのが依存構造表現である。動詞「行く」に対して、どこへ(駅、だれが(私)、いつなんだ(昨日)が結びついている。テンスは過去である。この依存構造の表現形式は日本語向きだとされる。 日本語は語順をそれほど大事にしない。「私は昨日駅に行った」と言おうと、「昨日私は駅に行った」と言おうと、「駅に昨日私は行った」と言おうと、日本語としてはおかしくない。語順を大事にしないから、依存構造表現という表現見識が有効なわけである。現在の機械翻訳システムは、ほとんどがこの依存構造表現の文法形式を利用しているのだと説明されていた。 なるほど、これで機械翻訳が伊藤先生に反発するわけである。では、依存構造表現で日本語をうまく英語にできればよいのだが、それもとうてい無理なのだから始末が悪い。 私は、機械翻訳に日本語を英語にさせようといろいろ教えているのだが、なかなかうまくいかないのはここに原因があったのである。私のやり方は、翻訳したい日本語を英語的な構造に書き直すものである。簡単な構造にしてあるから間違うわけはないのにと思うのだが、ヘンな英語にしてしまう。どうしてこれができないのだと、声を荒げるのだが、翻訳プログラムはそういうふうには育てられていなかったのだということがわかった。 いまさら機械翻訳のプログラムを句構造のタイプのものにするには膨大な費用がかかってしまう。既存のプログラムを少し手直しすればできるようになるのではないかと考えていたのだが、甘い考えだったことを悟った。 翻訳プログラムが依存構造で文章を理解するように作られていることを念頭に置いた上で、句構造の考え方をうまく組み合わせていくほかないのかと考える。動詞を中核にした句構造的な日本語を書くことはできないのか。 和文英訳とは「句構造」と「依存構造」の表現の戦いなのだと悟った。
・普段プログラムを書くことがある
・数式を扱う
・DとかF#みたいな(少し?)マイナーな言語を使うことがある
上のどれかに当てはまる人で、WikiやブログをWeb上の勉強メモとして使っている人はSphinxを検討すると幸せになれる(断言)。
10(+1)の理由
・easy_installでイージーなインストール。
・データベース?Wikiにくれてやりましょう。
・マイナーなプログラミング言語もハイライト。
・ソースコードをわざわざコピペする必要はありません。
・gitで管理、何か問題ですか?
・数式もTeXの記法で思いのまま。
・PDFで出力したいですか?Sphinxならできます。
・それともePubですか?もちろんできます。
・Pythonは書けない?全く問題ありません。
・Pythonが書ける?ぜひ拡張してください。
・Sphinx、無料です。
煽りタイトルとAppleみたいな売り文句でSphinxユーザが減るんじゃないかと戦々恐々としながらこのブログを書いています。
でも本当に便利ですよ!
理由一つ一つについて説明するのは面倒くさいので以下、利点と欠点、使用感だけ。
Sphinxとは?
SphinxはPython製のドキュメント作成ツールです。
詳しいことはSphinx-Users.jpへ。
Sphinxの良いところ
かなりコードハイライトが強力、数式も書けるよ、ということでかなり気に入っています。
少なくともこれだけの種類のコードハイライトができる文書作成ツールは他に無いのでは(正確にはSphinxではなくPygmentsというシンタックスハイライターを使う)。
ハイライトできる言語や設定ファイル一欄(Pygments公式サイト)
ソースコードのハイライトはソースコード自体をコピペする必要がなく、更に便利なことに例えば以下のようなソースコードhello.pyがあったとすると、
| 1 2 3 4 5 6 7 8 9 10 |
class HelloSphinx(object): def __init__(self): self.a = "Hello, Sphinx" def myprint(self): print(self.a) print("Hello, World.") a = HelloSphinx() a.myprint() |
以下のように書くだけでHelloSphinxクラスだけをハイライトして表示できます。
.. literalinclude:: hello.py
:language: python
:pyobject: HelloSphinx
個人的にはデータベースをわざわざ用意する必要が無いこともかなりのプラス。そもそも個人で使う場合の記述量なんてデータベースを使うまでもないよなぁと。
データベースが不要なので
1. 手元のPCのSphinxで数式あり、ソースコードハイライトありなファイルを作る。
2. 無料~月100円くらいの安いレンタルサーバにまるごと置く(Webサーバとして動いていればなんでも良い)。
これだけであなたのWeb勉強帳ができあがりです。
数式はデファクトスタンダードなTeX記法ですので、数学系/工学系の不安な夜も安心。
加えてSphinxのソースコード自体は全てテキストです。何が言いたいかというとgitなどで管理できるよやったねたえちゃんってことです。
Sphinxの微妙なところ
他人がコメントやトラックバック等をつけることができないので、完全にブログのように使うのは難しいかもしれない。
理由の一つにPDF作成を上げたが、LaTeXを使う日本語PDF作成はやはりインストール段階でつまづくことが多い(私もうまくいってない)。
rst2pdfというPythonモジュールでLaTeX使うよりは簡単に日本語PDFが作れるが見た目が微妙。
あとデフォルトで用意されているテーマに使いにくいものが多い(scrollsはどういう用途向けなの?)
最後にSphinxで作成したページの例を以下に。
Sphinxの紹介だぜ — Sphinxハンズオン 0.1 documentation
以上!