2024年12月7日土曜日

韓国語の「歌を歌う」みたいに名詞と動詞がだいたいセットになる言葉

 韓国語の「歌を歌う」みたいに名詞と動詞がだいたいセットになる言葉メモ

ただし、肝心の「歌を歌う」は노래를 부르다.


꿈을 꾸다. 夢を見る

잠을 자다. 寝る

그림을 그리다. 絵を描く

춤을 추다 踊りを踊る

부침개를 부치다 チヂミを焼く






=========

품사 品詞


명사 名詞

대명사 代名詞

수사 数詞

관형사 連体詞、冠形詞

부사 副詞

토씨 助詞

감탄사 感嘆詞


동사 動詞

형용사 形容詞


존재사 存在詞

지정사 指定詞

동명사 動名詞

부정사 不定詞(韓国語には存在しない)

조동사 助動詞

전치사 前置詞(韓国語には存在しない)

의문사 疑問詞

약자、준말、줄임말、줄인 말、약어 略語


체언 体言

용언 用言

어간 語幹

어미 語尾

관계어 関係語

독립어 独立語

수식어 修飾語

접속어 接続語


주어 主語

술어 述語

목적어 目的語


경어、존댓말、높임말、존경어 尊敬語

반말、반모 タメ口


말뜻、말귀 意味


한글 ハングル

모음 母音 21個=基本母音10個+合成母音11個

자음 子音 19個=基本子音10個+激音4個+濃音5個


안울림소리、무성음 無静音

평음、예사소리 平音 ㄱ, ㄷ, ㅂ, ㅅ, ㅈ

격음、거센소리 激音 ㅋ,ㅌ,ㅍ,ㅊ

경음、된소리 濃音 ㄲ,ㄸ,ㅃ,ㅆ,ㅉ

마찰음 摩擦音 ㅎ


울림소리、유성음 有声音

비음 鼻音 ㄴ,ㅁ,ㅇ

유음 流音 ㄹ


기역(キヨク)ㄱ

니은(ニウン)ㄴ

디귿(ティグッ)ㄷ

리을(リウル)ㄹ

미음(ミウム)ㅁ

비읍(ピウプ)ㅂ

시옷(シオッ)ㅅ

이응(イウン)ㅇ

지읒(チウッ)ㅈ

치읓(チウッ)ㅊ

키읔(キウク)ㅋ

티읕(ティウッ)ㅌ

피읖(ピウプ)ㅍ

히읗(ヒウッ)ㅎ

쌍기역(サンギヨク)ㄲ

쌍디귿(サンディグッ)ㄸ

쌍비읍(サンビウプ)ㅃ

쌍시옷(サンシオッ)ㅆ

쌍지읒(サンジウッ)ㅉ





2024年11月16日土曜日

韓国語の単語帳 「hanaの韓国語単語 中級編」は2週目から始めよう

韓国語の勉強のお話です。

この記事でお伝えしたいこと

・hanaの韓国語単語 <中級編>ハン検準2級レベル で勉強するときは、2週目から始めましょう


私は韓国語の勉強を始めて半年でハングル検定5級(98点)、1年でハングル検定4級(92点)、1年半でハングル検定3級(81点)に合格しました。

3級を受けるときにいろいろwebで検索したのですが、あまり情報がなくて寂しかったので私の経験談も少しだけ書いておきます。

韓国語の勉強を始めて1年で4級を受験した後、1年勉強してから3級を受けるつもりでしたが、知人に韓国語勉強のテキストをもらったのを機に頑張らないとと思って、事前の想定より半年早く受験の申し込みをしました。

試験前の勉強の進捗はというと、単語帳は半年以上前に1周終わっておりある程度は分かる状況、文法はできる韓国語中級1をやっていたのですが、難しくて心が折れており、試験2週間前まで9課までしか進んでいませんでした。しかも初級2や中級1前半の内容もきちんと身についていない状況。試験前に焦って雑に18課まで進めましたが、Reviewの練習問題の正答率は1割くらいでした。ヨボセヨ韓国語の練習問題の正答率は6~9割でした。

3級の試験を受けた感想は、リスニングが予想より全然聞き取れませんでした。単語の勉強だけはしっかりやっていたのでなんとか筆記で点数を稼いで合格することができました。3級までは60点合格なので完璧にできていなくても合格できる試験だと感じました。

単語の勉強について
5級の時は公式ホームページの語彙リスト、4級はどこかのサイトに載っていた語彙一覧で単語の勉強をしました。

