OSDN Git Service

IpaDic・UniDic等の形態素情報から任意の項目を取得できる拡張メソッドを追加
authorkomutan <t_komuta@nifty.com>
Fri, 27 Mar 2015 13:10:37 +0000 (22:10 +0900)
committerkomutan <t_komuta@nifty.com>
Fri, 27 Mar 2015 13:10:37 +0000 (22:10 +0900)
src/LibNMeCabMMF/Extension/FeatureExtension.cs [new file with mode: 0644]
src/LibNMeCabMMF/Extension/IpaDic/IpaDicFeatureExtension.cs [new file with mode: 0644]
src/LibNMeCabMMF/Extension/UniDic/UniDicFeatureExtension.cs [new file with mode: 0644]
src/LibNMeCabMMF/LibNMeCabMMF.csproj

diff --git a/src/LibNMeCabMMF/Extension/FeatureExtension.cs b/src/LibNMeCabMMF/Extension/FeatureExtension.cs
new file mode 100644 (file)
index 0000000..c8c872c
--- /dev/null
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace NMeCab.Extension
+{
+    public static class FeatureExtension
+    {
+        /// <summary>
+        /// 素性情報の指定番目の値を取得する
+        /// </summary>
+        public static string GetFeatureItem(this MeCabNode node, int index)
+        {
+            return node.Feature.GetCsvItem(index);
+        }
+
+        /// <summary>
+        /// CSV文字列の指定番目の値を取得する
+        /// </summary>
+        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 (file)
index 0000000..c2b854b
--- /dev/null
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace NMeCab.Extension.IpaDic
+{
+    public static class IpaDicFeatureExtension
+    {
+        /// <summary>
+        /// 品詞を取得
+        /// </summary>
+        public static string GetPartsOfSpeech(this MeCabNode node)
+        {
+            return node.GetFeatureItem(0);
+        }
+
+        /// <summary>
+        /// 品詞細分類1を取得
+        /// </summary>
+        public static string GetPartsOfSpeechSection1(this MeCabNode node)
+        {
+            return node.GetFeatureItem(1);
+        }
+
+        /// <summary>
+        /// 品詞細分類2を取得
+        /// </summary>
+        public static string GetPartsOfSpeechSection2(this MeCabNode node)
+        {
+            return node.GetFeatureItem(2);
+        }
+
+        /// <summary>
+        /// 品詞細分類3を取得
+        /// </summary>
+        public static string GetPartsOfSpeechSection3(this MeCabNode node)
+        {
+            return node.GetFeatureItem(3);
+        }
+
+        /// <summary>
+        /// 活用形を取得
+        /// </summary>
+        public static string GetConjugatedForm(this MeCabNode node)
+        {
+            return node.GetFeatureItem(4);
+        }
+
+        /// <summary>
+        /// 活用型を取得
+        /// </summary>
+        public static string GetInflection(this MeCabNode node)
+        {
+            return node.GetFeatureItem(5);
+        }
+
+        /// <summary>
+        /// 活用型を取得
+        /// </summary>
+        public static string GetOriginalForm(this MeCabNode node)
+        {
+            return node.GetFeatureItem(6);
+        }
+
+        /// <summary>
+        /// 読みを取得
+        /// </summary>
+        public static string GetReading(this MeCabNode node)
+        {
+            return node.GetFeatureItem(7);
+        }
+
+        /// <summary>
+        /// 発音を取得
+        /// </summary>
+        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 (file)
index 0000000..689edaa
--- /dev/null
@@ -0,0 +1,190 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace NMeCab.Extension.UniDic
+{
+    public static class UniDicFeatureExtension
+    {
+        /// <summary>
+        /// 品詞大分類を取得
+        /// </summary>
+        public static string GetPos1(this MeCabNode node)
+        {
+            return node.GetFeatureItem(0);
+        }
+
+        /// <summary>
+        /// 品詞中分類を取得
+        /// </summary>
+        public static string GetPos2(this MeCabNode node)
+        {
+            return node.GetFeatureItem(1);
+        }
+        
+        /// <summary>
+        /// 品詞小分類を取得
+        /// </summary>
+        public static string GetPos3(this MeCabNode node)
+        {
+            return node.GetFeatureItem(2);
+        }
+        
+        /// <summary>
+        /// 品詞細分類を取得
+        /// </summary>
+        public static string GetPos4(this MeCabNode node)
+        {
+            return node.GetFeatureItem(3);
+        }
+        
+        /// <summary>
+        /// 活用型を取得
+        /// </summary>
+        public static string GetCType(this MeCabNode node)
+        {
+            return node.GetFeatureItem(4);
+        }
+        
+        /// <summary>
+        /// 活用形を取得
+        /// </summary>
+        public static string GetCForm(this MeCabNode node)
+        {
+            return node.GetFeatureItem(5);
+        }
+        
+        /// <summary>
+        /// 語彙素読みを取得
+        /// </summary>
+        public static string GetLForm(this MeCabNode node)
+        {
+            return node.GetFeatureItem(6);
+        }
+        
+        /// <summary>
+        /// 語彙素(語彙素表記+ 語彙素細分類)を取得
+        /// </summary>
+        public static string GetLemma(this MeCabNode node)
+        {
+            return node.GetFeatureItem(7);
+        }
+        
+        /// <summary>
+        /// 書字形出現形を取得
+        /// </summary>
+        public static string GetOrth(this MeCabNode node)
+        {
+            return node.GetFeatureItem(8);
+        }
+        
+        /// <summary>
+        /// 発音形出現形を取得
+        /// </summary>
+        public static string GetPron(this MeCabNode node)
+        {
+            return node.GetFeatureItem(9);
+        }
+        
+        /// <summary>
+        /// 書字形基本形を取得
+        /// </summary>
+        public static string GetOrthBase(this MeCabNode node)
+        {
+            return node.GetFeatureItem(10);
+        }
+        
+        /// <summary>
+        /// 発音形基本形を取得
+        /// </summary>
+        public static string GetPronBase(this MeCabNode node)
+        {
+            return node.GetFeatureItem(11);
+        }
+        
+        /// <summary>
+        /// 語種を取得
+        /// </summary>
+        public static string GetGoshu(this MeCabNode node)
+        {
+            return node.GetFeatureItem(12);
+        }
+        
+        /// <summary>
+        /// 語頭変化型を取得
+        /// </summary>
+        public static string GetIType(this MeCabNode node)
+        {
+            return node.GetFeatureItem(13);
+        }
+        
+        /// <summary>
+        /// 語頭変化形を取得
+        /// </summary>
+        public static string GetIForm(this MeCabNode node)
+        {
+            return node.GetFeatureItem(14);
+        }
+
+        /// <summary>
+        /// 語末変化型を取得
+        /// </summary>
+        public static string GetFType(this MeCabNode node)
+        {
+            return node.GetFeatureItem(15);
+        }
+
+        /// <summary>
+        /// 語末変化形を取得
+        /// </summary>
+        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);
+        }
+    }
+}
index 548e73a..6ea5ec7 100644 (file)
     <Compile Include="..\LibNMeCab\Settings.cs">
       <Link>Settings.cs</Link>
     </Compile>
+    <Compile Include="Extension\FeatureExtension.cs" />
+    <Compile Include="Extension\IpaDic\IpaDicFeatureExtension.cs" />
     <Compile Include="Extension\MeCabNodeExtension.cs" />
+    <Compile Include="Extension\UniDic\UniDicFeatureExtension.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   <ItemGroup>