{"id":43341,"date":"2024-10-09T12:00:00","date_gmt":"2024-10-09T03:00:00","guid":{"rendered":"https:\/\/tech-lab.sios.jp\/?p=43341"},"modified":"2024-10-09T10:45:22","modified_gmt":"2024-10-09T01:45:22","slug":"python%e3%81%a7%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%82%92%e8%aa%ad%e3%81%bf%e6%96%b9%e9%80%9a%e3%82%8a%e3%81%ae%e3%83%ad%e3%83%bc%e3%83%9e%e5%ad%97%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/tech-lab.sios.jp\/archives\/43341","title":{"rendered":"python\u3067\u65e5\u672c\u8a9e\u3092\u8aad\u307f\u65b9\u901a\u308a\u306e\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3059\u308b"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u306f\u3058\u3081\u306b<\/h2>\n\n\n\n<p>\u3053\u3093\u306b\u3061\u306f\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001python\u3067\u65e5\u672c\u8a9e\u3092\u8aad\u307f\u65b9\u306b\u6cbf\u3063\u305f\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3055\u3066\u3001\u4f55\u3067\u305d\u3093\u306a\u3053\u3068\u3059\u308b\u3053\u3068\u306b\u306a\u3063\u305f\u304b\u3068\u8a00\u3044\u307e\u3059\u3068\u3001\u5148\u65e5OSC\u306b\u53c2\u52a0\u3057\u3001AI\u3092\u4f7f\u3063\u305f\u30ed\u30dc\u30c3\u30c8\u306e\u30c7\u30e2\u306b\u95a2\u9023\u3057\u3066\u3044\u307e\u3059\u3002AI\u3092\u4f7f\u3063\u305f\u30ed\u30dc\u30c3\u30c8\u306b\u3064\u3044\u3066\u306f<a href=\"https:\/\/tech-lab.sios.jp\/archives\/43344\" target=\"_blank\" rel=\"noopener\" title=\"\u3053\u3061\u3089\u306e\u8a18\u4e8b\">\u3053\u3061\u3089\u306e\u8a18\u4e8b<\/a>\u306b\u8a73\u3057\u304f\u66f8\u3044\u3066\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u30ed\u30dc\u30c3\u30c8(Qumcum)\u306b\u306f\u558b\u308b\u6a5f\u80fd\u304c\u3042\u308a\u3001AI\u306b\u3088\u3063\u3066\u558b\u308b\u5185\u5bb9\u3092\u6c7a\u3081\u3066\u3044\u307e\u3059\u3002Qumcum\u306f\u30ed\u30fc\u30de\u5b57\u3057\u304b\u53d7\u3051\u4ed8\u3051\u306a\u3044\u4ed5\u69d8\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u304c\u3001AI\u306f\u558b\u308a\u305f\u3044\u6587\u7ae0\u3092\u65e5\u672c\u8a9e(\u6f22\u5b57\u304b\u306a\u4ea4\u3058\u308a)\u3067\u8fd4\u3057\u307e\u3059\u3002\u3057\u304b\u3082\u3001\u558b\u308b\u3068\u3044\u3046\u3053\u3068\u306f\u3001\u6587\u5b57\u3067\u306f\u306a\u304f\u97f3\u3067\u3059\u306e\u3067\u8aad\u307f\u65b9\u306b\u6e96\u62e0\u3057\u305f\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u300c\u65e5\u672c\u8a9e\u306f\u96e3\u3057\u3044\u300d\u306f\u300cnihongowamuzukasi-\u300d\u306e\u69d8\u306b\u300c\u306f\u300d\u306f\u300cwa\u300d\u306b\u3001\u300c\u3057\u3044\u300d\u306f\u300csi-\u300d\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002(\u534a\u89d2\u30cf\u30a4\u30d5\u30f3\u306f\u9577\u97f3\u7b26\u3067\u3059\u3002)<\/p>\n\n\n\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001Python\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u3063\u3066\u6f22\u5b57\u304b\u306a\u4ea4\u3058\u308a\u306e\u65e5\u672c\u8a9e\u3092\u8aad\u307f\u65b9\u306e\u30ed\u30fc\u30de\u5b57\u8868\u8a18\u306b\u5909\u63db\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3064\u307e\u308a\u3053\u306e\u8a18\u4e8b\u306f\u3001AI\u306e\u30c7\u30e2\u306eAI\u3058\u3083\u306a\u3044\u90e8\u5206\u306e\u89e3\u8aac\u3063\u3066\u3053\u3068\u3067\u3059\u3002\uff08\u7b11\uff09<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b9f\u88c5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u6f22\u5b57\u304b\u306a\u4ea4\u3058\u308a\u21d2\u30ab\u30bf\u30ab\u30ca(\u8aad\u307f)<\/h3>\n\n\n\n<p>\u6f22\u5b57\u304b\u306a\u4ea4\u3058\u308a\u306e\u65e5\u672c\u8a9e\u306e\u6587\u7ae0\u304b\u3089\u8aad\u307f\u306e\u97f3\u306b\u5909\u63db\u3059\u308b\u306b\u306f<a href=\"https:\/\/github.com\/polm\/fugashi\" target=\"_blank\" rel=\"noopener\" title=\"fugashi\">fugashi<\/a>\u3068\u3044\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002fugashi\u306f\u5f62\u614b\u7d20\u89e3\u6790\u30c4\u30fc\u30eb\u3067\u3042\u308bMeCab\u306e\u30e9\u30c3\u30d1\u30fc\u3067\u3001\u8f9e\u66f8\u3068\u3057\u3066<a href=\"https:\/\/unidic.ninjal.ac.jp\/\" target=\"_blank\" rel=\"noopener\" title=\"\">UniDic<\/a>\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\npip install &#039;fugashi&#x5B;unidic-lite]&#039;\n<\/pre><\/div>\n\n\n<p><code>fugashi.Tagger<\/code>\u3067\u65e5\u672c\u8a9e\u3092\u5f62\u614b\u7d20\u89e3\u6790\u3057\u305f<code>fugashi.fugashi.UnidicNode<\/code>\u578b\u306e\u30ea\u30b9\u30c8\u306b\u51fa\u6765\u308b\u306e\u3067\u3001\u5404\u8981\u7d20\u3067\u8aad\u307f\u65b9(<code>w.feature.pron<\/code>)\u3092\u53d6\u5f97\u3057\u3066\u7d50\u5408\u3057\u307e\u3059\u3002\u3061\u306a\u307f\u306b\u305d\u306e\u307e\u307e\u306e\u6587\u5b57\u5217\u306f<code>w.surface<\/code>\u3067\u3001\u8aad\u307f\u65b9\u3067\u306f\u306a\u304f\u6587\u5b57\u3068\u3057\u3066\u306e\u30ab\u30bf\u30ab\u30ca\u306f<code>w.feature.kana<\/code>\u3067\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import fugashi\n\nfugger = fugashi.Tagger()\n\ntext = &quot;\u65e5\u672c\u8a9e\u306f\u96e3\u3057\u3044&quot;\n\n# fugashi\u3067\u65e5\u672c\u8a9e\u306e\u90e8\u5206\u3092\u8aad\u307f(\u30ab\u30bf\u30ab\u30ca)\u306b\u5909\u63db\nwords = fugger(text)\nresult = []\nfor w in words:\n    result.append(w.feature.pron)\nkana = &quot;&quot;.join(result)\n\nprint(kana)<\/code><\/pre><\/div>\n\n\n\n<p>\u5b9f\u969b\u306b\u4f7f\u3046\u6642\u306b\u306f\u3001\u9014\u4e2d\u306b\u8aad\u307e\u306a\u3044\u6587\u5b57(\u53e5\u8aad\u70b9\u3084\uff1f\u306a\u3069)\u304c\u3042\u308b\u3068\u6d88\u3048\u3066\u3057\u307e\u3046\u306e\u3067\u3001<code><a href=\"https:\/\/docs.python.org\/ja\/3\/library\/re.html#re.sub\" target=\"_blank\" rel=\"noopener\" title=\"re.sub()\">re.sub()<\/a><\/code>\u95a2\u6570\u3092\u4f7f\u3063\u3066\u3001\u6b63\u898f\u8868\u73fe\u3067\u65e5\u672c\u8a9e\u306e\u90e8\u5206\u3060\u3051\u3092\u629c\u304d\u51fa\u3057\u3066\u5909\u63db\u3057\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u306f\u3001re.sub(\u6b63\u898f\u8868\u73fe, \u95a2\u6570, \u5165\u529b\u6587\u5b57\u5217)\u306e\u5f62\u3067\u4f7f\u3046\u3068\u3001\u5165\u529b\u6587\u5b57\u5217\u306e\u5185\u3001\u6b63\u898f\u8868\u73fe\u306b\u5bfe\u5fdc\u3059\u308b\u90e8\u5206\u5168\u3066\u306b\u5bfe\u3057\u3066\u3001\u95a2\u6570\u304c\u5b9f\u884c\u3055\u308c\u305d\u306e\u8fd4\u308a\u5024\u306b\u7f6e\u63db\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u307e\u305f\u3001\u8f9e\u66f8\u306b\u306a\u3044\u5358\u8a9e(\u56fa\u6709\u540d\u8a5e\u306a\u3069)\u3067\u306f\u3001<code>w.feature.pron<\/code>\u304c<code>None<\/code>\u306b\u306a\u308a\u3001<code>join<\/code>\u51fa\u6765\u306a\u3044\u306e\u3067\u3001\u8aad\u307f\u3067\u306f\u306a\u304f\u305d\u306e\u307e\u307e\u306e\u6587\u5b57\u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import fugashi\nimport re\n\nfugger = fugashi.Tagger()\n\ntext = &quot;\u65e5\u672c\u8a9e\u306f\u96e3\u3057\u3044&quot;\n\n# fugashi\u3067\u65e5\u672c\u8a9e\u306e\u90e8\u5206\u3092\u8aad\u307f(\u30ab\u30bf\u30ab\u30ca)\u306b\u5909\u63db\ndef convert_to_yomi(match):\n    # \u8f9e\u66f8\u306b\u8aad\u307f\u304c\u7121\u3044\u5834\u5408(\u56fa\u6709\u540d\u8a5e\u306a\u3069)\u306f\u305d\u306e\u307e\u307e\u306e\u6587\u5b57\u3092\u8fd4\u3059\n    return &quot;&quot;.join([w.feature.pron if w.feature.pron else w.surface for w in fugger(match.group())])\n\n# \u6b63\u898f\u8868\u73fe\u3067\u30c6\u30ad\u30b9\u30c8\u4e2d\u306e\u65e5\u672c\u8a9e\u3092\u898b\u3064\u3051\u308b\u3066\u8aad\u307f\u306b\u5909\u63db\u3059\u308b\nkana = re.sub(r&#39;[\u3041-\u3093\u30a1-\u30f3\u4e00-\u9fa5\u3005\u3006\u30f5\u30f6\u30fc]+&#39;, convert_to_yomi, text)\n\nprint(kana)<\/code><\/pre><\/div>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\n\u30cb\u30c3\u30dd\u30f3\u30b4\u30ef\u30e0\u30ba\u30ab\u30b7\u30fc\n<\/pre><\/div>\n\n\n<p>\u540c\u5f62\u7570\u97f3\u8a9e\u306f\u51e6\u7406\u3067\u304d\u306a\u3044\u306e\u3067\u3001\u300c\u30cb\u30db\u30f3\u30b4\u300d\u3067\u306f\u306a\u304f\u300c\u30cb\u30c3\u30dd\u30f3\u30b4\u300d\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u305d\u308c\u4ee5\u5916\u306f\u6b63\u3057\u304f\u8aad\u307f\u65b9\u306b\u5909\u63db\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30ab\u30bf\u30ab\u30ca\u21d2\u30ed\u30fc\u30de\u5b57<\/h3>\n\n\n\n<p>\u30ab\u30bf\u30ab\u30ca\u3092\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3059\u308b\u306b\u306f\u3001<a href=\"https:\/\/codeberg.org\/miurahr\/pykakasi\" target=\"_blank\" rel=\"noopener\" title=\"pykakasi\">pykakasi<\/a>\u3068\u3044\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002pykakasi\u306f\u3001\u6f22\u5b57\u30fb\u3072\u3089\u304c\u306a\u30fb\u30ab\u30bf\u30ab\u30ca\u306e\u65e5\u672c\u8a9e\u30c6\u30ad\u30b9\u30c8\u3092\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3001c\u8a00\u8a9e\u306ekakasi\u3068\u3044\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u306epython\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4eca\u56de\u306f\u3001\u8aad\u307f\u306e\u97f3\u306e\u30ed\u30fc\u30de\u5b57\u306b\u3057\u305f\u304b\u3063\u305f\u306e\u3067\u3001\u524d\u6bb5\u3067fugashi\u3092\u5165\u308c\u307e\u3057\u305f\u304c\u3001\u305f\u3060\u30ed\u30fc\u30de\u5b57\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001pykakasi\u3060\u3051\u3067\u5341\u5206\u3060\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\npip install pykakasi\n<\/pre><\/div>\n\n\n<p><code>kks.convert(text)<\/code>\u3067\u6587\u7bc0\u3054\u3068\u306b\u5206\u5272\u3057\u3066\u30ed\u30fc\u30de\u5b57\u306e\u8f9e\u66f8\u306e\u30ea\u30b9\u30c8\u304c\u51fa\u6765\u308b\u306e\u3067\u3001\u305d\u306e\u4e2d\u304b\u3089\u3001<code>hepburn<\/code>(\u30d8\u30dc\u30f3\u5f0f\u30ed\u30fc\u30de\u5b57)\u3092\u53d6\u5f97\u3057\u3066\u7d50\u5408\u3057\u3066\u3044\u307e\u3059\u3002\u4ed6\u306b\u3082\u3001<code>orig<\/code>(\u5165\u529b\u30c6\u30ad\u30b9\u30c8),<code>hira<\/code>(\u3072\u3089\u304c\u306a),<code>kana<\/code>(\u30ab\u30bf\u30ab\u30ca),<code>kunrei<\/code>(\u8a13\u4ee4\u5f0f\u30ed\u30fc\u30de\u5b57),<code>passport<\/code>(\u30d1\u30b9\u30dd\u30fc\u30c8\u4ed5\u69d8\u306e\u30ed\u30fc\u30de\u5b57)\u304c\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import pykakasi\n\nkks = pykakasi.kakasi()\n\nkana = &quot;\u30cb\u30c3\u30dd\u30f3\u30b4\u30ef\u30e0\u30ba\u30ab\u30b7\u30fc&quot;\n\nwords = kks.convert(kana)\nprint(&quot;words&quot;,words, type(words))\nresult = []\nfor w in words:\n    result.append(w[&#39;hepburn&#39;])\nroman = &quot;&quot;.join(result)\n\nprint(roman)<\/code><\/pre><\/div>\n\n\n\n<p>\u3053\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3060\u3068\u9577\u97f3\u5e9c\u304c\u6bcd\u97f3\u306b\u5909\u63db\u3055\u308c\u3066\u3057\u307e\u3046(\u300c\u30b7\u30fc\u300d\u21d2\u300cshii\u300d\u306a\u3069)\u306e\u3067\u3059\u304c\u3001\u305d\u306e\u307e\u307e\u306b\u3057\u3066\u307b\u3057\u304b\u3063\u305f\u306e\u3067\u3001\u524d\u6bb5\u3068\u540c\u3058\u304f\u3001re.sub\u95a2\u6570\u3092\u4f7f\u3063\u3066\u3001\u30ab\u30bf\u30ab\u30ca\u306e\u90e8\u5206\u3060\u3051\u3001pykakasi\u3092\u9069\u5fdc\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import pykakasi\nimport re\n\nkks = pykakasi.kakasi()\n\ntext = &quot;\u30cb\u30c3\u30dd\u30f3\u30b4\u30ef\u30e0\u30ba\u30ab\u30b7\u30fc&quot;\n\ndef convert_to_roman(match):\n    result = kks.convert(match.group())\n    return &quot;&quot;.join([r[&#39;hepburn&#39;] for r in result])\n\n# \u6b63\u898f\u8868\u73fe\u3067\u30ab\u30bf\u30ab\u30ca\u3092\u898b\u3064\u3051\u3066\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\nroman = re.sub(r&#39;[\u30a1-\u30f3]+&#39;, convert_to_roman, text)\n\nprint(roman)<\/code><\/pre><\/div>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nnippongowamuzukashi\u30fc\n<\/pre><\/div>\n\n\n<p>\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3067\u304d\u307e\u3057\u305f<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5168\u4f53<\/h3>\n\n\n\n<p>qumcum\u306b\u558b\u3089\u305b\u308b\u306b\u3042\u305f\u3063\u3066\u3001qumcum\u306e\u4ed5\u69d8\u3068\u3057\u3066\u4ed6\u306b\u8abf\u6574\u304c\u5fc5\u8981\u306a\u500b\u6240\u304c\u3044\u304f\u3064\u304b\u6709\u3063\u305f\u306e\u3067\u3001\u305d\u308c\u3089\u3092\u8ffd\u52a0\u3059\u308b\u3068\u5168\u4f53\u306e\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u69d8\u306b\u306a\u308a\u307e\u3059\u3002AI\u304c\u3069\u3093\u306a\u30c6\u30ad\u30b9\u30c8\u3092\u9001\u3063\u3066\u304f\u308b\u304b\u4e88\u60f3\u304c\u4ed8\u304b\u306a\u3044\u306e\u3067\u3001\u3044\u308d\u3093\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u8003\u616e\u3057\u3066\u3044\u305f\u3089\u9577\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u3002(\u307e\u3060\u3001\u6f22\u5b57\u306e\u56fa\u6709\u540d\u8a5e\u306a\u3069\u5bfe\u5fdc\u3067\u6765\u3066\u306a\u3044\u3067\u3059\u304c\u8ae6\u3081\u307e\u3057\u305f)<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import fugashi\nimport re\nimport pykakasi\nimport unicodedata\n\nfugger = fugashi.Tagger()\nkks = pykakasi.kakasi()\n\n# \u65e5\u672c\u8a9e\u3092\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3059\u308b\u95a2\u6570\ndef japanese_to_roman(text):\n\n    # \u534a\u89d2\u30fb\u5168\u89d2\u3092\u6b63\u898f\u5316\n    text = unicodedata.normalize(&#39;NFKC&#39;, text)\n\n    # fugashi\u3067\u65e5\u672c\u8a9e\u306e\u90e8\u5206\u3092\u8aad\u307f(\u30ab\u30bf\u30ab\u30ca)\u306b\u5909\u63db\n    def convert_to_yomi(match):\n        # \u8f9e\u66f8\u306b\u8aad\u307f\u304c\u7121\u3044\u5834\u5408(\u56fa\u6709\u540d\u8a5e\u306a\u3069)\u306f\u305d\u306e\u307e\u307e\u306e\u6587\u5b57\u3092\u8fd4\u3059\n        return &quot;&quot;.join([w.feature.pron if w.feature.pron else w.surface for w in fugger(match.group())])\n\n    # \u6b63\u898f\u8868\u73fe\u3067\u30c6\u30ad\u30b9\u30c8\u4e2d\u306e\u65e5\u672c\u8a9e\u3092\u898b\u3064\u3051\u308b\u3066\u8aad\u307f\u306b\u5909\u63db\u3059\u308b\n    yomi = re.sub(r&#39;[\u3041-\u3093\u30a1-\u30f3\u4e00-\u9fa5\u3005\u3006\u30f5\u30f6\u30fc]+&#39;, convert_to_yomi, text)\n\n    # \u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u306f\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u306e\u8aad\u307f\u306b\u5909\u63db\n    alphabet = str.maketrans({\n        &#39;A&#39;: &#39;\u30a8\u30fc&#39;, &#39;B&#39;: &#39;\u30d3\u30fc&#39;, &#39;C&#39;: &#39;\u30b7\u30fc&#39;, &#39;D&#39;: &#39;\u30c7\u30a3\u30fc&#39;, &#39;E&#39;: &#39;\u30a4\u30fc&#39;,\n        &#39;F&#39;: &#39;\u30a8\u30d5&#39;, &#39;G&#39;: &#39;\u30b8\u30fc&#39;, &#39;H&#39;: &#39;\u30a8\u30a4\u30c1&#39;, &#39;I&#39;: &#39;\u30a2\u30a4&#39;, &#39;J&#39;: &#39;\u30b8\u30a7\u30a4&#39;,\n        &#39;K&#39;: &#39;\u30b1\u30a4&#39;, &#39;L&#39;: &#39;\u30a8\u30eb&#39;, &#39;M&#39;: &#39;\u30a8\u30e0&#39;, &#39;N&#39;: &#39;\u30a8\u30cc&#39;, &#39;O&#39;: &#39;\u30aa\u30fc&#39;,\n        &#39;P&#39;: &#39;\u30d4\u30fc&#39;, &#39;Q&#39;: &#39;\u30ad\u30e5\u30fc&#39;, &#39;R&#39;: &#39;\u30a2\u30fc\u30eb&#39;, &#39;S&#39;: &#39;\u30a8\u30b9&#39;, &#39;T&#39;: &#39;\u30c6\u30a3\u30fc&#39;,\n        &#39;U&#39;: &#39;\u30e6\u30fc&#39;, &#39;V&#39;: &#39;\u30f4\u30a3\u30fc&#39;, &#39;W&#39;: &#39;\u30c0\u30d6\u30ea\u30e5\u30fc&#39;, &#39;X&#39;: &#39;\u30a8\u30c3\u30af\u30b9&#39;, &#39;Y&#39;: &#39;\u30ef\u30a4&#39;, &#39;Z&#39;: &#39;\u30bc\u30c3\u30c8&#39;,\n    })\n    yomi = yomi.upper().translate(alphabet)\n\n    # pykakasi\u3067\u30ab\u30bf\u30ab\u30ca\u3092\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\n    def convert_to_roman(match):\n        result = kks.convert(match.group())\n        return &quot;&quot;.join([r[&#39;hepburn&#39;] for r in result])\n\n    # \u6b63\u898f\u8868\u73fe\u3067\u30ab\u30bf\u30ab\u30ca\u3092\u898b\u3064\u3051\u3066\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\n    roman = re.sub(r&#39;[\u30a1-\u30f3]+&#39;, convert_to_roman, yomi)\n\n    # \u4e0d\u8981\u306a\u8a18\u53f7\u3092\u524a\u9664\n    roman = re.sub(r&#39;[^a-zA-Z0-9\u30fc\u3001\u3002\uff1f]&#39;, &#39;&#39;, roman)\n\n    # \u6570\u5b57\u3092 &lt;NUMK VAL=(\u6570\u5024)&gt; \u306e\u5f62\u5f0f\u306b\u5909\u63db\n    def replace_match(match):\n        return f&quot;&lt;NUMK VAL={match.group()}&gt;&quot;\n\n    # \u6b63\u898f\u8868\u73fe\u3067\u6570\u5b57\u90e8\u5206\u3092\u898b\u3064\u3051\u3066\u5909\u63db\n    num = re.sub(r&#39;\\d+&#39;, replace_match, roman)\n\n    # \u305d\u306e\u4ed6\u306e\u6587\u5b57\u3092\u5909\u63db\n    translation_table = str.maketrans({\n        &#39;\u3001&#39;: &#39;,&#39;,\n        &#39;\u3002&#39;: &#39;.&#39;,\n        &#39;\u30fc&#39;: &#39;-&#39;,\n        &#39;\uff1f&#39;: &#39;?&#39;,\n    })\n    return num.translate(translation_table)<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u88dc\u8db3<\/h2>\n\n\n\n<p>\u3053\u3093\u306a\u306b\u9577\u3005\u3068\u5909\u63db\u51e6\u7406\u3092\u66f8\u304f\u306a\u3089\u3001AI\u3067\u3084\u308c\u3070\u826f\u3044\u3093\u3058\u3083\u306a\u3044\uff1f\u3063\u3066\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p>\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u30b3\u30fc\u30c9\u306f\u7701\u7565\u3057\u307e\u3059\u304c\u3001\u4ee5\u4e0b\u306e\u753b\u50cf\u306e\u901a\u308a\u3001\u9593\u9055\u3048\u308b\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3057\u3001\u6bce\u56de\u56de\u7b54\u304c\u5909\u308f\u3063\u3066\u4e0d\u5b89\u5b9a\u3067\u3059\u3057\u3001\u5b9f\u884c\u901f\u5ea6\u3082\u9045\u3044\u3067\u3059\u3002(\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u3063\u305f\u65b9\u6cd5\u306f\u30010.002\u79d2\u3050\u3089\u3044\u3067\u3059\u3002)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"298\" src=\"https:\/\/i0.wp.com\/tech-lab.sios.jp\/wp-content\/uploads\/2024\/10\/66c19942ab4ba346fdb64ccc04cde373.png?resize=504%2C298&#038;ssl=1\" alt=\"\" class=\"wp-image-43608\"\/><\/figure>\n\n\n\n<p>\u30d7\u30ed\u30f3\u30d7\u30c8\u306a\u3069\u3092\u6539\u5584\u3059\u308c\u3070\u3001\u5b9f\u884c\u901f\u5ea6\u4ee5\u5916\u306f\u826f\u304f\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u79c1\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8907\u96d1\u3067\u53b3\u683c\u306a\u30eb\u30fc\u30eb\u306b\u5247\u3063\u305f\u5909\u63db\u306fAI\u306f\u307e\u3060\u307e\u3060\u82e6\u624b\u305d\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u307e\u3068\u3081<\/h2>\n\n\n\n<p>\u4eca\u56de\u306f\u3001python\u3067\u65e5\u672c\u8a9e\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u8aad\u307f\u65b9\u306b\u6cbf\u3063\u305f\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u66f8\u304d\u307e\u3057\u305f\u3002\u5272\u3068\u4eca\u56de\u4f7f\u3063\u305f\u30ed\u30dc\u30c3\u30c8\u306e\u4ed5\u69d8\u306e\u305b\u3044\u3067\u8907\u96d1\u306b\u306a\u3063\u3066\u308b\u30b3\u30fc\u30c9\u304c\u591a\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u3002\u540c\u3058\u30ed\u30dc\u30c3\u30c8\u3092\u4f7f\u3063\u3066\u308b\u3063\u3066\u65b9\u306b\u306f\u305d\u306e\u307e\u307e\u53c2\u8003\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u305d\u308c\u4ee5\u5916\u306e\u65b9\u306f\u9069\u5b9c\u5fc5\u8981\u306a\u500b\u6240\u3060\u3051\u53c2\u8003\u306b\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u95a2\u9023\u8a18\u4e8b<\/h3>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u3063\u305f\u30c7\u30e2\u306b\u3064\u3044\u3066(\u3064\u307e\u308a\u3001AI\u306e\u30c7\u30e2\u306eAI\u306e\u90e8\u5206\u306e\u89e3\u8aac)\u306f\u3001\u4ee5\u4e0b\u306b\u30ea\u30f3\u30af\u5f35\u308b\u306e\u3067\u3001\u826f\u3051\u308c\u3070\u8aad\u3093\u3067\u3044\u3063\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n<a class=\"linkto table\" href=\"https:\/\/tech-lab.sios.jp\/archives\/43344\"> <span class=\"tbcell tbimg\"><img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"160\" src=\"https:\/\/i0.wp.com\/tech-lab.sios.jp\/wp-content\/uploads\/2024\/10\/b17c739e97f19b018a9fd2ab4239e5d2.jpg?resize=160%2C160&amp;ssl=1\" class=\"attachment-thumb-160 size-thumb-160 wp-post-image\" alt=\"Qumcum\u00d7\u751f\u6210AI\uff1a\u30ed\u30dc\u30c3\u30c8\u3067\u8a66\u3059AI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\" srcset=\"https:\/\/i0.wp.com\/tech-lab.sios.jp\/wp-content\/uploads\/2024\/10\/b17c739e97f19b018a9fd2ab4239e5d2.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/tech-lab.sios.jp\/wp-content\/uploads\/2024\/10\/b17c739e97f19b018a9fd2ab4239e5d2.jpg?resize=160%2C160&amp;ssl=1 160w, https:\/\/i0.wp.com\/tech-lab.sios.jp\/wp-content\/uploads\/2024\/10\/b17c739e97f19b018a9fd2ab4239e5d2.jpg?zoom=2&amp;resize=160%2C160&amp;ssl=1 320w, https:\/\/i0.wp.com\/tech-lab.sios.jp\/wp-content\/uploads\/2024\/10\/b17c739e97f19b018a9fd2ab4239e5d2.jpg?zoom=3&amp;resize=160%2C160&amp;ssl=1 480w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/><\/span> <span class=\"tbcell tbtext\"> <time class=\"pubdate sng-link-time dfont\" itemprop=\"datePublished\" datetime=\"2024-10-03\">2024-10-03<\/time> \u300cQumcum\u00d7\u751f\u6210AI\u300d\u30ed\u30dc\u30c3\u30c8\u3067\u8a66\u3059AI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8:Python <\/span> <\/a><!-- Anyway Feedback Container \/\/-->\n<div class=\"afb_container\" id=\"afb-container-post-43341\">\u3054\u89a7\u3044\u305f\u3060\u304d\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\uff01\r\n\r\n<span class=\"message\">\u3053\u306e\u6295\u7a3f\u306f\u304a\u5f79\u306b\u7acb\u3061\u307e\u3057\u305f\u304b\uff1f<\/span>\r\n<br \/>\r\n<br \/>\r\n<a class=\"good\" href=\"#afb-post-43341\">\u5f79\u306b\u7acb\u3063\u305f<\/a>\r\n<a class=\"bad\" href=\"#afb-post-43341\">\u5f79\u306b\u7acb\u305f\u306a\u304b\u3063\u305f<\/a>\r\n<br \/>\r\n<br \/>\r\n<span>2\u4eba\u304c\u3053\u306e\u6295\u7a3f\u306f\u5f79\u306b\u7acb\u3063\u305f\u3068\u8a00\u3063\u3066\u3044\u307e\u3059\u3002<\/span><input type=\"hidden\" name=\"post_type\" value=\"post\" \/>\n<input type=\"hidden\" name=\"object_id\" value=\"43341\" \/>\n<\/div>\n<!-- \/\/Anyway Feedback Container -->","protected":false},"excerpt":{"rendered":"<p>\u306f\u3058\u3081\u306b \u3053\u3093\u306b\u3061\u306f\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001python\u3067\u65e5\u672c\u8a9e\u3092\u8aad\u307f\u65b9\u306b\u6cbf\u3063\u305f\u30ed\u30fc\u30de\u5b57\u306b\u5909\u63db\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002 \u3055\u3066\u3001\u4f55\u3067\u305d\u3093\u306a\u3053\u3068\u3059\u308b\u3053\u3068\u306b\u306a\u3063\u305f\u304b\u3068\u8a00\u3044\u307e\u3059\u3068\u3001\u5148\u65e5OSC\u306b\u53c2\u52a0\u3057\u3001AI\u3092\u4f7f\u3063\u305f\u30ed\u30dc\u30c3\u30c8\u306e\u30c7\u30e2\u306b\u95a2\u9023\u3057\u3066\u3044 &#8230; <\/p>\n","protected":false},"author":210,"featured_media":43634,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[298,284],"tags":[142,900],"class_list":{"0":"post-43341","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-oss","8":"category-event","9":"tag-python","10":"tag-osc","11":"entry"},"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/tech-lab.sios.jp\/wp-content\/uploads\/2024\/10\/samune-1.png?fit=1280%2C720&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/posts\/43341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/users\/210"}],"replies":[{"embeddable":true,"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/comments?post=43341"}],"version-history":[{"count":22,"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/posts\/43341\/revisions"}],"predecessor-version":[{"id":43635,"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/posts\/43341\/revisions\/43635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/media\/43634"}],"wp:attachment":[{"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/media?parent=43341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/categories?post=43341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tech-lab.sios.jp\/wp-json\/wp\/v2\/tags?post=43341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}