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系の英語の文章を読む上でもとても役立ちそうです。 ドキュメントを読む際や英語勉強の手助けになれば幸いです!