言語処理100本ノックの問題と答えをここに記す
- 00 文字列の逆順
- 01 パタトクカシーー
- 02 「パトカー」+「タクシー」=「パタトクカシーー」
- 03 円周率
- 04 元素記号
- 05 n-gram
- 06 集合
- 07 テンプレートによる文生成
- 08 暗号文
- 09 Typoglycemia
- 10 行数のカウント
- 11 タブをスペースに置換
- 12 1列目をcol1.txtに,2列目をcol2.txtに保存
- 13 col1.txtとcol2.txtをマージ
- 14 先頭からN行を出力
- 15 末尾のN行を出力
- 16 ファイルをN分割する
- 17 1列目の文字列の異なり
- 18 各行を3コラム目の数値の降順にソート
- 19 各行の1コラム目の文字列の出現頻度を求め,出現頻度の高い順に並べる
hightemp.txtは,日本の最高気温の記録を「都道府県」「地点」「℃」「日」のタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,hightemp.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ.
- 20 JSONデータの読み込み
- 21 カテゴリ名を含む行を抽出
- 22 カテゴリ名の抽出
- 23 セクション構造
- 24 ファイル参照の抽出
- 25 テンプレートの抽出
- 26 強調マークアップの除去
- 27 内部リンクの除去
- 28 MediaWikiマークアップの除去
- 29 国旗画像のURLを取得する
Wikipediaの記事を以下のフォーマットで書き出したファイルjawiki-country.json.gzがある.
1行に1記事の情報がJSON形式で格納される 各行には記事名が"title"キーに,記事本文が"text"キーの辞書オブジェクトに格納され,そのオブジェクトがJSON形式で書き出される ファイル全体はgzipで圧縮される
- 30 形態素解析結果の読み込み
-
- 動詞
-
- 動詞の原形
-
- サ変名詞
-
- 「AのB」
-
- 名詞の連接
-
- 単語の出現頻度
-
- 頻度上位10語
-
- ヒストグラム
-
- Zipfの法則
夏目漱石の小説『吾輩は猫である』の文章neko.txtをCaboChaを使って係り受け解析し,その結果をneko.txt.cabochaというファイルに保存せよ.このファイルを用いて,以下の問に対応するプログラムを実装せよ.
-
- 係り受け解析結果の読み込み(形態素)
-
- 係り受け解析結果の読み込み(文節・係り受け)
-
- 係り元と係り先の文節の表示
-
- 名詞を含む文節が動詞を含む文節に係るものを抽出
-
- 係り受け木の可視化
-
- 動詞の格パターンの抽出
-
- 動詞の格フレーム情報の抽出
-
- 機能動詞構文のマイニング
-
- 名詞から根へのパスの抽出
-
- 名詞間の係り受けパスの抽出
英語のテキストnlp.txtに対して,以下の処理を実行せよ.
-
- 文区切り
-
- 単語の切り出し
-
- ステミング
-
- Tokenization
-
- 品詞タグ付け
-
- 固有表現抽出
-
- 共参照解析
-
- 係り受け解析
-
- タプルの抽出
-
- S式の解析
artist.json.gzは,オープンな音楽データベースMusicBrainzの中で,アーティストに関するものをJSON形式に変換し,gzip形式で圧縮したファイルである.このファイルには,1アーティストに関する情報が1行にJSON形式で格納されている.JSON形式の概要は以下の通りである. rtist.json.gzのデータをKey-Value-Store (KVS) およびドキュメント志向型データベースに格納・検索することを考える.KVSとしては,LevelDB,Redis,KyotoCabinet等を用いよ.ドキュメント志向型データベースとして,MongoDBを採用したが,CouchDBやRethinkDB等を用いてもよい.
-
- KVSの構築
-
- KVSの検索
-
- KVS内の反復処理
-
- オブジェクトを値に格納したKVS
-
- MongoDBの構築
-
- MongoDBの検索
-
- 検索件数の取得
-
- 複数のドキュメントの取得
-
- ソート
-
- Webアプリケーションの作成
本章では,Bo Pang氏とLillian Lee氏が公開しているMovie Review Dataのsentence polarity dataset v1.0を用い,文を肯定的(ポジティブ)もしくは否定的(ネガティブ)に分類するタスク(極性分析)に取り組む.
-
- データの入手・整形
-
- ストップワード
-
- 素性抽出
-
- 学習
-
- 予測
-
- 素性の重み
-
- ラベル付け
-
- 正解率の計測
-
- 5分割交差検定
-
- 適合率-再現率グラフの描画
enwiki-20150112-400-r10-105752.txt.bz2は,2015年1月12日時点の英語のWikipedia記事のうち,約400語以上で構成される記事の中から,ランダムに1/10サンプリングした105,752記事のテキストをbzip2形式で圧縮したものである.このテキストをコーパスとして,単語の意味を表すベクトル(分散表現)を学習したい.第9章の前半では,コーパスから作成した単語文脈共起行列に主成分分析を適用し,単語ベクトルを学習する過程を,いくつかの処理に分けて実装する.第9章の後半では,学習で得られた単語ベクトル(300次元)を用い,単語の類似度計算やアナロジー(類推)を行う.
なお,問題83を素直に実装すると,大量(約7GB)の主記憶が必要になる. メモリが不足する場合は,処理を工夫するか,1/100サンプリングのコーパスenwiki-20150112-400-r100-10576.txt.bz2を用いよ.
-
- コーパスの整形
-
- 複合語からなる国名への対処
-
- 文脈の抽出
-
- 単語/文脈の頻度の計測
-
- 単語文脈行列の作成
-
- 主成分分析による次元圧縮
-
- 単語ベクトルの表示
-
- 単語の類似度
-
- 類似度の高い単語10件
-
- 加法構成性によるアナロジー
第10章では,前章に引き続き単語ベクトルの学習に取り組む.
-
- word2vecによる学習
-
- アナロジーデータの準備
-
- アナロジーデータへの適用
-
- アナロジータスクの正解率の計算
-
- WordSimilarity-353での類似度計算
-
- WordSimilarity-353での評価
-
- 国名に関するベクトルの抽出
-
- k-meansクラスタリング
-
- Ward法によるクラスタリング
-
- t-SNEによる可視化