PHP で ZipArchive を利用したパスワード付き ZIP ファイルを Windows の標準機能で解凍すると、次のエラーが発生することがあります。
(さらに…)エラー 0x80004005: エラーを特定できません
PHP で ZipArchive を利用したパスワード付き ZIP ファイルを Windows の標準機能で解凍すると、次のエラーが発生することがあります。
(さらに…)エラー 0x80004005: エラーを特定できません
前回投稿した gensim についての知識のなさから、最新バージョンに対応した Word2Vec 用のモデルを見つけることができなかったので、自分でモデルを作成することにしました。検索能力の欠如ですね。
今回は Wikipedia の記事を使ってモデルを作成していきます。
まずは WikiExtractor を clone します。
git clone https://github.com/attardi/wikiextractor.git
新しくできた wikiextractor ディレクトリーに移動します。
cd wikiextractor
Wikipedia の記事 (XML ファイル) をダウンロードします。
curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2 -o jawiki-latest-pages-articles.xml.bz2
容量がとても大きいので、このコードで実行するとダウンロードできない場合があります。その場合 Safari から直接ダウンロードします。
ここから本文を抽出していきます。
python setup.py install
python WikiExtractor.py jawiki-latest-pages-articles.xml.bz2
これにもだいぶ時間がかかります。できたら新しくtext というディレクトリができていますが、複数ファイルになっているのでこれを txt というディレクトリにひとまとめにします。
find text/ | grep wiki | awk '{system("cat "$0" >> wiki.txt")}'
これで wiki.txt という一つのファイルになりました。次から Word2Vec 用のモデル作成のためのデータ成形に入ります。
成形には gensim と Mecab を使用します。
pip install gensim
pip install mecab
ここでインストールされた gensimの バージョンは現時点で4.1.2です。数年前に大きな変更があり、バージョン3と4の間には記述方法に大きな違いがあるので注意が必要です。
次に記事を分かち書きしていきます。
mecab -Owakati wiki.txt -o wiki_wakati.txt -b 65536
このコマンド b-65536 という引数は、1行当たりの文字数を表します。デフォルトの設定だと 8192 だそうですが、の状態だと
input-buffer overflow. The line is split. use -b #SIZE option
というエラーが出てしまいます。特にwikipediaはデータが多いので、ここの数値はその都度試していくしかなさそうです。
記事にはバイナリ文字も含まれているので nkf を利用して utf-8 に変換していきます。
ukfのインストールは下記の通りです。
brew install nkf
下記を記述して nkf を使用します。
nkf -w --overwrite wiki_wakati.txt
以上でテキスト成形が終わったのでモデル作成に入ります。モデル作成のためのファイル make_model.py を作成します。そして下記を記述します。
from gensim.models import word2vec
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus('./wiki_wakati.txt')
model = word2vec.Word2Vec(sentences, size=200, min_count=20, window=15)
model.save("./wiki.model")
以上を実行してしばらくすると、wiki.model が完成します。
Word2Vec で遊ぶために gensim で model を読み込もうと思ったら、エラーが出たので対処法を確認しようと思います。
今回 gensim のバージョンは 4.1.2 を使用しました。
model = gensim.models.KeyedVectors.load_word2vec_format('ファイル名', binary=True)
はじめ、このコードで書いたところ下記のようなエラーが出ました。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: inv
(さらに…)macOS Sequoia にアップデートしたら、Google Chrome や Brave など Safari 以外のブラウザーでローカルのウェブページを開くと次のエラーが表示されてしまいます。
(さらに…)This site can’t be reached
http://192.168…. is unreachable.
ERR_ADDRESS_UNREACHABLE
Django でプロジェクトを作成し、その一部で Scrapy を使いたい。そして、Scrapy プロジェクトで Django のモデルなどを参照したい。
(さらに…)表 (table) の表見出し (th) をクリックして表本体 (tbody) の行を並び替えできるようにするためのコードです。
(さらに…)順番付きリスト (OL) や順番なしリスト (UL) のリスト項目 (LI) をドラッグ&ドロップで順序を入れ替えできるようにするためのコードです。
(さらに…)LINE が HuggingFace Hub で公開している日本語言語モデル japanese-large-lm を M1 Mac で動かしてみました。
(さらに…)macOS と Windows のファイル共有は SMB 接続で行い、通信には SMB パケット署名がされます。
しかし、信頼できる LAN でパケット署名が不要な場合は、無効にすることでファイル共有を早くできます。
(さらに…)FreePBX で構築した IP 電話システムは、普通の電話システムと同様に一度受信した通話を別の内線に転送できます。転送方法の設定は機能コード管理で確認できます。
(さらに…)