Avatar
SASANO Takayoshi
9479339eb118796a8d8e9b7c1ff6d34abf8cd0e4fe81b0d80372e2b1d2da7b12
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

(ValaとかC#とか知らんけど、本当はnullableでが存在しないケースも認めてエラーチェック等で対応するのが筋という気がするけど…そうも言ってらんない以上は、sortlm.py側を加工して辞書側で対処するしかないのかもしれない)

はあるけどが見つからないのでエラー、んでもってbigram-decorderではbos_node, eos_nodeを見てるってことは…1-gram(単語辞書)内では必須って話になるのかなあ。

ちょい強引ではあるけど、無かった場合は強制的に追加とかそういう処置も考えないといけない?

で、sorted-bigram-language-model.valaのclass SortedBigramLanguageModelは多分LanguageModel, UnigramLanguageModel, BigramLanguageModelを継承していて、public override LanguageModelEntry? @get ()の処理が_eos = get(うあうだ)の実体なんだろうな。ここで何が起きてるのか、を知る必要はありそう。

(marisa-)trieを使っている以上、辞書の作りとしては確かにそうなるわな…

2-gram: 1-gramに定義された単語でペアを作ること

3-gram: 2-gramに定義された単語ペア+1-gramに定義された単語であること

とはいえその辺の言語資源で適当に作ったN-gramだと場合によってはとかで切られちゃうので、この条件を平然と満たさなくなる…ノイズが含まれるとでも言えば良いんだろうかね、そのノイズでsortlm.pyが機嫌を悪くしちゃう。

そう理解してる。

とりあえず、sortlm.pyの修正はおしまい。IRSTLMで変換したarpaの処理もできているので、あとはこれを実際にlibkkcに食わせて何が起こるかを見る…ってことになるな。 https://github.com/ueno/libkkc/pull/46

なんなのPythonの内包表記って…すっきり書けるのは理解するけど、エラーチェック入れないといけない場合にはどうしようもないじゃんこれ…

そういえば14MHz/430MHzしか使わない、移動しない局に関する変更申請はやっと終わりました。あとは局免をもらうための返信用封筒を送らねば…

あ、読み仮名付け(兼データのクリーニング他)のコード、未対応だ…

って、の略なのは分かっていたとしても…ちょっと良からぬものを想像しちゃうんですよその三文字の略だと。

マスコミの何社かが滅んでくれると良いかなーと思ってはいるのですが、なかなかそうはなりませんね…

IRSTLMで、日本語ウェブコーパス2010の3-gramデータ(出現頻度1000以上)からdata.arpaを生成できたけど…例によって、sortlm.pyがエラー吐きますね…

適当にでっち上げたdata.arpaではない(ちゃんとした言語モデルになってるはずだ)から、sortlm.pyに何か問題がある可能性を考えないといけないのかもー

IRSTLMのページ、github上のを追うしかなさそう。hlt-mt.fbk.euのはweb archive上でしか見られないけどそんなに有用な情報は見当たらない…

https://web.archive.org/web/20210126180309/https://hlt-mt.fbk.eu/technologies/irstlm

How to distributed LM training: step 3に

「ngt -InputFile=TRAIN -FilterDict=DICT.000 -NgramSize=3

-OutputFile=WWW.000 -OutputGoogleFormat=yes」なんてあるので、どこかでGoogle形式を使っていそうな感じではある。

というか、step4を見るに、Google形式の3-gramのファイルのみを使って1-gram/2-gram/3-gramを生成し、最後にarpa化してる。

…試してみる価値はありそうだな?

2009年の時点で、SRILMでGoogle N-gramをARPA化できませんか?って話が出てる。

https://mailman.speech.sri.com/pipermail/srilm-user/2009q2/000750.html

それに対し、SRILMはあくまでも仮の対応でしかしない(意訳)ので、MSRLMかIRSTLMを使えという返事が来ている。

https://mailman.speech.sri.com/pipermail/srilm-user/2009q2/000751.html

少し…?あんまり変わらない…?うーん…?

とりあえず、SRILM-FAQのB6) e)ただし-text tune.ext -vocab tune.vocab抜きでngram-countが通ることは確認した。

…で、ここからどうやってdata.arpa作るのかにゃ?

https://github.com/BitSpeech/SRILM/blob/master/utils/src/make-google-ngrams.gawk ←お前はこの存在を知っていながらちゃんと読んでないだろう?とお叱りを受けそう。

1gms/vocabは1-gramそのもの、

2gms/2gm-0000は2-gramのデータで、2gm.idx以降は各ファイルの先頭にあるN-gram…たとえば2gm-0000の最初のエントリが「 ぁ 60447」なら、2gm.idxの中身は「2gm-0000 ぁ」みたいな感じ。

こんなの知るかああああああ💢、というのはただの逆切れですね。お見苦しいものをお見せして申し訳ない。

kakasiに食わせて読み仮名を付けるのが適切なのかどうか、という問題もあるのか。

mecabとかjumanとか、他の形態素解析エンジンの利用もあり得る…と。