忍者ブログ
盛大な独り言日記・自分用メモ2010.11.17~
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

atoiがとっても便利です。
int a =atoi(char型の何か)
→char型の何かの先頭にある文字型数字を自動でintに変換してaに格納してくれるそうです。

めかぶは品詞を半角数字のidで一緒に出力できるので、これで品詞ごとに分けた辞書ファイルがつくれました。
ただ区分が細かすぎるので扱いが難しいですね。名詞とかはともかく、
動詞は活用形のまま切れているので扱いにくそうです。助詞とかも。
知られている、を辞書に登録するとして、数字一つにつき一個ファイル作ってたら
31 知ら
32 れ
18 て
33 いる
7 。
という区切りででそれぞれの辞書に分けられてしまいます。
あんまりブチブチ区切るのもよくなさそうなので、ある程度まとまった辞書とかのほうがいいのかな。
書き換え規則とかを細かく指定できるならいいんですけどね。まだどこまでできるかわからないしな…

辞書分けとかについて考えたら、生成文法を使った文章生成を考えてみようかなと思います。

今のところちゃんと自然言語の喋れる無能の作成を目指しているのですが、卒研の目標はブレブレです。
無能か知能でヘルプ作るって言ってたけど、プログラム作っていくうちにどんどん違うんじゃないかこれってなってきた(^q^)
とりあえず勉強も兼ねての無能作成に専念しようかな…。やってれば何かいいアイデアが思いつくのではないかとそんな目の逸らし方をしています。
PR
返却期限20日までだったけど半分も読めてなかった…\(^o^)/次借りられるのはいつになるんだろうか。

■意味ネットワークのメモ

ネットワークのノードに物を対応させ、リンクにノード(もの)同士の関係を対応させる
猫is動物     猫、動物がノード、isがリンク
猫has耳
猫has尻尾

みたいな。複雑な知識表現に利用が出来る。

■フレームのメモ

フレームは意味ネットワークのノードの内部にスロットを含む知識表現
スロットはフレーム内の構成要素
動物(フレーム):呼吸をする(スロット・動作)
哺乳類(フレーム):犬(スロット・要素1)、猫(スロット・要素2)、こうもり(スロット・要素3)
フレーム同士で性質の継承を行える。哺乳類は動物に含まれるので
動物(フレーム)で定義された性質「呼吸をする」は、哺乳類でもそのまま受け継がれる。

意味ネットワークの連鎖によってマジカルバナナの様な事が出来る。
この章は読むだけにしておこうかな…。。間に合わないもんな。
Mecabで形態素解析する

sort並び替え

uniqc重複した項目を、重複回数を記録して1つにまとめる
 例)納豆     1 納豆
   ごはん    3 ごはん  
   ごはん    2 パン
   ごはん   →
   パン
   パン

sortn文頭の数字の大きい順(=出現頻度順)に並べ替える


zenkaku文頭の数字や、品詞idの数字(半角文字)を削除する用


Mecabで形態素解析で品詞idを出した後、品詞ごとに別々のファイルに保存して辞書を作って、
それに対してsort→uniqc→sortn→zenkakuをかけて
頻度順に上から並んでるはずなので、言葉選びをこの頻度をもとにしておこなうようにしたらいいのかな…?
辞書を分けるところまでいかないので、いったん
sort-uniqc-sortn-zenkaku
で品詞が混ざった状態で形態素+マルコフ連鎖のを作ってみようと思います。
作るっていうか辞書ファイルを入れ替えるだけだけど…。
めかぶとどうやって合わせればいいかな…と考え中です。
最初は形態素解析の結果を形態素+改行だけで出力すれば、とりあえず今まで作ったプログラムに持ってこれると思ったのですが、
それだけだと品詞の情報が活かされないのでそれっぽい会話ができませんよね。
でそうすると品詞情報も一緒に持たせたいのですが、形態素+品詞+改行で出力するときに
会話に出てくるのは形態素の部分だけなわけで、形態素と品詞の区切りをしなきゃいけないなとか、
だったら形態素解析→品詞ごとに別々のファイルに収納→会話のときの辞書につかう
とかのほうが楽そうだなと思ったりとか、それじゃあ品詞ごとのファイルだけもっておけばよくないか、形態素解析プログラムそのものは必要ないんじゃないかとか。
他の人工無能の人がどう使ってるか調べようと思います
形態素解析の前に、文字の種類が変わった時に切った単位で文生成みたいなのがあったので…
ひらがな、漢字、カタカナでそれぞれ区切るそうです。n-gramよりは区切り目がそれっぽくなるのかな。
0xが頭につくと続きの文字を16進数とみなすそうです。
2バイト文字を取り出すための条件式で(dは文字の第一バイト)
>0x7Fとあった部分についてよくわかってなかったので

シフトJISでは、
①0x81〜0x9F、0xE0〜0xEFの範囲のバイトが現れると2バイトモードを開始
 このバイトは2バイト文字の第1バイトとして処理されます。次の2バイト目は、
②0x40〜0x7E、0x80〜0xFCの範囲でなければなりません。

と書かれているページを見つけました。(http://www.kanzaki.com/docs/jcode.html)
上の条件式でのdは第一バイトだけを比較して、ここでの2バイトモード開始範囲で
条件を出していたみたいです。頭だけ見れば2バイトかどうか判別できるんですね。
しかし最初の条件が7Fからなのはなぜなんだ。80じゃなくて81からが範囲なら、最初の条件は80
それでこの方法で2バイトだけ保存したら、次はその文字が漢字か、カタカナかそれ以外かを判別します。
漢字の範囲は8800~9FFFとE000~EFFF
第一バイトをb1、第二バイトをb2とすると、第二バイトは②の範囲全部取りうるので省略して
>0x87っていうことでいいんだろうか。本は単に0x88<=b1ってなってるんですが、9FからE0までの間は特に何も割り当てられてないんでしょうか。
カタカナの範囲は8340~8396
>b1==0x83 && 0x40<=b2<0x97

それで残りを句読点かどうかで振り分けて、たぶんひらがなとあれば記号が残って切り出しは完了らしいです。

形態素解析のページ見るつもりが文字コードのせいで時間が。。(^q^)うひゃー
文字種類での切り出しは読むくらいにしといて、ちょっとめかぶとかと組み合わせる方をやってみたいと思います。

なんかこのブログどれかの文字が入ると周辺の文字保存時に消されるんだけど…
しかもどの文字がいけないのか分からない(^o^)どういうことよ
[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9
プロフィール
 たごさく(@Ta56)
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
最新CM
最新記事
最新TB
バーコード
ブログ内検索
最古記事
Admin / Write
忍者ブログ [PR]