3級の勉強を始めるとき(5級の受験直後)に単語帳を購入しようと思い、少し調べました。トリリンガルのトミさんの動画によると
・音声がある
・例文がある
・赤シートがある
・(カタカナで発音が書いてない)
がよさそうとのことでした。

今適当に検索して出てきたのが下記の画像になります。私は本屋でキクタンとできる韓国語単語集とhanaの韓国語単語を比較して、
・字が大きくてフォントが見やすかった
・今後を見据えた場合により上級のラインナップがある方がよかった
という理由で改訂版hanaの韓国語単語 <初中級編>ハン検3級レベルを購入しました。


購入してよかったことが2点あります。
・見出し語→メイン訳→例文→例文訳の音声mp3が無料でダウンロードできる
・難しい発音にはハングルの読み方(発音記号?)が記載されている

キクタンの音声も聞いてみましたが、私はBGMが無いほうが好みだしキクタンは例文の音声がなかったように思います。

私は単語帳で勉強するのが好きなので楽しく単語を学ぶことができました。
初見で知っている単語が4割くらい、見たことある単語が3割くらい、初めて見る単語が3割くらいの割合でした。
そして初中級が終わるころに(改訂版ではない方の)hanaの韓国語単語 中級編 ハン検準2級レベル を購入しました。

初中級が楽しかったので期待していたのですが、1週目が驚異的にとっつきにくく一瞬で挫折してしまいました。
最初の4日間が家族・人間関係の単語になっているのですが、
・子供、ご子息、一人息子、双子
・人妻、妻、奥さま、妻をめとること、嫁、婿、(弟から見た)兄の妻、(弟から見た)姉の夫、(妹から見た)兄の妻、(妹から見た)姉の夫、(兄から見た)弟の妻、(兄から見た)妹の夫、(姉から見た)弟の妻、(姉から見た)妹の夫、
・妻の実家、既婚女性の実家、夫の実家、嫁ぎ先、母の実家
・宴会、還暦、先祖、子孫、節句、チュソク、祭祀、葬式
など、しょっぱなから全力で心を折りに来ます。

そして5日目が動詞なのですが
・むく、折る、切る、刻む、破る、破裂させる、割る、壊す、剥がす、溶かす、裂く、きざむ
とこれまた全力でつぶしに来ます。

ちなみに2週目以降は普通に勉強しやすい単語が並んでおり、問題なく勉強できます。
なので、最初にも書きましたが、hanaの韓国語単語 <中級編>ハン検準2級レベル で勉強するときは、2週目から始めましょう。

ちなみに中級編は初中級編には用意されていた、見出し語→メイン訳→例文→例文訳の音声が存在せず少し残念でした。

私は「見出し語→メイン訳→例文」と「見出し語→例文訳」をダウンロードして、各ページの「見出し語→例文訳」「見出し語→メイン訳→例文」の順に再生されるようにしています。例文訳を先に聞くのがポイントで、韓国語の例文を先に聞いても難しくて理解できないのですが、先に例文訳を聞いておくとなんとなく韓国語の例文が聞き取れたような気になってうれしいです。

最近はQuizletというアプリでも単語の勉強しています。このアプリは他の学習者様が作ってくださった学習セットを読み込んで使えるのですが、hanaの韓国語単語 中級編の単語学習セットを作ってくださっている方がおり、使わせていただいています。紙の単語帳ではできないシャッフル機能があるので気に入っています。

ハングル検定 準2級は必要な語彙数や慣用句の数が膨大になるし、合格点も上がるのでとても難しく、ハングル検定を受けるのは1年以上先になると思います。自分のペースでこつこつ勉強していけたらと思います。
この記事を読んでくださった優しい方も勉強頑張ってください。成功を祈っています。


===========

トウミの種類

■合格トウミ 2006年 白地にカラフルな文字のやつ
 初・中級編と上級編の2冊


■合格トウミ改訂版 2011年2月 黄色/緑と白のグラデーションにカラフルな文字
 初・中級編と上級編と上達トハギの3冊
 文字が大きく2色刷りに、慣用句と慣用表現はトハギに移動

上達トハギ 2011年3月
 旧版トウミ2冊の慣用句、ことわざ、慣用表現をまとめたもの



■新装版合格トウミ 2016年2月 上級は紫、中級は緑、初級はピンク
 初級、中級、上級の3冊、慣用句、ことわざ、慣用表現は各級のトウミに移動
 慣用句は日本語に直訳して意味が分かるもの準2級330個、上級808個が削除。
 音声ペン対応
 


