cheungYX / nlp100

言語処理100本ノックの問題と答えをここに記す

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nlp100

言語処理100本ノックの問題と答えをここに記す

Chapter 1: beginning

Chapter 2: UNIX command

Chapter 3: regular expression

hightemp.txtは,日本の最高気温の記録を「都道府県」「地点」「℃」「日」のタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,hightemp.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ.

Chapter 4: Morphological Analysis

Wikipediaの記事を以下のフォーマットで書き出したファイルjawiki-country.json.gzがある.

1行に1記事の情報がJSON形式で格納される 各行には記事名が"title"キーに,記事本文が"text"キーの辞書オブジェクトに格納され,そのオブジェクトがJSON形式で書き出される ファイル全体はgzipで圧縮される

Chapter 5: Dependency analysis

夏目漱石の小説『吾輩は猫である』の文章neko.txtをCaboChaを使って係り受け解析し,その結果をneko.txt.cabochaというファイルに保存せよ.このファイルを用いて,以下の問に対応するプログラムを実装せよ.

    1. 係り受け解析結果の読み込み(形態素)
    1. 係り受け解析結果の読み込み(文節・係り受け)
    1. 係り元と係り先の文節の表示
    1. 名詞を含む文節が動詞を含む文節に係るものを抽出
    1. 係り受け木の可視化
    1. 動詞の格パターンの抽出
    1. 動詞の格フレーム情報の抽出
    1. 機能動詞構文のマイニング
    1. 名詞から根へのパスの抽出
    1. 名詞間の係り受けパスの抽出

Chapter 6: English text

英語のテキストnlp.txtに対して,以下の処理を実行せよ.

    1. 文区切り
    1. 単語の切り出し
    1. ステミング
    1. Tokenization
    1. 品詞タグ付け
    1. 固有表現抽出
    1. 共参照解析
    1. 係り受け解析
    1. タプルの抽出
    1. S式の解析

Chapter 7: Database

artist.json.gzは,オープンな音楽データベースMusicBrainzの中で,アーティストに関するものをJSON形式に変換し,gzip形式で圧縮したファイルである.このファイルには,1アーティストに関する情報が1行にJSON形式で格納されている.JSON形式の概要は以下の通りである. rtist.json.gzのデータをKey-Value-Store (KVS) およびドキュメント志向型データベースに格納・検索することを考える.KVSとしては,LevelDB,Redis,KyotoCabinet等を用いよ.ドキュメント志向型データベースとして,MongoDBを採用したが,CouchDBやRethinkDB等を用いてもよい.

    1. KVSの構築
    1. KVSの検索
    1. KVS内の反復処理
    1. オブジェクトを値に格納したKVS
    1. MongoDBの構築
    1. MongoDBの検索
    1. 検索件数の取得
    1. 複数のドキュメントの取得
    1. ソート
    1. Webアプリケーションの作成

Chapter 8: Machine Learning

本章では,Bo Pang氏とLillian Lee氏が公開しているMovie Review Dataのsentence polarity dataset v1.0を用い,文を肯定的(ポジティブ)もしくは否定的(ネガティブ)に分類するタスク(極性分析)に取り組む.

    1. データの入手・整形
    1. ストップワード
    1. 素性抽出
    1. 学習
    1. 予測
    1. 素性の重み
    1. ラベル付け
    1. 正解率の計測
    1. 5分割交差検定
    1. 適合率-再現率グラフの描画

Chapter 9: Vector Space Model(1)

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を用いよ.

    1. コーパスの整形
    1. 複合語からなる国名への対処
    1. 文脈の抽出
    1. 単語/文脈の頻度の計測
    1. 単語文脈行列の作成
    1. 主成分分析による次元圧縮
    1. 単語ベクトルの表示
    1. 単語の類似度
    1. 類似度の高い単語10件
    1. 加法構成性によるアナロジー

Chapter 10: Vector Space Model(2)

第10章では,前章に引き続き単語ベクトルの学習に取り組む.

    1. word2vecによる学習
    1. アナロジーデータの準備
    1. アナロジーデータへの適用
    1. アナロジータスクの正解率の計算
    1. WordSimilarity-353での類似度計算
    1. WordSimilarity-353での評価
    1. 国名に関するベクトルの抽出
    1. k-meansクラスタリング
    1. Ward法によるクラスタリング
    1. t-SNEによる可視化

About

言語処理100本ノックの問題と答えをここに記す


Languages

Language:Python 94.2%Language:Shell 5.8%