スペルチェックの処理速度向上

オンライン文章校正支援サービス「PRUV」が速くなりました。

スペルチェック機能は負荷が高く、ボトルネックになっていました。そこでリングバッファでスペルチェックした単語をキャッシュする機構を組み込んでみました。これで、一度スペルチェックした単語はスペルチェックをスルーしてキャッシュのデータを利用できるようになりました。

長くて多くの英単語を含み、しかも同じ単語が頻出する文章ほど高い効果を発揮します。文章の内容によって効果が変わるので速度向上率を定量的に示すのは難しいのですが、例えば11秒から6秒に短縮した文章もあります。逆に、英単語をあまり含まない文章では処理時間はあまり変わりません。

形態素解析辞書チューニング サ変名詞編

オンライン文章校正支援サービス「PRUV」が使用している形態素解析辞書は、「サ変名詞」も固有名詞として登録されています。サ変名詞には文法的な機能があるので、分類の変更は重要な意味を持ちます。

サ変名詞とは、「する」「した」を接続して動詞化できる名詞です。例えば、「管理(する)」「検討(した)」「インストール(する)」などです(「野球する」「お茶する」のように、話し言葉では普通名詞のサ変名詞化も行われますが)。

サ変名詞を普通名詞や固有名詞と区別することのメリットは幾つかありますが、ここでは2つの例を紹介します。
続きを読む →

通貨レートチェック機能修正

オンライン文章校正支援サービス「PRUV」の機能を修正しました。

先日通貨レートチェック機能を実装したのですが、この機能に利用しているYahoo! Financeが最近機能していないようです。クエリを投げてもリザルトがnullなので、計算できないのです。

そのうち復旧すると思ったのですがその兆しが見えないので、Yahoo! Financeで通過レート取得に失敗した場合は他社のAPIを使ってレートを取得するようにしました。ただし、対応通貨はドル、ポンド、ユーロ、スイスフランのみとなります。

早くYahoo! FinanceのAPIが復活してくれるとよいのですが……。

形態素解析辞書のチューニング

PRUVは、これでも一応は毎日進化しています。例えば、形態素解析辞書のチューニングです。

形態素解析は、入力された文を単語に分割して品詞を決定する処理です。

今日は秋晴れだ

を、

今日(名詞・副詞可能)は(助詞・係助詞)秋晴れ(名詞・一般)だ(助動詞)

のようにします。この処理の基になるのが、形態素解析辞書。「今日」も「は」も「秋晴れ」も辞書に登録ているから正しく分割できるのです。PRUVでは、ネットで公開されている辞書を独自に拡張したものを利用しています。

ただ、ネットで公開されている辞書は登録数が多い半面、ほとんどの名詞が「固有名詞」に分類されているため、名詞の種類を文法解析に利用しようと思うとうまくいきません。

そこで、ん百万語の固有名詞を、普通名詞やサ変名詞、固有名詞(人名)や固有名詞(地名)などに振り分ける作業をしています。「株式会社○○」「△△高等学校」のような単語はプログラム的な処理が可能なのですが、大半は目視チェックするしかありません。

とにかく単語の数が膨大なので、いつ終わるのか見当も付きません。が、とにかく少しずつ、単なる「固有名詞」でしかなかった単語が地名、人名、組織名、国名その他であると区別できるようになっています。

Wikipediaのテキストデータを解析

PRUVの辞書の拡充の一環として、Wikipediaのテキストデータ解析を行っています。

Wikipediaのデータ(XML)をテキストデータに変換して、それを形態素解析しつつデータベースに放り込みます。全部入れると大変なので、取りあえず約30MBのテキストデータを取り込んで解析。見た目がいろいろ残念な自作ツールを使います。

このテキストデータのグループでは、格助詞「が」が4万199回出現していました。この格助詞「が」の後ろにどのような単語が続いているのか。「が」の直後の単語を助詞に絞り込んだのが下の画面。
続きを読む →

PRUV開発1周年

1年前の2016年2月4日、オンライン文章校正支援サービス「PRUV」の開発がスタートしました。最初のコードはHTMLフォームによる入力機能もなく、コード内に直接書き込んだ文字列を形態素解析するというものでした。

形態素解析とは、文字列(文)を単語に分割して単語の品詞を判定する処理です。例えば、「今日は晴れだ」という文を、「今日」(名詞)、「は」(助詞)、「晴れ」(名詞)、「だ」(助動詞)というデータにします。

それから少しずつ機能を加えて、4月7日にはほぼ現在のPRUVの原型となるシステムになっていたようです。HTMLフォームで入力を受け付け、文章を形態素解析し、辞書を基に正誤チェックして結果を出力する。この一応動作するバージョンが、テストサーバに残っていました。

PRUV 2016/4/7版
続きを読む →

校正処理速度が大幅に向上

オンライン文章校正支援サービス「PRUV」が速くなりました。

コードのチューニングやデータベースのインデックス方法を見直しなどを行った結果、処理速度が大幅に向上しました。

以下に簡単なベンチマークテスト結果を挙げます。

5KB(4467文字)のテキスト
以前:44.7秒
現在:4.7秒!

サンプルテキスト(「文章を入力してください」の右のリンクをクリック)
以前:4.9秒
現在:0.37秒!

文章の内容やサーバの負荷状態によっても時間は増減しますが、それでも以前よりは明らかに速くなったことを体感できると思います。

ドメイン変更:pruv.jpになりました

オンライン文章校正支援サービス「PRUV」のURLが変わりました。

諸般の事情により、新たに専用ドメイン「pruv.jp」を取得しました。これにより、URLがギュッと短くなりました。リダイレクトをかけているので、特にブックマークなどを変更しなくてもこれまで通り利用できると思います。

ただ、URLが変わってしまったためこれまでに頂戴した「いいね」などが全てゼロになってしまいました。おちこんだりもしたけれど、私はげんきです。

処理速度が大幅に高速化しました

オンライン文章校正支援サービス「PRUV」をアップデートしました。

PRUVの内部構造を全面改定して、処理時間を短縮しました。5KBのテキストだと、待ち時間が20~30秒くらい短縮しています。従来の仕様には辞書登録数が増えれば増えるほど処理時間も長くなるという問題がありましたが、今バージョンから辞書登録数の影響はほぼなくなりました。

とはいえまだまだ満足できるレベルとはいえません。もっと高速化したいところですが、プログラムによる高速化には限界があります。そろそろハードウェアレベルの強化を考えるべきかもしれません。

スペルチェックの仕様変更

オンライン文章校正支援サービス「PRUV」をアップデートしました。といっても、プログラムは毎週何らかの修正を加え、辞書も毎日更新しているのですが。

今回は、スペルチェック機能の内部構造を変更しました。行単位でチェックして、同じ単語が含まれていたらチェック処理を1回にまとめました(従来は、同じ単語も毎回チェック)。また、文章中にURLが含まれている場合、URLは無視することにしました。

これで、スペルチェックの処理時間を短縮。

それ以外に幾つかのバグを修正しました。