social.mikutter.hachune.netMastodonを使った分散型ソーシャルネットワークの一部です。
#あなたがガチ凍結されると<br> 11月中旬くらいかな?俺はておくれだから<br> Twitterからよく舐められるんだけど、<br> ある時Twitterが度が過ぎて俺を凍結<br> してきたわけ、そんで記憶がないんだけど(痴呆)、<br> 相当ボコボコにしちゃったらしい<br> 俺、これでもておくれですよ?

サーバーの情報

102
人のアクティブユーザー

もっと詳しく

SASANO Takayoshi

uaa@emeraude:~$ cat ja.txt | ./nwc-toolkit/build/nwc-toolkit-unicode-normalizer |./nwc-toolkit/build/nwc-toolkit-text-filter > ja.txt.1
こんなんでどうかなー

nwc-toolkit-text-filterは必須だな。句点までを一文と認識して区切ってくれる。これで正しく<BOS><EOS>として処理ができるようになる。

20分で全体の1/5くらいが処理された感じか…?

ジョブを仕掛けて寝ちゃいたいし、無駄にディスクを消費したくないことを考えると…

uaa@emeraude:~$ time cat ja.txt | ./nwc-toolkit/build/nwc-toolkit-unicode-normalizer |./nwc-toolkit/build/nwc-toolkit-text-filter |mecab -Owakati > ja.txt.1

とでもしとこうかね。

uaa@emeraude:~$ !1989
time cat ja.txt | ./nwc-toolkit/build/nwc-toolkit-unicode-normalizer |./nwc-toolkit/build/nwc-toolkit-text-filter |mecab -Owakati > ja.txt.1
output: (standard output)
input: (standard input)
output: (standard output)
input: (standard input)
74360361986 / 74359156435 (15614sec)
74359156435 / 70019552893 (15614sec)

real 260m15.239s
user 257m11.925s
sys 17m23.622s
uaa@emeraude:~$

uaa@emeraude:~$ time nwc-toolkit/build/nwc-toolkit-ngram-counter -n 3 -l 24576 ja.txt.1
input: ja.txt.1
sentences: 592537734, tokens: 13797626505 (x23.29) (8105sec)
output: ngms-20230930-031634.0000.gz

real 167m6.627s
user 163m18.095s
sys 0m39.184s
uaa@emeraude:~$

あとはngram-mergerで3-gramの結果を得れば良い訳か。問題は出現頻度の値をどう設定するか、だよなあ。

1-gram(単語)ではなく3-gramでの出現頻度で判断しているけど、出現頻度の一番大きい数が200617497なので、今作った3-gramではこれがどうなるかを調べることかなあ。

ngram-counterの-sオプションは必須なのかなあ。これ1-gram, 2-gram, 3-gramを全部まとめて出すので後で分離しないといけないんだけど…

3-gramだけ取れれば良いからzcat a.gz |awk '$4 {printf("%s %s %s\t%s\n",$1,$2,$3,$4)}'で。

ソートは要らないかなあ…?どうせ読みを付加した時に付加するツール側でソートかけてるし。

出現頻度1000で切ってみて、異なり数を数えてみると1097868、日本語ウェブコーパス2010の形態素N-gram(3-gram)だと6395754…1/6くらいのサイズしかないか。CC100-jaが75GB、nwc2010が396GBのテキストでやっているので、入力量に比例していると言っても良いのかも。

日本語ウェブコーパス2010で頻度750以上の異なり数が8377628…これを満たす頻度を目指してみれば良いのかな

頻度1以上 707235917
頻度10以上 56327440
頻度25以上 26442415
頻度50以上 14955969
頻度75以上 10679502
頻度100以上8390195
頻度1000以上 1097868

log(75)=1.875, log(395)=2.597、雑に計算して10倍程度の違いがあるから、頻度もそれくらいの違いで考えれば良いってことかなあ