[English]

英文法チェッカ Queequeg

$Id: index.html,v 1.9 2003/08/07 00:04:40 euske Exp $

SourceForge Logo Project Page | ダウンロード | つかいかた


これなに?

Queequeg は英語ネイティブでない人のための簡単な英文法チェッカです (英文スペルチェッカではありません)。 おもに動詞の語形変化における数の一致 (3単元の s) を検査します。 英語で学術論文やビジネス文書などのフォーマルな文章を書く場合、 これらの初歩的な文法ミスは可能なかぎりなくしたいものですが、英語に慣れていない 日本人にとってこれらをチェックするのは骨の折れる仕事です。Queequeg はこのチェックを できるかぎり自動的に行うことによって、文書作成にかける総合的な時間を短縮することを目的としています。 Queequeg は UN*X 上で動作します。 ちなみに「Queequeg」という名前はメルヴィルの代表作「白鯨 (Moby-Dick)」に出てくる登場人物に由来しています。


使用例

たとえば以下のような英文を書いたとします:
Paraphrases plays an important role in the variety and complexity
of natural language documents. However, they add to the difficulty
of natural language processing. Here we describe a procedure for
obtaining paraphrases from news articles. Articles derived from
different newspapers can contain paraphrases if it indeed report
the same event on the same day. We exploit these two feature by
using Named Entity recognition. Our approach is based on the
assumption that named entities are preserved across
paraphrases. We applied our method to articles of two domains and
obtained notable example.
Queequeg (コマンド名は qq) に対してこの文書のファイル名を 与えると、Queequeg は以下のような出力を返します:

$ qq -Wall sample.txt
-- sample.txt
sample.txt:0: (S:Paraphrases) (V:plays) an important ... (paraphrases と plays の数の不一致)
sample.txt:0: ... variety and (complexity) of natural ...
sample.txt:2: ... difficulty of (natural language) processing .
sample.txt:4: ... paraphrases if (S:it) indeed (V:report) the same ... (it と report の数の不一致)
sample.txt:5: We exploit (Det:these two) (N:feature) by using ... (feature は複数形にすべき)
sample.txt:5: ... by using (Named Entity recognition) .
sample.txt:8: ... and obtained (notable example) . (冠詞が必要、あるいは複数形にすべき)

それぞれの文法間違いは色分けされて出力されます。行頭の数字はファイル中の行番号です。

いまのところ、Queequeg はプレインテキスト形式、LaTeX 形式、HTML の各文書構造を認識します。


ダウンロードとインストール

必要なもの

Python 2.3 以上
プログラム本体は Python で書かれています。バージョン 2.3 以上のインタプリタが必要です。
Wordnet 1.7.1
WordNet は George Miller 氏によって開発されたオンラインのシソーラスです。 フリーで配布可能であり、 Debian Package にも収録されています。
(Queequeg では WordNet パッケージに含まれている辞書ファイルのみを使用しますので、 実際にバイナリをインストールする必要はありません。)
python-cdb 0.32 (オプション)
辞書ファイルのアクセスに使用します。なくても動きますが、あったほうが高速に動作します。

本体のダウンロード

以下のページからダウンロードしてください。(約60kbytes)

インストール方法

  1. 適当な場所 (/usr/local/queequeg-0.9 など) に Queequeg のアーカイブを展開する。
  2. Wordnet 1.7.1 を どこかの場所に展開しておく。
  3. 辞書を作成する。Queequeg のディレクトリで以下のようにタイプする:
    $ make dict WORDNET=/src/wordnet/dict
    ここで、変数 WORDNET には WordNet を展開したディレクトリ中にある dict/ ディレクトリのパスを指定する (Debian パッケージから WordNet をインストールした場合、 これは /usr/share/wordnet 以下にあります)。
    python-cdb モジュールがインストールされていれば、 dict.cdb というファイルが、されていなければ dict.txt というファイルが生成される。
  4. Queequeg のディレクトリにあるファイル qq がメインプログラムである。 これにパスを通しておく。 /usr/local/bin などから qq にシンボリックリンクを張ってもよい (qq は自分と同じディレクトリに置いてある辞書をさがす)。

つかいかた

基本的に端末上で Queequeg (コマンド名 qq) にチェックしたいファイル名を渡すだけです。 Queequeg はファイル名の拡張子 (.tex, .html, .htm) からそのファイルの形式を認識します。

Queequeg は、現在のところ 3種類の文法間違いを検査します:

また qq コマンドは以下のようなコマンドライン・オプションを受けつけます:

