け日記

最近はPythonでいろいろやってます

PythonでXGBoostを使う

最近XGBoostに触れる機会がありましたので、使い方を確認します。 (今まで使わなかったことの方がどちらかというと珍しいのかもしれません。) XGBoost XGBoost (eXtreme Gradient Boosting) は、単純な分類器 (ex. 決定木) を組み合わせたアンサンブル学習モ…

形態素解析前の日本語文書の前処理 (Python)

日本語の文書を扱っていますと、モデルやパラメータよりも、前処理を改善する方が精度が改善し、かつ、頑健になることがしばしばあります。 本投稿では形態素解析 (分かち書き) する前、つまり文字レベルでの前処理でよく使っているテクニックを紹介します。…

spaCyで英文の固有表現認識

今回はspaCyを使って英文の固有表現認識を行ってみます。 固有表現抽出 固有表現認識 (named entity recognition: NER) は、文書から固有表現 (named entity) を抽出・分類することです。 固有表現には、固有名詞や、数字を含む表現などが該当します。固有表…

論文メモ: Latent Aspect Rating Analysis on Review Text Data: A Rating Regression Approach

Latent Aspect Rating Analysis on Review Text Data: A Rating Regression Approach (KDD'10) という論文について紹介します。 @inproceedings{Wang:2010:LAR:1835804.1835903, author = {Wang, Hongning and Lu, Yue and Zhai, Chengxiang}, title = {Late…

小ネタ: urllibでURLをパースする・生成する

urllibを使ったURLのパースと生成についてまとめます。よく使うのに、そのたびに調べてしまっているので。 パースする まずはURLをパースする方法ですが、urllib.parse.urlparseにURL文字列を渡すだけです。 あとは、返されたParseResultオブジェクトから必…

小ネタ: Pandasでqueryを使って行を選択する

PandasのDataFrameから行を抽出する簡便な方法として、queryメソッドが提供されています。 SQLで言えば選択 (WHERE句) にあたる処理を、文字列で記述できます。 pandas.pydata.org queryメソッドを使った選択の例 今回の投稿で使うデータを準備します。 impo…

Uplift modelingで施策が効く人を見極める

最近はお仕事でマーケティングに関わることが多いです。そんな中で、施策が効く人はどんな人?ということを特定・予測する方法を調べており、その過程で見つけたUplift modelingについてまとめました。 Uplift modeling Uplift modelingは、施策の真の効果を…

いまさら学ぶPageRankアルゴリズム

IR

情報検索 (IR) のみならず、いろいろな分野で応用されているPageRankアルゴリズムについてまとめます。 PageRank PageRankはリンク分析 (link analysis) に分類されるアルゴリズムで、1998年に提案されました (提案論文PDF) 。以下の特徴を持ってます。 リン…

Rocchioフィードバックアルゴリズム

IR

情報検索 (IR) の分野におけるフィードバックアルゴリズムの1つであるRocchioアルゴリズムについて紹介します。 Rocchioフィードバックアルゴリズムとは 情報検索 (IR) において、検索クエリをTF*IDF等でベクトル化した後で、過去のラベリング情報 (フィード…

Solrの類似度アルゴリズム (TF*IDF, BM25)

引き続きSolrに触れていきます。 今回はSolrの検索で使われる類似度 (similarity) についてです。 前提 Solrのダウンロードとkenikkiコレクションの追加まで完了している状態を前提として進めます。 ohke.hateblo.jp ohke.hateblo.jp 類似度 Solrのコアエン…

Solrで検索 (フィルタ, ソート, ファセット, ハイライト)

前回・前々回に引き続いて、Solrについてです。 今回は検索クエリで頻繁に使われる、フィルタ、ソート、ファセット、ハイライトについてまとめます。引き続き、チュートリアルと↓の本を参考にしています。 なお、前々回のSolrのダウンロード、前回のkenikki…

Solrでスキーマの定義とドキュメントの登録を行う

前回の投稿に引き続き、Solrに慣れ親しんでいきます。 ohke.hateblo.jp 今回の投稿では、スキーマの定義、および、JSONを使ったドキュメント登録を行います。引き続き、チュートリアルと↓の本を参考にしています。 Solrサーバの起動とSolrCoreの作成 話を単…

Solrの環境をMacに構築する

仕事で検索プラットフォームの Apache Solr を扱うことになったのですが、今までブラックボックスにしてきてしまっていたので、この機会に勉強することにしました。 http://lucene.apache.org/solr/ 今回は、Mac上にSolr (7.5.0) の環境を構築し、け日記のエ…

Python: LexRankで日本語の記事を要約する

仕事で行っているPoCの中で、文章の要約が使えるのではと思い、調査をし始めています。 今回はsumyのLexRankの実装を使い、過去の投稿を要約してみます。 LexRank LexRankは、抽出型に分類される要約アルゴリズムで、文書からグラフ構造を作り出して重要な文…

SQL ServerのテーブルをPandas DataFrameで読み書きする

SQL ServerのテーブルをPandasのDataFrameに読み込んだり、逆に書き出したりする方法の備忘録です。 ドライバにpymssqlを使います。また書き出しには $ pip install pymssql SQLAlchemy DataFrameへの読み込み まずはSQL ServerのテーブルからDataFrameへ読…