Skip to content

Instantly share code, notes, and snippets.

@kawasima
Last active August 17, 2018 04:33
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kawasima/9205224 to your computer and use it in GitHub Desktop.
Save kawasima/9205224 to your computer and use it in GitHub Desktop.
キラキラネームの氏名を自動生成します。
(require '[clojure.java.io :as io]
'[clojure.string :as string]
'[net.cgrand.enlive-html :as html] )
(use '[incanter core io datasets])
;; サイトに負荷かかるので、頻繁に実行しないこと
(defn create-kira-name-db []
(with-open [wtr (io/writer "kira-names.txt")]
(let [furigana-tbl (html/select
(html/html-resource
(io/reader "http://dqname.jp/" :encoding "euc-jp"))
[:table (html/has [:> :tr :> :td :> :font (html/text-pred #(= % "ふりがなから調べる"))])])]
(->> (for [a-tag (html/select furigana-tbl [:a])]
(let [page (html/html-resource (io/reader (str "http://dqname.jp/" (get-in a-tag [:attrs :href])) :encoding "euc-jp"))
popular-name-tbl (html/select page
[:table (html/has [:> :tr :> :td :> :font (html/text-pred #(= % "DQN度ランキング"))])])]
(map :content (html/select popular-name-tbl [(html/attr-starts :href "index.php?md=view")]))))
(flatten)
(map #(-> %
(.replace "(" ",")
(.replace ")" "")))
(map #(.write wtr (str % "\r\n")))
doall))))
(defn get-sei []
(let [accum (reductions #(update-in %2 [:number] + (:number %1)) (:rows data))
index (rand-int (:number (last accum)))]
(loop [x (first accum) r (rest accum)]
(if (> (:number x) index)
x
(recur (first r) (rest r))))))
(defn generate-kira-name [n]
(with-open [rdr (io/reader "kira-names.txt")]
(let [s (->> (line-seq rdr) (map #(string/split % #",")) doall)
sei-db (read-dataset
(io/reader "http://www.ipc.shizuoka.ac.jp/~jjksiro/sei.csv" :encoding "MS932")
:header true)]
(repeatedly n
(fn []
(let [nm (rand-nth s)]
(str (:sei (get-sei)) " "
(first nm)
" (" (last nm) ")")))))))
=> (create-kira-name-db)
=> (->> (generate-kira-name 50)
(map println)
doall)
高森 龍優美 (りゅみ)
佐藤 和明 (とあ)
城戸 夢舞愛 (むむあ)
前田 紅思 (もみじ)
佐野 をろち (をろち)
永井 芸者 (あきひさ)
松本 輝翔 (けんすけ)
檀原 苺愛 (べりーあ)
岡田 朔蘭鵬 (さくらんぼう)
竹ノ内 誇聡 (こあ)
山岡 美々姫洋子 (みみひめようこ)
森井 空愛元 (かあげん)
山田 博恋 (ばれん)
黒田 永久礼 (とわれ)
上田 望千里 (のすり)
森 芽翼 (めい)
佐藤 虹 (てぃあら)
坂本 桜 (ぴーち)
松元 心冨 (なごみ)
高橋 最速 (たくみ)
長野 依伽 (いく)
安沢 美望 (にゃも)
山下 靖野 (やや)
内田 湧汰流 (わたる)
山崎 幻の銀侍 (まぼろしのぎんじ)
武久 笑來里 (にこり)
石川 苺朗 (いちごろう)
寺田 桜心 (ろこ)
堀井 束颯 (つかさ)
加藤 友愛取 (けいじゅ)
小林 族 (やから)
木田 向日葵 (すみれ)
可知 月雫 (るな)
吉田 憂汰浪 (ゆうたろう)
飯島 恋萌 (れもん)
小川 光流 (ぴかりん)
竹田 針一 (はりいち)
小吹 乃夢 (のん)
滝田 翠芽永 (めろん)
荻原 恋愛 (れあん)
増田 夜舞凜 (やまりん)
南 鳳虎 (ぽこ)
高清水 遊女 (ゆめ)
中島 和茶魅 (ちゃみ)
多田 后音 (このん)
那須 乃愛琉 (のえる)
小山 皇伽 (おうが)
梅尾 桃月 (とるな)
赤羽 煮物 (にもの)
伊勢 今人 (いま)
@AkiyoshiKawahara
Copy link

河原 明佳

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment