@johtaniの日記 3rd

@johtani's blog 3rd edition

第4章終了(言語処理100本ノック2020)

Rustで言語処理100本ノックの第4章です。 前回はこちら。 今回は早めに続きをやりました。 「形態素解析」ですしね。 第4章の概要 吾輩は猫であるの文章が用意されていて、MaCabで形態素解析した結果をファイルに保存したところからが開始となります。

第3章終了(言語処理100本ノック2020)

Rustで言語処理100本ノックの第3章です。 前回はこちら。 少し間が空きましたが、再開しました。 間が空いた理由は。。。「正規表現」ですかね。。。 苦手なんです、正規表現。 なので、28はちょっとギブアップしてしまいました。

第2章の12から19まで(言語処理100本ノック2020)

Rustで言語処理100本ノックの第2章の残りです。 前回はこちら。 ちなみに、標準入力から受け取る処理は書いてないです。 出力に関してはファイル分割、保存と支持があるもの以外は文字列として取り出すところで終わっています。

第2章の10から11まで(言語処理100本ノック2020)

気づいたら1ヶ月サボってました、ごめんなさい。。。 Rustで言語処理100本ノックの第2章をはじめました。 前回はこちら。 確認用のUnixコマンド 確認用のファイルを先に生成して置きました。 これで、Rustでコードを書いて、作成済みの確認ファイルを元にassert_eq!でチェックするという方式を取ろうかと。

第1章の08から09まで(言語処理100本ノック2020)

Rustで言語処理100本ノックのリファクタリングの続き。 前回はこちら。 とっくに終わってたのに、ブログ書いてなかった。。。 08. 暗号文 pub fn cipher(text: &str) -> String { return String::from_iter(text.chars().map(|x| { if x.is_ascii_alphanumeric() && x.is_lowercase() { let mut b = [0; 4]; x.encode_utf8(&mut b); b[0] = 219 - b[0]; char::from(b[0]) } else { x } })); } Rustの文字列はUTF-8でエンコードされたテキストを保持しているので、文字コード自体は意識していないです。 chars()でUnicodeスカラー値のイテレータが返ってくるので、1文字ずつ扱えるようになります。

第1章の03から06まで(言語処理100本ノック2020)

Rustで言語処理100本ノックのリファクタリングの続き。 前回はこちら。 コードも載せたほうが見やすいかなぁ? 03. 円周率 2年前はこちら。 どちらかというとJavaっぽい書き方かな? 入れ物を用意して、入力を整形して、それからループを回す感じで書いてました。

言語処理100本ノック、再び

今回もツイートから。 言語処理100本ノックの2020年版を公開しました。最近の自然言語処理の研究動向を反映し、深層ニューラルネットワークに関する問題を追加しました。留学生も一緒に取り組めるように多言語化を進め、その第1弾として英訳を部分公開しています(40番以降は順次公開予定)。 https://t.co/52h362PIQQ — Naoaki Okazaki (@chokkanorg) April 6, 2020 言語処理100本ノックが2020年版になったそうです。 そうです、2年前に初めて、準備運動で止まっていたんです!(衝撃的な続かなさ。。。) ということで、Rust the bookも読んでいることだし、過去のプログラムをチェックしつつ再開しようかなと。 ということで、いくつかリファクタリングしてみました。

第1章の05から06までやってみた(言語処理100本ノック)

Rustで言語処理100本ノックの続きで、05と06です。 05. n-gram 問題はこちら。 みんな大好きn-gramです。単語と文字があるので、それぞれ別関数として実装しました。問題はbi-gramとn=2だったのですが、一応、nを引数に取る形にして実装しました。

第1章の03から04までやってみた(言語処理100本ノック)

Rustで言語処理100本ノックの続きで、03と04です。 03. 円周率 問題はこちら。 入力文字列を.split_whitespace()で分割しておいて、単語ごとのベクタを作り出し、そこに対して文字を数えました。「アルファベットの」という注意書きがあるので",“や”.“は含めずに数えるのかなということで、 charの.is_alphabetic()でA-zまでの判定をしつつ、文字のベクタを作ってから、そのベクタの長さを詰め込むという感じでやりました。

第1章の00から02までやってみた(言語処理100本ノック)

「鉄は熱いうちに打て」ということで、言語処理100本ノックの第1章の00から02を実装してみました。 さて、これが効率がいいのかどうかはさておき。