言語処理100本ノック第2章 解答と解説のまとめ

こんにちは。福田直起です。

この記事では、言語処理100本ノック2020の「第2章 : UNIXコマンド」の10問をPythonUNIXコマンドで解き、複数回に分けて解説したものをまとめています。

各記事へのリンクと内容の概要

今回は読みやすさを考慮して、出題意図を推察しながら以下の図のように記事を分割しました。

1. データのダウンロードと整形

前編

(前文、Q10、Q11) blog.brains-consulting.tech

UNIXコマンドを使って課題ファイルをダウンロードし、Pythonでファイルを読み書きする方法や、Q11の問題文で言及されている3つのコマンドについて解説しています。

後編

(Q12、Q13)
blog.brains-consulting.tech

PythonUNIXコマンドを使って、データがタブ区切りで格納されている課題ファイルを分割したり結合したりする方法を解説しています。

2. データ内容の確認とデータの分割

(Q14、Q15、Q16)
blog.brains-consulting.tech

これらの問題ではコマンドライン引数を受け取るアプリケーションを作ることを要求されています。今回私はPythonのライブラリであるtyperを使って解いたので、それについて解説しています。
また、Q16で扱うUNIXsplitコマンドについては、オプションを詳しく解説しています。

3. 複数プロセスが必要なデータ処理

(Q17、Q18、Q19)
blog.brains-consulting.tech

Pythonでこれらの問題を解く際に外部ライブラリを使う方法、使わない方法の速度比較を含めたメリット・デメリットを解説しています。
UNIXコマンドでは、複数のコマンドをパイプでつなげてより複雑な処理を行う方法について解説しています。

Appendix. 厳格でないソートが行われる可能性についての検証

blog.brains-consulting.tech

Q17~Q19を解いていて見つけたUbuntusortコマンドと、Pandasのsort_values()の厳格でない挙動についての検証のAppendixとなります。

おわりに

以上、言語処理100本ノックの第2章について解説しました。
複数記事にわたってかなり長い記事を執筆することになりましたが、お役に立てたなら幸いです。

また、ブレインズコンサルティングでは一緒に働いてくれる仲間を募集しています。 ご興味のある方は、ぜひ一度採用サイトをご覧ください。