DBCLS 6/10

引き続きバイトの内容
与えられた辞書データからMeCab辞書を作るところです

とりあえず前回のデータから末尾が名詞じゃない単語を省いた。

import MeCab
mecab = MeCab.Tagger("-Ochasen")
...
def is_nown(text):
    node = mecab.parseToNode(text)
    while node:
        if node.next.surface == "":
            langtype = node.feature.split(",")[0]
            if not langtype in ("名詞","接頭辞","記号"):
                return False
            else :
                return True
        node = node.next

最初うまくいかなくて、なんかおかしいなーと思ったら前回作った不完全な辞書をユーザー辞書に登録したままMeCab用のdicファイルを生成していた。そりゃそうだ。


前回と同じ文章を使ってみる

[mizchi]% echo アデニンの構造とカシューナッツ |mecab [mizchin:~/work/dbcls]
アデニン	名詞,一般,*,*,*,*,アデニン,*,*,dbcls
の	助詞,連体化,*,*,*,*,の,ノ,ノ
構造	名詞,一般,*,*,*,*,構造,*,*,dbcls
と	助詞,並立助詞,*,*,*,*,と,ト,ト
カシュー	名詞,一般,*,*,*,*,カシュー,カシュー,カシュー
ナッツ	名詞,一般,*,*,*,*,ナッツ,ナッツ,ナッツ
EOS

とりあえず辞書に含まれてた格助詞とかは除くことができた。それにしても使ってる元データは「構造」なんてのもいれていて、ちょっと過剰な気配がする

TF*IDF用に青空文庫を大量にパースしておく必要がありそう。元データは青空文庫をローカルに保持しているやつがあるのでそれを使う。

おまけ

最近彼女ができたid:syou6162さんにソースの解説をしてもらいたいのですが、僕はDBCLSにおいて最近彼女ができたid:syou6162 さんの仕事を引き継いでいることになるそうです。
最近彼女ができたid:syou6162さんは最近彼女ができたので幸せそうですね!


という文章をマルコフ連鎖すると

ですが、僕はDBCLSにおいて最近彼女ができたid:syou6162さんは最近彼女ができたid:syou6162さんの仕事を引き継いでいることになるそうです。最近彼女ができたid:syou6162さんは最近彼女ができたid:syou6162さんにソースの解説をしてもらいたいのですが

不毛


使ったのはこれ
MeCabとPythonでマルコフ連鎖を書いてみる(改) | Weboo! Returns.

結構エラー吐くのでスクラッチしたい