エイエイレトリック

なぐりがき

NLP2024 読んだ・聴いた論文メモ

nlp

いつの間にか月が変わってしましましたが、2024年3月に言語処理学会第30回年次大会 に参加したので、論文紹介をします。 言語資源・評価手法関連が多いです。 サイトの上から順に選び、聴講の際も時系列に沿ってメモしていたので、それに従った順番に紹介し…

# Spacy + fastAPI に locust で負荷試験を実行する

前回の記事で、 Spacy のモデルがメモリリークすることを調べました。 fastAPI で Spacy を動かしたとき、メモリがどれぐらい増加するのか確認します。 コードは Github にあげています。設定を諸々変えたので現状プルリクのままマージしていません。 github…

# Spacy で実行のたびにメモリ消費量が増える問題

nlp

Spacyのメモリ消費と実行時間の調査をしました。Vocab クラスのメモリを圧迫する問題もまとめました。

# Django と DRF の TestCase を使いこなす

Django Advent Calendar 2023 の12日目の記事です。 前日は @ryu22e さんの Django 5.0 主な変更点まとめ #Python - Qiita でした。 問題意識 普段から Django と Django REST Framework (DRF) を使っているのですが、テストケースを書く際、いろんな TestCa…

# 日本語係り受け解析器 J.DepP を google colab で動かす

nlp

高速で実行可能な日本語の係り受け解析ライブラリがないか調べていたところ、 J.DepP という 日本語係り受け解析器を見つけたので、紹介します。 C++で実装されているのもあり、かなり高速に動作する印象です。 サイトに記載されている通りに実行してもイン…

# difflib の Differ, HtmlDiff を使ったテキストの差分出力

日本語テキストの差分を python で可視化する方法を考えます。 ほぼ同じだけど微妙に違うファイル同士を比較する時、目diffだと限界があるので可視化するのが良いです。 なるべく楽に、 標準ライブラリの difflib で実装することを考えます。 この記事は pyt…

# Next.js で TinySegmenter と kuromoji.js を実行する

以前、 Next.js で作成したページを versel にデプロイしました。 eieito.hatenablog.com せっかくなので、 javascript を使った NLP を色々試しています。 コードは private repository で管理しているので、ブログで実装を紹介します。 ちなみに Next.jsの…

# Next.js のチュートリアルがよかった

