サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
qiita.com/yukinoi
scikit-learnのLatent Dirichlet Allocation (LDA) のcoherenceを求めるPython機械学習scikit-learnLDA はじめに ちゃお…† まいおり…† LDA (Latent Dirichlet Allocation)、わたしの好きなモデルです。 しかし、現時点のscikit-learn (1.2.2) にはLDAモデルのcoherence (コヒーレンス) を求める関数はありません。 そこで強引に?LDAモデルのcoherenceを求める方法を記します。 コヒーレンスとは 記述や事実の集合は、それらが互いに支持し合っている場合、首尾一貫している (coherent) と言われます。したがって、首尾一貫した事実の集合は、事実のすべてまたは大部分をカバーする文脈で解釈することができます。 トピックのコヒーレンスを測るとは、トピック内の
ちゃお……† 今回はPythonでお手軽にテキスト全文検索出来るライブラリ shellinford-python を紹介します。 こちらは@echizen_tmさんの shellinford をSWIGでPythonで動作させるようにしたのと、若干の機能追加したものです。Python環境さえあれば簡単にシンプルな全文検索出来るのでお手軽かと思います。 FM indexとは バイオインフォマティクスなんかで使われる検索アルゴリズムです。わたしが説明するより良い説明を見つけたので以下に引用します。 シークエンサーのデータを解析するとき、リードをリファレンス配列にマッピングすることが第一歩である。一般にシークエンサーのリードは数百万個以上で、また、リファレンス配列の塩基数は数億にも及ぶ。これらの数百万のリードを、数億塩基からなるリファレンス配列にマッピングする際に、高速な文字列検索アルゴリズムが
ちゃお……† 久しぶりにまいおり……† ネオ東京文京区からやってきてPython用日本語文字列変換ライブラリjaconvを0.3にアップデートをしました。変更点は下記の通りです。 バグ修正 ひらがなからJuliusの音素表現への変換に対応 バグはアルファベットからひらがなに変換する alphabet2kana 関数の修正です。使ってる人多分少なそうだからあんまり影響ないかも。 そして新機能!ひらがなから音声認識システムJuliusの音素表現に変換する hiragana2julius 関数です! どんなものかというと以下のようにちょっと気の利いた処理をしつつJuliusの音素表現に変換するのです。 >>> import jaconv >>> print(jaconv.hiragana2julius('てんきすごくいいいいいい')) t e N k i s u g o k u i:
import time from datetime import datetime def show_second(dt=datetime.now()): print(dt.second) show_second() #=> 23 time.sleep(3) show_second() #=> 23 すると、なんということでしょう!三秒間sleepしたにも関わらず二度目の show_second 関数呼び出し時にプリントされる値が三秒前と同じでした…!?時が止まった?ザ・ワールド???新手のスタンド使いか??? Pythonのデフォルト引数値の挙動 さて、これはどういうことかとPythonのドキュメントを読んでみたところ、下記の記述がありました。 デフォルト引数値は関数定義が実行されるときに左から右へ評価されます。 これは、デフォルト引数の式は関数が定義されるときにただ一度だけ評価され、同
Mozc (OSSのIME) 用の辞書をMeCab (OSSの形態素解析器) 用の辞書に変換することで、MeCabでかな漢字変換できるようにするスクリプトをお遊びで作りました。 💁♀ https://github.com/ikegami-yukino/mecab-as-kkc 💁♂ 現状では、かな漢字変換は日常的に使われているにも関わらず割とニッチな分野です。特にLinux界隈ではこれまで使われてきたMozcの開発頻度が大幅に下がったため、新しいIMEの登場が期待されています。これをきっかけに少しでもかな漢字変換に興味を持っていただければ幸いです。もっと欲を言えばMozcの代わりとなる新しいLinux用IMEを作っていただけたら最高です。 また、mecab-as-kkcをnksndやJLM、SIMPLE、ngram-converter-cpp、neural_ime、mecab-sk
はじめに 東北大学の乾・鈴木研究室のページで公開されている日本語評価極性辞書を使ったSentiment Analysis (いわゆるネガポジ判定) ライブラリ oseti を公開しました。これは日本語評価極性辞書を用いて文の評価極性 (ポジティブ/ネガティブ) のスコアを計算するものです。 何番煎じかって感じはありますけど、自分のPCの中にだけずっとあるのはもったいないので公開しました。 ※バージョンv0.2 (2019/10/7公開) からの変更点を追加しました。 インストール このライブラリはMeCabを利用しているためMeCabのインストールも必要です。MeCab本体は以下のURLからダウンロードできます。 http://taku910.github.io/mecab/ あとは依存モジュールとしてneologdnとmecab-python-windowsあるいはmecab-pytho
はじめに ちゃお・・・† 個人的にですが、最近はWindowsのPythonでMeCabを使う機会が増えてきました。しかし、WindowsでMeCabのPythonラッパーを入れるには、ソースをダウンロードしたりsetup.pyを書き換えたりコンパイラをインストールしたりしないといけないので、とても面倒です。 そこで、WindowsでもmacでもUbuntuでもpipで簡単にMeCabのPythonラッパーを使えるものを公開しました! https://pypi.org/project/mecab/ ※ 過去にmecab-python-windowsというものを公開しましたが、そちらは今後アップデートしないつもりなので、mecab-python-windowsを使っている人はこちらに乗り換えることを推奨します。 これは何? インストール時のOSによってふるまいを変えることで、一つのパッケージ
brew install autoconf automake libtool protobuf pushd . git clone --depth=1 https://github.com/google/sentencepiece.git /tmp/ cd /tmp/sentencepiece perl -i -pe 's/libtoolize/glibtoolize/' autogen.sh ./autogen.sh ./configure make make check sudo make install popd rm -rf /tmp/sentencepiece
ちゃお・・・† @ragion さんの協力もあって、ついにJavaでのNEologdの前処理モジュール neologd-java をリリースしました! これはなに? 辞書データを冗長にして異表記を吸収するのにも限界がある。 辞書データを生成する際には以下で述べる正規化処理を全て適用しているため、 解析対象のテキストに対して以下の正規化処理を適用すると、辞書中の語とマッチしやすくなる。 と上記のページにあるように、MeCabで解析する前に正規化処理 (前処理) を行うことは重要です。そこで、JavaでのNEologdの前処理モジュール neologd-java を作りました。 どう使うの? Mavenの場合 Maven Central に登録されているので pom.xmlに下記を加えます。 <dependency> <groupId>io.github.ikegami-yukino</gro
ちゃお……† 今回は感情分析ライブラリML-Askについて紹介します。 ML-Askができること 感情の推定 2,100語の辞書によるパターンマッチングで{喜, 怒, 哀, 怖, 恥, 好, 厭, 昂, 安, 驚}の10種類の感情を推定します。この2,100語は、感情表現辞典に基づいているそうです。 感情の強さ 間投詞、擬態語、がさつな言葉、顔文字、「!」や「?」の数で感情の強さを推定します。 ネガポジ分類 推定された感情から文を{ネガティブ、ポジティブ、ニュートラル}の3種類に分類します。 文脈の考慮 Contextual Valence Shifters (CVS) という概念に基づいて, 文脈を考慮した感情推定を行います. たとえば, 「好きとは言えない」という文の場合、「好き」が否定されているので、「好き」の逆の感情である「厭」だと推定します。 活性的かどうか 推定された感情を元に
ちゃお……† 今回はdefragTreesという機械学習ライブラリを紹介します。 defragTreesとは RandomForestやXGBoostなどに対して、できるだけ精度やカバレッジを下げないようにしつつ、モデルをシンプルに(ルールを減らす)表現する手法を使ったライブラリです。 ルールが少ないので人間が見たときのわかりやすさがあります。 たとえば、元はシンプルなデータ(Figure 1 の a)でもアンサンブル学習すると無駄に複雑になってしまうことがあります (Figure 1 の b)。そこで、defragTreesを使うとオリジナルと同じようなシンプルさになります (Figure 1 の c)。 コード: https://github.com/sato9hara/defragTrees 論文: https://arxiv.org/abs/1606.09066 使い方 from
ちゃお……† 動機 MeCabの辞書に英語など外国語を入れると辞書のボリュームが膨大になって辞書のコンパイルに時間がかかるようになってしまいます。 その逆に、新語の発音推定 (読み推定) がしたいという需要もあります。 また、発音推定ができれば一昨年ごろに流行ったコンピュータで575判定するプログラムへの英語対応もできるようになります。 そこで今回は発音推定の一手段を紹介したいと思います。 アルファベット単語と読みのペアを抽出 UniDicからアルファベット単語と読みのペアを抽出します。 抽出用スクリプトはこちら↓ https://gist.github.com/ikegami-yukino/40a10a0e9611450b0c2a07ceb94b4b4c アラインメント ここでは mpaligner を使います。 自動読み推定(発音推定)のための文字列アライメントツールです.多対多のアラ
今回は、iXce’s blog » Blog Archive » Optimizing memory usage in Python: a case study という記事を見つけて興味深かったので紹介したいと思います。何も説明書いてないところがあるので、詳しく知りたい人は元記事を読んでほしいです。 動機 プレーンテキストをGコードに変換するプログラムを書いている 3.8MB (14万Gコード) のファイルを読み込むと、244MBもメモリを使ってしまう だからメモリ使用量を減らしたい やったこと プロファイル どこがメモリをたくさん使ってるのか調べるためにHeapyを使う $ pip install guppy で入れられる。 するとこんな感じの結果が出力される。 Partition of a set of 225737 objects. Total size = 115386656 by
ちゃお・・・† 自然言語処理といえば前処理がつきもの。前処理は速いにこしたことがない。というわけで、Python3での日本語変換モジュールの比較をしました。 比較項目 全角・半角の変換と、ひらがなからカタカナへの変換。対象文字列が長い場合と短い場合の両方を見る。 比較対象 jaconv (わたしが作ったモジュール。最近 jctconv から名前を変えました) mohayonaoさんのコード cnvk mojimoji zenhan rfZenHan python-nkf 比較結果 詳細はこちら jaconv cnvk mojimoji zenhan rfZenHan mohayonao nkf
ちゃお...† 本日、IPythonデータサイエンスクックブック――対話型コンピューティングと可視化のためのレシピ集という本をいただきましたのでさっそく読んでます (まだ読んでる途中)。 IPythonではmagicコマンドという、セルや行に対して頻繁に行われるような処理を簡単に実行できるようにする仕組みがあります。デフォルトでいくつか入ってるのですが、自分でmagicコマンドを作ってカスタマイズすることもできます。 わたしは、仕事中の6割くらいはJupyter notebookで何かしてる人なので、コードが汚くなった時にJupyter内で解決できたらうれしいなって思いました。そこでJupyter notebookからautopep8でPEP8コーディングスタイルにフォーマッティングするものを書きました! こちらにディレクトリに置いてます。 https://github.com/ikega
ちゃお……† 先日のこと、急に「自分がPyPIで公開してるモジュールたちはWindowsでも動くのかな?」と疑問が頭によぎったので調べました。(普段はMac使ってます) 結論から言うと、全部使えました! ですが、試行錯誤が過酷だったのでノウハウを共有したいと思います。 文字コードの問題 CやC++などのファイルをコンパイルできない場合 ファイルをなかなか離してくれない問題 文字コードの問題 PythonのモジュールはUTF-8前提のものがほとんどですが、 WindowsではCP932という文字コードを前提にしているので、 setup.pyでのインストール時に他のファイルを読み込むと下記のようなエラーが起こります。 C:\Users\yukino>pip install jctconv Collecting jctconv Downloading jctconv-0.1.tar.gz Com
posted articles:Python:61%自然言語処理:41%NLP:31%mecab:22%形態素解析:10%
はじめに Pythonで機械学習といえばscikit-learnですが、scikit-learnを使うにはnumpyやscipyといった大きめのライブラリを入れる必要があります。でも、プログラムでほんのちょこっとだけ機械学習のモデルを使って分類したいって場合だと、わざわざそういう重いもの入れたくないなーと思うときがあります。scikit-learnで学習したものをnumpy, scipy, scikit-learnなしに使って分類処理ができたらなーって。 そこで今回はscikit-learnの決定木 (DecisionTreeClassifier) やRandom forest (RandomForestClassifier) からif-then形式のコードを生成するものを紹介します。 https://github.com/ikegami-yukino/misc/blob/master/m
Elasticsearchには類義語によるクエリ拡張機能があります。これを適用すると まどマギ と検索したときに まどかマギカ と書かれた文書もヒットするようになります。 (LuceneやSolrにもありますがここではElasticsearchの話だけします) この類義語辞書は、人手で作ること (e.g., FRILの商品検索をnGramから形態素解析にした話 - mosowave) もできますが、今回はなるべく手間をかけたくないのでWikipediaのリダイレクトデータから自動で類義語辞書を作る方法を紹介します。 (自動といってもノイズも含まれてるので実用的に使うにはある程度人手でフィルタリングする必要があります。それでも一から人手で作るよりは手間が少ないと思います) (ElasticsearchではWordNetでの類義語検索に対応しているようですが、これを書いてる2015年12月時点
ちゃお... Python Advent Calendar 2015 18日目の記事です... Pythonといったらデータサイエンスに強いし、データサイエンスといったら形態素解析が必要になることがあるし、形態素解析といったらMeCabだし――ということで、今回はPythonでのMeCabの処理を少しでも速くする豆知識を共有したいと思います! parseToNodeを捨てよ parseを使おう MeCabの解析結果を得るにはparseとparseToNodeの2つのメソッドがあります。 わたしはもっぱらparseToNode使ってたのですが、なんか遅いなーって思って、本当に遅いのか確かめるために処理時間測ってみました。現実的な設定でやった方が実用的だと思ったので、今回は夢野久作のドグラマグラから名詞を抽出することにします。 コード import MeCab tagger = MeCab.T
きっかけ Python 3 では変数や関数の名前にASCII文字以外が使えるので、たとえばこんな風にコードを書くことができます。 import numpy as np def σ(a): return 1 / (1 + np.exp(-a)) φ = np.array([1, 0, 1]) w = np.array([1, -1, 0.5]) σ(np.dot(φ, w)) ちょっとだけ数式っぽくないですか? 今まで phi って書いてたのが φ ってそのまま書けるんです! 今まで予約語の lambda と被らないように LAMBDA とか l とか書いて回避してたのを λ = 0.5 って書けたらうれしくないですか! ってなると、 「わーい!ギリシャ文字とかいっぱい使いたい!」 ってなりますよね? 問題 ところが、、、 >>> ∆ = 100 File "<ipython-input-2
NLTK 3.1でSentiment analysis関連が追加されたので試してみました。 * 3.1時点での話だから今後古くなるかも...† NLTKって? Natural Language Tool Kit という自然言語処理・テキストマイニングの学習や実験に向いてるPython用ライブラリのこと。 品詞タグ付けや構文解析、情報抽出、意味解析などが簡単にできるようになっていて、オライリーから出ている入門自然言語処理の題材にもなってます。 Sentiment analysisって? ざっくりいうと文が positive/negative (快/不快あるいは肯定的/否定的) であるかを判定すること。 日本語だと評判分析と呼ばれてたり。 あくまでも2極だけをみるので喜怒哀楽・恥ずかしい・怖いみたいな違いはわからないけど、そこまで細かく知る必要がないときには使えます。 nltk.sentime
MeCabには制約付き解析という機能がありますが、これについて説明している記事がほとんどなかったので手探りで試してみました。 MeCab 0.996 Python 3.4 mecab-python3 0.7 制約付き解析とは 入力文の一部の形態素情報が既知である、あるいは境界がわかっているときに、 それを満たすように解析する機能です。 たとえば、「にわにはにわにわとりがいる。」という文に対して、「はにわ」の部分が名詞であるとか、「にわとり」の部分が一つの形態素であるというように指定した上で解析することができます。このとき、制約に反する4文字目の「は」が単独で形態素となったり、「にわとり」が「にわ」と「とり」に分割されるような解析候補は排除されます。 制約付き解析 (部分解析)より 形態素境界の制約をつける 文の一部の形態素境界がわかってるときに、その部分を一つの形態素として扱って解析するよ
Pure PythonなRakuten MAを書いたのでその紹介記事です。 Rakuten MAとは Rakuten MAは、楽天NLPプロジェクトさんによるJavaScriptの形態素解析器です。逐次でオンライン学習して手軽にモデルを更新できる点やブラウザを介してクライアント側から形態素解析ができる点などが特長だと思います。 詳しくは、以下の記事の説明がわかりやすいです。 本家 Rakuten MA 日本語ドキュメント パソコン工房のPCで遊ぼう第2弾! あんちべさんと一緒に Rakuten MA で形態素解析 - はてなニュース RakutenMAによる形態素解析入門 - あんちべ! Python版 Rakuten MA そんなRakuten MAをPythonで使いたいと思ったので、Python版を書きました! $ pip install rakutenma でインストールできます。
このページを最初にブックマークしてみませんか?
『@yukinoiのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く