]> granicus.if.org Git - icu/commitdiff
ICU-21699 Add Japanese particle
authorallenwtsu <allenwtsu@google.com>
Thu, 20 Jan 2022 09:51:17 +0000 (17:51 +0800)
committerPeter Edberg <42151464+pedberg-icu@users.noreply.github.com>
Fri, 11 Feb 2022 02:50:41 +0000 (18:50 -0800)
icu4c/source/common/dictbe.cpp
icu4c/source/common/dictbe.h
icu4c/source/data/brkitr/ja.txt
icu4c/source/test/testdata/rbbitst.txt
icu4j/main/classes/core/src/com/ibm/icu/impl/breakiter/CjkBreakEngine.java
icu4j/main/shared/data/icudata.jar
icu4j/main/shared/data/icutzdata.jar
icu4j/main/shared/data/testdata.jar
icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt

index 08e4c0a9b7a23de225e28c32512d41793ab2f792..4fdbdf2760f1c699ef82e6bd12bfd4ae6cb563b1 100644 (file)
@@ -1434,7 +1434,7 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText,
         // In phrase breaking, there has to be a breakpoint between Cj character and
         // the number/open punctuation.
         // E.g. る文字「そうだ、京都」->る▁文字▁「そうだ、▁京都」-> breakpoint between 字 and「