オプション機能
-v 冗長モード (verbose) にする。エラーの種類が表示される。
-q 寡黙モード (quiet) にする。ファイル名が表示されなくなる。
-p すべてのファイルを強制的にプレインテキスト形式として解釈する。 なお、プレインテキスト形式では段落の区切りは空行で表されます。
-l すべてのファイルを強制的に HTML 形式として解釈する。
-t すべてのファイルを強制的に LaTeX 形式として解釈する。
-s pathname システム辞書 (dict.txt あるいは dict.cdb) のパスを指定する。 デフォルトでは、qq コマンドと同一ディレクトリ上にある dict.txt あるいは dict.cdb を検索する。

以下のオプションはおもにデバッグ用です:

オプション機能
-D debuglevel デバッグレベルを整数で指定する。
-S stage 入力文に対してどのステージまで処理を行なうかを指定する。 デフォルトではこれは grammar (文法チェックを行う) までだが、 token (入力ファイルをトークンに切り分ける)、 sentence (文単位を認識する)、 pos0 (品詞解析の初期)、 pos1 (品詞解析の第二段階) を指定できる。
-W type1,type2,... どのタイプの文法チェックを行うかをカンマで区切って複数指定する。 タイプには sv1 (前置詞句をまたいだ主語-動詞の検査)、 sv2 (前置詞句をまたがない主語-動詞の検査)、 sv3 (there 構文における主語-動詞の検査)、 det (determiner の有無を検査)、 plural (名詞の単複を検査) がある。 デフォルトではこれは sv1,sv2,sv3,plural になっている。

理不尽な出力がされるのはなぜ?

現在のバージョンはまだユーザにとって理不尽と思われる 多くの false positive (本来エラーでないのにエラーと判定される) を出力します。

たとえば "my paper clip. (私のペーパークリップ)" という文はただの名詞句に思えますが、 実際にはこれは "my paper clip[s]. (私の紙は、つまむ)" という主語+動詞をもった文に s を つけ忘れたものであるとも解釈できるため、エラーが警告されます。 また "three additional links (3つの追加リンク)" という名詞句をチェックすると "three" と "links" の数が一致しない、という警告が出力されますが、 これはじつは "links" (ゴルフ場のリンク) という単数の名詞が辞書に入っているためです。 (しかしこの名詞はじつは単複同型であり、これは辞書の欠陥です)

また、とくに determiner のチェックを on にすると大量の false positive を出力します。 これはある名詞が mass noun か否かの判定ができていないためです。 ふつう meat, water などの物質名や、information, recognition などといった抽象名詞には 冠詞は必要ありませんが、この情報は WordNet 辞書には含まれていません。 (COMLEX などはそういう情報をもった辞書なのですが、フリーで配布不可能なため使用を見合わせました)


バグ・TODO


技術的な情報

現在 Queequeg の文法チェックは簡単な有限オートマトン (= 正規表現) にもとづいた パターン認識と、各パターンに付与した素性の単一化 (unification) によって行っています。 スピードおよびカヴァレッジをかせぐためにきちんと構文解析していません。 メインのルーチンは constraint.py および unification.py です。

品詞解析 (pos tagging) は 2段階に分けて行っています。 まず辞書引きをおこなって複数の候補を得たあと (sentence.py, dictionary.py)、 これまた正規表現ベースのパターンマッチングによっていくつかの 品詞を fix するという方法をとっています (postagfix.py)。

使用している品詞体系は Penn Treebank 体系を拡張したものです。 Queequeg では数の一致を POS タグで判断しているため、名詞の複数形をあらわす NNS を真似て、 代名詞 (PRP) や determiner (DT) に対しも同様に複数であることを表す拡張形 PRPS、DTS といった 品詞名を使っています。これは PTB 体系の上位互換であるため、このタグから PTB の体系に マッピングするのは非常に簡単です。ただし付属の品詞解析器はまだひどく性能が悪いので、 これをほかの目的に使用するのはむずかしいでしょう。

Queequeg における品詞解析の問題は、与えられた英文が正しいとは仮定できないことにあります。 そのため動詞に3単元の s がついていないからといって、かならずしもそれが名詞であるとはかぎりません。 これが現在の Queequeg の品詞解析の精度低下につながっています。


ライセンス

Queequeg は無保証のソフトウエアです。 このソフトウエアは GNU General Public License (GNU 一般公衆利用承諾契約書) に従って配布されます。


作者からのおねがい

まだテストが足りません。フィードバックをお待ちしております。 インストール上の問題もぜひお知らせください。

新山 祐介 まで。


Yusuke Shinyama