AWS関係の固有名詞が入力しやすくなるように辞書ファイルを作成するスクリプトを作成してみた
AWSの固有名詞を補完する用途の辞書を、AWSドキュメント内の記述を元に生成してみました。
あまり入力しなれていないAWSの固有名詞を略せずに入力しようとすると、度々のTypoが発生あり、色々と悩みのタネとなっていました。
AWSドキュメントにはリファレンスとしてAWS用語集が存在しています。これを元に辞書を作成して使う事で、タイピングミスの防止につながるのではないかと思い至りました。
作り方
以下のスクリプトを実行します。出力結果をtxtにリダイレクトすることで作成します。
スクリプトでは以下の手順を順番に行っています。
- 用語集をスクレイピング
- 固有名詞と説明を拾い出す
- 固有名詞の漢字をひらがなに、カタカナをひらがなにして、よみデータにする
- 辞書データとして構成する
実行方法
% python converter.py > dictinary.txt
converter.py
# -*- coding: utf-8 -* import requests import re import jaconv from pykakasi import kakasi from lxml import etree, html URL = "https://docs.aws.amazon.com/ja_jp/general/latest/gr/glos-chap.html" def _get_url(): return URL def _get_html(): return html.fromstring(requests.get(_get_url()).content) def _get_words(): m1 = re.compile("参照") m2 = re.compile("\.") awsdict = dict() keys = list() descs = list() dic_count = 0 for dl in _get_html().xpath("//div[@class='glossdiv']/dl"): for keyword in dl.xpath("./dt/text()"): keys.append(keyword.strip().replace(" ","")) for descriptions in dl.xpath("./dd"): _descs = list() for p in descriptions.xpath("./p"): for text in p.xpath("text()"): if m1.match(text) is None and m2.match(text) is None: text = text.replace('\n', "") text = re.sub(r' +', "", text) _descs.append(text.strip()) descs.append(_descs) awsdict = dict(zip(keys, descs)) fix_awsdict = dict() k = kakasi() k.setMode("J", "H") conv = k.getConverter() count = 0 for row in awsdict.keys(): if len(awsdict[row]) != 0: fix_awsdict["{}".format(count)] = [jaconv.kata2hira(conv.do(row)), row, "固有名詞", "".join(awsdict[row])] count=count+1 for line in fix_awsdict.values(): print("{}\t{}\t{}\t{}".format(line[0], line[1], line[2], line[3])) def exec(): _get_words() if __name__ == '__main__': exec()
課題
固有名詞の入力に手間掛けない点を重要視したため、説明部分のテキストが中々読み難い状態になっています。
まとめ
入力慣れている方には効果が薄いかもしれませんが、ひらがな入力時のタイピング数が少なくなる効果もあります。
実行する度にドキュメントを元にして作成するので、AWSの新しいサービス辞書に登録していない場合等にお使いください。