-        // E.g. 乗車率90%程度だろうか -> 乗車▁率▁90%▁程度だろうか -> breakpoint between 率 and 9
+        // E.g. 乗車率90%程度だろうか -> 乗車▁率▁90%▁程度だろうか -> breakpoint between 率 and 9
         // E.g. しかもロゴがUnicode! -> しかも▁ロゴが▁Unicode!-> breakpoint between が and U
         if (isPhraseBreaking) {
             if (!fDigitOrOpenPunctuationOrAlphabetSet.contains(nextChar)) {
@@ -1453,19 +1453,17 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText,
 }
 
 void CjkBreakEngine::initJapanesePhraseParameter(UErrorCode& error) {
-    loadJapaneseParticleAndAuxVerbs(error);
+    loadJapaneseExtensions(error);
     loadHiragana(error);
 }
 
-void CjkBreakEngine::loadJapaneseParticleAndAuxVerbs(UErrorCode& error) {
-    const char* tags[2] = { "particles", "auxVerbs" };
+void CjkBreakEngine::loadJapaneseExtensions(UErrorCode& error) {
+    const char* tag = "extensions";
     ResourceBundle ja(U_ICUDATA_BRKITR, "ja", error);
     if (U_SUCCESS(error)) {
-        for (int32_t i = 0; i < 2; i++) {
-            ResourceBundle bundle = ja.get(tags[i], error);
-            while (U_SUCCESS(error) && bundle.hasNext()) {
-                fSkipSet.puti(bundle.getNextString(error), 1, error);
-            }
+        ResourceBundle bundle = ja.get(tag, error);
+        while (U_SUCCESS(error) && bundle.hasNext()) {
+            fSkipSet.puti(bundle.getNextString(error), 1, error);
         }
     }
 }
index a73274e3e9dd4799ed6bb8d123f5860e43d7abc2..ca1a3c28b7be80b78b1ae1e677c632cf164444b6 100644 (file)
@@ -376,11 +376,11 @@ class CjkBreakEngine : public DictionaryBreakEngine {
   const Normalizer2        *nfkcNorm2;
 
  private:
-  // Load Japanese particles and auxiliary verbs.
-  void loadJapaneseParticleAndAuxVerbs(UErrorCode& error);
+  // Load Japanese extensions.
+  void loadJapaneseExtensions(UErrorCode& error);
   // Load Japanese Hiragana.
   void loadHiragana(UErrorCode& error);
-  // Initialize fSkipSet by loading Japanese Hiragana, particles and auxiliary verbs.
+  // Initialize fSkipSet by loading Japanese Hiragana and extensions.
   void initJapanesePhraseParameter(UErrorCode& error);
 
   Hashtable fSkipSet;
index f36268c1712da761bc726633b5e408683562349e..1aa5914283c27f96be5a7cf90fb9b18afe451e4f 100644 (file)
@@ -12,14 +12,64 @@ ja{
         line_strict:process(dependency){"line_cj.brk"}
         line_strict_phrase:process(dependency){"line_phrase_cj.brk"}
     }
-    particles{
-         か, かしら, から, が, くらい, けれども, こそ,
-         さ, さえ, しか, だけ, だに, だの, て, で, でも,
-         と, ところが, とも, な, など, なり, に, ね, の,
-         ので, のに, は, ば, ばかり, へ, ほど, まで, も,
-         や, やら, よ, より, わ, を
-    }
-    auxVerbs {
-        です, でしょ, でし, ます, ませ, まし
+    extensions{
+        // Extensions.
+        // Entries in cjdict.txt categorized as particles (助詞), auxiliary verbs (助動詞),
+        // conjugations (活用)  and prefix of them.
+        // These entries are connected to the previous words for phrase based line breaking.
+        // https://ja.wikipedia.org/wiki/助詞
+        // https://ja.wikipedia.org/wiki/助動詞_(国文法)
+        // https://ja.wikipedia.org/wiki/活用
+        かい, かしら, から, きり, くらい,
+        ぐらい, けれど, けれども, こそ, さえ,
+        しか, した, ずつ, せる, せん,
+        たい, たがる, たく, たら, たり,
+        だけ, だに, だの, だり, つつ,
+        てる, です, でも, ところが, ところで,
+        とも, ない, なか, ながら, なく,
+        なし, なぞ, など, なら, なり,
+        なんぞ, ねる, ので, のに, のみ,
+        ばかり, へる, ほど, まい, まう,
+        まし, ます, まっ, まで, まま,
+        もん, やら, よう, より, らしい,
+        られる, れる, ろう, わっ, わな,
+        わら, わり, わる, われ, わん,
+
+        // Entries added for technical reasons (particle + others).        
+        // Entries in cjdict.txt, which are compound words starting from the above categories
+        // (i.e. particles, auxiliary verbs and conjunctions).
+        // These entries are connected to the previous words for phrase based line breaking.
+        えたい, えて, える, けた, けたい,
+        ける, させる, そうだ, っきゃ, っきり,
+        っけ, っす, ったらしい, っちゅう, って,
+        っていう, ってか, ってな, っと, っぱなし,
+        っぷり, っぽい, にあう, にあがる, にあたって,
+        にあたり, にあたりまして, にあたります, にあたる, において,
+        におきまして, における, にかけ, にかけて, にかけまして,
+        にたいして, にたいしまして, にたいします, にたいする, について,
+        につき, につきまして, につけ, につれ, につれて,
+        にて, にとって, にとり, にとりまして, にまつわります,
+        にまつわる, にもかかわらず, にゃ, によって, により,
+        によりまして, によります, による, にわたって, にわたり,
+        にわたりまして, にわたります, にわたる, に対し, に対して,
+        に対しまして, に対します, に対する, に当たって, に当たり,
+        に当たりまして, に当たります, に当たる, に従い, に従いまして,
+        に従います, に従う, に従って, に関し, に関して,
+        に関しまして, に関します, に関する, に際し, に際して,
+        ものの, ろうし, ろうと, われと, をの,
+        をめぐって, をめぐりまして, をめぐります, をめぐる, をもちまして,
+        をもって, を以て, を通して, を通しまして, を通じ,
+        を通じて, を通じまして, んじゃ, んで,
+
+        // Entries added for technical reasons (noun suffix).
+        // Entries in cjdict.txt, which are suffixes of nouns.
+        // These entries should be connected to the previous (noun) words.
+        々宮, 々家, え目, が丘, が台,
+        が床, が浜, ヵ国, ヵ年, ヵ所,
+        ヵ月, ヵ村, ヵ条, ヶ丘, ヶ国,
+        ヶ島, ヶ年, ヶ所, ヶ月, ヶ村,
+        ヶ条, ージ, ーズ, ータ, ード,
+        ーニャ, ープランス, ーユ, ーランド, ーリンズ,
+        ーン,
     }
 }
index e74ee60edb6cbdb6a83686adaca3faded4fbfef5..cde514a23470cdc4d9187b17f1ffde1151eecff1 100644 (file)
@@ -1892,8 +1892,8 @@ Bangkok)•</data>
 <data>•\uff19\u6708\u306b•\u6771\u4eac\u304b\u3089•\u53cb\u9054\u304c•\u904a\u3073\u306b•\u6765\u305f•</data>
 #る文字「そうだ、京都」-> る•文字•「そうだ、•京都」•
 <data>•\u308b•\u6587\u5b57•\u300c\u305d\u3046\u3060\u3001•\u4eac\u90fd\u300d•</data>
-#乗車率90%程度だろうか。 -> 乗車•率•90%•程度だろうか。•
-<data>•\u4e57\u8eca•\u7387•\uff19\uff10\uff05•\u7a0b\u5ea6\u3060\u308d\u3046\u304b\u3002•</data>
+#乗車率90%程度だろうか。 -> 乗車•率•90%•程度だろうか。•
+<data>•\u4e57\u8eca•\u7387•\uff19\uff10\uff05•\u7a0b\u5ea6\u3060\u308d\u3046\u304b\u3002•</data>
 #[携帯電話]正しい選択 -> [携帯•電話]•正しい•選択•
 <data>•\uff3b\u643a\u5e2f•\u96fb\u8a71\uff3d•\u6b63\u3057\u3044•\u9078\u629e•</data>
 #純金製百人一首にサッカーボール -> 純金•製•百人一首に•サッカーボール
@@ -1903,8 +1903,8 @@ Bangkok)•</data>
 <data>•\uD82C\uDC48\u308B\uD82C\uDC38•\uFF08\u3057\u308B\u3053\uFF09\u3001•\u3042\uD82C\uDC19\u3088\u308D\u3057•\uFF08\u3042•\u304B\u3088\u308D\u3057\uFF09•</data>
 #最初に目に入るのは、「許諾なき写真禁止」のサインである。 -> 最初に▁目に▁入るのは、▁「許諾なき▁写真▁禁止」▁の▁サインで▁ある。
 <data>•\u6700\u521D\u306B•\u76EE\u306B•\u5165\u308B\u306E\u306F\u3001•\u300C\u8A31\u8AFE\u306A\u304D•\u5199\u771F•\u7981\u6B62\u300D•\u306E•\u30B5\u30A4\u30F3\u3067•\u3042\u308B\u3002•</data>
-# docomoのサイト情報によると、78000パケット以上▁使うならパケ放題がいいとか -> docomoの▁サイト▁情報によると、▁78000パケット▁以上▁使う▁なら▁パケ▁放題が▁いい▁とか
-<data>•\uFF44\uFF4F\uFF43\uFF4F\uFF4D\uFF4F\u306E•\u30B5\u30A4\u30C8•\u60C5\u5831•\u306B\u3088\u308B\u3068\u3001•\uFF17\uFF18\uFF10\uFF10\uFF10\u30D1\u30B1\u30C3\u30C8•\u4EE5\u4E0A•\u4F7F\u3046•\u306A\u3089•\u30D1\u30B1•\u653E\u984C\u304C•\u3044\u3044•\u3068\u304B•</data>
+#docomoのサイト情報によると、78000パケット以上▁使うならパケ放題がいいとか -> docomoの▁サイト▁情報によると、▁78000パケット▁以上▁使うなら▁パケ▁放題が▁いい▁とか
+<data>•\uFF44\uFF4F\uFF43\uFF4F\uFF4D\uFF4F\u306E•\u30B5\u30A4\u30C8•\u60C5\u5831\u306B\u3088\u308B\u3068\u3001•\uFF17\uFF18\uFF10\uFF10\uFF10\u30D1\u30B1\u30C3\u30C8•\u4EE5\u4E0A•\u4F7F\u3046\u306A\u3089•\u30D1\u30B1•\u653E\u984C\u304C•\u3044\u3044•\u3068\u304B•</data>
 #日本の携帯はCDMAの形だといわれています -> 日本の▁携帯は▁CDMAの▁形だと▁いわれ▁ています
 <data>•\u65E5\u672C\u306E•\u643A\u5E2F\u306F•\uFF23\uFF24\uFF2D\uFF21\u306E•\u5F62\u3060\u3068•\u3044\u308F\u308C•\u3066\u3044\u307E\u3059•</data>
 #中国の携帯は約500元から5000元です -> 中国の▁携帯は▁約▁500元から▁5000元です
@@ -1913,6 +1913,11 @@ Bangkok)•</data>
 <data>•\u30D7\u30EA\u30DA\u30A4\u30C9\u30AB\u30FC\u30C9•\u643A\u5E2F•\u5E03\u6559•</data>
 #しかもロゴがUnicode!! -> しかも▁ロゴが▁Unicode!!
 <data>•\u3057\u304B\u3082•\u30ED\u30B4\u304C•\uFF35\uFF4E\uFF49\uFF43\uFF4F\uFF44\uFF45\uFF01\uFF01•</data>
+#しかし、これらのサービスは6年間使ってこなかった自分にとっては特に必要でないものであり、これからこの機能が加わったからといって特別ハッピーなわけでもない。
+#-> しかし、▁これらの▁サービスは▁6年間▁使ってこなかった▁自分にとっては▁特に▁必要でない▁もので▁あり、▁これから▁この▁機能が▁加わったから▁といって▁特別▁ハッピーな▁わけでもない。
+<data>•\u3057\u304B\u3057\u3001•\u3053\u308C\u3089\u306E•\u30B5\u30FC\u30D3\u30B9\u306F•\uFF16\u5E74\u9593•\u4F7F\u3063\u3066\u3053\u306A\u304B\u3063\u305F•\u81EA\u5206\u306B\u3068\u3063\u3066\u306F•\u7279\u306B•\u5FC5\u8981\u3067\u306A\u3044•\u3082\u306E\u3067•\u3042\u308A\u3001•\u3053\u308C\u304B\u3089•\u3053\u306E•\u6A5F\u80FD\u304C•\u52A0\u308F\u3063\u305F\u304B\u3089•\u3068\u3044\u3063\u3066•\u7279\u5225•\u30CF\u30C3\u30D4\u30FC\u306A•\u308F\u3051\u3067\u3082\u306A\u3044\u3002•</data>
+#自由が丘での三ヶ月の生活を通して得られる経験 -> 自由が丘での▁三ヶ月の▁生活を通して▁得られる▁経験
+<data>•\u81EA\u7531\u304C\u4E18\u3067\u306E•\u4E09\u30F6\u6708\u306E•\u751F\u6D3B\u3092\u901A\u3057\u3066•\u5F97\u3089\u308C\u308B•\u7D4C\u9A13•</data>
 
 ####################################################################################
 #
index a6da7d502ccab90a6483985c9fd265b0027b11b5..ee66c46da0c31079fa6eb06e5719fe73fe43e315 100644 (file)
@@ -54,19 +54,17 @@ public class CjkBreakEngine extends DictionaryBreakEngine {
     }
 
     private void initializeJapanesePhraseParamater() {
-        loadJapaneseParticleAndAuxVerbs();
+        loadJapaneseExtensions();
         loadHiragana();
     }
 
-    private void loadJapaneseParticleAndAuxVerbs() {
+    private void loadJapaneseExtensions() {
         UResourceBundle rb = UResourceBundle.getBundleInstance(ICUData.ICU_BRKITR_BASE_NAME, "ja");
-        final String[] tags = {"particles", "auxVerbs"};
-        for (String tag : tags) {
-            UResourceBundle bundle = rb.get(tag);
-            UResourceBundleIterator iterator = bundle.getIterator();
-            while (iterator.hasNext()) {
-                fSkipSet.add(iterator.nextString());
-            }
+        final String tag = "extensions";
+        UResourceBundle bundle = rb.get(tag);
+        UResourceBundleIterator iterator = bundle.getIterator();
+        while (iterator.hasNext()) {
+            fSkipSet.add(iterator.nextString());
         }
     }
 
@@ -293,7 +291,7 @@ public class CjkBreakEngine extends DictionaryBreakEngine {
             // In phrase breaking, there has to be a breakpoint between Cj character and
             // the number/open punctuation.
             // E.g. る文字「そうだ、京都」->る▁文字▁「そうだ、▁京都」-> breakpoint between 字 and「
-            // E.g. 乗車率90%程度だろうか -> 乗車▁率▁90%▁程度だろうか -> breakpoint between 率 and 9
+            // E.g. 乗車率90%程度だろうか -> 乗車▁率▁90%▁程度だろうか -> breakpoint between 率 and 9
             // E.g. しかもロゴがUnicode! -> しかも▁ロゴが▁Unicode!-> breakpoint between が and U
             if (isPhraseBreaking) {
                 if (!fDigitOrOpenPunctuationOrAlphabetSet.contains(inText.setIndex(endPos))) {
index 0dc31673b4c0f06aac19482bdcb1c6f47f4d9a33..ca62e9d03325180c2b6bb2c062f60e985870374d 100644 (file)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:658d41e63f73089111e306f0d90b2b3aa4757146d4eda963f8e181c0acf2b9ab
-size 13866832
+oid sha256:a2023c8c2492957393643b34d6b9396060acb3dd8d66d28bf023d118ea03eab7
+size 13867661
index 7ce295810ed3333034c0500c0317ed983104d28c..669f41ed5b7d8026f7967d9a969d5236e8d4428d 100644 (file)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:79e4e94b0fc31ed37701b94512b985c6bf80429bb3420adb645abc4f26c913d7
+oid sha256:1bbf45782f7b1026b5ead53ffa5c1d77bb2dc8e45bdf8774be2dae31855a6e63
 size 96440
index a504f6883214d1df4afb74f5b250f38e10ab5118..9b3f04cac48907c604a28639b5367e5f3a791702 100644 (file)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:c20f10955116ac255c504e8743a9c4b2eab9c0bac7dc2250f1fbe775100f3b8a
+oid sha256:26b283b1ea008e2750b1dfcfc1150fce21dc5fcbdcb4f79b1a9148e18ce926f1
 size 826064
index 0645d0b6bbd6423b24c049565984661eae8348ae..17418e382de25b11b7a16df733ef83c8ad0cd892 100644 (file)
@@ -1892,8 +1892,8 @@ Bangkok)•</data>
 <data>•\uff19\u6708\u306b•\u6771\u4eac\u304b\u3089•\u53cb\u9054\u304c•\u904a\u3073\u306b•\u6765\u305f•</data>
 #る文字「そうだ、京都」-> る•文字•「そうだ、•京都」•
 <data>•\u308b•\u6587\u5b57•\u300c\u305d\u3046\u3060\u3001•\u4eac\u90fd\u300d•</data>
-#乗車率90%程度だろうか。 -> 乗車•率•90%•程度だろうか。•
-<data>•\u4e57\u8eca•\u7387•\uff19\uff10\uff05•\u7a0b\u5ea6\u3060\u308d\u3046\u304b\u3002•</data>
+#乗車率90%程度だろうか。 -> 乗車•率•90%•程度だろうか。•
+<data>•\u4e57\u8eca•\u7387•\uff19\uff10\uff05•\u7a0b\u5ea6\u3060\u308d\u3046\u304b\u3002•</data>
 #[携帯電話]正しい選択 -> [携帯•電話]•正しい•選択•
 <data>•\uff3b\u643a\u5e2f•\u96fb\u8a71\uff3d•\u6b63\u3057\u3044•\u9078\u629e•</data>
 #純金製百人一首にサッカーボール -> 純金•製•百人一首に•サッカーボール
@@ -1903,8 +1903,8 @@ Bangkok)•</data>
 <data>•\uD82C\uDC48\u308B\uD82C\uDC38•\uFF08\u3057\u308B\u3053\uFF09\u3001•\u3042\uD82C\uDC19\u3088\u308D\u3057•\uFF08\u3042•\u304B\u3088\u308D\u3057\uFF09•</data>
 #最初に目に入るのは、「許諾なき写真禁止」のサインである。 -> 最初に▁目に▁入るのは、▁「許諾なき▁写真▁禁止」▁の▁サインで▁ある。
 <data>•\u6700\u521D\u306B•\u76EE\u306B•\u5165\u308B\u306E\u306F\u3001•\u300C\u8A31\u8AFE\u306A\u304D•\u5199\u771F•\u7981\u6B62\u300D•\u306E•\u30B5\u30A4\u30F3\u3067•\u3042\u308B\u3002•</data>
-# docomoのサイト情報によると、78000パケット以上▁使うならパケ放題がいいとか -> docomoの▁サイト▁情報によると、▁78000パケット▁以上▁使う▁なら▁パケ▁放題が▁いい▁とか
-<data>•\uFF44\uFF4F\uFF43\uFF4F\uFF4D\uFF4F\u306E•\u30B5\u30A4\u30C8•\u60C5\u5831•\u306B\u3088\u308B\u3068\u3001•\uFF17\uFF18\uFF10\uFF10\uFF10\u30D1\u30B1\u30C3\u30C8•\u4EE5\u4E0A•\u4F7F\u3046•\u306A\u3089•\u30D1\u30B1•\u653E\u984C\u304C•\u3044\u3044•\u3068\u304B•</data>
+#docomoのサイト情報によると、78000パケット以上▁使うならパケ放題がいいとか -> docomoの▁サイト▁情報によると、▁78000パケット▁以上▁使うなら▁パケ▁放題が▁いい▁とか
+<data>•\uFF44\uFF4F\uFF43\uFF4F\uFF4D\uFF4F\u306E•\u30B5\u30A4\u30C8•\u60C5\u5831\u306B\u3088\u308B\u3068\u3001•\uFF17\uFF18\uFF10\uFF10\uFF10\u30D1\u30B1\u30C3\u30C8•\u4EE5\u4E0A•\u4F7F\u3046\u306A\u3089•\u30D1\u30B1•\u653E\u984C\u304C•\u3044\u3044•\u3068\u304B•</data>
 #日本の携帯はCDMAの形だといわれています -> 日本の▁携帯は▁CDMAの▁形だと▁いわれ▁ています
 <data>•\u65E5\u672C\u306E•\u643A\u5E2F\u306F•\uFF23\uFF24\uFF2D\uFF21\u306E•\u5F62\u3060\u3068•\u3044\u308F\u308C•\u3066\u3044\u307E\u3059•</data>
 #中国の携帯は約500元から5000元です -> 中国の▁携帯は▁約▁500元から▁5000元です
@@ -1913,6 +1913,11 @@ Bangkok)•</data>
 <data>•\u30D7\u30EA\u30DA\u30A4\u30C9\u30AB\u30FC\u30C9•\u643A\u5E2F•\u5E03\u6559•</data>
 #しかもロゴがUnicode!! -> しかも▁ロゴが▁Unicode!!
 <data>•\u3057\u304B\u3082•\u30ED\u30B4\u304C•\uFF35\uFF4E\uFF49\uFF43\uFF4F\uFF44\uFF45\uFF01\uFF01•</data>
+#しかし、これらのサービスは6年間使ってこなかった自分にとっては特に必要でないものであり、これからこの機能が加わったからといって特別ハッピーなわけでもない。
+#-> しかし、▁これらの▁サービスは▁6年間▁使ってこなかった▁自分にとっては▁特に▁必要でない▁もので▁あり、▁これから▁この▁機能が▁加わったから▁といって▁特別▁ハッピーな▁わけでもない。
+<data>•\u3057\u304B\u3057\u3001•\u3053\u308C\u3089\u306E•\u30B5\u30FC\u30D3\u30B9\u306F•\uFF16\u5E74\u9593•\u4F7F\u3063\u3066\u3053\u306A\u304B\u3063\u305F•\u81EA\u5206\u306B\u3068\u3063\u3066\u306F•\u7279\u306B•\u5FC5\u8981\u3067\u306A\u3044•\u3082\u306E\u3067•\u3042\u308A\u3001•\u3053\u308C\u304B\u3089•\u3053\u306E•\u6A5F\u80FD\u304C•\u52A0\u308F\u3063\u305F\u304B\u3089•\u3068\u3044\u3063\u3066•\u7279\u5225•\u30CF\u30C3\u30D4\u30FC\u306A•\u308F\u3051\u3067\u3082\u306A\u3044\u3002•</data>
+#自由が丘での三ヶ月の生活を通して得られる経験 -> 自由が丘での▁三ヶ月の▁生活を通して▁得られる▁経験
+<data>•\u81EA\u7531\u304C\u4E18\u3067\u306E•\u4E09\u30F6\u6708\u306E•\u751F\u6D3B\u3092\u901A\u3057\u3066•\u5F97\u3089\u308C\u308B•\u7D4C\u9A13•</data>
 
 ####################################################################################
 #