■合格トウミ改訂版 2022年2月発売 上級は紫、中級は青、初級は黄色
 漢字表記で旧字体と新字体で音が異なる場合は新字体の横に()で旧字体を記載
 音声ペン対応は変わらず



2024年4月13日土曜日

pptのvbaについて調べたメモ

 pptのvbaについて調べたメモ


複数のグラフを選択してpptに貼り付けるのが遅いのを改善しようとして色々と調べています。

Excelで12個のグラフを選択して、pptにピクチャで貼り付けるのに4秒かかります。

デバイスに依存しないピクチャ(DIB)は2秒程度で早いのですが、vbaで設定がありません。

SVGも2秒くらいなのですが、今度は貼り付けた後のサイズ変更に時間がかかってしまいます。

SVG形式はメタファイルよりも高速で貼り付けられるし、拡大してもきれいで優秀なのですが、あまりwebに情報が載っていません。PasteSpecialのdatatypeは12 (ppPasteSVG)です。

pptのグラフィック処理が遅いのではないかと考えています。

エクセル側で図としてコピーなども試してみましたが遅かったです。


The Voyage of a neuromancer
PowerPointにはScreenUpdatingがない

https://neuromancer-sho.hatenablog.com/entry/20130308/1362743363


hiroshi akutsuの日記
vba【図としてコピーした画像をpower pointへ貼り付け時に変数に代入】

https://hakoniwahaniwa.hatenablog.com/entry/2014/12/16/101720






2024年4月6日土曜日

Excel vbaで複数グラフを選択する

 Excel vbaで複数グラフを選択する


直接この記事と関係ないけど、下記のvbaのリストがとても良いです。

Kunihito TOBITA Office (飛田国人)

Excel: VBA覚え書き 

http://www.ess.osakafu-u.ac.jp/human/tobita/2018/08/16/excel3/


'これが基本
ActiveSheet.Shapes.Range(Array("グラフ 1", "グラフ 2")).Select

'これはNG
a=Array("グラフ 1", "グラフ 2")
ActiveSheet.Shapes.Range(a).Select


'これはOK
Dim a() As Variant
a=Array("グラフ 1", "グラフ 2")
ActiveSheet.Shapes.Range(a).Select

'これもOK
ReDim a(0 To 1)
a=Array("グラフ 1", "グラフ 2")
ActiveSheet.Shapes.Range(a).Select

'これはNG
aa1 = "グラフ 1,グラフ 2"
buf2 = Split(aa1, ",")
ActiveSheet.Shapes.Range(buf2).Select

'Variant/Variantでないとダメみたい。






追記
詳しい理由はわからないけど配列に代入しておいて、Rangeのカッコの中でJoinしてsplitするといけるっぽい。



2023年7月23日日曜日

vbaでシート一覧とグラフ一覧を取得

 Excel vbaでシート一覧とグラフ一覧を取得する

実行するとアクティブシートの1行目にラベル、2行目以降に各シートのグラフ名を列挙します。


A列 Sheet Name シート名

B列 Graph Name グラフ名(カンマ区切り)

C列 paste1.txt(全部同じ)

D列 PageDown 1(全部同じ)

E列 Comment シート名


Sub sht_get()
   
    Dim dt, cnt, buf, sh, g
    cnt = 2
   
    ReDim dt(1 To Worksheets.Count + 1, 1 To 5)
   
    dt(1, 1) = "Sheet Name"
    dt(1, 2) = "Graph Name"
    dt(1, 3) = "Paste"
    dt(1, 4) = "PageDown"
    dt(1, 5) = "Comment"
   
    For Each sh In ThisWorkbook.Sheets
        If sh.ChartObjects.Count = 0 Then GoTo skip_syori
       
        dt(cnt, 1) = sh.Name
       
        buf = ""
        For Each g In sh.ChartObjects
            buf = buf & "," & g.Name
        Next g
        dt(cnt, 2) = Mid(buf, 2)
        dt(cnt, 3) = "paste1.txt"
        dt(cnt, 4) = 1
        dt(cnt, 5) = sh.Name
        cnt = cnt + 1
skip_syori:

    Next sh
    Cells(1, 1).Resize(cnt - 1, 5) = dt
   
End Sub

2023年6月24日土曜日

pythonで近似式とR2を求める

Pythonを使って下記を行います。

・二次元配列(100x2)の値を間引く
・二次元配列(10x2)の値を第0列の値で昇順にソート
・二次元配列をx,yの散布図と考えて、1次、2次、5次の多項式近似で近似曲線を作成
・各近似式の決定係数R2を求める

