サーバ移転プロジェクト開始

いろいろと限界が見えてきたので、サーバを移転することにしました。新サーバはCPUのコア数とメモリ容量がアップ。ストレージはSSDになるため、全体的に速度が向上するはずです。

というわけで、Windows 10のHyper-V上に開発環境を構築し、検証と開発を行っています。Linuxのディストリビューション変更、Web、SQLサーバ、NoSQLサーバ、PHPのメジャーバージョンアップを一気にやるため、ノウハウの構築も重要になります。

進捗状況は以下の通りです。

続きを読む →

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

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

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

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

表記ゆれチェックのブラックリスト機能

PRUV」の表記ゆれチェック機能に、ブラックリスト機能を追加しました。これまでの表記ゆれチェック機能は片仮名語だけが対象でしたが、このブラックリスト機能により平仮名や漢字にも対応します。

現時点では、ブラックリストに「既に・すでに」(副詞)や「今・いま」(名詞)などを登録してあります。この機能が有用な物になるかどうかは、今後の登録語しだい。

とはいえ、これ以上何を登録すればいいのか……。

表記ゆれチェックのホワイトリスト機能

PRUV」の表記ゆれチェック機能に、ホワイトリスト機能を追加しました。どういうものかというと、「表記ゆれではない」パターンを登録することで、それを表記ゆれの結果から除外します。

これまでは、文字列的に似ている名詞を全て検知していたため、「メリットとデメリット」「サポートとレポート」も表記ゆれになってしまいました。ホワイトリストに「サポート」と「レポート」を「問題ないパターン」として登録すると、「サポートとレポート」は表記ゆれとして検知しなくなります。

もし異なる単語が表記ゆれとして指摘されたという場合は、「ご意見フォーム」にてお知らせください。指摘された2つの単語を入力していただくだけで構いません。

なお、迷ったのですが「オーストラリア」と「オーストリア」はホワイトリストに登録していません。「ラ」を入力し忘れるミスが発生しないとも限らないので……。

先日も、文章中の一部分だけ「キャッシュ」を“キャシュ”、「フラッシュ」を“フラシュ”にしていたのを表記ゆれチェック機能で発見しました。「1文字の脱落」は結構侮れません。

自動詞の間違った使い方をチェック

オンライン文章校正支援サービス「PRUV」に、自動詞の使い方をチェックする機能を追加しました。

動詞は、自動詞と他動詞に分けることができます。両者を正しく使い分けないと、変な文になります。

システムを連携する

一見、正しいようでやはり変な文です。このままだと何となく成立してしまいますが、主語を付けたり単語を変えたりすると、どんどん気持ち悪くなります。

  • 主語を追加:太郎はシステムを連携する
  • 単語を変更:太郎は次郎を連携する
  • 要素を追加:太郎は三郎と次郎を連携する

単語を足したり変えたりしたから変になったわけではありません。元の「システムを連携する」がそもそもおかしかったのです。
続きを読む →

行末の単語がズレる問題を解消

オンライン文章校正支援サービス「PRUV」の不具合(?)を1つ解決しました。

文章を解析すると、右側に解析した文章を出力します。この文章の右端(行末)にマウスを近づける(オンマウスとか、ホバーといいます)と、改行位置がズレて最後の文字や単語が次の行にピョコッと移動してしまうのです。

これだけなら無様なだけですが、ここにマーキング(何らかの指摘)が発生すると厄介です。指摘を確認するためマーキングされた単語をクリックしようとすると、その単語が次行に移動してしまう。移動先にマウスを動かすと、その単語は元の位置にピョコッと戻ってしまう。これではクリックできない!

Chromeはオンマウス時に要素が1ピクセルズレるそうです。そこでaタグに

display: inline-block;

を指定することで解消しました。

かなり初期から悩んでいたのですが、調べてみると意外に簡単な原因&解決方法でした。もっと早くやればよかった。

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

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

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

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

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

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

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

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

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

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

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

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

今日は秋晴れだ

を、

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

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

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

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

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

通貨レートチェック機能

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

海外事情の記事作成に際して、現地通貨が出てくることがあります。そのままでもいいが、せっかくだから日本円換算した金額を併記したい。しかしいちいち為替レートを調べるのは面倒。そんなときに使える機能です。

1日4回(6時間ごと)に主要通貨と日本円のレートを自動取得。原稿中に「100ドル」などの記述があると、データ取得時のレートと日本円に換算した金額を以下のように表示します(「199.50ドル」の場合)。

参考までに、2017/xx/xx 18:00:00時点の1ドルは112.87円。199.50ドルは「2万2517円」(22517円)です。

あくまでも参考情報ですから、無視していただいても構いません。また、必要に応じて「2万2500円」などのように端数を丸めてもいいでしょう。

対応通貨は、「ドル」「ポンド」「ユーロ」「豪ドル/オーストラリアドル」「スイスフラン」「元」「ルーブル」の7種類。「199.50ドル」のように、「金額+通貨単位」の記述に反応します。通貨単位部分が太字(ボールド)になるので、そこをクリックしてください。
続きを読む →