NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

AWS Documentationに特化した英単語帳を作ってみた

本記事は  執筆デビューWeek  3日目の記事です。
✨  2日目  ▶▶ 本記事 ▶▶  4日目  🔰

はじめまして。新卒1年目の堤と申します。 8 月からクラウド事業推進部に配属となり現在は AWS を中心としたシステムの運用や構築を行っています。

まだまだAWSは触りたてでドキュメントを参照する機会が多いのですが日本語訳されていないサイトも多く、訳されていても機械翻訳のため意味が分かりづらいことが多々あります。今回はドキュメントを英語で効率よく最短で読めるようになるため、AWS Documentationからテキストデータを収集し、AWS Documentationに特化した英単語帳を作ってみました。

データ収集

URL の取得

AWS Documentation をスクレイピングしテキストデータを収集していきます。 収集先の情報として AWS のサイトマップを利用し、スクレイピング先の URL の一覧を取得します。

sitemap_index.xml - AWS Documentation https://docs.aws.amazon.com/sitemap_index.xml

取得できた総 URL 数は約 996,000 でした。 この中でhttpから始まるURLのドキュメントはHTML 構造が異なるため除外しました。 また多言語対応のサイトは英語以外の URL を除外します。これらを取り除くことで分析対象の URL 数は 約 139,000 となりました。

ちなみにこのなかで最も URL が長いサイトは『AWS のサービスを使用したゲノミクスデータの転送、分析、および機械学習の関するホワイトペーパーの AWS DataSync と AWS Storage Gateway を用いたゲノムデータのクラウドへの転送とデータアクセスパターンの確立』についての記事でした。

https://docs.aws.amazon.com/whitepapers/latest/genomics-data-transfer-analytics-and-machine-learning/transferring-genomics-data-to-the-cloud-and-establishing-data-access-patterns-using-aws-datasync-and-aws-storage-gateway-for-files.html

業務でお世話になることはなさそうです。。

スクレイピング

取得した URL 先のテキストを取得していきます。 スクレイピングには Python のrequestsとHTML解析ライブラリ Beautiful Soupを利用しました。 またここで改行文字や記号の削除、code タグの削除、小文字変換等の前処理を行います。

ちなみにスクレイピングを行う際はrobots.txtの記述を確認しておくようにしましょう。 AWS Documentationのrobots.txtはこちらになります。

今回はスクレイピングしてはいけないページを指定するDisallowとスクレイピング間隔を指定するCrawl-Delayが設定されているので、こちらに従いスクレイピングを行いました。

これらの処理で以下のようなテキストが取得されます。

what is amazon ec2?amazon elastic compute cloud (amazon ec2) provides scalable computing capacity in the amazon web services (aws) cloud using amazon ec2 eliminates your need to invest in hardware up front so you can develop and deploy applications faster you can use amazon ec2 to launch as many or as few virtual servers as you need configure security and networking and manage storage amazon ec2 enables you to scale up or down to handle changes in requirements or spikes in popularity reducing your need to forecast traffic for more information about cloud computing see what is cloud computing?

(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html の一部)

また CDK や CLI、SDK に関するドキュメントは HTML 構造が異なり、内容も重複すると考えられるためここで除外しました。これらを除き、トータルで約 95,000 ページのテキストが取得できました。

ちなみに1サイトの平均単語数は 442 単語で、最も単語数が多かったページはCanadian Center for Cyber​​ Security (CCCS)という機関が出している Medium Cloud Control ProfileとAWS Config ルールとのマッピングに関するドキュメントで、総ワード数は約 11 万語でした。小説くらい長いですね。

docs.aws.amazon.com

前処理

得られたテキストデータを集計して最も頻度の多い単語を求めていきます。 単純に単語の頻度を取ると、Top10 は以下のようになります。

rank word
1 the
2 to
3 a
4 and
5 of
6 for
7 aws
8 in
9 you
10 that

このように何も前処理を行わないと基礎的な英単語の順位が高くなってしまいます。より意味のある英単語を抽出するため、以下の3つの前処理を行いました。

1. 基礎的な英単語の除外

ランキングのなかに基礎的な英単語が入らないように除外していきます。どのようなルールで除外しようか考えていたところ、このようなサイトを見つけました。

www.wordfrequency.info

このサイトでは COCA(Corpus of Contemporary American English)という10億語のアメリカ英語のコーパスの英単語頻度データが提供されています。上位 5000 語は自由に使用できるため、こちらを使用し基本的な英単語を除外していきます。最初は上位 3000 語に入っている英単語を除外していましたが、それでも結構簡単な英単語が残ってしまうと感じたため、この 5000 語に含まれている英単語すべてを除外しました。