numpyが必要

import numpy as np

arr = np.random.rand(100, 2)    # 100 x 2の配列の乱数
arr2=arr[::10]                  #1/10に間引く
arr3 = np.sort(arr2,axis=0)     #0番の列で昇順にソート

coe1 = np.polyfit(arr3[:,0], arr3[:,1], 1)  #1次多項式
coe2 = np.polyfit(arr3[:,0], arr3[:,1], 2)  #2次多項式
coe5 = np.polyfit(arr3[:,0], arr3[:,1], 5)  #3次多項式

fit1=np.poly1d(coe1)(arr3[:,0])
fit2=np.poly1d(coe2)(arr3[:,0])
fit5=np.poly1d(coe5)(arr3[:,0])

r2_1 = np.corrcoef(arr3[:,1], fit1)[0,1] ** 2   #yの値同士を入れる
r2_2 = np.corrcoef(arr3[:,1], fit2)[0,1] ** 2   #yの値同士を入れる
r2_5 = np.corrcoef(arr3[:,1], fit5)[0,1] ** 2   #yの値同士を入れる

print(r2_1,r2_2,r2_5)

 

=========

Pythonを使ってグラフを読み取ります。作りかけです。

・グラフの枠の座標を取得する
・グラフの枠内を白く塗りつぶす
・軸の数字と座標を認識する
グラフデータの読み込みや画像の座標からグラフの数値への変換は未実装です。

pillow、pyocr、Opencv、Tesseract、numpyが必要です。


import sys
import os
from PIL import Image
import pyocr
import cv2
import numpy as np

#Tesseractのインストール場所をOSに教える
tesseract_path = "C:\Program Files\Tesseract-OCR"
if tesseract_path not in os.environ["PATH"].split(os.pathsep):
    os.environ["PATH"] += os.pathsep + tesseract_path

#OCRエンジンを取得する
tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("OCRエンジンが指定されていません")
    sys.exit(1)
else:
    tool = tools[0]

# 8ビット1チャンネルのグレースケールとして画像を読み込む
img_org = cv2.imread("sample.bmp", cv2.IMREAD_GRAYSCALE)
img=cv2.bitwise_not(img_org)    # 白黒反転 輪郭検出で白色の枠を検出するため、外枠が白になるように白黒反転

#輪郭検出 cv2.RETR_EXTERNAL 最外部の輪郭のみ検出 CHAIN_APPROX_TC89_L1:直線近似できる部分の輪郭点を省略
#contours[輪郭番号][点の番号][0][X座標, Y座標]
contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1 )

# 画像表示用に入力画像をカラーデータに変換する
img_disp = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
img_disp_org = cv2.cvtColor(img_org, cv2.COLOR_GRAY2BGR)

# 輪郭の点の描画
#contours[輪郭番号][点の番号][0][X座標, Y座標]
for i, contour in enumerate(contours):
    # 輪郭を描画 画像名、輪郭座標、輪郭番号、色、線幅(-1は塗りつぶし)
    cv2.drawContours(img_disp, contours, i, (255, 0, 0), 2)

    # 傾いていない外接する矩形領域
    x,y,w,h = cv2.boundingRect(contour)
    if w>100:       #幅100より大きい(グラフの外枠)のとき、orgのほうは白く塗りつぶし
        cv2.rectangle(img_disp,(x,y),(x+w-1,y+h-1),(0,255,0),2)
        cv2.rectangle(img_disp_org,(x,y),(x+w-1,y+h-1),(255,255,255),-1)    #白く塗りつぶす
       
#fileに書いて後ろでもう一度読み込んでいる。絶対もっと良い方法がある
cv2.imwrite('output.png', img_disp_org)

#画像の読み込み
file_path = "sample.bmp"
img = Image.open('output.png')      #ここはいつか改善する
img2 = img_disp_org                 #グラフ部を塗りつぶした画像

#文字と座標を読み取る
box_builder = pyocr.builders.WordBoxBuilder(tesseract_layout=6)     #6が最適かは不明
text_position = tool.image_to_string(img,lang="eng",builder=box_builder)

#取得した座標と文字を出力、画像に枠を書き込む
for res in text_position:
    print(res.content)
    print(res.position)
    cv2.rectangle(img2,res.position[0],res.position[1],(0,0,255),2)

#検出した軸ラベルの座標からx,y軸それぞれのグラフ範囲を推定する処理を入れる 未
#別途グラフの系列データを認識して、グラフ範囲に変換する 未

