ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
グリーンピースは食べ物じゃないと思うんだ・・・・
それはさておき,今回はTimedWChar型を使ってみたいと思います.
この型を使ってるRTCを僕は見たことないんですけど,探したらあるんでしょうかね?
まず,C++のプログラミングでワイド文字は,
といった感じで使えます.
ワイド文字は1文字表現するのに2バイト使うので,全角文字も扱えるのが利点ですかね.
文字数を取り出すのも容易で,
wcslen(ch);
とするだけですし,ch[2]のように配列の番号を指定するだけで全角でも半角でも文字を取り出せます.
今回はTimedWChar型の可変長配列TimedWCharSeq型を使って,簡単な言語処理をするRTCを作成します.
サンプルはここからダウンロード出来ます.
今回作成したRTCはWcharTestOutとWcharTestInです.
WcharTestOutは1つのアウトポート(TimedWCharSeq)を持っており,適当な文字列を出力します.
WcharTestInは1つのインポート(TimedWCharSeq)を持っており,受け取った文字列を名詞,形容詞,動詞,形容動詞に分けて表示します.
はじめてのAIプログラミング―C言語で作る人工知能と人工無能(小高知宏著)では,簡単な方法として
名詞 → 漢字の並び
形容詞 → 漢字の並び + 「い」
動詞 → 漢字の並び + 「う」
形容動詞 → 漢字の並び + 「だ」
として取り出しています.
WcharTestOutのデータ出力をする部分は,
size_t len = wcslen(text); //文字数取得
m_out.data.length(len); //文字数文の長さを指定
for(int i=0;i < len;i++)
{
m_out.data[i] = text[i]; //データを書き込む
}
m_outOut.write(); //出力
となっており,他のデータ型と同じです.
WcharTestInの入力データを処理する部分は,
RTC::ReturnCode_t WcharTestIn::onExecute(RTC::UniqueId ec_id)
{
setlocale( LC_ALL, "Japanese" );
if (m_inIn.isNew()) //データの入力があった場合
{
m_inIn.read(); //データ読み込み
wchar_t *text = new wchar_t[m_in.data.length()];
for(int i=0;i < m_in.data.length();i++)
{
text[i] = m_in.data[i]; //データを取り出す
}
getnoun(text,m_in.data.length()); //文字列textを読み込んで名詞,形容詞,動詞,形容動詞に分けて表示する関数
printf("%S\n",text); //受信した文字列の表示
delete text;
}
return RTC::RTC_OK;
}
となっています.
UTF-16についてはこのサイトに一覧表があるみたいです.
今日はここまでにしときます.
次回はTimedWString型で遊んでみます.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
それはさておき,今回はTimedWChar型を使ってみたいと思います.
この型を使ってるRTCを僕は見たことないんですけど,探したらあるんでしょうかね?
まず,C++のプログラミングでワイド文字は,
wchar_t ch[] = L"あいうえおabcd";
といった感じで使えます.
ワイド文字は1文字表現するのに2バイト使うので,全角文字も扱えるのが利点ですかね.
文字数を取り出すのも容易で,
wcslen(ch);
とするだけですし,ch[2]のように配列の番号を指定するだけで全角でも半角でも文字を取り出せます.
今回はTimedWChar型の可変長配列TimedWCharSeq型を使って,簡単な言語処理をするRTCを作成します.
サンプルはここからダウンロード出来ます.
今回作成したRTCはWcharTestOutとWcharTestInです.
WcharTestOutは1つのアウトポート(TimedWCharSeq)を持っており,適当な文字列を出力します.
WcharTestInは1つのインポート(TimedWCharSeq)を持っており,受け取った文字列を名詞,形容詞,動詞,形容動詞に分けて表示します.
はじめてのAIプログラミング―C言語で作る人工知能と人工無能(小高知宏著)では,簡単な方法として
名詞 → 漢字の並び
形容詞 → 漢字の並び + 「い」
動詞 → 漢字の並び + 「う」
形容動詞 → 漢字の並び + 「だ」
として取り出しています.
WcharTestOutのデータ出力をする部分は,
size_t len = wcslen(text); //文字数取得
m_out.data.length(len); //文字数文の長さを指定
for(int i=0;i < len;i++)
{
m_out.data[i] = text[i]; //データを書き込む
}
m_outOut.write(); //出力
となっており,他のデータ型と同じです.
WcharTestInの入力データを処理する部分は,
RTC::ReturnCode_t WcharTestIn::onExecute(RTC::UniqueId ec_id)
{
setlocale( LC_ALL, "Japanese" );
if (m_inIn.isNew()) //データの入力があった場合
{
m_inIn.read(); //データ読み込み
wchar_t *text = new wchar_t[m_in.data.length()];
for(int i=0;i < m_in.data.length();i++)
{
text[i] = m_in.data[i]; //データを取り出す
}
getnoun(text,m_in.data.length()); //文字列textを読み込んで名詞,形容詞,動詞,形容動詞に分けて表示する関数
printf("%S\n",text); //受信した文字列の表示
delete text;
}
return RTC::RTC_OK;
}
となっています.
UTF-16についてはこのサイトに一覧表があるみたいです.
今日はここまでにしときます.
次回はTimedWString型で遊んでみます.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
この記事にコメントする