2. サービス名に使用されている単語の除外

AWS サービスに含まれている英単語や S3, EC2 といったサービス名が上位に多く入ってしまうため、これらも除外します。AWS サービスに含まれている英単語の取得には以下を使用させていただきました。

akamist.com

3. 活用形や複数形の除外

同じ動詞でも活用形が違うものや名詞の複数形などは違う単語としてランキングされてしまうため、これらの除外も行います。単語の品詞の特定には Python の自然言語処理ライブラリである NLTK を用います。これから品詞を特定し、動詞の原型以外のものや名詞の複数形を除外しました。

import nltk
# 分かち書きの機能をダウンロード
nltk.download('punkt')
# 品詞取得の機能をダウンロード
nltk.download('averaged_perceptron_tagger')

sentence = "I want to read English fluently."
# 分かち書き
morph = nltk.word_tokenize(sentence)
# 品詞取得
pos = nltk.pos_tag(morph)
print(pos)

# [('I', 'PRP'), ('want', 'VBP'), ('to', 'TO'), ('read', 'VB'), ('English', 'NNP'), ('fluently', 'RB'), ('.', '.')]

ランキング

Top 10

こうして得られた単語頻度から Top10 を紹介します。なお、上記のような前処理の他にも java や linux といった IT 関連の用語や、password、download といったこのままで日本語として伝わる基本的な英単語は主観的な判断で除外しています。





1位 configuration  設定

1位は configuration でした。確かによく見る気がします。
出現回数 55693

2位 configure 設定する

2 位も1位のconfigurationを動詞化した configure でした。なおこのような派生語に関してはきりがないのでそのままにしてあります。
出現回数 31413

3位 syntax 構文、文法

3位はsyntaxでした。SyntaxErrorとかでよく見かけますね
出現回数 29538

4位 query クエリ
出現回数 29131

5位 encryption 暗号化
出現回数 22652

6位 node ノード
出現回数 25503

7位 deployment デプロイメント
出現回数 19580

8位 token トークン
出現回数 15904

9位 identifier 識別子
出現回数 14683

10位 authentication 認証
出現回数 14652

Top 300

以下 300 位までの英単語を TSV 形式で掲載します。Anki などにいれて使ってください。 (日本語訳はスプレッドシートのGOOGLETRANSLATE関数を使って出したので少しおかしいところあるかもしれません。。)

