Project Page | ダウンロード | つかいかた
Queequeg は英語ネイティブでない人のための簡単な英文法チェッカです (英文スペルチェッカではありません)。 おもに動詞の語形変化における数の一致 (3単元の s) を検査します。 英語で学術論文やビジネス文書などのフォーマルな文章を書く場合、 これらの初歩的な文法ミスは可能なかぎりなくしたいものですが、英語に慣れていない 日本人にとってこれらをチェックするのは骨の折れる仕事です。Queequeg はこのチェックを できるかぎり自動的に行うことによって、文書作成にかける総合的な時間を短縮することを目的としています。 Queequeg は UN*X 上で動作します。 ちなみに「Queequeg」という名前はメルヴィルの代表作「白鯨 (Moby-Dick)」に出てくる登場人物に由来しています。
Queequeg (コマンド名は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.
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 の各文書構造を認識します。
以下のページからダウンロードしてください。(約60kbytes)
/usr/local/queequeg-0.9
など) に
Queequeg のアーカイブを展開する。
$ make dict WORDNET=/src/wordnet/dict
ここで、変数 WORDNET
には
WordNet を展開したディレクトリ中にある dict/
ディレクトリのパスを指定する
(Debian パッケージから WordNet をインストールした場合、
これは /usr/share/wordnet 以下にあります)。dict.cdb
というファイルが、されていなければ
dict.txt
というファイルが生成される。
qq
がメインプログラムである。
これにパスを通しておく。
/usr/local/bin
などから qq
にシンボリックリンクを張ってもよい
(qq
は自分と同じディレクトリに置いてある辞書をさがす)。
基本的に端末上で Queequeg (コマンド名 qq
) にチェックしたいファイル名を渡すだけです。
Queequeg はファイル名の拡張子 (.tex, .html, .htm) からそのファイルの形式を認識します。
Queequeg は、現在のところ 3種類の文法間違いを検査します:
-Wall
オプションを指定してください)
また 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 などはそういう情報をもった辞書なのですが、フリーで配布不可能なため使用を見合わせました)
setup.py
のサポート。
現在 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 一般公衆利用承諾契約書) に従って配布されます。
まだテストが足りません。フィードバックをお待ちしております。 インストール上の問題もぜひお知らせください。
新山 祐介 まで。