形態素解析器
C#から直截形態素解析器のライブラリを使いたいよぉ…ふぇぇ…って人に。
茶筌はツン過ぎて辛かっただって何ですかstring[]渡すだけなのに。
using System.Runtime.InteropServices; class MeCab : IDisposable { IntPtr ptr; [DllImport("libmecab.dll", CallingConvention = CallingConvention.Cdecl)] private extern static IntPtr mecab_new2(string arg); [DllImport("libmecab.dll", CallingConvention = CallingConvention.Cdecl)] private extern static IntPtr mecab_sparse_tostr(IntPtr m, string str); [DllImport("libmecab.dll", CallingConvention = CallingConvention.Cdecl)] private extern static void mecab_destroy(IntPtr m); public MeCab() { ptr = mecab_new2(@"-F%m\s%f[6]\s%f[0]\n"); } public string sparse_tostr(string str_in) { return Marshal.PtrToStringAnsi(mecab_sparse_tostr(ptr, str_in)); } public void Dispose() { mecab_destroy(ptr); } } class Chasen { [DllImport("libchasen.dll", CallingConvention = CallingConvention.Cdecl)] extern static int chasen_getopt_argv([MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr, SizeParamIndex = 1)]string[] argv, IntPtr file); [DllImport("libchasen.dll", CallingConvention = CallingConvention.Cdecl)] extern static IntPtr chasen_sparse_tostr(string str_in); public Chasen() { string[] argv = { "", "-s", "-F", @"%m %M %H\n", null }; if (chasen_getopt_argv(argv, IntPtr.Zero) == 1) throw new ArgumentException(); } public string sparse_tostr(string str_in) { return Marshal.PtrToStringAnsi(chasen_sparse_tostr(str_in)); } }