この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
あまり入力しなれていない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の新しいサービス辞書に登録していない場合等にお使いください。