通过机器学习来写诗
Tony Deng
Github @tonydeng
Twitter @wolfdeng
Tony Deng
Github @tonydeng
Twitter @wolfdeng
哪怕是让一只猴子在打字机上随机地按键,只要按键的时间足够长,那么几乎必然能够打出任何特定的文字,甚至是莎士比亚的全套著作。
有监督学习(分类,回归)
↕
半监督学习(分类,回归)
↕
半监督聚类(有标签数据的标签不是确定的,类似于:肯定不是xxx,很可能是yyy)
↕
无监督学习(聚类)
R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。
wget 'https://raw.githubusercontent.com/rime-aca/corpus/master/宋詞三百首.txt' -O training.txt
fileName <- "training.txt"
SC <- readChar(fileName, file.info(fileName)$size)
install.packages('jiebaR')
library(jiebaR)
cc = worker()
analysis <- as.data.frame(table(cc[SC]))
# 重新排序
analysis <- analysis[order(-analysis$Freq),]
# 简单改变一下文件的命名、格式
names(analysis) <- c("word","freq")
analysis$word <- as.character(analysis$word)
李白的《清平乐·画堂晨起》作为范例
画堂晨起,来报雪花坠。高卷帘栊看佳瑞,皓色远迷庭砌。盛气光引炉烟,素草寒生玉佩。应是天仙狂醉,乱把白云揉碎。
tagger <- worker("tag")
cipai_2 <- tagger <= cipai
> cipai_2
n x x n v a n g v x x a v x n
"画堂" "晨起" "来报" "雪花" "坠" "高" "卷帘" "栊" "看" "佳瑞" "皓色" "远" "迷" "庭砌" "盛气"
x x x x nr x n x d p nr v
"光引" "炉烟" "素草" "寒生" "玉佩" "应是" "天仙" "狂醉" "乱" "把" "白云" "揉碎"
example <- subset(analysis, freq >1 & nchar(word) <3 & freq < 300)
# 提取词性文件
cixing <- attributes(cipai_2)$names
# 将素材库进行词性分类
example_2 <- tagger <= example$word
从范本词牌的第一个词开始,随机在素材库中选取词性相同,字数相等的单词,填入提前设置好的空白字符串中。
write_perms <- function(m){
set.seed(m)
empty <- ""
for (i in 1:length(cipai_2)){
temp_file <- example_2[attributes(example_2)$name == cixing[i]]
temp_file <- temp_file[nchar(temp_file) == nchar(cipai_2[i])]
empty <- paste0(empty, sample(temp_file,1))
}
result <- paste0(substr(empty, 1,4), ",", substr(empty,5,9),"。",
substr(empty, 10,16), ",", substr(empty, 17,22),"。",
substr(empty, 23,28), ",", substr(empty, 29,34),"。",
substr(empty, 35,40), ",", substr(empty, 41,46),"。")
}
lapply(1:10,write_perms)
"紅藥蟲網,可堪絃歌回。高煙雨琮兼漸老,清愁久破春山。陸游寒煙缺月,佇久初靜翩翩。應是無力難倩,欲把秋風歸來。"
"流年清露,可堪春意要。窮陽臺旆復驚飆,驚秋慢游柳下。風光戲鼓爭知,阮郎風露鞦韆。凝笑單衣無跡,卻對碧雲不堪。"
"春意晚涼,春山小園賦。明天際紺凍亂紅,呼燈豔搖舊處。思婦紋平不眠,清尊煙光陳跡。傷春闌干杜若,不把綺羅飛來。"
"暗想晏殊,猶唱酒杯調。重金井笮映倦客,疏煙滿聽怨極。紅樓更苦帳飲,老來雲淡蓬壺。情傷驟雨候館,漸因秋千執手。"
"笙歌千樹,葉葉樓頭斷。黑簫聲燼遊不眠,修竹細隨舊香。歸路千縷春衫,行盡驚秋秋水。雪滿金風輕寒,曾向寶馬生怕。"
"殘酒游絲,斜日殘花側。酥夜色燼梳蔣捷,夢短慳能袁去。綠樹香暖花院,淒楚還被凌雲。怨慢人心朝天,便比杜鵑獨立。"
"征塵此身,殘醉思量墜。脆瑤臺囀露更聞,淚滿慢駐香徑。酒旗夢魂舊香,晏殊珠箔杜鵑。梅邊脈脈紫萸,遽憑燕子浮生。"
"淚珠清愁,亭皋飛雨偷。巧亂鴉笮爭那回,更苦近蕩經年。飛花已失姜夔,斜日尋處丁寧。如水風味六州,曾因朱門年少。"
"行雲朱戶,清愁細雨定。孤雕鞍髻謾佇久,朝天冷沒枝上。情懷何世當樓,爭知曾題碧雲。宴清春風暗雨,不同夜闌開時。"
"啼鶯中酒,多麗紅情想。慢畫堂艤關芳酒,難倩淡如李甲。枝頭多麗春去,斜日翠綃秋千。相倚層樓隋堤,共被柳絲睡起。"
可以使用opencc 简繁体转换,转换测试地址:http://opencc.byvoid.com 。R也有相应的包ropencc,相关使用可以查看这篇文章:ROPENCC - OPENCC 繁简转换 R 语言接口