ついでなので、Glosbe でリクエスト制限にかかってしまった場合の対処方法も紹介しておきます。
変更点
usage: abbreviation.py [-h] [-v] [-g FILE] [-w FILE] [-e EXCLUDE]
[-a ABBREVIATION] [--glosbe] [--dejizo] [--cache]
[--load-cache NAME] [--cache-dir DIR]
[--disable-keywords] [-x {c++,c#,objc,diff}]
[--list-all] [--progress] [--safe-mode]
[--encoding ENCODING] [--extension EXTENSION]
[--ignore-noexists] [--relpath] [--word WORD] [-]
[FILE/DIR [FILE/DIR ...]]
positional arguments:
FILE/DIR source code file/dir
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-g FILE, --gene FILE exlude word
-w FILE, --whitelist FILE
whitelist file
-e EXCLUDE, --exclude EXCLUDE
exlude word
-a ABBREVIATION, --abbreviation ABBREVIATION
abbreviation word
--glosbe use online translation service (glosbe)
--dejizo use online service (dejizo)
--cache online translation cache enable
--load-cache NAME load translation cache
--cache-dir DIR translation cache directory
--disable-keywords disable general and language keywords
-x {c++,c#,objc,diff}, --language {c++,c#,objc,diff}
select language
--list-all list up all location
--progress print percent progress
--safe-mode api request limit safe mode(glosbe)
--encoding ENCODING set file encoding
--extension EXTENSION
file extension matcher
--ignore-noexists ignore option file not exists
--relpath print relative path
--word WORD dircet check words
- source code from stdin
diff ファイルに対応
便利になった機能の1つがこれだと思います。diff ファイルから差分があったところだけをチェックするので、コードレビューのときに重宝します。
対応しているフォーマットは Unified format になります。
略語判定ロジックの大幅更新
「~の略語」だけでなく、「~の過去形」「~の複数形」なども検出して、辞書判定するように改善しました。主に、boost のヘッダーファイルをチェッカーに入力して、その結果を見ながら、期待に沿わないものに対応していった感じです。ただ、ソースコード中で出てきた場合の一般的な意味と、辞書に載っている意味で剥離している場合もあります。
例えば、「apis」とあったら、「APIs」のことだとプログラマーは思うと思うのですが、辞書的には「蜂」です。
こういったものを機械的に振り分けるのは(今の自分の力量では)難しかったので、100% プログラマーが期待する結果になるわけではありませんので、ご注意!
ディープラーニングさせたらいいのかな?
ともあれ、boost を解析して自分なりに納得のいくところまで対応できたかなーと思ってます。
Glosbe でリクエスト制限にかかってしまった場合の対処方法
('Http error:', u'429 Client Error: for url: https://glosbe.com/gapi/translate?dest=ja&phrase=opendir&from=en&pretty=true&format=json')
('request count: ', 802)
Please access the glosbe, click the search button and check reCAPTCHA.
Glosbe でリクエスト制限にかかると上記ログが出力されます。これが出た場合、以下の方法で回復が可能です。
まずは、https://ja.glosbe.com/ にアクセスして、普通に辞書検索します。
以下のような画面になるので、チェックをクリアすると制限が解除されます。
(何回も制限かけられましたが、今のところこの方法ですぐに解除できています。)
最後に
このツールを実際に使ってみて、当初の目的の略語検出よりも typo 検出の方が役に立ちました。実際にヒドイ typo が見つかりました…
https://github.com/srz-zumix/iutest/commit/c063225f5abfeb157f671e3fc55b779f32e12193
ただ、typo チェックであれば、「Pull Requestに潜むタイポを自動的に検出し、修正を代行するBot - Qiita」の方がよさそうだなーと思ったのと、PyEnchant ってのがあるほを初めて知ったので機会があれば使ってみようと思いました。
最後ですが、今回のアップデートで自己満足できるところまで作れたので、これで開発を一旦終了しようと思います。
(要望いただければ対応します)
ではでは。