From: komutan Date: Fri, 27 Mar 2015 13:10:37 +0000 (+0900) Subject: IpaDic・UniDic等の形態素情報から任意の項目を取得できる拡張メソッドを追加 X-Git-Url: http://git.osdn.net/view?p=nmecab%2FNMeCabRepo2.git;a=commitdiff_plain;h=71593355c8d17d67395eef4a58260480d507ce30 IpaDic・UniDic等の形態素情報から任意の項目を取得できる拡張メソッドを追加 --- diff --git a/src/LibNMeCabMMF/Extension/FeatureExtension.cs b/src/LibNMeCabMMF/Extension/FeatureExtension.cs new file mode 100644 index 0000000..c8c872c --- /dev/null +++ b/src/LibNMeCabMMF/Extension/FeatureExtension.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NMeCab.Extension +{ + public static class FeatureExtension + { + /// + /// 素性情報の指定番目の値を取得する + /// + public static string GetFeatureItem(this MeCabNode node, int index) + { + return node.Feature.GetCsvItem(index); + } + + /// + /// CSV文字列の指定番目の値を取得する + /// + private static string GetCsvItem(this string csvRow, int index) + { + if (string.IsNullOrEmpty(csvRow)) return null; + + string[] items = csvRow.Split(','); + if (items.Length <= index) return null; + + return items[index]; + } + } +} diff --git a/src/LibNMeCabMMF/Extension/IpaDic/IpaDicFeatureExtension.cs b/src/LibNMeCabMMF/Extension/IpaDic/IpaDicFeatureExtension.cs new file mode 100644 index 0000000..c2b854b --- /dev/null +++ b/src/LibNMeCabMMF/Extension/IpaDic/IpaDicFeatureExtension.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NMeCab.Extension.IpaDic +{ + public static class IpaDicFeatureExtension + { + /// + /// 品詞を取得 + /// + public static string GetPartsOfSpeech(this MeCabNode node) + { + return node.GetFeatureItem(0); + } + + /// + /// 品詞細分類1を取得 + /// + public static string GetPartsOfSpeechSection1(this MeCabNode node) + { + return node.GetFeatureItem(1); + } + + /// + /// 品詞細分類2を取得 + /// + public static string GetPartsOfSpeechSection2(this MeCabNode node) + { + return node.GetFeatureItem(2); + } + + /// + /// 品詞細分類3を取得 + /// + public static string GetPartsOfSpeechSection3(this MeCabNode node) + { + return node.GetFeatureItem(3); + } + + /// + /// 活用形を取得 + /// + public static string GetConjugatedForm(this MeCabNode node) + { + return node.GetFeatureItem(4); + } + + /// + /// 活用型を取得 + /// + public static string GetInflection(this MeCabNode node) + { + return node.GetFeatureItem(5); + } + + /// + /// 活用型を取得 + /// + public static string GetOriginalForm(this MeCabNode node) + { + return node.GetFeatureItem(6); + } + + /// + /// 読みを取得 + /// + public static string GetReading(this MeCabNode node) + { + return node.GetFeatureItem(7); + } + + /// + /// 発音を取得 + /// + public static string GetPronounciation(this MeCabNode node) + { + return node.GetFeatureItem(8); + } + } +} diff --git a/src/LibNMeCabMMF/Extension/UniDic/UniDicFeatureExtension.cs b/src/LibNMeCabMMF/Extension/UniDic/UniDicFeatureExtension.cs new file mode 100644 index 0000000..689edaa --- /dev/null +++ b/src/LibNMeCabMMF/Extension/UniDic/UniDicFeatureExtension.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NMeCab.Extension.UniDic +{ + public static class UniDicFeatureExtension + { + /// + /// 品詞大分類を取得 + /// + public static string GetPos1(this MeCabNode node) + { + return node.GetFeatureItem(0); + } + + /// + /// 品詞中分類を取得 + /// + public static string GetPos2(this MeCabNode node) + { + return node.GetFeatureItem(1); + } + + /// + /// 品詞小分類を取得 + /// + public static string GetPos3(this MeCabNode node) + { + return node.GetFeatureItem(2); + } + + /// + /// 品詞細分類を取得 + /// + public static string GetPos4(this MeCabNode node) + { + return node.GetFeatureItem(3); + } + + /// + /// 活用型を取得 + /// + public static string GetCType(this MeCabNode node) + { + return node.GetFeatureItem(4); + } + + /// + /// 活用形を取得 + /// + public static string GetCForm(this MeCabNode node) + { + return node.GetFeatureItem(5); + } + + /// + /// 語彙素読みを取得 + /// + public static string GetLForm(this MeCabNode node) + { + return node.GetFeatureItem(6); + } + + /// + /// 語彙素(語彙素表記+ 語彙素細分類)を取得 + /// + public static string GetLemma(this MeCabNode node) + { + return node.GetFeatureItem(7); + } + + /// + /// 書字形出現形を取得 + /// + public static string GetOrth(this MeCabNode node) + { + return node.GetFeatureItem(8); + } + + /// + /// 発音形出現形を取得 + /// + public static string GetPron(this MeCabNode node) + { + return node.GetFeatureItem(9); + } + + /// + /// 書字形基本形を取得 + /// + public static string GetOrthBase(this MeCabNode node) + { + return node.GetFeatureItem(10); + } + + /// + /// 発音形基本形を取得 + /// + public static string GetPronBase(this MeCabNode node) + { + return node.GetFeatureItem(11); + } + + /// + /// 語種を取得 + /// + public static string GetGoshu(this MeCabNode node) + { + return node.GetFeatureItem(12); + } + + /// + /// 語頭変化型を取得 + /// + public static string GetIType(this MeCabNode node) + { + return node.GetFeatureItem(13); + } + + /// + /// 語頭変化形を取得 + /// + public static string GetIForm(this MeCabNode node) + { + return node.GetFeatureItem(14); + } + + /// + /// 語末変化型を取得 + /// + public static string GetFType(this MeCabNode node) + { + return node.GetFeatureItem(15); + } + + /// + /// 語末変化形を取得 + /// + public static string GetFForm(this MeCabNode node) + { + return node.GetFeatureItem(16); + } + + public static string GetKana(this MeCabNode node) + { + return node.GetFeatureItem(17); + } + + public static string GetKanaBase(this MeCabNode node) + { + return node.GetFeatureItem(18); + } + + public static string GetForm(this MeCabNode node) + { + return node.GetFeatureItem(19); + } + + public static string GetFormBase(this MeCabNode node) + { + return node.GetFeatureItem(20); + } + + public static string GetIConType(this MeCabNode node) + { + return node.GetFeatureItem(21); + } + + public static string GetFConType(this MeCabNode node) + { + return node.GetFeatureItem(22); + } + + public static string GetAType(this MeCabNode node) + { + return node.GetFeatureItem(23); + } + + public static string GetAConType(this MeCabNode node) + { + return node.GetFeatureItem(24); + } + + public static string GetAModType(this MeCabNode node) + { + return node.GetFeatureItem(25); + } + } +} diff --git a/src/LibNMeCabMMF/LibNMeCabMMF.csproj b/src/LibNMeCabMMF/LibNMeCabMMF.csproj index 548e73a..6ea5ec7 100644 --- a/src/LibNMeCabMMF/LibNMeCabMMF.csproj +++ b/src/LibNMeCabMMF/LibNMeCabMMF.csproj @@ -122,7 +122,10 @@ Settings.cs + + +