Next.js のチュートリアルページ (https://nextjs.org/learn/foundations/about-nextjs) で Next.js を一通り勉強しました。 I just got 210 points✨ on https://t.co/o52af0XFrz チュートリアルにポイントが表示されていて最後まで進みたくなる仕組みになっ…

都道府県・市区町村をgeopandasで可視化

市区町村の読みって意外と曖昧性があるなと気づき、調べてみることにしました。 市区町村の位置を可視化するにあたり、geopandas を使ってみたのでメモします。 詳細については一番下にgistで埋め込んでます。 要点 課題 (未解決) 可視化結果 都道府県の可視…

DjangoCongress2022 でドキュメント生成について発表しました

https://django.connpass.com/event/259310/ より 11/12に DjangoCongress2022 で「OAI3を使ったDjango REST frameworkのドキュメント生成とカスタマイズ」というタイトルで発表しました。 朝イチの発表にも関わらず、聴講してくださった方々、ありがとうご…

djangoのFileBasedCacheの使い方と仕組み

FileBasedCache の使い方と仕組みについてメモします。 データベースを用意するまでもないけど、情報をキャッシュしたいときによさそうです。 ファイルで出力するのでキャッシュしたかどうか、キャッシュが残っているかどうかがわかりやすいためデバッグしや…

pythonのunittest.Testcaseでmockする・patchする

テストコードで活躍する mock。 だが毎回 これってどこをmockすればいいんだ…… と必要以上に mock.patch を書いてしまいます。 python の公式ドキュメントや解説記事では、mock 単体の振る舞いについて紹介していることが多く、最初の頃は でも実際どう組み…

textlintのインストールから新しいルール作成までやってみた

textlintを使ったルールを作成しようと四苦八苦したので作業ログを残しておこうと思います。 javascript初心者 (簡単なチュートリアルを一通り終えた程度) が実装していることを先に述べておきます。 MacBook Pro、macOS 12.4 Montereyで確認しています。 np…

NLTKのngram言語モデルを日本語データで使う

以前の記事で、古典的ngram言語モデルについて、NLTKを利用し、英語データセットの結果をまとめました。 eieito.hatenablog.com 単語を分かち書きさえすれば日本語でも実行可能なので、日本語データセットでパープレキシティを算出していきます。 データ 学…

ngram言語モデルについてまとめる (neural language model)

4記事にわたり、複数の古典的ngram言語モデルについて試しに実装してきました。 torchtextのデータセットを使ってきたので、pytorchで簡単な言語モデルを作ってみます。 元となる論文があるわけではないですが、ネット上に多数実装が多数あるので、それらを…

ngram言語モデルについてまとめる (Interpolated Kneser–Ney smoothing)

eieito.hatenablog.com 前回、NLTKで動かしてみた Interpolated Kneser–Ney smoothing (長いので以降 Interpolated KNと略します) をpythonで実装してみました。 詳細は gist にアップロードした notebook に記載しています。(二度手間になるのでnotebook …

ngram言語モデルについてまとめる (NLTKのngram言語モデル)

Kneser-Ney smoothing を実装しようと調べていたところ、NLTKで実装されていたのでNLTKのngram言語モデルの使い方についてまとめます。 前処理にちょっと癖があるものの、エントロピーなど数値の算出が共通化されているのでモデルごとの違いを比較しやすい気…

ngram言語モデルについてまとめる (ヘルドアウト推定・Good-Turing)

前回に続いて、古典的な言語モデルについてpythonで実装して比較していきます。 eieito.hatenablog.com add-one や ELE は下の式をベースに、対象の単語の ngram と (n-1)gramの 頻度 を使って確率を求めていた。 今回は頻度 r に注目した手法です。 未出現…

ngram言語モデルについてまとめる (add-one)

サイコロ本 (統計的自然言語処理の基礎) で確率的言語モデル(ngram言語モデル) のバリエーションについて少し勉強したので、実装して比較してみます。 ngram言語モデル スムージング 1-加算 (add-one) Lidstoneの法則 実装 前処理 データ tokenizer vocab co…

mecabの制約付き解析(部分解析)のエラー

mecabの制約付き解析(部分解析)を使おうとしたら結構詰まったのでエラーとその解決策についてメモします。 前提知識 mecabの --partial (-p) オプションを使うと辞書に登録されてない単語でも解析できます。 $ mecab 例えばコ↑レ↓を名詞にしたいときがある…

django rest frameworkのschema自動生成の仕組みとカスタマイズ方法

Django REST framework (DRF) は Django で Web APIを構築するのに便利なパッケージです。 schema (スキーマ) を使えば OpenAPI (Swagger) のフォーマットでドキュメントを生成することができます。 この記事では、drfでどのようにスキーマが生成されるのか…

気軽に使えるngramデータ「日本語ウェブコーパス 2010」を使ってみる

nlp

自然言語処理向けの日本語のデータって思ったよりも少ない気がします。 特に研究用途でのみ許可されているコーパスが多く、趣味で試したい時にどのデータを使うかで結構時間を使ってしまいます。 「日本語ウェブコーパス 2010 」はテキストデータに関しては…

アルファベットをカタカナに変換するpythonパッケージalphabet2kanaを公開しました

TL;DR 機能 経緯 関連パッケージ python-romkan alkana.py poetryを使ってpypiに登録する TL;DR ありそうでなかった、アルファベットをカタカナに変換するや〜つを作りました。*1 github.com ABC を エービーシー に変換します。 読みの付与に使うことを目的…

scikit-learnにmecab日本語分かち書きを組み込む方法

nlp

pythonで (深層学習ではない) 機械学習をするとなるとまず使うのがscikit-learn、さらに扱うデータがテキストとなると大体の場合 CountVectorizerや TfIdfVectorizer といった特徴量抽出 feature_extraction.text で前処理を行うことが定番だと思います。 し…

EMNLP2020読んだ論文メモ

EMNLP2020の論文を去年から少しずつ読んでいたので、メモをまとめてブログにあげます。 2020.emnlp.org 気になった論文をチョイスしているので、いつもはタスク提案・メタ分析・固有表現 (NER) の論文を選ぶことが多くなってしまうのですが、今のご時世もあ…

Python「ytmusicapi 」で音楽をYoutube Musicにアップロードする

前置き 〜Google Play Musicのエクスポート〜 Google Play Music のサービスの年内終了が決まり*1、今月になって自分のアカウントも音楽を利用できなくなってしまいました。 長年音楽プレイヤーとして愛用していただけに残念です。 実は普段使っているGoogle…

再訪Pythonチュートリアル

ある程度、他の言語を経験したことがある場合、新しい言語のチュートリアルは流し読みしても問題ないことが多いです。 かくいう自分もPythonチュートリアルをちゃんと読んでこなかったので、改めて精読してみました。 実際に読んでみると、結構気づきがあっ…

機械翻訳が発展した時代で人間側ができる工夫方法あれこれ

機械翻訳で翻訳できないこととそれに対する(人間側の)解決策について書きます。 工夫方法とタイトルに書いていますが、半分感想文です。 If they give you ruled paper, write the other way. JUAN RAMÓN JIMÉNEZ Fahrenheit 451 by Ray Bradbury. 先日、…

NLTKを使った英語テキストのtokenize

nlp

英語のtokenizeは日本語の分かち書きに比べたら楽なようにみえるが、注意すべき点があるよという紹介をします。 そのために、今回は NLTK (Natural Language Toolkit) を使ってtokenizeします。 (NLTK のVersion 3.5、Python 3.7.4で動作確認しています。) …

言語処理学会 (NLP2020) 読んだ論文メモ3

前々回、前回 に引き続き、今年の言語処理学会年次大会のなかで、読んだ論文を紹介します。 最終日3/19分の論文 (day3)です。 なんとか完走です。 ちなみに今年受賞した論文などの情報は下記の通りです。 年次大会優秀賞・若手奨励賞一覧 https://www.anlp.j…