Anki中国語デッキ作成覚書
共有デッキで「HSK」「中国語」それぞれ検索
(「中国語」で検索するとすこし出てくるが世界的に見ると英語ネイティブが中国語のHSKに沿ったデッキをたくさん出してくれている)
ダウンロード
自分のAnkiにインストール
それぞれCSVで書き出す
エクセルで自分の好きなように追加していく。
作成完了したらUnicodeテキストで保存。
(ダイレクトにタブ区切りテキストで保存するとWindowsメモ帳と中国語は相性が悪いのかそのあとずっと文字化けする)
メモ帳で開き、UFT8コードで保存し直す。
Anki自分のデッキに読み込む。
ある程度使って問題ないと思ったら最初にインストールしたデッキは容量圧迫しているので消すこと。
Ankiのカードテンプレートを作成する
以下リンクの先人方々を参考にコピペとカスタマイズした。
先人の時代よりもAnkiや他アプリが進化・更新されている為、自分のアプリの世代用に修正していく。
なおHTMLとCSSは10年以上前、自作HPが流行った時代に簡単なものを使っていただけなので必要部分だけ復習した。
リンクボタン
以下の先人の方々のサイトからコピペ。ありがとうございます。
物書堂が自動で開く
こちらのスクリプトですが、iphoneでは開いて欲しくなかったので
---------------
<a id="auto-click-link" href="mkdictionaries:///WISDOM3?text={{英単語}}"></a>
<script>
function isIOS() {
return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
}
if (isIOS()) {
document.getElementById("auto-click-link").click();
}
</script>
-------------
太字のiphoneの部分を削除しました。
(ここ消せばいいってわかるまで一週間かかりました)
物書堂リンク
上のリンク先のt9mdさんが物書堂アプリとリンクさせる方法も記載してくれていますが、自分の好きな辞書とリンクさせるには以下。
物書堂すごいな。めっちゃリンクさせる気満々。ありがとうございます。
WISDOM3、オックスフォード類語辞典とリンクさせたいので
mkdictionaries:///SOEJT?text={{英単語}}
mkdictionaries:///WISDOM3?text={{英単語}}
このURLを使う。
{{英単語}}は仮のフィールド。
フィールドごみ対策
設定していないフィールド、例えば{{例文}}というフィールド。今は例文を入れていないかもしれない。その際は{{#例文}}{{例文}}{{/例文}}で消えるとのこと。
以下先人より。
画像の貼り方
画像を以下の方法で生成したら、リンクを生成する。
タグ+画像名+タグ
をエクセルで作っていき、フィールド化する。
ナイトモード用に画像を暗くする場合↓
音声
以下のawesomeTTSで音声を作る。
CSS(見た目)
線
フォント
行間
画像トリミング
リンク
音声の合成/自動読み上げ
暗記は五感を多く使うほど効率がいいので音声は必須。
しかし野生の単語帳には音声がないものもあるので合成方法と読み上げ方法を調べた。
iphoneの合成音声
読み上げ
{{tts en_US voices=Apple_Alex:Field}}
一周回ってまんまこれコピーです。
ただしすごく合成音声。
あとこれ自動じゃない。
iphone以外の合成音声
えいらくさんの記事に沿ってやってみよう。いつもありがとうございます。
こちらのアドオンで色々な合成音声を選べる。
アドオンをまず入れる。
合成音声の設定
以下のサービスは英語の文章にも対応していて、正しく発音してくれる。(全部やってみた)
Youdao dicrionary
Yuodaoが文章も単語もナチュラルなのでYuodaoがおすすめ。
男性ならMicrosoftのDaivid。
ちなみに音声はDaividが一番ちゃんと発音してくれる。ちょっとテンション低いけど。
どうしても女性の音声がよかったらZiraがいいと思う。
(発音がちゃんとしてる度 Daivid>Zira>Huihui>Haruka)
音声を合成する前に、カードに音声フィールドを作っておくことであとから置換ができるそうです。
音声を合成
Anki→検索→デッキを選ぶ→追加したいカードを選ぶ(Ctrl+Aで全選択)→AwesomeTTS→Add Audio to select
設定は右側の
fField しゃべらせたいフィールドを選択
Type Regular でOK(自動でしゃべってくれる)
Language 普段アメリカ英語を聞いている人はUSで。
1.2万語は2時間ちょっとかかりました。一気にやってごめんなさい。
Anki用画像調達 スクレイピング(google画像検索画面のスクショ)の改造方法
Ankiに載せる画像をスクレイピングという方法でネットから集めるプログラムを見つけた。
Pythonという言語を使う。
このプログラムはMac環境かつPython2環境のため、WinかつPtyhon3環境で動作するよう試行錯誤した記録の必要部分を以下に記した。というかやった当時のメモ。
やった人のスペック
・Excelの関数は多少使えるがマクロは使ったことない
・コマンドプロンプトの存在は知っているがうまく打ち込めた試しがない
・Pythonという言語の名前すら知らない
Pythonを知らない状態からこのプログラム動かすまで30-50時間かかりました。
こちらのページを素直に上からやってみる。
データをダウンロードした。
pythonの環境構築
パスの設定方法
さっぱりわからないが、c:\users\名前
ここ以外探す気がないとのこと。
今のフォルダの状態をスクショしてどれだけ散らかっても片付けられるようにしてから
bulk_screen_capture.pyをいれた。
もともとはアンダーバーではなくハイフンだったがWindows環境では区切り文字扱いっぽいのですべてアンダーバーに書きかえた。
python bulk_screen_capture.py -h
なんとか表示できた。
以下がオプションの単語リスト。
Options:
-h, --help show this help message and exit
-d DIR, --dir=DIR Directory to write captured images.
-j JS_BEFORE_SAVE, --js-before-save=JS_BEFORE_SAVE
Eval js file before save mainly to scroll to element
-f, --force-save Overwrite existing file if exists
-p PREFIX, --prefix=PREFIX
Prefix for filename
-w WINDOW, --window=WINDOW
Window size. 1280x720 by default.
-e ENGINE, --engine=ENGINE
Image search engine to use one of dict_keys(['google',
'google_unsafe', 'bing', 'bing_unsafe'])
-s, --show Do not hide chrome browser
--sleep=SLEEP Sleep duration on each take
ようやくhelpが読めました。
一週間かかりました。
とはいえなんかもう少しないのか。
import sys
import pprint
pprint.pprint(sys.path)
もうわけがわからないので、とりあえず
add_img~~~
before_scroll~~~
bulk_screen~~~
sample.tsv
をまんまユーザーのフォルダに放り込んで
python bulk_screen_capture.py -d collection.media -p "google-img--" -j before_scroll.js -w 720x720 sample.tsv
(.pyだけはハイフンをアンダーバーにかえた)
だめ
とはいえ問題の部分にエンコード?ないので読む
for file in arges
ファイル名を読む部分かな
上のスクショで言うところの117行目に,
retrieve_snapshot_for_words(driver, get_words_from_file(file), encoding="utf-8_sig")
としたらエラーは減ったが
まだ
mkdir_p(Options.dir)
でつっかかる
わけがわからない。
以下を追加し、 encoding="utf-8_sig"は全て消した
ちょっと進んだ。
AttributeError: type object '_io.StringIO' has no attribute 'StringIO'
image = Image.open(StringIO.StringIO(screen))
ここかな
先人もここでつまづいたよう。
これはpillowという画像編集するやつ
Image.open( 画像を開く
この中身のStringIOがpython3以降だとエラーになるらしい
StringIO→BytesIO
に全部書き換え
に伴い
import StringIO
↓
import six
import io
from io import BytesIO
また
def save_snapshot(driver, word, idx):
のあとの
if Options.js_before_save:
のあとの
image = Image.open(BytesIO.BytesIO(screen))
↓
image = Image.open(io.BytesIO(screen))
そんなものはないとエラーが出たので書き換えた
ところで、
python bulk_screen_capture.py -d collection.media -p "google-img--" -j before_scroll.js -w 720x720 sample.tsv
の
-d collection.media
は、スクショ保存するフォルダ(collection.media)を指示する(-d)
だが、
そもそもcollection.mediaとは?
これはAnkiにメディアファイルが含まれていると自動的にここを参照するデフォルトフォルダらしい
Ankiをダウンロードしたが自分でデッキを作っていないので、AnkiWebから適当に音声と画像が付いたデッキをダウンロードしたところcollection.mediaが
\Users\名前\AppData\Roaming\Anki2\ユーザー 1
という深いよくわからない階層にみつかった。
しかしいままでの四苦八苦した感じだと
c:\users\名前
にないといけないのでは?
と思ったが、なくてもいけた。
python bulk_screen_capture.py -d collection.media -p "google-img--" -j before_scroll.js -w 720x720 sample.tsv
勝手にディレクトリ作ってくれた。
確かにディレクトリが無ければ作るし、既にあったら作らないってコードあった。
なるほど。
tsvはエクセルファイルっぽい。
test.csvは以下の単語が入っている。
tactic 戦術、戦法、作戦
backfire 計画などが裏目に出る、エンジン・車がさか火を起こす
catastrophic 壊滅的な、大異変の、最悪の
あ、これ追番ないやつだ
追番もファイル名につくと思ってたけどちがうのかな?
まあいっか
試しに自分でgoogle検索した
なんかちょっと違うな。
一応怖いので、作者様がサンプルに置いておいてくれた画像も確認した。
違う。よかった。
私やり遂げました。
pythonという単語すら知らなかったが、一週間30-40時間かければ以下ができるようになった。
- 環境の導入
- 多少構文が読める
- プログラムの起動のさせ方がわかる
- 間違えた部分が多少わかる
- 間違いの検索方法が四苦八苦すればなんとかできる
プロの方々から見れば苦笑いか怒られそうなもの。
しかし満足です。
将来の自分のためにまとめておこう
pythonをダウンロードする。
chromedriverをダウンロードする。
ここからダウンロードする。
フォルダ開く。
bulk-screen-capture.py は
bulk_screen_capture.py へ。
c:\users\名前にダウンロードデータから以下をコピー
add_img~~~
before_scroll~~~
bulk_screen~~~
sample.tsv(単語が端の列に順番に並んだエクセル)
bulk_screen_capture.pyをメモ帳で開き、四苦八苦した修正を入れていく。
コマンドプロントを立ち上げる
python bulk_screen_capture.py -d collection.media -p "google-img--" -j before_scroll.js -w 720x720 sample.tsv
と入れてエンター
終わり。
コマンドプロントでミスったりpythonとかのプログラム?を終了したくなったら
Ctrl+Z+エンター
ちなみに1000語だいたい40分くらいでした。
ようやくひと段落。
Anki用画像調達 スクレイピング(google画像検索画面のスクショ)試行錯誤の記録
語学などの学習で暗記する際、楽に効率的に暗記していきたい。
Ankiというアプリがあるが、これは暗記カードアプリで、教材をほぼゼロからカスタマイズできる。
教材には画像も入れることができる。
例えば単語。
もしグーグル検索で引っかかった画像がいくつか暗記カードに入っていたら、かなりイメージしやすい。
しかしめちゃくちゃ時間かかりそう、無理。
それを自動でやってくれるプログラム?を見つけた。
これをやろうと試行錯誤した記録を残しておく。
完全なるメモで人に見せる形ではないものの、自分や誰かの手助けになるかもしれない。
こういう勝手にネットで検索して情報収集してくれるのをスクレイピングというようです。
ここにたどり着くまでに数時間はかかった気がする。
とりあえずやってみようと思う。
【私のスペック】
一言でいうと、プログラミングはさっぱり。
平成中期にHTMLとCSSを苦労して使ってホームページを運営していた程度。
【うちのPC】
わからんけどなんかそれぽい部分書いておけばきっと役にたつ。
Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz 3.20 GHz
実装RAM16.0 GB
Windows 10 Home
python3.9.6
googledriverをネットからダウンロード
ちゃんとバージョンはchromeと合わせた。
以下に置いてみた
C:\Users\*私の名前*\AppData\Local\Programs\Python\Python39\Scripts
コマンドプロントを立ち上げる
pip install Pillow
Pillow、selenium、あとなんだっけ、とかを打ち込んでいく
(なんかそいういうソフトをインストールするコマンドらしい)
Pillowて何?
.pyて何?
bulk-screen-capture.py の中身を読んでいく。
調べていくと全く同じことをやった方を発見。
当然ですがわたしなどより知識があるようで、消す場所追加する場所もはっきりしておられる。
この質問は途中で見つけたので、下の調べた部分はもっと後進的というかよくわかっていないことをしています。
# -*- coding: utf-8 -*-
import sys
# START: Frawned approach to change default encoding
# But I intentionally take this approach since it's easy and believe it non-problematic in this limited program.
# See discussion detail here.
# https://stackoverflow.com/questions/3828723/why-should-we-not-use-sys-setdefaultencodingutf-8-in-a-py-script
reload(sys)
sys.setdefaultencoding('UTF8')
# END: Frawned approach to change default encoding
消す。
stringI0がないとのこと
このバージョンにはないから別の機能使えみたいなエラーですかね…
import StringIO
↓
from io import StringIO
とりあえずいけるとこまで無謀にも読み込んでみた。
43行目
インデントがそろってませんとのこと。
いや4つですし。
いままでコマンドプロントダイレクト入力でしたが、
python.exeから入力しても同じ。当然か。
わけわからんので、とりあえず置いといて、
ちょっと戻ってそれぞれ何してるか定義を読んでいく。
def…関数の定義。
def f(x)= って感じかな。まずX=とする、これをY=X+********に代入して…ていう感じかなあ。
と思っていたらそのようだ。このサイトわかりやすいな。半分しか理解できなかったけど、とても助かる。超初心者にはありがたい。
def mkdir_p(path):
フォルダを作るらしい。
Try以降は、繰り返し処理時に同じフォルダに既にフォルダがあると無理!というのを避ける内容らしい。
バージョンの違いで書き方に差があるらしいがあとでうまくいかなかったら直そう。
pathてなに?
じゃあ本文のpathってところは私がpathを指定しなければならないのでは?
という疑問が残るが…
この定義を使うときにわかるか…。
ところでピリオド、アンダーバー、スラッシュってどう違うのか?
アンダーバー…自分用の関数の名づけなどに使える
バックスラッシュ…windowsでは改行とかタブの意味になってしまうらしい。パスの指定とかで\が入っているとうまく動かなくなるのでスラッシュに書き換えが必要。
¥はバックスラッシュの日本語変換版のよう。つまり¥=バックスラッシュ?
re.search…文字列にパターンとマッチする部分があるかを調べる
('[^\w\.\-_]', text): 英数字とかが入ってるテキストだったら
hashlib.sha256ハッシュ値(16進形式文字列)を求める
()の中にutf-8とあるのは日本語でもエラー出さない為
こういう解釈であってますか…?
この定義は長いので区切りながら解読しよう。
os.path.join ()の中の,カンマで区切られた文字列を結合する
このドットって何?
→パソコンで言ったら大フォルダの中のフォルダ、みたいなものらしい。
Options.dir
で、これどこ指すの?
わからないので飛ばす。
"%s.jpg" …… 文字列.jpg として出力。
% get_filename(Options.prefix + word)
ここで指定した値が上の部分の「文字列」に変換されるらしい。
Options.prefix + word
意味が全く分からず検索してもうまく出てこない。
飛ばす。
idx = "%03d" % (idx + 1)
idx= … a=a+1 という1を足す関数らしい。
%03d … dが10進法で、03の3は3桁整数で、という意味のよう。
単語帳が1000単語だったら1000個目だけ4桁にならないか?
とりあえずいまはこのままで。
os.path.isfile(fname) …fnameというファイル名が存在しているか確認している
Options.force_save
不明。
fnameというファイル名が存在していて、かつOptions.force_saveがfalseだと
グーグル立ち上げ→検索→クリック→スクショ
グーグル検索画像を保存。
Anki用の単語帳のメインテキストを作る
Anki用の単語帳のメインテキスト部分を作っていく。
必要なデータ
- 語彙
- 日本語訳(シンプルなものが記憶しやすくていい)
- 例文(英)
- 例文(日)
発音記号はなんとかなる。
探し方
Ankiは共有デッキがWebにUPされている。
しかし日本語、日本人が作っているものは比較的少ない。
そこで別のサービスも視野に入れた。
Quizletから単語帳を探す
SVL12000対応!Quizletの単語帳をAnkiにインストールする簡単な方法! | 世界のだんごドットコム
こちらの記事から、Quizletというサービスから英単語、日本語訳の一覧を探してきた。
左側に単語帳が表示される。どうも1000単語までらしい。なのでSVLのLV1-12まで揃っているものを探した。
1-12までメモ帳にコピペした。
ここで、よく見ると「拍手かっさい」などとある。喝采がひらがな。
また、手の字が小さかったりする。
これは中国語の漢字らしく、Excelでは文字化けした。
AnkiWebから単語帳を探す
素直にここから始めればいいものを。
検索画面に日本語を入力することである程度デッキがしぼり込めると思われる。英単語デッキが欲しかったため、英といれた。
中国語も引っかかるが、目で判断。
ここから単語数が多いものを探す。
・スーパーイングリッシュ 約11000語
スーパー イングリッシュ(日本人の英語学習者向けのデッキ) - AnkiWeb
スーパーイングリッシュ 約11000語を抽出してSVL12000語(右)と比較。簡単な単語は抜けているが、難しい単語はほぼ網羅されているようだった。
スーパーイングリッシュは11587語。SVL12000と重複しているのが11429語なのでSVL12000の約98%は網羅されている。すごい。
あと、上のエクセルのポップアップを見て「こいつエクセル使いこなせてないな」とかは思わないように。
また、今の自分はDUO3.0を5回くらい軽く回して忘れかけている状態なので3万語はハードルが高すぎる。
ということで、このスーパーイングリッシュの単語帳を元にしていく。
ありがとうございます。
やったこと
- スーパーイングリッシュとDUOの単語で重複する部分はDUOの日本語の意味をコピペ
- (すでにDUOはうっすら記憶している為、文言が同じのほうが思い出しやすい)
- 例文はスーパーイングリッシュとANCの二種類(どちらも例文が無い場合もある)
- IDを追加(管理しやすいように)
IDのなんたるか、必要性は以下。
電子辞書の単語帳機能で単語はパソコンに吸い込めるのか?
手持ちの電子辞書SII SL901X
これには国語、英語、実用、資格、TOEICなど様々盛りだくさんの辞書が入っており、学生時代は授業中に広辞苑や百科事典を使って暇をつぶしていたが、今見ると英和が使いやすく多読で重宝している。本当にすごいものを持ち腐れていた。
以下は公式サイト。この電子辞書に入っている全辞書の一覧。
https://www.sii.co.jp/cp/products/english/srs9001/dictionary.html#gsc.tab=0
これには単語登録機能があり、調べたらボタン一つで単語帳に登録ができる。
そこでAnkiに入れることはできないかと、まずパソコンに吸い込めないか試した。
結論
パソコンに吸い込めない。
やったこと
- 電子辞書に16GのSDカードを差し込んだ
- 調べると2Gまでだったので絶望
- 家宅捜索し発見
- 2GのSDカードを差し込んだ
- 単語帳をSDカードにコピーできた
- パソコンで開いたところ、.bkuとなっていた
bkuファイルは有償またはお試しダウンロードのみでちょこちょこ使うなら有償
そして開けたところでバックアップファイルは開発者の知的財産保護のため読めない可能性もあるらしい。
残念。
今後はAnkiを意識してスマホ電子辞書を買おうかな。