configuration    構成
configure   構成、設定
syntax  構文
query   クエリ
encryption  暗号化
node    ノード
deployment  展開
token   トークン
identifier  識別子
authentication 認証
pane    ペイン
navigation  ナビゲーション
metric  メトリック
monitoring  モニタリング
replication 複製
schema  スキーマ
optional    オプション
interruption    中断
cache   キャッシュ
workflow    ワークフロー
authorization   許可
connector   コネクタ
invalid 無効
manually    手動で
disable 無効にします
automation  オートメーション
pacific パシフィック
validation  検証
duration    間隔
throughput  スループット
encrypt 暗号化
applicable  該当する
mapping マッピング
quota   クォータ
migrate 移動します
optionally  オプション
setup   設定
notebook    ノート
partition   パーティション
replica レプリカ
subscription    サブスクリプション
retention   保持
overview    概要
operational 運用
inbound インバウンド
detection   検出
static  静的
connectivity    接続性
latency 遅延
outbound    アウトバウンド
functionality   機能
unauthorized    不正
deletion    消す
subscribe   申し込む
wizard  ウィザード
dialog  ダイアログ
classification  分類
invoke  呼び出します
preview プレビュー
override    オーバーライド
baseline    ベースライン
compatible  互換性
customize   カスタマイズ
navigate    ナビゲートします
specification   仕様
expiration  有効期限
payload ペイロード
parallel    平行
authenticate    認証する
relational  関連した
validate    検証
utilization 利用
revision    リビジョン
tier    ティア
compatibility   互換性
conditional 条件付き
automate    自動化します
securely    安全に
terminate   終了します
refresh リフレッシュします
alternatively   または
allocation  割り当て
pagination  ページネーション
scalable    スケーラブル
verification    検証
activate    活性化
optimization    最適化
attachment  添付ファイル
alert   アラート
buffer  バッファ
scheduler   スケジューラ
asynchronous    非同期
rotation    回転
intrinsic   本質的
unavailable 利用できません
decrypt 復号化
analyzer    アナライザ
dependency  依存
browse  ブラウズ
foundational    基礎
programmatically    プログラムで
severity    重大度
credential  資格情報
malicious   悪意のある
concurrent  同時
numeric 数値
bundle  バンドル
troubleshoot    トラブルシューティング
remediation 修復
optimize    最適化
federation  フェデレーション
appliance   アプライアンス
compression 圧縮
confirmation    確認
clone   クローン
locally ローカル
invocation  呼び出し
anomaly 異常
aggregate   集計
termination 終了
governance  ガバナンス
visibility  可視性
statistic   統計
concurrency 並行性
confidentiality 機密性
qualification   資格
temporarily 一時的に
ingest  摂取します
decimal 小数
uniquely    ユニークに
activation  活性化
renewal リニューアル
accelerate  加速します
retrieval   検索
alternate   代わりの
delegate    委任
ingress 侵入
persistent  持続的に
bulk    バルク
resilience  回復力
ingestion   摂取
walkthrough ウォークスルー
adaptive    アダプティブ
completion  完了
duplicate   複製
transcription   転写
permanently 永久に
modification    変形
quantization    量子化
continuously    継続的に
redundancy  冗長性
upstream    上流の
inspect 検査します
symmetric   対称
replicate   複製します
compliant   準拠
stateful    ステートフル
rotate  回転します
epoch   時代
isolate 分離します
incorrect   正しくない
periodically    定期的に
resiliency  弾力性
detach  取り外します
disassociate    関連する
hierarchy   階層
egress  出口
unintended  意図しない
notify  通知します
profiler    プロファイラー
ephemeral   短命
authorizer  承認者
consistency 一貫性
allocate    割り当てる
canonical   正規
precision   精度
rendition   レンディション
revoke  取り消す
digest  ダイジェスト
incremental 増分
serial  シリアル
simplify    簡素化する
conformance 適合
programmatic    プログラマティック
modernization   近代化
tenancy テナント
reviewer    レビュアー
initialization  初期化
regex   正規表現
mitigation  緩和
hourly  時給
reuse   再利用
tenant  テナント
reside  住む
dynamically 動的に
redirect    リダイレクト
accordance  に従って
facet   ファセット
suppression 抑制
segmentation    セグメンテーション
redundant   冗長
optimal 最適な
terminology 用語
unhealthy   不健康
visualize   視覚化します
expire  期限切れ
idempotency 冪等性
asymmetric  非対称
quotation   引用
suitable    適切
fetch   フェッチ
generic ジェネリック
deregister  登録解除する
semantic    セマンティック
initialize  初期化
separately  別々に
composite   複合
rename  名前を変更します
descriptive 記述
geometry    ジオメトリ
caption キャプション
forbidden   禁断
diagnostic  診断
inclusion   包含
scalability スケーラビリティ
periodic    周期的
synchronization 同期
insufficient    不十分
annotation  注釈
receipt レシート
disconnect  切断します
notation    表記
predictor   予測因子
spatial 空間的な
fragment    断片
anomalous   異常
fulfill 満たす
predictive  予測
conform 適合
durability  耐久性
executable  実行可能
leverage    てこの作用
prerequisite    前提条件
categorize  分類します
populate    居住します
concurrently    同時に
synchronous 同期
warehouse   倉庫
inactive    非活性
precedence  優先順位
classifier  分類器
independently   独立して
adhere  遵守する
refine  リファイン
substitution    代替
mitigate    軽減する
acceleration    加速度
mandatory   必須
individually    個別に
delimiter   デリミタ
parallelism 並列性
entitlement 資格
cipher  暗号
transactional   トランザクション
variant 変異体
outage  停止
subscriber  サブスクライバー
transmit    送信
synchronize 同期します
propagate   伝播します
virtualization  仮想化
intermediate    中級
glossary    用語集
insertion   挿入
resize  サイズ変更
suffix  サフィックス
stateless   ステートレス
literal リテラル
granularity 粒度
globally    世界的に
parse   解析
restoration 復元
assertion   アサーション
explainability  説明可能性
decryption  復号化
recreate    再現します
informational   情報
adjustable  調整可能
append  追加
durable 耐久性
efficiently 効率的
designate   指定
configurable    設定可能
coordinate  座標
noncompliant    非統合
immutable   不変
unnecessary 不要
orchestrator    オーケストレーター
geographic  地理的
respective  それぞれ

AWS Documentationに特化したといいつつ、他のIT系の英語の文章を読む上でもとても役立ちそうです。 ドキュメントを読む際や英語勉強の手助けになれば幸いです!