通貨レート変換機能のバグを修正

オンライン文章校正支援サービス「PRUV」の通貨レート変換機能のバグを修正しました。

1兆以上の桁を正しく処理できておらず、「1兆ドル」と入力したときの日本円を「1104800億円」のように表示していました。

今回の修正で、正しく「110兆4800億円」と表示するようになりました。

通貨レート変換時は、金額を数値に変換して計算し、改めて漢字交じりの文字列に戻しています。1兆ドル(1000000000000)に通貨レートを掛けて110480000000000にし、この桁数を調べて億や兆といった漢字に置き換えるわけです。このときPHPが数値を自動的に科学記法(指数表現)「1.1048E+14」にしてしまうため、単純に桁数をカウントすると15桁(文字)ではなく10文字になってしまい、「兆」を入れる処理がパスされてしまいました。

科学記法を数値に戻す処理を加えたことにより、無事解決しました。Appleが1兆ドル企業にならなければ(結構前の話ですが……)、このバグに気付かなかったことでしょう。

形態素解析の結果表示機能

オンライン文章校正支援サービス「PRUV」にオマケ機能として形態素解析の結果表示機能を追加しました。

[チェック開始]ボタン直上の「形態素解析のみ」をオンにすると、入力された文章の形態素解析結果のみを表示します。

PRUVが普段行っている解析処理の途中段階の状態を表示するだけなので、入力できる文章の長さは通常モードと同じです。ただ、長文を入力しても見やすくはないので、形態素解析モードの場合は1文程度で使うのが現実的だと思います。




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

いろいろと限界が見えてきたので、サーバを移転することにしました。新サーバは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が復活してくれるとよいのですが……。