3-gramの出現頻度、自分でもそれを求めるコードを作って(意外と簡単にできるんですね…と驚いてる)、nwc-toolkitの出力結果と比較してみよう。
OpenBSD(uaa@), Ham(JG1UAA), Ingress(Lv14, RES), Japanese(Sagamihara-city, Kanagawa)
Another side: https://social.tchncs.de/@uaa
npub1rarr265r9f9j6ewp960hcm7cvz9zskc7l2ykwul57e7xa60r8css7uf890
Messages from this Mastodon account can read via mostr.pub with npub1j3un8843rpuk4rvwnd7plaknf2lce58yl6qmpkqrwt3tr5k60vfqxmlq0w
3-gramの出現頻度、自分でもそれを求めるコードを作って(意外と簡単にできるんですね…と驚いてる)、nwc-toolkitの出力結果と比較してみよう。
<S>追加の処理をしてるのはnwc-toolkit-ngram-counterだから、nwc-toolkit-ngram-mergerが何してるかを理解しないと何してるかが分からないことになる…C++よく分かんないんだけど…
自分が使うDMRホットスポットのために社団局立てるにしても、人とカネが要るのでやりたくないし(移動しない局としては持っているけど、今回の改正で「自コール間通信は不可」が明確化されちゃった以上封印してる)…ボッチで電波使った実験をできるのが「ワイヤレス人材」育成のために必要なことだと自分は思うのだけど、どうも総務省はそう考えていないみたいなんですよね。「通信の相手(ヒト)が居てこそのアマチュア無線」だそーで。
無線従事者ですらない者が技適警察を名乗って叩きに来るのも鬱陶しいんですが、アマチュア無線の場合アマチュア無線家が「それって電波法違反では?」と電波法警察になって叩きに来るので本当に頭が痛いです。自局間(自コール間)通信不可の件も、自分で自分の首を絞めた結果…いちいちそんなこと言わなければグレーゾーンのまま今でも可能だったかもしれないのに。
このアカウントは、notestockで公開設定になっていません。
やっぱ技適警察は滅ぼさないといけない気がする。アマチュア無線に対する脅威にもなりかねないし。
RPi5買ったことに対して技適警察が動いてる、と曲解して良いのかな。RPi5(話題のデバイス)を手にできなかったやっかみを、技適の名の下に断罪して持ち主を叩くみたいな。
Googleですらそういう状況なら、日本においてはもう*検閲済み*としか言いようがないな…明日に期待するだけ、無駄なのかも。
※相変わらずだーくもーど。
このアカウントは、notestockで公開設定になっていません。
このアカウントは、notestockで公開設定になっていません。
Linuxの(OpenBSDにこれは無い)splitって、--filterで分割したファイルに処理掛けられるのか。これだよこれ… https://linuxcommand.net/split/#_--filter
1TのSSDで足りるさと思っていましたが、見立て甘かったです…><
このアカウントは、notestockで公開設定になっていません。
とりあえず、今日は寝ている間に仕事させることにしちゃいました…
wcで行数数えて、split -lで適当に切る手がありますね…(圧縮解くとディスクの空き容量が心配になるんだけど、余裕はなんとかありそうだし…)
このアカウントは、notestockで公開設定になっていません。
MeCabのC++ライブラリを使ってみた(C++11のマルチスレッドに触ってみた) (2013/2/6) https://sucrose.hatenablog.com/entry/2013/02/06/201930 「一応強調しておきますが、たぶん単純に形態素解析の速度を速くしたいならファイルを分割して別々のプロセスとしてMeCabに投げたほうが速いと思われます。」 えぇ…
入力ファイルがja.txt.xzと固まったまま(ディスク容量を考えると展開したくない)というブツなので、xzcat ja.txt.xz | mecab-mtみたいな形でぶち込んだ際にmecabより速いぜとかそういうのが欲しいんだってばあああああああ
MeCabの分かち書きを並列処理で高速化する (2021/7/18) https://zenn.dev/hpp/articles/255de192c6d4c3
入力した文と出力した文の順序が多少狂っても、どうせN-gram作るのでその程度の用途ならめちゃくちゃ速くなるぜーといった感じでマルチスレッド化したMeCabというのがすごく欲しいんだけど…やっぱparallelで切るしかないのかなあ?
@sleeping_coelacanth となると、あとは言語系でもサポートしてほしいところではありますね…(情報感謝)
他のツールに頼るならその部分は標準的な手法で、で線を引くしかないか。マージが必要だと言ってるならマージはする、自分のツールにマージする機能があってもそれは使わない。言い方が悪いけど、線引きをしないと自分が悪いのか相手が悪いのか分からなくなってしまう。
uaa@emeraude:~/cc100-libkkc$ grep "ぁ/ァ いる/イル" 3gm.ngms
<S> ぁ/ァ いる/イル 13
ぁ/ァ いる/イル しか/しか 1
ぁ/ァ いる/イル で/で 4
ぁ/ァ いる/イル です/です 8
ぁ/ァ いる/イル と/と 1
ぁ/ァ いる/イル に/に 12
ぁ/ァ いる/イル めい/名 1
uaa@emeraude:~/cc100-libkkc$ grep "ぁ/ァ いる/イル" 3gm.ngms-temp
<S> ぁ/ァ いる/イル 7
ぁ/ァ いる/イル で/で 1
ぁ/ァ いる/イル と/と 1
ぁ/ァ いる/イル に/に 5
ぁ/ァ いる/イル めい/名 1
uaa@emeraude:~/cc100-libkkc$
うーん、分割されたコーパスから単に3-gramだけ切り出すだけではダメで、ngram-mergerを通さないといけないなんらかの理由がありそう。
AI対応って言うなら、GPUだけでなくCPU側(FPU/SSE/AVX)辺りもbfloat16対応を入れないんですかねー?とは思っているんだけど流石にやらないんですかね…?
3-gramだけ純粋に拾ってくるか、(おそらく)1-gram, 2-gramに<S>付けて3-gram化したのを作ってくるかの違いという気が、なんとなくする。とはいえ、ngram-mergerにそんな機能があるようには見えないんだけど…?(ngram-counterがちゃんと3-gramを作るはずなのでは?って思う)
Socket7の時代のベンチマークって、本当にそのスコア出たんですかっていう疑惑がなんとなーくあるんですが、どうだったんですかね…?(ベンチマーク取ったのと完全に同じ機材ならそのスコア出るんですかね…?)
少なくともOpenCLを使う上では、Intel(iGPUもArcも)はそんなに面倒でなかったというのは好感が持てるんだけど。AMDはちょっと面倒だった記憶が。NVIDIAはそこまで使い込んでないので不明(GT1030で何かをしようという気にはならなかったので)。
ん-む…
nwc-toolkit-ngram-mergerを通した方が「何か」の欠損はない
grepを通すと《何か》が欠損する
手順が確立できないぬぅ…
お酒足りませんね?と言いたいところですがこれ以上飲むと多分落ちます(落ちてる方が世界にとっては良いのかもしれませんけどw)
(あの時代にCyrixだのTseng Labsだのを使っていた身なのでね、性能が高ければ絶対正しいという思想は相容れないのですよ…)
まあゲハ厨はゲーム機でも大人しく買ってりゃいいんじゃないんですかね?あくまでも自分はPC自作派の目線なので、パフォーマンスが多少アレでも選択肢が増えることを善と考えていますから。
てーかさー、Arc程度で呪物扱いとか言ってるようじゃ、Socket5~7の時代のマイナーメーカーなVGAチップ(当時はGPUなんて呼称は無かったので)はどれも呪物扱いになっちゃうんだけど。RenditionとかSiSとか、PowerVRですら呪物だよ?
Pentium4の時代からHyper-Threadingは存在しているけど、あの時代にそこまでセキュリティについて考えていたかというと多分考えてなかったと思う。PCは一人に一台という前提であり、仮想化で複数のインスタンスをまとめるなんてことは想定してなかったんじゃ…
Arcってそんなに特級呪物とかdisられる出来なんすかね?(なんて書こうものなら信者扱い…これだからゲハ厨は)
Raptor Lake GPUもFP64は通っていたような気がする(のにArcは通らない…)
GUIを実現するtoolkitとかライブラリ(およびそれをアプリ作成者がきちんと扱えるか)の問題なので、Delphi自体の問題ではないって気はするけど…
某アプリ(詳細は伏せる)、Windows上のアプリの割にWindowsの作法に従っていない箇所が結構あって…マウスのホイールを回してもカーソルが上下するだけで項目がスクロールしないとか、ダブルクリックで決定するのが適当な箇所に対してシングルクリックで決定してしまうとか、shift+↓で範囲選択する場合は文末に改行が入っていないと文末まで選択できないとか…とにかく操作していると段々ストレスが溜まっていく代物だったんですよ💢
で、一体何の開発環境で作られたんだろうと思って調べてみたらどうもDelphiっぽいなって。でも、いくらなんでもDelphiだからってそんな阿呆な作りにはならないと思いたいんだけどねえ。
(かつてボーランドが出していた)Delphi使った有名どころのアプリって何があるんだろう
git push -fはたまに使ってます(ごめんなさいごめんなさい)
このアカウントは、notestockで公開設定になっていません。
当時の画像が残っている(そしてそれが今でも伝わっている)とは…ただただ驚くばかり。
これすごいな。こんなん実際に見たらめっちゃこわい。
https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E3%83%BB%E3%83%98%E3%83%83%E3%83%89%E3%83%AB%E3%83%BC%E3%83%A0%E4%BA%8B%E4%BB%B6
ネオン管広告が廃れていく時代だからこそ、敢えてネオン管で(ネオン管風ではなく、ホンモノのネオン管を使って)広告を出すのが一番ヤバい気がする。
やっぱ特許っぽいな。10年くらい前だから…特許が切れた後はどうなるんだろう。他社もこういうLEDをケチる方向へ進むのか、逆にケチケチ路線は滅んでいくのか。 https://avix.co.jp/company/patent/
個人的な好みを書いちゃうけど(あくまでも個人的な好みの話ね)、ああいうLEDをケチった電光掲示板(表示器)って嫌い。表示内容をスクロールさせることで必要とするLEDの数と消費電力を減らし、安価に提供できることは評価するけど、でもそれだけ。単に文字情報を流すだけの用途で使うならともかく、看板(お客さんを呼ぶ用途)で使うものじゃないと思う。
店舗用LED看板、電光掲示板を14日間無料お試し!(2017/06/21) https://kai-gyou.com/dps150/ https://www.youtube.com/watch?v=1bhLk_bDZ3Q から、AVIX DPS-150 https://avix.co.jp/digitalsignage/lbb/ って…さっきのPole Visionと同じメーカーじゃん。LEDケチるのってこの会社の特許か何かなのかなあ。
Pole Visionって製品があるのか。 https://avix.co.jp/digitalsignage/ledvision/polevision/
「ポールビジョンは、LED(発光ダイオード)の光を移動させることにより、実際に光っていない部分も光っているような錯覚を与える、目の残像を利用した画期的な設計です。この技術により、LED数を既存表示機の約1/7にするなどコストパフォーマンスを実現しました。」
2m×8mで24本の表示ユニット…ジャパンニューアルファで使ってたのはこれなのかなあ。
こういうケチな(LED数を省いた)電光掲示板って、なんか総称あるのかなあ。名前が無いと不便だし検索しようもない。
そういえば、かつてのジャパンニューアルファ(相模原)みたいに、LED数をケチった電光掲示板って最近どの程度あるんでしょうかね?こんな感じに全面LEDじゃなく棒状のがいくつか並んでるタイプの奴(なので表示内容はスクロールする文字に限られる)
DSA2020 久光製薬 渋谷スクランブル交差点前LED看板
https://digital-signage.jp/openevent/award/dsa2020-hisa410/
フランス人はクロワッサンに保守的でイタリア人はスパゲティに保守的で、アメリカ人はハンバーガーの具の順番に保守的。
ある国民がもっとも保守的になる料理こそ、その国民のアイデンティティ料理である、という仮説を立てた。
この仮説に基づいて日本人のアイデンティティ料理は何かと考えてみたら、寿司ではなさそう。
日本人はわりとアレンジ寿司に寛容だから。
白ごはんに対してはけっこう保守的に思える。
でも、一番保守的なのは、私の主観だけど、サシミじゃないかと思う。
九州の甘い醤油のサシミさえ許さない人は許さないから。
トロにマヨネーズも結局、市民権を得ていない。
uaa@emeraude:~$ time nwc-toolkit/build/nwc-toolkit-ngram-counter -e txt -n 3 24576 -bs ja.mecab.txt.gz
nwc-toolkit/build/nwc-toolkit-ngram-counter: invalid option -- 'e'
nwc-toolkit/build/nwc-toolkit-ngram-counter:/home/uaa/nwc-toolkit/tools/nwc-toolkit-ngram-counter.cc:152: invalid option
real 0m0.006s
user 0m0.006s
sys 0m0.001s
uaa@emeraude:~$
nwc-toolkit-ngram-counter、バグみっけ。getopt_long()の引数がこれなので"-e"オプションが使用不可…出力結果はどう頑張っても.gz圧縮から変更できない(ドキュメントでは他形式の圧縮 or 圧縮offができることになってる)。 https://github.com/xen/nwc-toolkit/blob/master/tools/nwc-toolkit-ngram-counter.cc#L85
grep "いたっ/至っ た/た はなし/話";done
ngms-temp.0000.gz
grep: (標準入力): binary file matches
これは…検索キーワードと検索対象の問題なのかなあ。これ以外の検索では出てきてないし(ちょっと気持ち悪いとは思ってる)。
ん-む…nwc-toolkit-ngram-mergerを通す必要はありそうなんだけど、その結果がきちんとマージされていない感じなんだよな。
uaa@emeraude:~/cc100-libkkc$ zcat ngms.gz |grep "いけい/畏敬 の/の きもち/気持ち"
いけい/畏敬 の/の きもち/気持ち 21
いけい/畏敬 の/の きもち/気持ち 13
いけい/畏敬 の/の きもち/気持ち 25
uaa@emeraude:~/cc100-libkkc$
uaa@emeraude:~/cc100-libkkc$ for i in ngms-temp.000*;do echo $i;zcat $i | grep "いけい/畏敬 の/の きもち/気持ち";done
ngms-temp.0000.gz
いけい/畏敬 の/の きもち/気持ち 13
ngms-temp.0001.gz
いけい/畏敬 の/の きもち/気持ち 11
ngms-temp.0002.gz
いけい/畏敬 の/の きもち/気持ち 17
ngms-temp.0003.gz
いけい/畏敬 の/の きもち/気持ち 10
ngms-temp.0004.gz
いけい/畏敬 の/の きもち/気持ち 8
uaa@emeraude:~/cc100-libkkc$
データクリーニング用に考えてたコードの警告はduplicate key detected (いたっ/至っ た/た はなし/話)までで止まってる…「ん」とかで始まるキーが無いのが謎。
uaa@emeraude:~/cc100-libkkc$ zcat ngms.gz |grep "あくじ/悪事 を/を はたらき/働き"
あくじ/悪事 を/を はたらき/働き 111
あくじ/悪事 を/を はたらき/働き 112
uaa@emeraude:~/cc100-libkkc$
これはちゃんと総和になってる
aa@emeraude:~/cc100-libkkc$ for i in ngms-temp.000*;do echo $i;zcat $i | grep "あくじ/悪事 を/を はたらき/働き";done
ngms-temp.0000.gz
あくじ/悪事 を/を はたらき/働き 46
ngms-temp.0001.gz
あくじ/悪事 を/を はたらき/働き 64
ngms-temp.0002.gz
あくじ/悪事 を/を はたらき/働き 44
ngms-temp.0003.gz
あくじ/悪事 を/を はたらき/働き 48
ngms-temp.0004.gz
あくじ/悪事 を/を はたらき/働き 21
uaa@emeraude:~/cc100-libkkc$
uaa@emeraude:~/cc100-libkkc$ for i in ngms-temp.000*;do echo $i;zcat $i | grep "<S> いあい/居合 ぎり/切り";done
ngms-temp.0000.gz
<S> いあい/居合 ぎり/切り 3
ngms-temp.0001.gz
<S> いあい/居合 ぎり/切り 1
ngms-temp.0002.gz
<S> いあい/居合 ぎり/切り 1
ngms-temp.0003.gz
ngms-temp.0004.gz
<S> いあい/居合 ぎり/切り 1
uaa@emeraude:~/cc100-libkkc$
これは合ってるな。
uaa@emeraude:~/cc100-libkkc$ zcat ngms.gz |grep "<S> いあい/居合 ぎり/切り"
<S> いあい/居合 ぎり/切り 1
<S> いあい/居合 ぎり/切り 3
<S> いあい/居合 ぎり/切り 1
<S> いあい/居合 ぎり/切り 1
uaa@emeraude:~/cc100-libkkc$
e3 81 84 e3 81 9f e3 81 a3 2f e8 87 b3 e3 81 a3
20 e3 81 9f 2f e3 81 9f 20 e3 81 af e3 81 aa e3
81 97 2f e8 a9 b1 09 36 34 0a
e3 81 84 e3 81 9f e3 81 a3 2f e8 87 b3 e3 81 a3
20 e3 81 9f 2f e3 81 9f 20 e3 81 af e3 81 aa e3
81 97 2f e8 a9 b1 09 31 39 0a
同じだな…んでもって、最初のエントリが正しい。
00000040 81 9f 20 e3 81 af e3 81 aa e3 81 97 2f e8 a9 b1 |.. ........./...|
00000050 e3 81 97 09 31 0a e3 81 84 e3 81 9f e3 81 a3 2f |....1........../|
00000060 e8 87 b3 e3 81 a3 20 e3 81 9f 2f e3 81 9f 20 e3 |...... .../... .|
00000070 81 af e3 81 aa e3 81 97 2f e8 a9 b1 09 31 39 0a |......../....19.|
00000080
uaa@emeraude:~/cc100-libkkc$
uaa@emeraude:~/cc100-libkkc$ zcat ngms.gz |grep "いたっ/至っ た/た はなし/話" |hexdump -C
00000000 e3 81 84 e3 81 9f e3 81 a3 2f e8 87 b3 e3 81 a3 |........./......|
00000010 20 e3 81 9f 2f e3 81 9f 20 e3 81 af e3 81 aa e3 | .../... .......|
00000020 81 97 2f e8 a9 b1 09 36 34 0a e3 81 84 e3 81 9f |../....64.......|
00000030 e3 81 a3 2f e8 87 b3 e3 81 a3 20 e3 81 9f 2f e3 |.../...... .../.|
uaa@emeraude:~/cc100-libkkc$ zcat ngms.gz |grep "いたっ/至っ た/た はなし/話"
いたっ/至っ た/た はなし/話 64
いたっ/至っ た/た はなし/話し 1
いたっ/至っ た/た はなし/話 19
uaa@emeraude:~/cc100-libkkc$
二番目はともかく三番目のエントリは?(一番目のエントリは個別の合計になってるみたいだけど)
uaa@emeraude:~/cc100-libkkc$ for i in ngms-temp.000*;do echo $i;zcat $i | grep "いたっ/至っ た/た はなし/話";done
ngms-temp.0000.gz
grep: (標準入力): binary file matches
ngms-temp.0001.gz
いたっ/至っ た/た はなし/話 20
ngms-temp.0002.gz
いたっ/至っ た/た はなし/話 17
ngms-temp.0003.gz
いたっ/至っ た/た はなし/話 17
ngms-temp.0004.gz
いたっ/至っ た/た はなし/話 10
uaa@emeraude:~/cc100-libkkc$
何故バイナリが吐き出されるのかが、一つ目の謎。
https://twitter.com/PutStickerOn/status/1709829746257998203 から。
秘密の NTT 電話局、フレッツ光、およびインターネット入門 (1) 登 大遊 (2023/6/10)
https://dnobori.cyber.ipa.go.jp/ppt/download/20230610_soumu/230610%20%E8%AC%9B%E6%BC%94%20%E7%AC%AC1%E9%83%A8%20(%E7%99%BB)%20-%20%E9%85%8D%E5%B8%83%E8%B3%87%E6%96%99%E3%81%9D%E3%81%AE1%20-%20%E7%A7%98%E5%AF%86%E3%81%AE%20NTT%20%E9%9B%BB%E8%A9%B1%E5%B1%80%E3%80%81%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89%E3%80%81%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E5%85%A5%E9%96%80.pdf
…(1)ってことは、それ以降もあるってこと??
Matecam-X7/X9のどっちなんだろう。https://www.aliexpress.com/item/1005005528550512.html
うーん、ngram-counter、ソート無しでも分割が掛かってしまうな。ふむ。
ヘンな事件を起こす輩のおかげで、SBCやWiFi/カメラモジュールの入手に制約を掛けたがる馬鹿共(と敢えて書く)が活発化しないことを願いたいもんだ。
ESP32-CAMなんてあるみたいだし、M5Stackに適当なカメラ付けてというのもあり得ない話ではない気がする。 https://www.aliexpress.com/item/1005005938095636.html
なるほど…これが「メモリ32GBでも足りない事態」って奴か…どうしろと(増やそうにもお金が)。
自分はChatGPTとかStableDiffusionとか使ったことがないので悔い改めないといけないなあ。異教徒とか、非国民とか、そういう扱いなんだろうなあきっと。
このアカウントは、notestockで公開設定になっていません。
nwc-toolkit-ngram-counter、ソート無しで、できれば分割無しで生成するケース/分割して生成するケースで結果を見比べてみるか…?
nwc-toolkitのnwc-toolkit-ngram-mergerってちゃんとマージできてるのかなあ…なんか挙動が???というところがあって。
自分でマージしちゃう方が実は確実だったりするのかなあ。
分割されているコーパスをnwc-toolkit-ngram-merger ngms-*.gz -o ngms-out.gzで統合するのに40分。zcat ngms-out.gz | awk '$4 {print $0}' > 3gm(単純化しました)で3-gramを取り出して、 02-Oct-2023と同様にN-gram(3-gram)の異なり数を出してみます。未知語の扱いをどうするか考える必要があるので、未知語有り/無しの両方で調べてみます。
ボツ原稿です(多分今日の日記は存在しない)。
形態素解析後は、nwc-toolkit-ngram-counter -n 3 -l 24576 -bs ja.mecab-neologd.txt.gzでコーパスを作ります。01-Oct-2023と異なり、sオプションでnwc-toolkit-ngram-counterにソートを行わせます(ディスクの空きが厳しいので無圧縮は試しません)。今回はソートも行ったせいか出力されるファイルは複数になり、ファイルサイズの合計は8.5GB。実行終了時のステータスはsentences: 592537732, tokens: 14308722796 (x24.15) (13259sec)で、作業にかかった時間は4時間。
Unicode正規化→一文ごとに切り出し→読み仮名付きで形態素解析→libkkc用にフォーマットを変更→圧縮保存を、nwc-toolkit-unicode-normalizer ja.txt.xz | nwc-toolkit-text-filter | mecab -F "%m\t%f[7]\t" -U "<UNK>\t<UNK>\t" -E "\n" -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd | convert_yomi | gzip -c > ja.mecab-neologd.txt.gzで行います。mecabの-dオプションにあるようにNEologd辞書を使用し(-aオプションで全部入りの辞書を使っています)、スペース(' ')を含む単語への対策として単語の区切りはタブ(\t)を用い、変換候補にできない単語は削除せず未知語(<UNK>)としました。作業完了には6時間を要し、ja.mecab-neologd.txt.gzは44GBになりました。
今日の日記(ボツ)
wc2010-libkkcは既に形態素解析が済みコーパス化されたデータに読み仮名を無理矢理付けて辞書化していますが、形態素解析の時点で読み仮名を付けることができる以上、オリジナル(libkkc-data)の辞書はこの方法で作っているのではないか…と前々から気になっていたので、試してみることにしました。
という訳で、手順をメモしながら辞書を作っていきます。今回作ったツールはconvert_yomiだけです。ソースはこちら。
ポイントは現金として取り返せない(お金を預けてるようなもんだ)から確かにポイント還元されても実際に安いかというとなんか違う気がする。別の物買えばお得なんだろうけど、「今そこで」別の物買うかどうかなんて分からないし、ポイントを預かっているお店が存続し続ける保証だって無いんだし…お店があってもポイント制度が消える/変わる(目減りする)可能性だってゼロじゃないよねえ?
このアカウントは、notestockで公開設定になっていません。
うへぇ、こりゃあports unlockしても慌ててupdateする訳にはいかないじゃないか…
このアカウントは、notestockで公開設定になっていません。
6時間で終わってた。ファイルサイズは44GB(ja.txt.xzの3倍)。
mecab+neologd辞書で形態素解析+各要素にlibkkc仕様のよみがなを振って(変換対象にできないものは<UNK>化する)、これをコーパス化→辞書作成というのを試そうとしている。
今まで試していた形態素解析済・3-gram化した物に後付けで読みを付けるのは緊急的な手段であり、本来であれば形態素解析時に読みを付ける方が適切なんじゃない?って前々から思っていたので。
mecab辞書の特性なのかは分からないけど、カンマ区切りCSV使っているからか…単語に半角スペースが入るケースがあるみたい。なので、トークンの区切りに半角スペースを使うのではなく、タブかカンマで区切るのが良さそう(タブ使ってみた)。
uaa@emeraude:~$ nwc-toolkit/build/nwc-toolkit-unicode-normalizer ja.txt.xz |nwc-toolkit/build/nwc-toolkit-text-filter |mecab -F "%m\t%f[7]\t" -U "<UNK>\t<UNK>\t" -E "\n" -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd |cc100-libkkc/src/convert_yomi |gzip -c > ja.mecab-neologd.txt.gz
こんな感じで一日くらい回してみるか
[install-mecab-ipadic-NEologd] : Usage of mecab-ipadic-NEologd is here.
Usage:
$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd
で使えるのかな?
./bin/install-mecab-ipadic-neologd -n -a 全部入りにする
逆順にして
mecab --node-format="%m %f[7] " --unk-format="<UNK> <UNK> " --eos-format="\n"
「語」「読み」順にするか…「語」に問題があれば「読み」の変換は不要だし。出力時に「読み/語」にしちゃえば良いんだから。
mecab --node-format="%f[7] %m " --unk-format="<UNK> <UNK> " --eos-format="\n"
の方が良いかなあ。トークンは2個単位で「読み」「語」の順。
後付けの読み仮名も良いんだけど、形態素解析側で読み振ってくれて辞書も変えられるならそっちで処理してもらう方が良いよねえ。
mecab側の知らない単語は<unk>で出すとして、その後の読み仮名修正/候補として適切かチェック(基本的にかな/カナ/漢字を対象としそれ以外の文字…記号英数他は非対象とする)の際に不適切な物は<unk>で刎ねるようにするとかそんなフィルタを書けば良いのかな。
くっそくっそ…Fonts66のセール乗り遅れた…次こそは… https://uzurea.net/fonts66-completepack-98off-202309/ 日本語フォント109書体入りで2,980円(98%OFF) 『Fonts66』2023年9月28日までのセール デザイナー鈴木竹治が手掛ける (2023/9/16)
やっぱ<unk>の扱いをどうするかは頭が痛いな。<unk>の絡んだものはとりあえず<unk>突っ込んだまま流すか、全て切るか…単語レベルなら変換しようもないので切るんだけど、2-gram, 3-gramの場合は連なりとして考えないといけないから切ることが正しいのか不明(libkkc側が<unk>をどう扱うかって問題もある…<s></s>と同様っぽいけど)
ヴはそのままに、それ以外をカタカナ→ひらがな変換したところでソートの結果の関係は崩れない。これは押さえておく必要がある…?
やらない後悔よりやる後悔
という訳で、飲まない後悔より飲む後悔(飲みますってことでw)
やっぱmecab-ipadic-NEologdは必須だよなあ。というかipadic+NEologdの内容を言語資源を介してdata.arpaへ転写し、libkkcの辞書にしてるだけということで、形態素解析辞書(もしくは読み仮名を別途付与する場合はそのツールの辞書)の性能に依存するってのは…まあ分かり切ってる話ではあるんだけど。
mecab --node-format="%f[7]/%m " --unk-format="<UNK> " --eos-format="\n"
これで「ヨミ/読み カナ/仮名」形式な形態素解析結果は出るけど…それでも結果のクリーニングは必要だしそもそもlibkkcの必要とする「読み仮名は平仮名であるべし(ただしヴは除く)」をどうにかしないといけないんだよなあ。
uaa@emeraude:~/nwc2010-libkkc$ head -n 5 data.arpa.{cc,nwc}*
==> data.arpa.cc.100 <==
\data\
ngram 1= 63525
ngram 2= 1175059
ngram 3= 6044823
==> data.arpa.cc.75 <==
\data\
ngram 1= 70444
ngram 2= 1419241
ngram 3= 7942800
==> data.arpa.nwc.750 <==
\data\
ngram 1= 80280
ngram 2= 1263366
ngram 3= 5042232
uaa@emeraude:~/nwc2010-libkkc$
CC100-ja、組み合わせの数(2-gram/3-gram)が多い割に語彙数(1-gram)が少ない感じ。こういう方向性が、取ってきた資源で出てくる「色」とか「味」とかそういう部分になるのかねえ。
CC100-ja/頻度75辞書を作ってみたけど、中二病ならぬ点2病は治ってないねえ…メモリ消費量も多めだし。頻度100辞書に戻すかどうかが悩ましい。
やっぱ「てんに/点2」なんてのは見つからないんだが…うーむ…?
あれー?数字は候補から外すようにしてたはずな気がするんだけど。後でdata.arpaとか見てみるか。
自分自身で言語資源から辞書を起こせる、という点に意義があるかなあ。
(ここで「てんに」が「点2」しか変換できずむきーっとなっている)
(下手に増やすとノイズを拾って意図しない変換が増えて逆にストレスになるというのもある)
悪くはない感じがするけど、良いかどうかは何とも言えない。日本語ウェブコーパス2010の頻度750以上で作った辞書から入れ替えていて、語彙数がだいぶ減っている点(80280→63525)が気にかかるところではある。とはいえ単に多けりゃ良いってもんでもないだろうし、長時間使ってみないと分からんなあ。
ちょいとCC100-jaからlibkkc向けに辞書を作ることができたので、辞書を差し替えてテスト入力しているところ。
まだ使い始めたばかりなので使用感については何とも言えないけどとりあえずはこの程度の文章を打つことはできているみたい。
@redbrick どうもツール側で圧縮して書きだすのでそのせいという気がします。無圧縮で出力する手段がありそうなので次はそれを試してみることにします(デフォルトだとgzipで固めるようです)。
このアカウントは、notestockで公開設定になっていません。
uaa@emeraude:~$ time nwc-toolkit/build/nwc-toolkit-ngram-counter -n 3 -l 24576 -b ja.mecab.txt
input: ja.mecab.txt
sentences: 592537732, tokens: 14982701916 (x25.29) (8774sec)
output: ngms-20231001-171914.0000.gz
real 182m11.671s
user 178m31.048s
sys 0m41.345s
uaa@emeraude:~$
文書の処理がその秒数でも、ファイルの書き出しが遅い…
(見積もりを出すにも結局コード書かないと分からんってケースは結構ある…というのはあんまり安全じゃない考えなのかもだけど、実際そういうのは多かったからなあ。ヘンなところで足をすくわれる可能性っていうのが結構あるから基本的にはちょい多めに時間とらないと後で死ぬケースが多かったような…??)
@reasonset 自分も一人暮らししてた時期は鍋とやかんは持ってました…
n-gram作成、どこまで時間かかるかなーと思ったけど前回8100secって数字が出てるからまあそのくらいはかかるか…メモ残しといてよかった。
朝の4時くらいにむくりと起き出して、家族の目を逃れながらこっそり食べるカップラーメンが…見つかるかもしれないというスリルがちょっと楽しくて。
賞味期限間近のカップ麺って妙に膨らんでいたりするんですが、それって保存状態が悪かったが故にそうなるんでしょうか…
カップ麺の賞味期限は過ぎても保存状態がよければ問題なさそうな気がするけれどどうなんだろう
形態素解析が終わってn-gram作成をやってるけど、なんか1.5時間経過しても終わらないですね…一応どれだけの数を処理したかという表示はあるけど、どこまで処理したかは謎。そのうち終わるとは思うのですが。
やっぱ分かち書き(品詞情報なし)+xz圧縮無ければ形態素解析に4.5時間で済む…
機会があったらまたガラスレンズは使ってみたいんだけど…なかなか難しいよな、って。
ガラス調光レンズは使ってたことあるけど、クリアに見えるけど重いです。あと、割れる(割りました)。
ここにも時空の狭間があったか…12月32日もしくは1月0日と同様な。
このアカウントは、notestockで公開設定になっていません。
このアカウントは、notestockで公開設定になっていません。
FISCHERがオーストラリア、LF SYSTEMがスコットランド、ALOKがブラジルか…
三隣亡、だっけ…三りんぼう(みりんぼう)と読んでた時期があります…みりんの味のする棒?
このアカウントは、notestockで公開設定になっていません。