静かなる名辞

pythonとプログラミングのこと



自然言語処理

【python】sklearnのLDA(LatentDirichletAllocation)を試してみる

注意:線形判別分析(LinearDiscriminantAnalysis)ではありません。トピックモデルのLDAです。 はじめに LDAといえば、トピックモデルの代表的な手法であり、一昔前の自然言語処理では頻繁に使われていました(最近は分散表現や深層学習に押されて廃れ気味…

MeCab+Pythonでunidicを使う

はじめに MeCabの辞書といえばipadicが定番ですが、unidicという辞書もあります。ちょっとこれを使いたくなったので、使うことにしました。 なお、MeCabおよびmecab-pythonはすでにipadic等で使える状況になっているものとします。 目次 はじめに unidicのい…

【python】TF-IDFで重要語を抽出してみる

概要 すでに語り尽くされた感のあるネタですが、TF-IDFで文書の重要な単語(重要語、あるいは特徴語)を抽出してみます。 numpyとsklearnを使うと、10行程度のコードで実現できるので簡単です。スポンサーリンク (adsbygoogle = window.adsbygoogle || []).p…

【python】sklearnのfetch_20newsgroupsで文書分類を試す(4)

前回は性能を追い求めると次元がでかくなりすぎて・・・というところで終わっていた。今回はもうちょっと頑張って次元を減らしてみる。 目次 ストップワードの除去 PCA(主成分分析)とLDA(線形判別分析) 分類 ソースコード 結果とまとめ 次回 過去の回 ス…

【python】nltkで英語のStemmingとLemmatization

Stemming(ステミング)は単語の語幹を取り出したいとき、Lemmatization(レンマ化、敢えてカタカナ表記するとレンマタイゼーション)はカテゴリごとにグルーピングしたりしたいときに使う。 公式ドキュメントはここ。 nltk.stem package — NLTK 3.2.5 docum…

【python】cabochaのpythonバインディングの変な挙動

環境 ubuntu 14.04 cabocha 0.69 cabocha-python 0.69 問題の概要 変な挙動だった。というか率直に言ってバグなのでは? >>> import CaboCha >>> cparser = CaboCha.Parser() >>> tree1 = cparser.parse("吾輩は猫である。") >>> print(tree1.toString(CaboC…

日本語モダリティ解析器 Zundaを試す

日本語のモダリティを解析できるらしい。「文中のイベント(動詞や形容詞など)に対して、その真偽判断(イベントが起こったかどうか)、仮想性(仮定の話かどうか)などを解析します」とのこと。 公式ページはたぶんここ。jmizuno.github.io 環境 ubuntu14.…

【python】nltkで英語の形態素解析

POS taggingというタスクです。日本語の解析ではmecabやjumanを使うと思いますが、英語だとnltkに入っているものが使えるので楽です。 使い方 凝ったやり方は幾らでもある(と思う)のですが、簡単のために次の二つを使います。 nltk.word_tokenize nltk.pos…

【python】sklearnのPCAでsvd_solverによる速度差を比較

sklearnのPCA(主成分分析)がやたら遅くて腹が立ちました。計算コストを下げるために次元削減してるのに、次元削減で計算コスト食ったら意味がありません。 とにかくこのPCAを高速化したかったので、svd_solverを変えてどうなるか試しました。なお、腹が立…

【python】tfidfは分類精度を向上させるのか?→向上しなかった

目次 はじめに――長年の疑問 検証 結果 tf-idfは死んだのか? まとめ はじめに――長年の疑問 自然言語処理でテキスト分類などに、よくtf-idfが使われます(最近はそうでもないのかもしれないが)。一般には、tf-idfを使うことで分類精度の向上効果があると認識…

【python】sklearnのCountVectorizerの使い方

sklearnのCountVectorizerを使うとBoW(Bag of Words)の特徴量が簡単に作れます。ただし、指定するパラメタが多かったり、デフォルトで英語の文字列を想定していたりして若干とっつきづらい部分もあります。 この記事ではCountVectorizerの使い方を簡単に説明…

【python】sklearnのfetch_20newsgroupsで文書分類を試す(3)

前回はとりあえずベースラインの分類を行い、F1値にして0.7くらいの性能を得た。 ここで自然言語処理的なアプローチで手法の改良に進むのもありだと思うが、とりあえずmin_dfをパラメタチューニングしてみるか、という方向に傾いている。前回は恣意的に決め…

【python】sklearnのfetch_20newsgroupsで文書分類を試す(2)

前回の続きをやっていく。とりあえず今回は簡単な方法で分類してみて、ベースラインを作ることにする。 特徴を捨てる 分類する まとめ 次回 何はともあれ、文書から特徴抽出してベクトル化しないと話にならない。ベースラインなのでBag of Wordsを使うことに…

【python】sklearnのfetch_20newsgroupsで文書分類を試す(1)

fetch_20newsgroupsはUsenetというネットニュースの記事(でいいのかな、良くない気がする)をカテゴリ別に集めたデータセット。sklearnで気楽に使えるので*1、試してみることにする。 とりあえずこの記事はintroductionとし、使い方とデータの扱い方の説明…

【python】CKY法をpythonで実装

構文解析アルゴリズムのCKY法の実装について説明する。参考にしたテキストはこれ。自然言語処理の基礎作者: 奥村学出版社/メーカー: コロナ社発売日: 2010/10/15メディア: 単行本(ソフトカバー)購入: 8人 クリック: 379回この商品を含むブログ (11件) を見…