本記事は
執筆デビューWeek
3日目の記事です。
✨
2日目
▶▶ 本記事 ▶▶
4日目
🔰
はじめまして。新卒1年目の堤と申します。 8 月からクラウド事業推進部に配属となり現在は AWS を中心としたシステムの運用や構築を行っています。
まだまだAWSは触りたてでドキュメントを参照する機会が多いのですが日本語訳されていないサイトも多く、訳されていても機械翻訳のため意味が分かりづらいことが多々あります。今回はドキュメントを英語で効率よく最短で読めるようになるため、AWS Documentationからテキストデータを収集し、AWS Documentationに特化した英単語帳を作ってみました。
データ収集
URL の取得
AWS Documentation をスクレイピングしテキストデータを収集していきます。
収集先の情報として AWS のサイトマップを利用し、スクレイピング先の URL の一覧を取得します。
取得できた総 URL 数は約 996,000 でした。 この中でhttpから始まるURLのドキュメントはHTML 構造が異なるため除外しました。 また多言語対応のサイトは英語以外の URL を除外します。これらを取り除くことで分析対象の URL 数は 約 139,000 となりました。
ちなみにこのなかで最も URL が長いサイトは『AWS のサービスを使用したゲノミクスデータの転送、分析、および機械学習の関するホワイトペーパーの AWS DataSync と AWS Storage Gateway を用いたゲノムデータのクラウドへの転送とデータアクセスパターンの確立』についての記事でした。
業務でお世話になることはなさそうです。。
スクレイピング
取得した 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 万語でした。小説くらい長いですね。
前処理
得られたテキストデータを集計して最も頻度の多い単語を求めていきます。 単純に単語の頻度を取ると、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. 基礎的な英単語の除外
ランキングのなかに基礎的な英単語が入らないように除外していきます。どのようなルールで除外しようか考えていたところ、このようなサイトを見つけました。
このサイトでは COCA(Corpus of Contemporary American English)という10億語のアメリカ英語のコーパスの英単語頻度データが提供されています。上位 5000 語は自由に使用できるため、こちらを使用し基本的な英単語を除外していきます。最初は上位 3000 語に入っている英単語を除外していましたが、それでも結構簡単な英単語が残ってしまうと感じたため、この 5000 語に含まれている英単語すべてを除外しました。
2. サービス名に使用されている単語の除外
AWS サービスに含まれている英単語や S3, EC2 といったサービス名が上位に多く入ってしまうため、これらも除外します。AWS サービスに含まれている英単語の取得には以下を使用させていただきました。
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系の英語の文章を読む上でもとても役立ちそうです。 ドキュメントを読む際や英語勉強の手助けになれば幸いです!