【soft】めかぶ/mecabをCentOSに。だが断るッ

sc20120126190625

勢いついでに、Saases VPS(CentOS)にインスコしてみようと思ったんですが、これが問屋が下ろしてくれませんでした。

普通の手順でインストールしてみても、なんでかエラー。gcc共有ライブラリがどうのこうの・・と、お手上げっぽい(;^ω^)

sc20120126185846

./configureでは、確かに、iconvがNOになってる。

多分、これだ(;^ω^)


現在の最新は1.14だそうで、ゲットします。

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

なお、iconvにはパッチがあるらしいんですが、1.14にはないようです。うむむ、テストインスコだから、パッチ無しでいいか・・。

http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.html

しかし、一向に解決しません。

諦めかけたところで、RPMを探してみるか・・と。もちろん、標準RPMにあるはずもなく。

http://cmf.ohtanz.com/blog/archives/353

こちらのサイトで、RPM化してくれてるようです。バージョンは若干古いが、大感謝。DLするのは、mecabとmecab-ipadic

yum install –nogpgcheck mecab-0.95-el5.1.i386.rpm

署名されてないので、こんな感じでインストール。これまでの苦労が無かったかのように、難なくインスコできた(゚∀゚)

しかし、ビルド時に指定すべき文字コードとか、EUC固定になってしまってますけどね。

さぁてと、新しいおもちゃができました。

【soft】フリーソフトで広告収入@SoftAd

sc20120126152813

偶然発見したサービスです。あるんですね、知らなかった。

追記有り:C#でも表示できました

フリーソフト(じゃなくてもいいけど)とかで、広告収入を得られるサービスです。これで、多少は、開発意欲が増すというものでしょう・・(;^ω^)

クリック単価の8割がソフト作者へとの事ですが、概ね8円程度のようです。Google Adsenseと同じ程度かな。

しかしながら、提供元の多摩ソフトウェアさんお世辞にも大企業という訳でもなく、もしかすると、気づいたらサービス終了・・なんて事も考えられます(公式サイトの記事みてもなんとなく伝わります・・)

アフィリエイト系では、ValueCommerceがスマフォアプリ向けの広告サービスをスタートしましたし、もっと、こういうの増えて行ってもいいと思うんですけどね。

ちなみに、SDKと言われるものは前世代?のC/C++/Delphiでしか提供されてないので、.net/C#ソフトでの組み込みはどうなるんでしょう。

何度も使われる業務で使われるようなソフトで配信するとより効果的でしょうね。

広告主さんも、どうでしょう。こういう配信先もあるようです。宣伝単価的には安いでしょうね。

ソフト広告配信SoftAd/多摩ソフトウェア
http://www.tamasoft.co.jp/ad/

追記:

.Net/C#に組み込もうとテストしてみたのですが、うまく出来ません・・(´・ω・`)

DLLロードに失敗しているっぽくて、開発環境が64Bitだからなのか、どうにも煮え切らない・・。

追記:

なんとか表示できました。・・・が(;^ω^)

sc20120126215750

こちらを見ていただきたい。

右上のがそうなんですが、本来のメニューまでめっさ余白が出来上がってますよね。これが、どうしようもないんです

ウソでした、テスト用に空のMenuStrip入れてた性でした(;^ω^)

SoftAdが想定しているのが、(前世代の)MainMenuコントロールで、今風にメニューを作るならMenuStripコントロールです。MainMenuは昔ながらのウィンドウ上部固定のやつ。