#四角を書き込んだ画像を表示
cv2.imshow("image",img2)
cv2.waitKey(0)

2023年4月16日日曜日

VBAで系列を追加する jpegをpptスライドに貼る pythonでs2pファイルをde-embedする

Chat-GPTに教えてもらいました。あいつ凄いな。


vbaで散布図に系列を追加する
系列の順序を指定したい場合、非表示の系列(.IsFiltered = True)があるとPlotOrderが機能しないので.Formulaプロパティで順序を指定することにしました。Formulaプロパティの操作はエラーがおきやすいので注意。withを使ったほうが速いらしいのでwithを入れました。

Sub AddNewSeries3()
    Dim myChart As Chart
    Set myChart = ActiveSheet.ChartObjects("Chart 1").Chart
   
    Dim mySeries As Series
    Set mySeries = myChart.SeriesCollection.NewSeries
   
    With mySeries
        'Name,X,Y,Order
        .Formula = "=SERIES(Sheet3!$A$1,Sheet3!$A$2:$A$6,Sheet3!$B$2:$B$6,3)"
       
        'set the marker type and size
        .MarkerStyle = xlMarkerStyleCircle
        .MarkerSize = 8
       
        'set the line type and color
        .ChartType = xlXYScatterLines
        .Format.Line.Weight = 2
        .Format.Line.ForeColor.RGB = RGB(255, 0, 0)
    End With
End Sub


pptでフォルダ内のjpegファイルをpptの各ページに貼り付ける。

Sub InsertImagesToSlides()
    Dim imagePath As String
    Dim imageFiles() As String
    Dim i As Integer
    Dim slide As Slide
    Dim slideIndex As Integer
   
    ' Specify the path to the folder containing the JPEG files
    imagePath = "C:\Path\To\Your\Images\Folder\"
   
    ' Collect all JPEG files in the specified folder
    imageFiles = GetFilesInFolder(imagePath, "*.jpg")
   
    ' Create a new PowerPoint presentation
    Dim pptApp As Object
    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
    Dim pptPres As Object
    Set pptPres = pptApp.Presentations.Add
   
    ' Loop through the image files and insert each one into a new slide
    slideIndex = 1
    For i = LBound(imageFiles) To UBound(imageFiles)
        Set slide = pptPres.Slides.Add(slideIndex, 12) ' 12 represents the slide layout (blank slide)
        slide.Shapes.AddPicture FileName:=imagePath & imageFiles(i), LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=0, Top:=0, Width:=pptPres.PageSetup.SlideWidth, Height:=pptPres.PageSetup.SlideHeight
        slideIndex = slideIndex + 1
    Next i
   
    ' Clean up
    Set slide = Nothing
    Set pptPres = Nothing
    Set pptApp = Nothing
   
    MsgBox "Images inserted successfully!"
End Sub

Function GetFilesInFolder(folderPath As String, filePattern As String) As String()
    Dim files() As String
    Dim file As String
    Dim i As Integer
   
    file = Dir(folderPath & filePattern)
    i = 0
   
    Do While file <> ""
        ReDim Preserve files(i)
        files(i) = file
        i = i + 1
        file = Dir
    Loop
   
    GetFilesInFolder = files
End Function


pythonでサブフォルダ[rename]内のすべてのファイルについて、ファイル名先頭の数字(アンダーバー区切り)を3桁で0埋めしてリネーム

import os, re

def main():
    for f in os.listdir("resize"):
 
        ff=f.split('_',1)
        ff[0]='{0:03d}'.format(int(ff[0]))
        f2="_".join(ff)
        of = "resize/" + f
        nf2="resize/" + f2
        try:
            os.rename(of, nf2)
            print(of, " >> ", nf2)
        except:
            print(u"リネーム前と後が同じです。", nf2)

if __name__ == '__main__':
    main()



pythonでtouchstone file をde-embedする。
ドラッグアンドドロップや引数での処理に対応したいけどpathの処理がうまく理解できず、残課題です。

import skrf as rf
from os import path

mypath =path.dirname(__file__)
evb1 = rf.Network(path.join(mypath,"a.s2p"))
evb2 = rf.Network(path.join(mypath,"b.s2p"))
dut = rf.Network(path.join(mypath,"dut.s2p"))

# evb2.renumber([0,1],[1,0])

evb1_intp=evb1.interpolate(dut.frequency)
evb2_intp=evb2.interpolate(dut.frequency)

dut_de=evb1_intp.inv ** dut ** evb2_intp.inv

dut_de.write_touchstone(path.join(mypath,"dut_de-embed3.s2p"))