もちろん、SoftAdを利用したいがために、MainMenuでメニューを作ればOKなんですが、いまさら(´・ω・`)という感じです。

SoftAdの初期化の段階で、メニューハンドルを渡す必要があるのですが、これがMainMenuでないとダメ。かつ、this.Menu(これは互換性のためだけのFormプロパティ)に、MainMenuオブジェクトを入れておかなければならないようです。

色々やってみたんですが、ダメですねぇ・・・。どうしよう

ウィンドウ上部に広告用の空行が表示されてしまいますね。

んでは、後に続けと、簡単ですのでコードをご紹介させていただきます。

sc20120126223801プロジェクトのプラットフォームターゲットがAnyCPUだとDLLが呼び出せません。これを、x86(32bit)にします。メモリ消費も少ないし、(しばらくは)x86の方が良いとは思うんですけどね。


sc20120126222538事前に、SoftAdの管理画面から、ソフトIDを取得しておきます。

#region Win32
[DllImport("SoftAd.dll")]
public static extern int SA_Initialize(
    IntPtr hWnd,
    IntPtr hMenu,
    int fc,
    int softId);
[DllImport("SoftAd.dll")]
public static extern void SA_Cleanup();
[DllImport("SoftAd.dll")]
public static extern void SA_InitMenuItem(IntPtr mi);
[DllImport("SoftAd.dll")]
public static extern void SA_DrawMenuItem(IntPtr di);
#endregion

DLL呼出用の定義を、好きな所に書いておきます。

//SoftAd
admenu = new System.Windows.Forms.MainMenu();
try

    SA_Initialize(this.Handle,admenu.Handle,0,143); ここにソフトID
}
catch{ }

formのコンストラクタに、これを置きます。初期化に失敗してるかどうか調べる場合は、戻り値(int)が1なら成功。

        private MainMenu admenu;    //SoftAd

これを、formクラス頭辺りにこそーり書きます。

#region SoftAd
//SoftAd
private const int WM_MEASUREITEM = 0x002C;
private const int WM_DRAWITEM = 0x002B;
protected override void WndProc(ref Message m)
{
    switch (m.Msg)
    {
        case WM_MEASUREITEM:
            SA_InitMenuItem(m.LParam);
            break;
        case WM_DRAWITEM:
            SA_DrawMenuItem(m.LParam);
            break;
        default:
            base.WndProc(ref m);
            break;
    }
    return;
}
#endregion

formクラスに、WndProcオーバーライドを書きます(SoftAdはオーナードローで表示しているようです)ちゃんと書くなら、ここも例外処理しておいた方がいいですね。

//SoftAd
try
{
    SA_Cleanup();
}
catch { }

フォーム閉じる辺り(formclosedとか)に、終了処理を入れておきます。

後は、広告を表示したい時は、

//SoftAd
this.Menu = admenu;

広告を消したい時は、

//SoftAd
this.Menu = null;

です。簡単ですよね(例外処理はしょってるので、ちゃんと書いてください)

これだけで、表示されちゃいます。(VisualStudio2008/C#にて確認)

あ、EXEのところに、最新版のDLLを置いておくのを忘れずに。

【soft】日本語形態素解析Mecab・めかぶ

sc20120126143448

これまではChasenが有名でしたが、最近は専らMecab/めかぶが使われているそうです。

ちなみにアウトプットの互換性はないようです。

Chasenは、インストールがやや大変だったように記憶していますが、Mecabはとても簡単で、Windowsバイナリも提供されてます(とはいえ、コマンドとして)

こういう系は、システムが立派でも辞書次第という事もあって、標準辞書では、上の写真のような解析結果となります。

要は、一般名詞をいかに充実させるかなんでしょうけどね。Wikipediaやはてなキーワードあたりから貰ってきて、辞書変換するとか、すれば強力になりそうです。

なんか面白そうなシステムが作れそうですねぇ。

ちなみに開発者の大好物が、メカブなんだそうです。

使い方は、標準インストールだと普通にProgramfilesに入りますので、BATとか作った方がいいでしょうね。(わざわざPATH通すのも嫌ですし)

"C:Program Files (x86)MeCabbinmecab.exe" input.txt -o out.txt

input.txtに、解析したいテキストを入れておくと、out.txtに出力される、それだけです。

インストール時の設定で文字化けする場合があるので、文字コードをちゃんと確認する事(UTF8にすると、コマンドライン上で確認できません)

辞書に無い名詞もある程度は認識されるそうですが、単純に世の中のニュース記事が綺麗に書かれている訳でもなく、実運用には多少工夫が必要ですね。「ジム・キャリー」とか、間に「・」とか入れるパターンは駄目なんです。

辞書を追加した場合は、公式サイトに詳しく書かれてます。ただ、コスト(単語の重さ)の指定値が難しいですね。

MeCab(オープンソース/LGPL)
http://mecab.sourceforge.net/

nabekのなぬげなblog(゚∀゚)!