• 社交网络与文本分析课程

    7. 自动写作及初级神经网络模型


    刘跃文 教授、博导
    西安交通大学 管理学院

    联系方式: liuyuewen@xjtu.edu.cn
    2023年4月16日 版本1.3

提纲

  1. 自动写作的基本原理

  2. 用逻辑回归(CNN)进行自动写作

  3. 用RNN进行自动写作

  4. 用LSTM进行自动写作

注:部分课件来自《狗熊会》深度学习课程。

1. 自动写作的基本原理

1.1 应用场景

  • 写作是运用语言文字符号反映客观事物、表达思想感情、传递知识信息的创造性脑力劳动,可分解为立意、素材搜集、创作输出三大步骤。
  • 自动写作是指人工智能算法自主完成写作任务,在写作过程中不需要人工干预。当前计算机已经能够自动撰写数据新闻、热点新闻、投研报告、联想式新闻等类型。
  • 结构化数据新闻写作

    • 通常以结构化数据为输入,智能写作算法按照人类习惯的方式描述数据中蕴含的主要信息
    • 由于机器对数据的处理速度远超人类,因此非常擅长完成时效性新闻的报道任务
    • 典型例子:财经快讯、地震快讯、体育战报、天气预报等
  • 热点新闻写作

    • 通常以海量素材为基础,按照应用需求线索(例如事件、人物等)筛选合适的内容,并基于对内容的分析抽取关注的信息,最后按照写作逻辑组织为篇章结果
    • 由于机器能够快速处理海量数据,因此非常擅长挖掘大数据中蕴含的分布、关联等信息
    • 典型例子:热点组稿、事件脉络、排行盘点等
  • 投研报告写作

    • 机器基于充分的训练数据,训练模型并得到创作能力,可以根据人类的指令,产出符合特定格式要求的分析报告
    • 典型例子:公司股票研报等

2. 用“逻辑回归”进行自动写作

2.1 机器作诗

  • XY问题

  • 通过学习现存诗歌中的词语搭配规律,机器也能作诗!

drawing

一种简单实现方法

  • 将诗中的每个字分别看成Y,将其前面出现的三个字看成X

  • 建立逻辑回归模型,根据X,预测Y出现的概率

drawing

案例:逻辑回归“写诗”

  • 读入数据
  • 数据预处理
    • 去掉诗的题目以及空格
    • 为了预测第一个字,将每首诗前面补充bbb
    • 数据整理:
      • 生成X和Y:将一首诗中的每个字分别看成Y,将Y前面的三个字看成X1,X2,X3
      • 文字编码:由于文字是非结构化数据,不能在计算机中直接分析,因此对文字进行编码处理

drawing

In [2]:
# 使用pandas读入数据
import pandas as pd
poems_text = pd.read_table('data/poems_clean.txt', header=None)
poems_text.columns = ["text"]
# 查看文本
print(poems_text.head())
print(poems_text.shape)
                                                text
0  首春:寒随穷律变 春逐鸟声开 初风飘带柳 晚雪间花梅 碧林青旧竹 绿沼翠新苔 芝田初雁去 绮...
1  初晴落景:晚霞聊自怡 初晴弥可喜 日晃百花色 风动千林翠 池鱼跃不同 园鸟声还异 寄言博通者...
2  度秋:夏律昨留灰 秋箭今移晷 峨嵋岫初出 洞庭波渐起 桂白发幽岩 菊黄开灞涘 运流方可叹 含...
3  仪鸾殿早秋:寒惊蓟门叶 秋发小山枝 松阴背日转 竹影避风移 提壶菊花岸 高兴芙蓉池 欲知凉气...
4  山阁晚秋:山亭秋色满 岩牖凉风度 疏兰尚染烟 残菊犹承露 古石衣新苔 新巢封古树 历览情无极...
(24117, 1)
In [3]:
# 去除题目、空格
import string
import numpy as np

poems_new = []
for line in poems_text['text']:  # poems_text[0]的第0列,指
    title, poem = line.split(':')
    poem = poem.replace(' ', '') #将空格去掉
    poem = 'bbb' + poem
    poems_new.append(list(poem))

print(len(poems_new))
24117
In [4]:
# 生成X和Y的矩阵
XY  =[]
for poem in poems_new:
    for i in range(len(poem) - 3):
        x1 = poem[i]
        x2 = poem[i+1]
        x3 = poem[i+2]
        
        y = poem[i+3]
        XY.append([x1, x2, x3, y])

# 展示整理后的X和Y的形式

print("原始诗句:")
print(poems_text['text'][3864])
print("\n")
print("训练数据:")
print(["X1", "X2", "X3", "Y"])
for i in range(132763, 132773):
    print(XY[i])
原始诗句:
静夜思:床前明月光 疑是地上霜 举头望明月 低头思故乡  


训练数据:
['X1', 'X2', 'X3', 'Y']
['b', 'b', 'b', '床']
['b', 'b', '床', '前']
['b', '床', '前', '明']
['床', '前', '明', '月']
['前', '明', '月', '光']
['明', '月', '光', '疑']
['月', '光', '疑', '是']
['光', '疑', '是', '地']
['疑', '是', '地', '上']
['是', '地', '上', '霜']
In [13]:
# 文字编码
from keras.preprocessing.text import Tokenizer

tokenizer = Tokenizer()
tokenizer.fit_on_texts(poems_new)
print(tokenizer.word_index)

#tokenizer默认把0这个索引留给停止词了,其它的词是从1开始索引的。然后分类的损失又默认0是第一类
#所以导致假设我们有三个字:a,b,c。他们的索引分别是1,2,3,没有0。这对keras要使用一个4分类才行
vocab_size = len(tokenizer.word_index) + 1

print(vocab_size)
{'b': 1, '不': 2, '人': 3, '山': 4, '风': 5, '日': 6, '无': 7, '一': 8, '云': 9, '春': 10, '花': 11, '来': 12, '何': 13, '月': 14, '水': 15, '上': 16, '有': 17, '时': 18, '中': 19, '秋': 20, '天': 21, '归': 22, '年': 23, '相': 24, '夜': 25, '知': 26, '江': 27, '君': 28, '去': 29, '长': 30, '心': 31, '见': 32, '此': 33, '白': 34, '行': 35, '自': 36, '生': 37, '客': 38, '处': 39, '为': 40, '里': 41, '空': 42, '寒': 43, '在': 44, '是': 45, '雨': 46, '下': 47, '清': 48, '如': 49, '得': 50, '落': 51, '多': 52, '高': 53, '明': 54, '远': 55, '路': 56, '门': 57, '未': 58, '声': 59, '青': 60, '家': 61, '别': 62, '南': 63, '树': 64, '尽': 65, '城': 66, '今': 67, '事': 68, '应': 69, '草': 70, '还': 71, '入': 72, '前': 73, '深': 74, '千': 75, '思': 76, '流': 77, '新': 78, '向': 79, '独': 80, '出': 81, '闲': 82, '雪': 83, '色': 84, '开': 85, '看': 86, '三': 87, '道': 88, '飞': 89, '烟': 90, '更': 91, '西': 92, '回': 93, '愁': 94, '酒': 95, '谁': 96, '万': 97, '朝': 98, '东': 99, '欲': 100, '子': 101, '玉': 102, '闻': 103, '与': 104, '满': 105, '林': 106, '望': 107, '到': 108, '马': 109, '已': 110, '重': 111, '阳': 112, '金': 113, '地': 114, '同': 115, '将': 116, '叶': 117, '石': 118, '香': 119, '情': 120, '莫': 121, '衣': 122, '身': 123, '老': 124, '过': 125, '旧': 126, '游': 127, '似': 128, '头': 129, '几': 130, '鸟': 131, '楼': 132, '成': 133, '尘': 134, '故': 135, '书': 136, '古': 137, '海': 138, '离': 139, '后': 140, '光': 141, '犹': 142, '边': 143, '从': 144, '暮': 145, '松': 146, '竹': 147, '外': 148, '难': 149, '孤': 150, '可': 151, '晚': 152, '红': 153, '分': 154, '复': 155, '诗': 156, '歌': 157, '吟': 158, '间': 159, '名': 160, '起': 161, '关': 162, '柳': 163, '梦': 164, '发': 165, '野': 166, '我': 167, '方': 168, '逢': 169, '乡': 170, '作': 171, '醉': 172, '枝': 173, '意': 174, '平': 175, '能': 176, '北': 177, '初': 178, '黄': 179, '台': 180, '随': 181, '仙': 182, '当': 183, '少': 184, '坐': 185, '溪': 186, '露': 187, '半': 188, '临': 189, '国': 190, '影': 191, '共': 192, '残': 193, '问': 194, '华': 195, '阴': 196, '近': 197, '留': 198, '亦': 199, '王': 200, '汉': 201, '泉': 202, '霜': 203, '庭': 204, '河': 205, '芳': 206, '十': 207, '池': 208, '微': 209, '五': 210, '非': 211, '言': 212, '岁': 213, '楚': 214, '舟': 215, '龙': 216, '峰': 217, '好': 218, '绿': 219, '幽': 220, '遥': 221, '期': 222, '经': 223, '终': 224, '静': 225, '宫': 226, '晓': 227, '因': 228, '气': 229, '僧': 230, '公': 231, '寻': 232, '吹': 233, '断': 234, '忆': 235, '宿': 236, '世': 237, '夕': 238, '碧': 239, '波': 240, '却': 241, '正': 242, '安': 243, '沙': 244, '雁': 245, '轻': 246, '送': 247, '照': 248, '又': 249, '百': 250, '然': 251, '连': 252, '唯': 253, '若': 254, '泪': 255, '须': 256, '鹤': 257, '寺': 258, '两': 259, '只': 260, '曾': 261, '文': 262, '大': 263, '依': 264, '对': 265, '神': 266, '小': 267, '早': 268, '堪': 269, '翠': 270, '四': 271, '病': 272, '惊': 273, '听': 274, '九': 275, '寂': 276, '久': 277, '曲': 278, '居': 279, '陵': 280, '窗': 281, '动': 282, '怜': 283, '双': 284, '垂': 285, '凉': 286, '木': 287, '寄': 288, '登': 289, '迟': 290, '语': 291, '园': 292, '乱': 293, '州': 294, '通': 295, '悲': 296, '恨': 297, '先': 298, '带': 299, '景': 300, '苦': 301, '鸣': 302, '湖': 303, '和': 304, '乐': 305, '数': 306, '疏': 307, '待': 308, '斜': 309, '萧': 310, '至': 311, '晴': 312, '秦': 313, '星': 314, '笑': 315, '灯': 316, '爱': 317, '兴': 318, '传': 319, '苍': 320, '亭': 321, '浮': 322, '鱼': 323, '车': 324, '觉': 325, '度': 326, '川': 327, '暗': 328, '才': 329, '官': 330, '主': 331, '逐': 332, '悠': 333, '隔': 334, '堂': 335, '岂': 336, '合': 337, '移': 338, '所': 339, '火': 340, '使': 341, '岸': 342, '常': 343, '紫': 344, '二': 345, '稀': 346, '恩': 347, '田': 348, '散': 349, '猿': 350, '绕': 351, '禅': 352, '物': 353, '洞': 354, '信': 355, '舞': 356, '钟': 357, '霞': 358, '怀': 359, '阁': 360, '隐': 361, '帝': 362, '女': 363, '啼': 364, '征': 365, '亲': 366, '苔': 367, '会': 368, '桃': 369, '住': 370, '虚': 371, '绝': 372, '琴': 373, '忽': 374, '手': 375, '真': 376, '节': 377, '胜': 378, '灵': 379, '师': 380, '往': 381, '径': 382, '湘': 383, '转': 384, '杯': 385, '休': 386, '者': 387, '桂': 388, '首': 389, '定': 390, '凤': 391, '杨': 392, '含': 393, '解': 394, '郎': 395, '兰': 396, '栖': 397, '船': 398, '丹': 399, '识': 400, '伤': 401, '穷': 402, '画': 403, '卧': 404, '眠': 405, '辞': 406, '说': 407, '塞': 408, '便': 409, '浪': 410, '帆': 411, '镜': 412, '惟': 413, '惜': 414, '馀': 415, '容': 416, '荒': 417, '倚': 418, '药': 419, '立': 420, '他': 421, '且': 422, '桥': 423, '吴': 424, '拂': 425, '谢': 426, '步': 427, '条': 428, '洛': 429, '疑': 430, '片': 431, '乘': 432, '冷': 433, '虽': 434, '眼': 435, '映': 436, '始': 437, '吾': 438, '群': 439, '罗': 440, '余': 441, '著': 442, '怅': 443, '太': 444, '翻': 445, '燕': 446, '丝': 447, '军': 448, '学': 449, '岩': 450, '贫': 451, '伴': 452, '尚': 453, '足': 454, '令': 455, '即': 456, '掩': 457, '以': 458, '迹': 459, '锦': 460, '德': 461, '村': 462, '功': 463, '细': 464, '剑': 465, '那': 466, '争': 467, '暂': 468, '鬓': 469, '梅': 470, '邻': 471, '欢': 472, '偏': 473, '忘': 474, '劳': 475, '频': 476, '渐': 477, '迎': 478, '暖': 479, '昔': 480, '薄': 481, '圣': 482, '直': 483, '颜': 484, '卷': 485, '蝉': 486, '喜': 487, '音': 488, '莲': 489, '缘': 490, '珠': 491, '衰': 492, '易': 493, '弦': 494, '皆': 495, '礼': 496, '朱': 497, '潮': 498, '殿': 499, '折': 500, '结': 501, '异': 502, '低': 503, '夫': 504, '用': 505, '谷': 506, '尔': 507, '骑': 508, '洲': 509, '急': 510, '于': 511, '渡': 512, '儿': 513, '干': 514, '摇': 515, '报': 516, '兵': 517, '士': 518, '胡': 519, '岭': 520, '魂': 521, '教': 522, '越': 523, '枕': 524, '钓': 525, '飘': 526, '极': 527, '徒': 528, '罢': 529, '接': 530, '之': 531, '及': 532, '床': 533, '莺': 534, '引': 535, '载': 536, '死': 537, '交': 538, '横': 539, '湿': 540, '宵': 541, '浦': 542, '皇': 543, '梁': 544, '面': 545, '命': 546, '都': 547, '愿': 548, '采': 549, '郡': 550, '京': 551, '沧': 552, '求': 553, '字': 554, '斋': 555, '本': 556, '井': 557, '取': 558, '惆': 559, '六': 560, '迷': 561, '轩': 562, '羽': 563, '力': 564, '傍': 565, '仍': 566, '臣': 567, '沈': 568, '遍': 569, '贤': 570, '侵': 571, '房': 572, '岳': 573, '闭': 574, '念': 575, '齐': 576, '帘': 577, '寥': 578, '许': 579, '鸿': 580, '素': 581, '贵': 582, '持': 583, '涯': 584, '管': 585, '化': 586, '忧': 587, '饮': 588, '由': 589, '破': 590, '阙': 591, '纷': 592, '永': 593, '御': 594, '夏': 595, '想': 596, '积': 597, '食': 598, '繁': 599, '李': 600, '菊': 601, '根': 602, '论': 603, '阶': 604, '鸡': 605, '最': 606, '任': 607, '荣': 608, '宁': 609, '渔': 610, '销': 611, '守': 612, '凄': 613, '佳': 614, '息': 615, '旅': 616, '战': 617, '蓬': 618, '玄': 619, '感': 620, '武': 621, '户': 622, '遗': 623, '宜': 624, '昏': 625, '机': 626, '俗': 627, '种': 628, '馆': 629, '程': 630, '吏': 631, '尊': 632, '壁': 633, '彩': 634, '计': 635, '必': 636, '冰': 637, '浅': 638, '悬': 639, '蜀': 640, '原': 641, '危': 642, '棹': 643, '把': 644, '催': 645, '泛': 646, '府': 647, '兼': 648, '访': 649, '怨': 650, '但': 651, '携': 652, '赏': 653, '收': 654, '倾': 655, '侯': 656, '斗': 657, '题': 658, '美': 659, '消': 660, '句': 661, '肠': 662, '凝': 663, '荷': 664, '诸': 665, '烛': 666, '端': 667, '口': 668, '八': 669, '每': 670, '塘': 671, '变': 672, '昨': 673, '目': 674, '盘': 675, '宝': 676, '室': 677, '鼓': 678, '巴': 679, '泥': 680, '丛': 681, '沾': 682, '藏': 683, '失': 684, '寞': 685, '滴': 686, '叹': 687, '雾': 688, '举': 689, '承': 690, '翁': 691, '章': 692, '遇': 693, '舍': 694, '业': 695, '全': 696, '其': 697, '潭': 698, '凭': 699, '扉': 700, '院': 701, '眉': 702, '调': 703, '桑': 704, '被': 705, '孙': 706, '第': 707, '羡': 708, '沉': 709, '内': 710, '迢': 711, '攀': 712, '角': 713, '元': 714, '幸': 715, '妾': 716, '驿': 717, '点': 718, '扫': 719, '冥': 720, '席': 721, '津': 722, '涧': 723, '良': 724, '赋': 725, '烧': 726, '艳': 727, '荆': 728, '借': 729, '县': 730, '殊': 731, '勤': 732, '茫': 733, '挂': 734, '晨': 735, '背': 736, '七': 737, '降': 738, '话': 739, '轮': 740, '竟': 741, '净': 742, '喧': 743, '指': 744, '封': 745, '骨': 746, '禁': 747, '狂': 748, '禽': 749, '屋': 750, '恐': 751, '惭': 752, '苑': 753, '粉': 754, '肯': 755, '响': 756, '尺': 757, '漏': 758, '没': 759, '性': 760, '迥': 761, '毛': 762, '况': 763, '恋': 764, '旌': 765, '土': 766, '曙': 767, '筵': 768, '负': 769, '牛': 770, '并': 771, '放': 772, '修': 773, '殷': 774, '钱': 775, '漫': 776, '俱': 777, '圆': 778, '顾': 779, '强': 780, '偶': 781, '观': 782, '众': 783, '银': 784, '称': 785, '敢': 786, '磬': 787, '乌': 788, '渚': 789, '营': 790, '图': 791, '妆': 792, '旗': 793, '陈': 794, '也': 795, '赠': 796, '弄': 797, '比': 798, '扬': 799, '泽': 800, '嫌': 801, '底': 802, '张': 803, '笼': 804, '周': 805, '英': 806, '荐': 807, '拟': 808, '冠': 809, '郭': 810, '枯': 811, '陌': 812, '童': 813, '耕': 814, '峡': 815, '既': 816, '盛': 817, '醒': 818, '法': 819, '衔': 820, '兹': 821, '势': 822, '遣': 823, '绮': 824, '叠': 825, '戎': 826, '襟': 827, '郊': 828, '境': 829, '戍': 830, '阔': 831, '市': 832, '唱': 833, '源': 834, '墙': 835, '穿': 836, '精': 837, '咏': 838, '淮': 839, '献': 840, '虎': 841, '象': 842, '茅': 843, '岛': 844, '巢': 845, '就': 846, '招': 847, '限': 848, '瑶': 849, '试': 850, '杏': 851, '萝': 852, '避': 853, '纵': 854, '志': 855, '宅': 856, '畔': 857, '桐': 858, '宴': 859, '昭': 860, '哀': 861, '陇': 862, '洒': 863, '霄': 864, '坛': 865, '檐': 866, '辉': 867, '抱': 868, '炉': 869, '严': 870, '历': 871, '代': 872, '昼': 873, '茶': 874, '聊': 875, '广': 876, '披': 877, '盈': 878, '候': 879, '停': 880, '杖': 881, '理': 882, '要': 883, '厌': 884, '再': 885, '鸾': 886, '添': 887, '形': 888, '兮': 889, '列': 890, '歇': 891, '帐': 892, '凌': 893, '肃': 894, '短': 895, '丘': 896, '宗': 897, '覆': 898, '袖': 899, '痕': 900, '蝶': 901, '嗟': 902, '布': 903, '侣': 904, '晖': 905, '参': 906, '差': 907, '走': 908, '际': 909, '巾': 910, '扇': 911, '涛': 912, '灭': 913, '奈': 914, '驱': 915, '奏': 916, '斯': 917, '各': 918, '庙': 919, '庐': 920, '甘': 921, '幕': 922, '驻': 923, '史': 924, '拜': 925, '篱': 926, '弟': 927, '樵': 928, '杜': 929, '属': 930, '密': 931, '升': 932, '途': 933, '杳': 934, '弹': 935, '诚': 936, '顶': 937, '投': 938, '盖': 939, '雄': 940, '系': 941, '哭': 942, '雕': 943, '澄': 944, '暑': 945, '刀': 946, '虫': 947, '绣': 948, '熟': 949, '友': 950, '雷': 951, '杀': 952, '洗': 953, '拥': 954, '阑': 955, '泊': 956, '冬': 957, '陶': 958, '词': 959, '层': 960, '泣': 961, '利': 962, '疾': 963, '记': 964, '睡': 965, '邑': 966, '果': 967, '壶': 968, '羞': 969, '儒': 970, '琼': 971, '赤': 972, '黑': 973, '废': 974, '腰': 975, '鸥': 976, '浓': 977, '锁': 978, '漠': 979, '省': 980, '霁': 981, '亡': 982, '踪': 983, '切': 984, '酌': 985, '笔': 986, '岐': 987, '遂': 988, '存': 989, '荡': 990, '达': 991, '笛': 992, '汀': 993, '鹿': 994, '梧': 995, '商': 996, '零': 997, '卿': 998, '忍': 999, '栽': 1000, '嘉': 1001, '冲': 1002, '怪': 1003, '堤': 1004, '奉': 1005, '奇': 1006, '延': 1007, '寿': 1008, '买': 1009, '柏': 1010, '祖': 1011, '尝': 1012, '韵': 1013, '芜': 1014, '宾': 1015, '愧': 1016, '姓': 1017, '巷': 1018, '畏': 1019, '铜': 1020, '枫': 1021, '蒲': 1022, '槐': 1023, '虏': 1024, '受': 1025, '社': 1026, '鸳': 1027, '染': 1028, '丽': 1029, '竿': 1030, '懒': 1031, '威': 1032, '杂': 1033, '写': 1034, '焚': 1035, '柴': 1036, '鞭': 1037, '返': 1038, '违': 1039, '策': 1040, '印': 1041, '衡': 1042, '值': 1043, '侍': 1044, '了': 1045, '鹭': 1046, '蘋': 1047, '裁': 1048, '戈': 1049, '支': 1050, '咽': 1051, '辛': 1052, '妇': 1053, '佛': 1054, '笙': 1055, '潜': 1056, '格': 1057, '兄': 1058, '倒': 1059, '养': 1060, '壑': 1061, '仪': 1062, '集': 1063, '止': 1064, '雀': 1065, '免': 1066, '羁': 1067, '埃': 1068, '宦': 1069, '槛': 1070, '驾': 1071, '篇': 1072, '巫': 1073, '娇': 1074, '迁': 1075, '扶': 1076, '霭': 1077, '芙': 1078, '砌': 1079, '旋': 1080, '追': 1081, '抛': 1082, '服': 1083, '牵': 1084, '夷': 1085, '劝': 1086, '踏': 1087, '翩': 1088, '渭': 1089, '政': 1090, '座': 1091, '腊': 1092, '除': 1093, '味': 1094, '屏': 1095, '曹': 1096, '滩': 1097, '潇': 1098, '酬': 1099, '读': 1100, '总': 1101, '网': 1102, '改': 1103, '簪': 1104, '瓶': 1105, '滞': 1106, '实': 1107, '瑞': 1108, '炎': 1109, '宇': 1110, '耳': 1111, '妨': 1112, '觅': 1113, '骚': 1114, '蓉': 1115, '柱': 1116, '佩': 1117, '团': 1118, '庆': 1119, '娥': 1120, '锡': 1121, '堕': 1122, '展': 1123, '箫': 1124, '壮': 1125, '阻': 1126, '表': 1127, '樽': 1128, '鸦': 1129, '犬': 1130, '占': 1131, '雅': 1132, '履': 1133, '袅': 1134, '渺': 1135, '辰': 1136, '裳': 1137, '索': 1138, '翼': 1139, '福': 1140, '己': 1141, '裴': 1142, '个': 1143, '律': 1144, '纤': 1145, '血': 1146, '减': 1147, '彻': 1148, '潺': 1149, '致': 1150, '嘶': 1151, '萤': 1152, '朔': 1153, '纱': 1154, '聚': 1155, '烦': 1156, '昌': 1157, '宠': 1158, '换': 1159, '窥': 1160, '萦': 1161, '义': 1162, '鼎': 1163, '嵩': 1164, '累': 1165, '澹': 1166, '闺': 1167, '簟': 1168, '赊': 1169, '促': 1170, '次': 1171, '崖': 1172, '苏': 1173, '陪': 1174, '蛾': 1175, '瀑': 1176, '藤': 1177, '趋': 1178, '梨': 1179, '霏': 1180, '哉': 1181, '瑟': 1182, '觞': 1183, '润': 1184, '暝': 1185, '丈': 1186, '秀': 1187, '误': 1188, '蒙': 1189, '寸': 1190, '宣': 1191, '建': 1192, '沟': 1193, '棋': 1194, '猎': 1195, '鹊': 1196, '坟': 1197, '请': 1198, '灰': 1199, '蕊': 1200, '冻': 1201, '钩': 1202, '舆': 1203, '祀': 1204, '砧': 1205, '场': 1206, '飒': 1207, '旦': 1208, '塔': 1209, '甚': 1210, '济': 1211, '绵': 1212, '坠': 1213, '芦': 1214, '诏': 1215, '瘴': 1216, '妙': 1217, '伊': 1218, '托': 1219, '凋': 1220, '浩': 1221, '泠': 1222, '役': 1223, '羊': 1224, '芝': 1225, '织': 1226, '鳞': 1227, '丰': 1228, '态': 1229, '陆': 1230, '倦': 1231, '乞': 1232, '藓': 1233, '趣': 1234, '祥': 1235, '裘': 1236, '蛮': 1237, '呼': 1238, '饥': 1239, '斑': 1240, '淡': 1241, '栏': 1242, '貌': 1243, '祠': 1244, '伏': 1245, '弓': 1246, '瘦': 1247, '橘': 1248, '浑': 1249, '驰': 1250, '乍': 1251, '蹄': 1252, '仰': 1253, '咸': 1254, '谋': 1255, '啸': 1256, '戏': 1257, '触': 1258, '险': 1259, '晋': 1260, '司': 1261, '刘': 1262, '甲': 1263, '备': 1264, '约': 1265, '魏': 1266, '鬼': 1267, '稍': 1268, '饶': 1269, '欹': 1270, '虑': 1271, '鲁': 1272, '委': 1273, '唐': 1274, '崇': 1275, '赖': 1276, '郁': 1277, '邀': 1278, '续': 1279, '逸': 1280, '箭': 1281, '皎': 1282, '屈': 1283, '廊': 1284, '吐': 1285, '敛': 1286, '榆': 1287, '敬': 1288, '裙': 1289, '推': 1290, '护': 1291, '徐': 1292, '鲜': 1293, '贞': 1294, '毕': 1295, '谒': 1296, '碑': 1297, '掌': 1298, '氛': 1299, '碛': 1300, '弃': 1301, '街': 1302, '谪': 1303, '氏': 1304, '滨': 1305, '剪': 1306, '扁': 1307, '偷': 1308, '侧': 1309, '穆': 1310, '孝': 1311, '位': 1312, '摘': 1313, '寝': 1314, '宽': 1315, '灞': 1316, '濛': 1317, '洁': 1318, '辇': 1319, '仁': 1320, '规': 1321, '巡': 1322, '岚': 1323, '退': 1324, '袍': 1325, '鸯': 1326, '界': 1327, '羸': 1328, '符': 1329, '旨': 1330, '谓': 1331, '母': 1332, '凰': 1333, '妃': 1334, '恶': 1335, '乾': 1336, '围': 1337, '旷': 1338, '压': 1339, '午': 1340, '饭': 1341, '峨': 1342, '岫': 1343, '舒': 1344, '淹': 1345, '笳': 1346, '弱': 1347, '递': 1348, '蕙': 1349, '单': 1350, '絮': 1351, '莎': 1352, '谈': 1353, '遮': 1354, '虹': 1355, '鞍': 1356, '资': 1357, '馨': 1358, '伯': 1359, '贱': 1360, '怕': 1361, '尧': 1362, '惠': 1363, '父': 1364, '麻': 1365, '墨': 1366, '慵': 1367, '魄': 1368, '启': 1369, '贾': 1370, '萋': 1371, '领': 1372, '忙': 1373, '腾': 1374, '益': 1375, '堆': 1376, '环': 1377, '埋': 1378, '脉': 1379, '嶂': 1380, '阿': 1381, '乃': 1382, '宛': 1383, '茂': 1384, '而': 1385, '贪': 1386, '射': 1387, '涨': 1388, '旆': 1389, '术': 1390, '善': 1391, '齿': 1392, '株': 1393, '汝': 1394, '衲': 1395, '碎': 1396, '农': 1397, '固': 1398, '莱': 1399, '濯': 1400, '萍': 1401, '适': 1402, '打': 1403, '珍': 1404, '绶': 1405, '囊': 1406, '慰': 1407, '嫁': 1408, '宰': 1409, '造': 1410, '茎': 1411, '叫': 1412, '讲': 1413, '谏': 1414, '杉': 1415, '毫': 1416, '奠': 1417, '置': 1418, '享': 1419, '龟': 1420, '闱': 1421, '维': 1422, '辽': 1423, '骢': 1424, '襄': 1425, '质': 1426, '暇': 1427, '尾': 1428, '默': 1429, '禄': 1430, '辨': 1431, '菱': 1432, '戴': 1433, '防': 1434, '讵': 1435, '菲': 1436, '垒': 1437, '宋': 1438, '姿': 1439, '敌': 1440, '振': 1441, '缨': 1442, '施': 1443, '束': 1444, '卖': 1445, '妻': 1446, '匹': 1447, '彼': 1448, '爽': 1449, '进': 1450, '融': 1451, '唤': 1452, '欺': 1453, '稻': 1454, '郢': 1455, '穴': 1456, '僻': 1457, '乔': 1458, '凿': 1459, '丁': 1460, '嫩': 1461, '梵': 1462, '烽': 1463, '兔': 1464, '末': 1465, '康': 1466, '联': 1467, '刺': 1468, '量': 1469, '助': 1470, '提': 1471, '漾': 1472, '岑': 1473, '帷': 1474, '惨': 1475, '温': 1476, '戚': 1477, '屡': 1478, '餐': 1479, '假': 1480, '矣': 1481, '隅': 1482, '娟': 1483, '挥': 1484, '酣': 1485, '衫': 1486, '冢': 1487, '班': 1488, '倍': 1489, '继': 1490, '浸': 1491, '黍': 1492, '绪': 1493, '渠': 1494, '认': 1495, '装': 1496, '隋': 1497, '藻': 1498, '坤': 1499, '体': 1500, '溟': 1501, '寐': 1502, '妒': 1503, '摧': 1504, '蹉': 1505, '跎': 1506, '赴': 1507, '简': 1508, '左': 1509, '铁': 1510, '吊': 1511, '料': 1512, '悟': 1513, '匣': 1514, '阵': 1515, '赐': 1516, '悴': 1517, '梳': 1518, '夹': 1519, '右': 1520, '籍': 1521, '耿': 1522, '富': 1523, '怯': 1524, '夸': 1525, '叟': 1526, '葛': 1527, '等': 1528, '巧': 1529, '加': 1530, '保': 1531, '厚': 1532, '衢': 1533, '凫': 1534, '佐': 1535, '仲': 1536, '竞': 1537, '纸': 1538, '钗': 1539, '薜': 1540, '枉': 1541, '号': 1542, '苗': 1543, '蒿': 1544, '肥': 1545, '扰': 1546, '谿': 1547, '磨': 1548, '运': 1549, '忠': 1550, '辟': 1551, '执': 1552, '科': 1553, '偃': 1554, '绛': 1555, '伫': 1556, '卜': 1557, '桡': 1558, '姑': 1559, '坚': 1560, '麦': 1561, '樯': 1562, '脱': 1563, '绳': 1564, '校': 1565, '勿': 1566, '逼': 1567, '楫': 1568, '予': 1569, '牧': 1570, '典': 1571, '槎': 1572, '袂': 1573, '贺': 1574, '般': 1575, '凡': 1576, '豪': 1577, '尉': 1578, '牡': 1579, '滋': 1580, '焰': 1581, '障': 1582, '奔': 1583, '鉴': 1584, '瞻': 1585, '庄': 1586, '类': 1587, '柔': 1588, '泰': 1589, '翰': 1590, '辈': 1591, '阮': 1592, '卑': 1593, '稳': 1594, '谩': 1595, '笋': 1596, '葬': 1597, '卢': 1598, '或': 1599, '湲': 1600, '皋': 1601, '抽': 1602, '工': 1603, '热': 1604, '憔': 1605, '晏': 1606, '孔': 1607, '制': 1608, '孟': 1609, '茗': 1610, '弥': 1611, '啭': 1612, '晦': 1613, '旬': 1614, '宸': 1615, '序': 1616, '恭': 1617, '髭': 1618, '整': 1619, '视': 1620, '垣': 1621, '剡': 1622, '蕉': 1623, '纪': 1624, '镇': 1625, '冤': 1626, '蜂': 1627, '涩': 1628, '捣': 1629, '汲': 1630, '的': 1631, '价': 1632, '署': 1633, '莓': 1634, '透': 1635, '插': 1636, '仗': 1637, '愚': 1638, '让': 1639, '探': 1640, '希': 1641, '习': 1642, '皓': 1643, '帽': 1644, '拙': 1645, '纶': 1646, '逍': 1647, '搜': 1648, '健': 1649, '沽': 1650, '架': 1651, '激': 1652, '敲': 1653, '季': 1654, '姬': 1655, '标': 1656, '私': 1657, '泻': 1658, '媒': 1659, '店': 1660, '蔽': 1661, '申': 1662, '否': 1663, '虞': 1664, '雍': 1665, '俎': 1666, '缓': 1667, '庾': 1668, '铺': 1669, '赵': 1670, '榻': 1671, '潘': 1672, '蛩': 1673, '屿': 1674, '厨': 1675, '朵': 1676, '噪': 1677, '缀': 1678, '彭': 1679, '式': 1680, '霰': 1681, '牢': 1682, '困': 1683, '氲': 1684, '朽': 1685, '涕': 1686, '掷': 1687, '曛': 1688, '漱': 1689, '翅': 1690, '败': 1691, '汤': 1692, '漳': 1693, '葭': 1694, '黛': 1695, '梢': 1696, '汗': 1697, '筑': 1698, '祚': 1699, '答': 1700, '薰': 1701, '民': 1702, '惯': 1703, '陂': 1704, '案': 1705, '麟': 1706, '增': 1707, '敷': 1708, '砂': 1709, '榴': 1710, '蔓': 1711, '缕': 1712, '烂': 1713, '器': 1714, '职': 1715, '匝': 1716, '雏': 1717, '榜': 1718, '朋': 1719, '跃': 1720, '刻': 1721, '韶': 1722, '植': 1723, '森': 1724, '祝': 1725, '击': 1726, '排': 1727, '疲': 1728, '篁': 1729, '鹰': 1730, '肉': 1731, '萼': 1732, '蟾': 1733, '惹': 1734, '浊': 1735, '禾': 1736, '供': 1737, '俯': 1738, '萸': 1739, '玩': 1740, '兽': 1741, '梯': 1742, '珊': 1743, '瓢': 1744, '砚': 1745, '腹': 1746, '溜': 1747, '呈': 1748, '具': 1749, '棠': 1750, '璧': 1751, '契': 1752, '娱': 1753, '驭': 1754, '洪': 1755, '朗': 1756, '瓜': 1757, '软': 1758, '妖': 1759, '部': 1760, '掖': 1761, '骄': 1762, '坞': 1763, '薇': 1764, '男': 1765, '蚁': 1766, '闾': 1767, '岘': 1768, '悄': 1769, '墀': 1770, '昆': 1771, '柯': 1772, '状': 1773, '藉': 1774, '卫': 1775, '拔': 1776, '煎': 1777, '稽': 1778, '箧': 1779, '蚕': 1780, '杵': 1781, '扑': 1782, '霖': 1783, '韩': 1784, '浣': 1785, '稚': 1786, '偈': 1787, '屐': 1788, '苇': 1789, '览': 1790, '焉': 1791, '翔': 1792, '域': 1793, '超': 1794, '庶': 1795, '簇': 1796, '逾': 1797, '捧': 1798, '羌': 1799, '鼙': 1800, '鹧': 1801, '补': 1802, '丞': 1803, '电': 1804, '媚': 1805, '仞': 1806, '蛇': 1807, '寰': 1808, '禋': 1809, '配': 1810, '亚': 1811, '寇': 1812, '慈': 1813, '坏': 1814, '鸪': 1815, '浔': 1816, '贡': 1817, '慢': 1818, '汾': 1819, '圃': 1820, '眺': 1821, '缺': 1822, '欣': 1823, '芬': 1824, '勒': 1825, '啄': 1826, '祭': 1827, '涉': 1828, '豆': 1829, '槿': 1830, '怆': 1831, '艰': 1832, '损': 1833, '趁': 1834, '狼': 1835, '冈': 1836, '峤': 1837, '蓝': 1838, '蹋': 1839, '匡': 1840, '颠': 1841, '练': 1842, '銮': 1843, '牙': 1844, '舜': 1845, '授': 1846, '於': 1847, '豫': 1848, '椒': 1849, '呜': 1850, '脸': 1851, '飙': 1852, '滑': 1853, '墓': 1854, '徊': 1855, '材': 1856, '录': 1857, '溅': 1858, '讶': 1859, '荻': 1860, '吞': 1861, '煮': 1862, '牖': 1863, '暄': 1864, '告': 1865, '骊': 1866, '饯': 1867, '赫': 1868, '颓': 1869, '棱': 1870, '蒸': 1871, '勋': 1872, '遭': 1873, '决': 1874, '脚': 1875, '握': 1876, '瓦': 1877, '乳': 1878, '渴': 1879, '冉': 1880, '沼': 1881, '区': 1882, '设': 1883, '基': 1884, '则': 1885, '洽': 1886, '涵': 1887, '函': 1888, '付': 1889, '疆': 1890, '扣': 1891, '栈': 1892, '央': 1893, '谣': 1894, '妍': 1895, '瓮': 1896, '漂': 1897, '拾': 1898, '沿': 1899, '傲': 1900, '耻': 1901, '耸': 1902, '蕃': 1903, '崔': 1904, '顺': 1905, '睿': 1906, '震': 1907, '务': 1908, '筹': 1909, '陟': 1910, '稷': 1911, '亩': 1912, '诵': 1913, '蛟': 1914, '乖': 1915, '浴': 1916, '碍': 1917, '瀛': 1918, '曳': 1919, '劫': 1920, '仿': 1921, '劲': 1922, '冕': 1923, '籁': 1924, '注': 1925, '徽': 1926, '范': 1927, '戒': 1928, '戟': 1929, '钿': 1930, '鼠': 1931, '徘': 1932, '樱': 1933, '恼': 1934, '沃': 1935, '蔡': 1936, '畦': 1937, '蔬': 1938, '略': 1939, '蹑': 1940, '编': 1941, '窦': 1942, '妓': 1943, '鹦': 1944, '貂': 1945, '仆': 1946, '逃': 1947, '霓': 1948, '鹅': 1949, '褐': 1950, '膏': 1951, '循': 1952, '拨': 1953, '眇': 1954, '效': 1955, '错': 1956, '缝': 1957, '夺': 1958, '艇': 1959, '犯': 1960, '峭': 1961, '淅': 1962, '喷': 1963, '板': 1964, '虔': 1965, '顷': 1966, '帛': 1967, '倘': 1968, '剩': 1969, '反': 1970, '邦': 1971, '珮': 1972, '特': 1973, '傅': 1974, '专': 1975, '棘': 1976, '鹉': 1977, '筝': 1978, '雉': 1979, '伐': 1980, '巨': 1981, '郑': 1982, '矶': 1983, '速': 1984, '扃': 1985, '悔': 1986, '翛': 1987, '局': 1988, '贮': 1989, '琐': 1990, '兆': 1991, '炼': 1992, '隆': 1993, '截': 1994, '品': 1995, '污': 1996, '罪': 1997, '杪': 1998, '缄': 1999, '藕': 2000, '沦': 2001, '救': 2002, '智': 2003, '烬': 2004, '熏': 2005, '灶': 2006, '恒': 2007, '抵': 2008, '抚': 2009, '檀': 2010, '逝': 2011, '祸': 2012, '组': 2013, '输': 2014, '髻': 2015, '幌': 2016, '芰': 2017, '迤': 2018, '叔': 2019, '钵': 2020, '狎': 2021, '筠': 2022, '韦': 2023, '吠': 2024, '颇': 2025, '蒹': 2026, '遽': 2027, '恣': 2028, '邪': 2029, '耀': 2030, '遐': 2031, '骖': 2032, '婵': 2033, '算': 2034, '仓': 2035, '湛': 2036, '涓': 2037, '渌': 2038, '舸': 2039, '针': 2040, '油': 2041, '谙': 2042, '窟': 2043, '醪': 2044, '刹': 2045, '榭': 2046, '芭': 2047, '薪': 2048, '醺': 2049, '骏': 2050, '峦': 2051, '帏': 2052, '禹': 2053, '粒': 2054, '肩': 2055, '选': 2056, '烹': 2057, '冒': 2058, '狐': 2059, '线': 2060, '惬': 2061, '芸': 2062, '纡': 2063, '鹏': 2064, '饵': 2065, '筇': 2066, '闽': 2067, '荔': 2068, '芽': 2069, '飏': 2070, '液': 2071, '秘': 2072, '灌': 2073, '铅': 2074, '权': 2075, '爰': 2076, '滔': 2077, '忝': 2078, '浆': 2079, '溢': 2080, '稼': 2081, '卮': 2082, '逶': 2083, '议': 2084, '珑': 2085, '臂': 2086, '霸': 2087, '胧': 2088, '濑': 2089, '卒': 2090, '札': 2091, '锄': 2092, '饱': 2093, '欠': 2094, '博': 2095, '眷': 2096, '皮': 2097, '秩': 2098, '痛': 2099, '颂': 2100, '纳': 2101, '克': 2102, '旱': 2103, '揖': 2104, '鬟': 2105, '撩': 2106, '邛': 2107, '翡': 2108, '衾': 2109, '搔': 2110, '辙': 2111, '狖': 2112, '医': 2113, '坡': 2114, '亏': 2115, '涂': 2116, '示': 2117, '币': 2118, '歆': 2119, '甸': 2120, '沐': 2121, '幢': 2122, '腥': 2123, '奴': 2124, '拭': 2125, '弯': 2126, '辱': 2127, '沥': 2128, '毒': 2129, '潸': 2130, '擎': 2131, '米': 2132, '藜': 2133, '浙': 2134, '蓑': 2135, '缆': 2136, '纹': 2137, '悦': 2138, '绡': 2139, '熙': 2140, '翘': 2141, '肆': 2142, '冀': 2143, '释': 2144, '矜': 2145, '澜': 2146, '牲': 2147, '混': 2148, '均': 2149, '缭': 2150, '傥': 2151, '玲': 2152, '黯': 2153, '铃': 2154, '逆': 2155, '驷': 2156, '憎': 2157, '脂': 2158, '迸': 2159, '龛': 2160, '溶': 2161, '舌': 2162, '贼': 2163, '筋': 2164, '庵': 2165, '盏': 2166, '样': 2167, '亿': 2168, '预': 2169, '铭': 2170, '削': 2171, '吉': 2172, '跸': 2173, '靡': 2174, '缠': 2175, '额': 2176, '阅': 2177, '着': 2178, '刚': 2179, '辕': 2180, '胆': 2181, '淼': 2182, '操': 2183, '浇': 2184, '隈': 2185, '柘': 2186, '闷': 2187, '俸': 2188, '蹊': 2189, '鲸': 2190, '栋': 2191, '烈': 2192, '钧': 2193, '祗': 2194, '壤': 2195, '贻': 2196, '召': 2197, '梭': 2198, '涤': 2199, '践': 2200, '辍': 2201, '夭': 2202, '割': 2203, '茱': 2204, '翳': 2205, '豹': 2206, '婿': 2207, '鹄': 2208, '族': 2209, '垄': 2210, '遁': 2211, '磷': 2212, '耽': 2213, '兀': 2214, '湾': 2215, '鳌': 2216, '堞': 2217, '菰': 2218, '鲈': 2219, '滟': 2220, '麋': 2221, '栗': 2222, '劚': 2223, '畅': 2224, '贯': 2225, '荫': 2226, '廓': 2227, '羲': 2228, '斟': 2229, '躬': 2230, '翦': 2231, '介': 2232, '构': 2233, '警': 2234, '膳': 2235, '菜': 2236, '荧': 2237, '判': 2238, '骤': 2239, '珂': 2240, '鼻': 2241, '玳': 2242, '裾': 2243, '窈': 2244, '翮': 2245, '害': 2246, '粟': 2247, '稠': 2248, '卓': 2249, '柄': 2250, '坊': 2251, '垆': 2252, '蹇': 2253, '髯': 2254, '蓟': 2255, '曜': 2256, '磴': 2257, '奢': 2258, '墟': 2259, '膺': 2260, '筐': 2261, '猷': 2262, '弘': 2263, '轸': 2264, '盗': 2265, '旄': 2266, '圭': 2267, '蔼': 2268, '伦': 2269, '猛': 2270, '顿': 2271, '宪': 2272, '旁': 2273, '嚬': 2274, '贝': 2275, '娃': 2276, '碗': 2277, '冶': 2278, '箔': 2279, '褰': 2280, '猩': 2281, '毂': 2282, '窄': 2283, '拆': 2284, '褒': 2285, '尹': 2286, '像': 2287, '甃': 2288, '蹰': 2289, '恰': 2290, '僮': 2291, '丧': 2292, '燃': 2293, '瓯': 2294, '鹃': 2295, '颐': 2296, '萱': 2297, '鸭': 2298, '吃': 2299, '恃': 2300, '款': 2301, '秉': 2302, '敞': 2303, '锵': 2304, '祇': 2305, '俨': 2306, '斩': 2307, '粗': 2308, '辜': 2309, '廷': 2310, '谐': 2311, '醴': 2312, '派': 2313, '尤': 2314, '狭': 2315, '辘': 2316, '轳': 2317, '骥': 2318, '隙': 2319, '毡': 2320, '茸': 2321, '崩': 2322, '笺': 2323, '刃': 2324, '寓': 2325, '邮': 2326, '嵬': 2327, '援': 2328, '蛙': 2329, '焦': 2330, '沅': 2331, '麝': 2332, '耶': 2333, '鲤': 2334, '黔': 2335, '斧': 2336, '孰': 2337, '活': 2338, '黎': 2339, '睹': 2340, '讼': 2341, '珪': 2342, '飨': 2343, '挑': 2344, '轴': 2345, '考': 2346, '藩': 2347, '熊': 2348, '鹓': 2349, '骝': 2350, '琵': 2351, '琶': 2352, '窕': 2353, '袜': 2354, '裂': 2355, '忌': 2356, '娘': 2357, '拍': 2358, '优': 2359, '甫': 2360, '犀': 2361, '闰': 2362, '颍': 2363, '膝': 2364, '腻': 2365, '簿': 2366, '袁': 2367, '慎': 2368, '轧': 2369, '咫': 2370, '葵': 2371, '镂': 2372, '淑': 2373, '附': 2374, '僚': 2375, '铸': 2376, '巍': 2377, '匪': 2378, '箱': 2379, '蓼': 2380, '按': 2381, '痴': 2382, '罍': 2383, '蜡': 2384, '艺': 2385, '慕': 2386, '灼': 2387, '彤': 2388, '徼': 2389, '瞿': 2390, '胸': 2391, '窠': 2392, '锋': 2393, '段': 2394, '犊': 2395, '嚣': 2396, '茵': 2397, '踟': 2398, '项': 2399, '竺': 2400, '撼': 2401, '摩': 2402, '债': 2403, '晒': 2404, '匀': 2405, '攒': 2406, '蟠': 2407, '验': 2408, '迈': 2409, '峻': 2410, '龄': 2411, '充': 2412, '赞': 2413, '夙': 2414, '跻': 2415, '吕': 2416, '祉': 2417, '羹': 2418, '瑚': 2419, '哲': 2420, '芒': 2421, '泗': 2422, '秾': 2423, '绽': 2424, '饰': 2425, '箸': 2426, '蠡': 2427, '菡': 2428, '萏': 2429, '穗': 2430, '樊': 2431, '酿': 2432, '蟋': 2433, '蟀': 2434, '粱': 2435, '陛': 2436, '堑': 2437, '俦': 2438, '畿': 2439, '冯': 2440, '邹': 2441, '掾': 2442, '漆': 2443, '雠': 2444, '税': 2445, '拳': 2446, '唳': 2447, '蠹': 2448, '勉': 2449, '替': 2450, '剃': 2451, '桧': 2452, '辔': 2453, '馥': 2454, '飖': 2455, '幡': 2456, '阊': 2457, '棣': 2458, '琉': 2459, '璃': 2460, '籥': 2461, '隼': 2462, '喻': 2463, '储': 2464, '麾': 2465, '扈': 2466, '姚': 2467, '斫': 2468, '陷': 2469, '卉': 2470, '朦': 2471, '炙': 2472, '柚': 2473, '擢': 2474, '濆': 2475, '跳': 2476, '寡': 2477, '墅': 2478, '琅': 2479, '笠': 2480, '耐': 2481, '匆': 2482, '嗔': 2483, '眸': 2484, '厅': 2485, '怡': 2486, '惑': 2487, '霍': 2488, '鲍': 2489, '幄': 2490, '醑': 2491, '遵': 2492, '絜': 2493, '包': 2494, '测': 2495, '暴': 2496, '协': 2497, '聪': 2498, '嗣': 2499, '球': 2500, '辅': 2501, '瑁': 2502, '丑': 2503, '裛': 2504, '捐': 2505, '突': 2506, '漉': 2507, '恸': 2508, '闹': 2509, '攻': 2510, '治': 2511, '啾': 2512, '鹂': 2513, '胥': 2514, '袈': 2515, '裟': 2516, '嵇': 2517, '檄': 2518, '缥': 2519, '廉': 2520, '舂': 2521, '薛': 2522, '叨': 2523, '粘': 2524, '倩': 2525, '婆': 2526, '番': 2527, '苒': 2528, '豸': 2529, '幻': 2530, '翎': 2531, '乏': 2532, '淳': 2533, '楹': 2534, '绩': 2535, '阜': 2536, '粲': 2537, '彰': 2538, '洋': 2539, '燎': 2540, '率': 2541, '蛰': 2542, '笾': 2543, '绂': 2544, '厥': 2545, '胎': 2546, '倏': 2547, '侠': 2548, '纨': 2549, '剧': 2550, '哑': 2551, '嬴': 2552, '陋': 2553, '员': 2554, '蝇': 2555, '盆': 2556, '裹': 2557, '魔': 2558, '盐': 2559, '颗': 2560, '尖': 2561, '拄': 2562, '衙': 2563, '嵋': 2564, '勇': 2565, '篆': 2566, '稔': 2567, '邕': 2568, '阕': 2569, '颙': 2570, '穰': 2571, '寅': 2572, '膻': 2573, '俭': 2574, '朴': 2575, '屯': 2576, '鸠': 2577, '窃': 2578, '葱': 2579, '畴': 2580, '癖': 2581, '填': 2582, '旃': 2583, '惧': 2584, '駸': 2585, '猱': 2586, '粮': 2587, '鄙': 2588, '屦': 2589, '橹': 2590, '担': 2591, '鞋': 2592, '栊': 2593, '脆': 2594, '鹢': 2595, '络': 2596, '涌': 2597, '臾': 2598, '狱': 2599, '钦': 2600, '谬': 2601, '瞰': 2602, '聿': 2603, '箓': 2604, '祈': 2605, '竭': 2606, '衮': 2607, '愔': 2608, '盥': 2609, '袭': 2610, '氤': 2611, '坂': 2612, '邺': 2613, '淫': 2614, '誓': 2615, '些': 2616, '酲': 2617, '虾': 2618, '涟': 2619, '蛛': 2620, '敕': 2621, '妄': 2622, '滥': 2623, '缸': 2624, '检': 2625, '筱': 2626, '舫': 2627, '轺': 2628, '篷': 2629, '蜜': 2630, '窜': 2631, '晶': 2632, '俊': 2633, '殁': 2634, '莽': 2635, '盂': 2636, '证': 2637, '豁': 2638, '谗': 2639, '玕': 2640, '陀': 2641, '嫦': 2642, '飕': 2643, '揭': 2644, '荇': 2645, '凶': 2646, '阖': 2647, '鴒': 2648, '酝': 2649, '肇': 2650, '播': 2651, '贶': 2652, '显': 2653, '监': 2654, '巅': 2655, '乎': 2656, '彝': 2657, '靖': 2658, '隳': 2659, '祢': 2660, '爵': 2661, '爪': 2662, '泬': 2663, '挟': 2664, '嵯': 2665, '仇': 2666, '丸': 2667, '鸶': 2668, '幂': 2669, '囚': 2670, '沫': 2671, '虬': 2672, '曝': 2673, '猜': 2674, '琪': 2675, '缁': 2676, '憩': 2677, '湍': 2678, '肌': 2679, '巘': 2680, '幔': 2681, '湄': 2682, '唧': 2683, '弊': 2684, '诉': 2685, '湓': 2686, '费': 2687, '镊': 2688, '拘': 2689, '帙': 2690, '褭': 2691, '庸': 2692, '顽': 2693, '伸': 2694, '扆': 2695, '旒': 2696, '乙': 2697, '获': 2698, '择': 2699, '攸': 2700, '枢': 2701, '训': 2702, '覃': 2703, '祐': 2704, '岱': 2705, '纲': 2706, '缑': 2707, '煌': 2708, '苞': 2709, '蕤': 2710, '毳': 2711, '跨': 2712, '奸': 2713, '杼': 2714, '邯': 2715, '谭': 2716, '刑': 2717, '凛': 2718, '研': 2719, '擅': 2720, '胶': 2721, '婚': 2722, '患': 2723, '蜃': 2724, '禊': 2725, '桓': 2726, '泓': 2727, '菖': 2728, '炭': 2729, '蔷': 2730, '谯': 2731, '骸': 2732, '酸': 2733, '黏': 2734, '蕨': 2735, '菌': 2736, '溺': 2737, '莹': 2738, '叩': 2739, '邵': 2740, '缈': 2741, '秣': 2742, '毗': 2743, '猴': 2744, '赢': 2745, '逡': 2746, '泾': 2747, '诀': 2748, '醮': 2749, '觜': 2750, '诛': 2751, '穹': 2752, '镛': 2753, '忻': 2754, '粢': 2755, '邸': 2756, '裔': 2757, '挹': 2758, '豺': 2759, '懿': 2760, '据': 2761, '灾': 2762, '控': 2763, '晕': 2764, '赛': 2765, '桨': 2766, '谊': 2767, '雌': 2768, '颦': 2769, '匠': 2770, '郸': 2771, '腕': 2772, '啻': 2773, '芊': 2774, '蒂': 2775, '岷': 2776, '梓': 2777, '徇': 2778, '婴': 2779, '逗': 2780, '蓂': 2781, '颔': 2782, '仑': 2783, '荚': 2784, '驯': 2785, '惮': 2786, '崎': 2787, '岖': 2788, '芍': 2789, '赌': 2790, '拖': 2791, '逞': 2792, '莼': 2793, '鸽': 2794, '篮': 2795, '擒': 2796, '蒋': 2797, '掇': 2798, '挈': 2799, '碾': 2800, '驴': 2801, '骋': 2802, '凯': 2803, '誉': 2804, '蕖': 2805, '邙': 2806, '鬯': 2807, '奕': 2808, '昧': 2809, '窅': 2810, '邈': 2811, '绅': 2812, '创': 2813, '躅': 2814, '拱': 2815, '閟': 2816, '缩': 2817, '讨': 2818, '俄': 2819, '洮': 2820, '肝': 2821, '葳': 2822, '碣': 2823, '侬': 2824, '襦': 2825, '伍': 2826, '耗': 2827, '枚': 2828, '孀': 2829, '潋': 2830, '挽': 2831, '巳': 2832, '姜': 2833, '肤': 2834, '杰': 2835, '麒': 2836, '茨': 2837, '聘': 2838, '鶺': 2839, '逋': 2840, '浐': 2841, '艾': 2842, '皂': 2843, '驺': 2844, '屑': 2845, '筒': 2846, '帻': 2847, '庇': 2848, '绊': 2849, '鹚': 2850, '罅': 2851, '绢': 2852, '摆': 2853, '苎': 2854, '淋': 2855, '佞': 2856, '疮': 2857, '榼': 2858, '澌': 2859, '晞': 2860, '陕': 2861, '撤': 2862, '财': 2863, '俟': 2864, '炬': 2865, '骇': 2866, '谟': 2867, '牺': 2868, '濡': 2869, '迫': 2870, '旭': 2871, '曈': 2872, '蝴': 2873, '绠': 2874, '揽': 2875, '抬': 2876, '罥': 2877, '驼': 2878, '姮': 2879, '译': 2880, '辖': 2881, '铢': 2882, '涔': 2883, '舄': 2884, '翟': 2885, '吁': 2886, '淇': 2887, '荀': 2888, '趾': 2889, '鸱': 2890, '琢': 2891, '舅': 2892, '鄂': 2893, '渊': 2894, '箨': 2895, '帖': 2896, '航': 2897, '阎': 2898, '产': 2899, '咨': 2900, '坼': 2901, '敝': 2902, '汨': 2903, '蚊': 2904, '较': 2905, '麹': 2906, '糟': 2907, '掉': 2908, '评': 2909, '縠': 2910, '幅': 2911, '炀': 2912, '泫': 2913, '课': 2914, '诞': 2915, '祯': 2916, '讴': 2917, '迩': 2918, '演': 2919, '阗': 2920, '臻': 2921, '阐': 2922, '纯': 2923, '夤': 2924, '钺': 2925, '缉': 2926, '遑': 2927, '猗': 2928, '爇': 2929, '尸': 2930, '革': 2931, '沓': 2932, '婉': 2933, '溆': 2934, '鲛': 2935, '镳': 2936, '愤': 2937, '辗': 2938, '鼍': 2939, '笥': 2940, '暧': 2941, '仕': 2942, '榛': 2943, '恻': 2944, '髓': 2945, '睨': 2946, '薤': 2947, '颊': 2948, '鋋': 2949, '彦': 2950, '箕': 2951, '溯': 2952, '崦': 2953, '慧': 2954, '娑': 2955, '汴': 2956, '尼': 2957, '脁': 2958, '蓠': 2959, '茯': 2960, '拈': 2961, '斤': 2962, '潼': 2963, '螺': 2964, '嶮': 2965, '嘲': 2966, '柽': 2967, '掠': 2968, '遏': 2969, '翊': 2970, '祷': 2971, '昂': 2972, '扪': 2973, '衷': 2974, '察': 2975, '戢': 2976, '谅': 2977, '渥': 2978, '铿': 2979, '谧': 2980, '烝': 2981, '簋': 2982, '汪': 2983, '愈': 2984, '潦': 2985, '硕': 2986, '徂': 2987, '允': 2988, '戾': 2989, '恍': 2990, '嫖': 2991, '陲': 2992, '匈': 2993, '珰': 2994, '颈': 2995, '隘': 2996, '唇': 2997, '慨': 2998, '矫': 2999, '蹀': 3000, '躞': 3001, '掬': 3002, '帔': 3003, '沸': 3004, '萎': 3005, '漪': 3006, '伶': 3007, '祓': 3008, '互': 3009, '狗': 3010, '堰': 3011, '查': 3012, '爨': 3013, '筌': 3014, '苟': 3015, '歧': 3016, '耆': 3017, '绯': 3018, '熳': 3019, '努': 3020, '紧': 3021, '堠': 3022, '睥': 3023, '炊': 3024, '菼': 3025, '捷': 3026, '鵩': 3027, '例': 3028, '臼': 3029, '漓': 3030, '庚': 3031, '厄': 3032, '闪': 3033, '醅': 3034, '荪': 3035, '腮': 3036, '鸢': 3037, '枣': 3038, '这': 3039, '舁': 3040, '茆': 3041, '峥': 3042, '嵘': 3043, '閤': 3044, '蚌': 3045, '竖': 3046, '胭': 3047, '罾': 3048, '恬': 3049, '虢': 3050, '澈': 3051, '恳': 3052, '璇': 3053, '蘸': 3054, '峒': 3055, '衍': 3056, '纬': 3057, '牷': 3058, '曰': 3059, '芗': 3060, '庖': 3061, '浚': 3062, '欤': 3063, '铄': 3064, '副': 3065, '戛': 3066, '阃': 3067, '倡': 3068, '岧': 3069, '峣': 3070, '鹗': 3071, '慷': 3072, '瑰': 3073, '幰': 3074, '蟆': 3075, '茧': 3076, '镌': 3077, '蘼': 3078, '芷': 3079, '沤': 3080, '刷': 3081, '缚': 3082, '颁': 3083, '濠': 3084, '阡': 3085, '炷': 3086, '褥': 3087, '给': 3088, '怒': 3089, '蒨': 3090, '贳': 3091, '柿': 3092, '枳': 3093, '偕': 3094, '笏': 3095, '壳': 3096, '楠': 3097, '棕': 3098, '鲙': 3099, '庞': 3100, '钝': 3101, '粥': 3102, '滤': 3103, '徵': 3104, '魅': 3105, '骅': 3106, '梗': 3107, '擘': 3108, '肺': 3109, '屠': 3110, '酷': 3111, '氅': 3112, '睛': 3113, '醆': 3114, '枿': 3115, '拒': 3116, '版': 3117, '狩': 3118, '蕴': 3119, '曦': 3120, '輧': 3121, '孕': 3122, '兢': 3123, '纽': 3124, '崆': 3125, '酎': 3126, '釐': 3127, '蹈': 3128, '嘏': 3129, '簧': 3130, '鞞': 3131, '厉': 3132, '导': 3133, '育': 3134, '述': 3135, '胤': 3136, '辂': 3137, '姻': 3138, '叙': 3139, '铎': 3140, '喉': 3141, '蟪': 3142, '蛄': 3143, '蜍': 3144, '嘤': 3145, '鸂': 3146, '鶒': 3147, '悉': 3148, '租': 3149, '刈': 3150, '枥': 3151, '嫔': 3152, '韬': 3153, '坦': 3154, '晤': 3155, '询': 3156, '嬉': 3157, '榔': 3158, '馔': 3159, '肘': 3160, '孩': 3161, '暌': 3162, '孺': 3163, '抗': 3164, '汶': 3165, '萄': 3166, '遨': 3167, '衿': 3168, '洄': 3169, '悯': 3170, '踌': 3171, '甑': 3172, '婺': 3173, '沛': 3174, '讽': 3175, '沮': 3176, '撷': 3177, '腐': 3178, '肱': 3179, '勾': 3180, '犁': 3181, '捕': 3182, '亮': 3183, '卸': 3184, '曷': 3185, '汩': 3186, '毁': 3187, '帅': 3188, '讹': 3189, '沱': 3190, '麈': 3191, '焙': 3192, '队': 3193, '磊': 3194, '阆': 3195, '嘒': 3196, '觐': 3197, '么': 3198, '琯': 3199, '劈': 3200, '渍': 3201, '槽': 3202, '浃': 3203, '匏': 3204, '佾': 3205, '佯': 3206, '禀': 3207, '醇': 3208, '膋': 3209, '裕': 3210, '弁': 3211, '胄': 3212, '斝': 3213, '徙': 3214, '狄': 3215, '鬻': 3216, '敦': 3217, '吝': 3218, '踯': 3219, '栉': 3220, '饿': 3221, '砾': 3222, '屣': 3223, '帟': 3224, '燥': 3225, '陨': 3226, '邅': 3227, '桢': 3228, '笈': 3229, '拣': 3230, '巩': 3231, '党': 3232, '娜': 3233, '眄': 3234, '钥': 3235, '煦': 3236, '酩': 3237, '酊': 3238, '垢': 3239, '荜': 3240, '栾': 3241, '枪': 3242, '渤': 3243, '橙': 3244, '琳': 3245, '鄱': 3246, '骧': 3247, '碌': 3248, '聋': 3249, '舷': 3250, '亥': 3251, '靴': 3252, '搴': 3253, '鸬': 3254, '郄': 3255, '剖': 3256, '啜': 3257, '湟': 3258, '栎': 3259, '褚': 3260, '吼': 3261, '抄': 3262, '苓': 3263, '快': 3264, '蘖': 3265, '嘹': 3266, '谤': 3267, '瞥': 3268, '斛': 3269, '葺': 3270, '鹈': 3271, '栅': 3272, '咒': 3273, '醍': 3274, '婢': 3275, '摵': 3276, '樗': 3277, '呵': 3278, '雹': 3279, '撚': 3280, '偎': 3281, '挫': 3282, '罩': 3283, '藿': 3284, '掣': 3285, '摅': 3286, '脑': 3287, '盼': 3288, '昊': 3289, '罄': 3290, '拊': 3291, '宏': 3292, '绦': 3293, '鹥': 3294, '蚃': 3295, '绀': 3296, '葆': 3297, '坎': 3298, '垓': 3299, '亨': 3300, '琮': 3301, '臧': 3302, '馈': 3303, '纂': 3304, '轨': 3305, '奋': 3306, '桔': 3307, '槔': 3308, '騧': 3309, '钏': 3310, '抑': 3311, '茕': 3312, '鞮': 3313, '纻': 3314, '毵': 3315, '股': 3316, '釭': 3317, '箴': 3318, '槌': 3319, '浥': 3320, '睇': 3321, '瞩': 3322, '弋': 3323, '库': 3324, '粪': 3325, '姹': 3326, '讯': 3327, '觥': 3328, '骠': 3329, '惶': 3330, '沁': 3331, '牟': 3332, '脊': 3333, '湫': 3334, '喘': 3335, '蛱': 3336, '析': 3337, '鳖': 3338, '审': 3339, '蜗': 3340, '驹': 3341, '裨': 3342, '赭': 3343, '饷': 3344, '箜': 3345, '篌': 3346, '刍': 3347, '槁': 3348, '罹': 3349, '鄠': 3350, '飗': 3351, '蓄': 3352, '髦': 3353, '獬': 3354, '潏': 3355, '董': 3356, '跋': 3357, '妹': 3358, '侄': 3359, '晡': 3360, '涎': 3361, '螀': 3362, '幼': 3363, '奚': 3364, '嗤': 3365, '赍': 3366, '璞': 3367, '衬': 3368, '鶗': 3369, '鴂': 3370, '醐': 3371, '货': 3372, '揉': 3373, '猕': 3374, '蜩': 3375, '孱': 3376, '掘': 3377, '什': 3378, '绰': 3379, '葩': 3380, '谱': 3381, '帚': 3382, '杭': 3383, '滪': 3384, '绫': 3385, '矛': 3386, '朮': 3387, '呕': 3388, '嗅': 3389, '你': 3390, '玑': 3391, '瓒': 3392, '鹜': 3393, '距': 3394, '谦': 3395, '惕': 3396, '罔': 3397, '愉': 3398, '祜': 3399, '臭': 3400, '签': 3401, '燧': 3402, '劣': 3403, '丕': 3404, '普': 3405, '俾': 3406, '柝': 3407, '殚': 3408, '缇': 3409, '酉': 3410, '愆': 3411, '统': 3412, '戊': 3413, '峙': 3414, '祼': 3415, '娲': 3416, '渎': 3417, '缅': 3418, '晰': 3419, '叛': 3420, '枭': 3421, '吸': 3422, '楂': 3423, '贴': 3424, '阱': 3425, '繐': 3426, '缪': 3427, '飐': 3428, '騕': 3429, '骐': 3430, '镫': 3431, '舻': 3432, '靥': 3433, '伎': 3434, '纥': 3435, '押': 3436, '迂': 3437, '楸': 3438, '赪': 3439, '册': 3440, '邂': 3441, '逅': 3442, '潢': 3443, '睢': 3444, '埒': 3445, '滓': 3446, '摄': 3447, '翥': 3448, '牒': 3449, '泄': 3450, '叱': 3451, '杞': 3452, '芥': 3453, '辩': 3454, '卦': 3455, '诮': 3456, '翱': 3457, '厦': 3458, '沌': 3459, '沂': 3460, '隶': 3461, '匙': 3462, '跂': 3463, '抟': 3464, '螭': 3465, '泱': 3466, '疠': 3467, '饧': 3468, '办': 3469, '黠': 3470, '罟': 3471, '驮': 3472, '泷': 3473, '姥': 3474, '躇': 3475, '嗜': 3476, '嵌': 3477, '霅': 3478, '巉': 3479, '剥': 3480, '诜': 3481, '碓': 3482, '讥': 3483, '骆': 3484, '辄': 3485, '芹': 3486, '兜': 3487, '杓': 3488, '夔': 3489, '涪': 3490, '猪': 3491, '宓': 3492, '娄': 3493, '诱': 3494, '皤': 3495, '旐': 3496, '鲵': 3497, '讳': 3498, '奁': 3499, '级': 3500, '皴': 3501, '卯': 3502, '抹': 3503, '菩': 3504, '泼': 3505, '蹙': 3506, '烘': 3507, '瞑': 3508, '咬': 3509, '钉': 3510, '模': 3511, '貔': 3512, '诈': 3513, '恤': 3514, '篚': 3515, '隰': 3516, '盟': 3517, '奄': 3518, '跪': 3519, '翕': 3520, '篪': 3521, '竽': 3522, '轼': 3523, '僾': 3524, '忒': 3525, '瘗': 3526, '濩': 3527, '惚': 3528, '勺': 3529, '曼': 3530, '邃': 3531, '贰': 3532, '悼': 3533, '璜': 3534, '豚': 3535, '酤': 3536, '啧': 3537, '瀚': 3538, '绸': 3539, '嫂': 3540, '狸': 3541, '搅': 3542, '狞': 3543, '籞': 3544, '剌': 3545, '卵': 3546, '圻': 3547, '峄': 3548, '穑': 3549, '靓': 3550, '笄': 3551, '躁': 3552, '涸': 3553, '陔': 3554, '寨': 3555, '筮': 3556, '迅': 3557, '籝': 3558, '拏': 3559, '藁': 3560, '宙': 3561, '媛': 3562, '姝': 3563, '繻': 3564, '轲': 3565, '俪': 3566, '甥': 3567, '騑': 3568, '闉': 3569, '舣': 3570, '唼': 3571, '崿': 3572, '婀': 3573, '呦': 3574, '髫': 3575, '蚀': 3576, '媸': 3577, '烁': 3578, '舲': 3579, '苜': 3580, '蓿': 3581, '铙': 3582, '踞': 3583, '嘱': 3584, '诺': 3585, '塍': 3586, '耒': 3587, '熠': 3588, '鬣': 3589, '谴': 3590, '槃': 3591, '廨': 3592, '娉': 3593, '婷': 3594, '脍': 3595, '瀰': 3596, '嘘': 3597, '蔚': 3598, '撑': 3599, '聒': 3600, '逦': 3601, '伽': 3602, '荏': 3603, '耦': 3604, '罚': 3605, '础': 3606, '闇': 3607, '诣': 3608, '刮': 3609, '绾': 3610, '戮': 3611, '羯': 3612, '皱': 3613, '栀': 3614, '驶': 3615, '鹳': 3616, '滂': 3617, '飧': 3618, '霹': 3619, '仅': 3620, '荥': 3621, '蔻': 3622, '憀': 3623, '鸊': 3624, '逵': 3625, '赁': 3626, '玷': 3627, '骓': 3628, '镞': 3629, '饼': 3630, '秽': 3631, '忿': 3632, '砖': 3633, '钻': 3634, '蟹': 3635, '憧': 3636, '嗷': 3637, '篸': 3638, '熔': 3639, '矢': 3640, '淙': 3641, '麓': 3642, '滕': 3643, '概': 3644, '鹘': 3645, '坑': 3646, '棂': 3647, '淘': 3648, '茜': 3649, '沚': 3650, '磻': 3651, '镀': 3652, '赚': 3653, '逊': 3654, '汹': 3655, '纣': 3656, '肚': 3657, '晃': 3658, '殉': 3659, '遒': 3660, '醁': 3661, '蠲': 3662, '岌': 3663, '炽': 3664, '粹': 3665, '圜': 3666, '骈': 3667, '苡': 3668, '聆': 3669, '簠': 3670, '肸': 3671, '饫': 3672, '躔': 3673, '苾': 3674, '皞': 3675, '汇': 3676, '砥': 3677, '宥': 3678, '黝': 3679, '蹲': 3680, '觏': 3681, '橛': 3682, '纁': 3683, '溥': 3684, '琨': 3685, '湜': 3686, '霈': 3687, '胙': 3688, '焕': 3689, '缊': 3690, '泮': 3691, '汭': 3692, '罴': 3693, '弗': 3694, '跄': 3695, '祁': 3696, '恽': 3697, '弧': 3698, '缯': 3699, '鹯': 3700, '膜': 3701, '筼': 3702, '筜': 3703, '椰': 3704, '玫': 3705, '璁': 3706, '舳': 3707, '掊': 3708, '哗': 3709, '跗': 3710, '獐': 3711, '捎': 3712, '婕': 3713, '妤': 3714, '弭': 3715, '邓': 3716, '禺': 3717, '堵': 3718, '蜺': 3719, '辋': 3720, '蜘': 3721, '鶱': 3722, '廛': 3723, '块': 3724, '亹': 3725, '彬': 3726, '鞬': 3727, '麏': 3728, '甜': 3729, '颉': 3730, '阍': 3731, '卤': 3732, '罽': 3733, '刊': 3734, '骕': 3735, '骦': 3736, '苛': 3737, '鹍': 3738, '匕': 3739, '纩': 3740, '灉': 3741, '鞠': 3742, '镐': 3743, '蛤': 3744, '葡': 3745, '芋': 3746, '爷': 3747, '郗': 3748, '垞': 3749, '篙': 3750, '翾': 3751, '沣': 3752, '虱': 3753, '勍': 3754, '闼': 3755, '酂': 3756, '襜': 3757, '鉏': 3758, '骀': 3759, '茏': 3760, '鲲': 3761, '溘': 3762, '渝': 3763, '鳷': 3764, '琥': 3765, '珀': 3766, '嘈': 3767, '洑': 3768, '瞬': 3769, '唾': 3770, '楞': 3771, '椽': 3772, '蹶': 3773, '蝀': 3774, '泸': 3775, '蜻': 3776, '粳': 3777, '辎': 3778, '批': 3779, '锐': 3780, '哂': 3781, '屟': 3782, '孥': 3783, '惘': 3784, '胝': 3785, '畎': 3786, '雳': 3787, '粝': 3788, '砺': 3789, '瑕': 3790, '荤': 3791, '萌': 3792, '畋': 3793, '谄': 3794, '鼯': 3795, '樟': 3796, '捉': 3797, '臆': 3798, '谛': 3799, '搢': 3800, '郤': 3801, '畹': 3802, '拽': 3803, '寮': 3804, '麛': 3805, '责': 3806, '氵': 3807, '黜': 3808, '诤': 3809, '淬': 3810, '魈': 3811, '肢': 3812, '魇': 3813, '搭': 3814, '蘧': 3815, '勘': 3816, '箪': 3817, '隍': 3818, '准': 3819, '簦': 3820, '厩': 3821, '旟': 3822, '霎': 3823, '牌': 3824, '糵': 3825, '箬': 3826, '欧': 3827, '砑': 3828, '酥': 3829, '荠': 3830, '蔟': 3831, '疗': 3832, '鬐': 3833, '仔': 3834, '娶': 3835, '痊': 3836, '壖': 3837, '舶': 3838, '叉': 3839, '剔': 3840, '孑': 3841, '刖': 3842, '缴': 3843, '昉': 3844, '椿': 3845, '橡': 3846, '獭': 3847, '馁': 3848, '挠': 3849, '诫': 3850, '攲': 3851, '掀': 3852, '涘': 3853, '艮': 3854, '励': 3855, '嶷': 3856, '甄': 3857, '囷': 3858, '睟': 3859, '绚': 3860, '悌': 3861, '璿': 3862, '冱': 3863, '鞘': 3864, '歊': 3865, '裒': 3866, '禗': 3867, '墉': 3868, '绥': 3869, '缛': 3870, '泳': 3871, '拯': 3872, '晔': 3873, '徉': 3874, '颀': 3875, '繇': 3876, '亘': 3877, '完': 3878, '莅': 3879, '绍': 3880, '彗': 3881, '毙': 3882, '噬': 3883, '泞': 3884, '譬': 3885, '猫': 3886, '斓': 3887, '缫': 3888, '旰': 3889, '阏': 3890, '旂': 3891, '楣': 3892, '阪': 3893, '殡': 3894, '褵': 3895, '腴': 3896, '桴': 3897, '蘅': 3898, '鸷': 3899, '橐': 3900, '璋': 3901, '輶': 3902, '恓': 3903, '簴': 3904, '诘': 3905, '腓': 3906, '柰': 3907, '涿': 3908, '挺': 3909, '缤': 3910, '卞': 3911, '缃': 3912, '藟': 3913, '蕣': 3914, '疵': 3915, '蹴': 3916, '谕': 3917, '蹬': 3918, '熬': 3919, '罕': 3920, '噭': 3921, '赓': 3922, '撞': 3923, '铓': 3924, '棺': 3925, '爆': 3926, '曩': 3927, '瞳': 3928, '轘': 3929, '綦': 3930, '现': 3931, '坰': 3932, '躯': 3933, '缙': 3934, '舰': 3935, '枻': 3936, '炳': 3937, '洙': 3938, '釜': 3939, '橦': 3940, '薏': 3941, '仄': 3942, '澥': 3943, '怏': 3944, '镰': 3945, '奫': 3946, '撒': 3947, '罒': 3948, '秃': 3949, '刳': 3950, '叵': 3951, '燠': 3952, '痾': 3953, '哢': 3954, '迨': 3955, '蔗': 3956, '襆': 3957, '跼': 3958, '畜': 3959, '陬': 3960, '澧': 3961, '濮': 3962, '驳': 3963, '螮': 3964, '绨': 3965, '措': 3966, '鲂': 3967, '秤': 3968, '啅': 3969, '镆': 3970, '铘': 3971, '秧': 3972, '嚼': 3973, '熨': 3974, '瓠': 3975, '魑': 3976, '搏': 3977, '鞯': 3978, '鞲': 3979, '估': 3980, '巂': 3981, '霾': 3982, '玠': 3983, '艘': 3984, '诰': 3985, '殢': 3986, '葑': 3987, '伪': 3988, '驸': 3989, '寤': 3990, '櫜': 3991, '搓': 3992, '艑': 3993, '慑': 3994, '苕': 3995, '沄': 3996, '邠': 3997, '鲊': 3998, '弈': 3999, '壕': 4000, '薝': 4001, '蜓': 4002, '拚': 4003, '耘': 4004, '捋': 4005, '蜥': 4006, '孽': 4007, '谑': 4008, '盎': 4009, '皑': 4010, '喝': 4011, '鵊': 4012, '虐': 4013, '槲': 4014, '薮': 4015, '筛': 4016, '馋': 4017, '硬': 4018, '棚': 4019, '粼': 4020, '铗': 4021, '缬': 4022, '啖': 4023, '珥': 4024, '觑': 4025, '荞': 4026, '泡': 4027, '懊': 4028, '擞': 4029, '铮': 4030, '昙': 4031, '哦': 4032, '胫': 4033, '氎': 4034, '膊': 4035, '钞': 4036, '忤': 4037, '漙': 4038, '搦': 4039, '娆': 4040, '勃': 4041, '侏': 4042, '纫': 4043, '煤': 4044, '哥': 4045, '矰': 4046, '掺': 4047, '饣': 4048, '拗': 4049, '矗': 4050, '巇': 4051, '侈': 4052, '蓦': 4053, '磔': 4054, '笭': 4055, '箵': 4056, '殃': 4057, '丙': 4058, '篘': 4059, '黳': 4060, '靸': 4061, '确': 4062, '摭': 4063, '飋': 4064, '彧': 4065, '唠': 4066, '糊': 4067, '醽': 4068, '奥': 4069, '檗': 4070, '悚': 4071, '汜': 4072, '荃': 4073, '描': 4074, '蘩': 4075, '撰': 4076, '弼': 4077, '绎': 4078, '汰': 4079, '畤': 4080, '雩': 4081, '摐': 4082, '凑': 4083, '祺': 4084, '黼': 4085, '黻': 4086, '恢': 4087, '梡': 4088, '匮': 4089, '孚': 4090, '噫': 4091, '徜': 4092, '祲': 4093, '贷': 4094, '飶': 4095, '姒': 4096, '灿': 4097, '肴': 4098, '絪': 4099, '骞': 4100, '咳': 4101, '鼗': 4102, '迭': 4103, '玺': 4104, '挞': 4105, '蚩': 4106, '雰': 4107, '曨': 4108, '喂': 4109, '裆': 4110, '揲': 4111, '枨': 4112, '饲': 4113, '玦': 4114, '驎': 4115, '璨': 4116, '挝': 4117, '隤': 4118, '届': 4119, '掞': 4120, '邗': 4121, '憨': 4122, '缟': 4123, '缧': 4124, '绁': 4125, '磐': 4126, '瑜': 4127, '愠': 4128, '町': 4129, '菑': 4130, '弩': 4131, '嶙': 4132, '魁': 4133, '甿': 4134, '阈': 4135, '嘿': 4136, '旻': 4137, '颖': 4138, '摛': 4139, '絺': 4140, '颃': 4141, '酺': 4142, '晼': 4143, '椎': 4144, '穟': 4145, '蹭': 4146, '厕': 4147, '椠': 4148, '莑': 4149, '隗': 4150, '挼': 4151, '鼋': 4152, '廪': 4153, '媪': 4154, '湔': 4155, '褧': 4156, '鳣': 4157, '徭': 4158, '揆': 4159, '蝼': 4160, '骛': 4161, '霤': 4162, '槟': 4163, '佺': 4164, '茔': 4165, '抃': 4166, '滚': 4167, '瀍': 4168, '绷': 4169, '蜊': 4170, '瑀': 4171, '爚': 4172, '璀': 4173, '迍': 4174, '轓': 4175, '刁': 4176, '褷': 4177, '滉': 4178, '敖': 4179, '鞴': 4180, '昃': 4181, '鞚': 4182, '驽': 4183, '鹪': 4184, '鹩': 4185, '燮': 4186, '摽': 4187, '缲': 4188, '沔': 4189, '龚': 4190, '舠': 4191, '郅': 4192, '瘵': 4193, '忡': 4194, '棒': 4195, '瘼': 4196, '觌': 4197, '蹐': 4198, '皪': 4199, '虺': 4200, '崒': 4201, '炫': 4202, '蘺': 4203, '暾': 4204, '皙': 4205, '究': 4206, '喈': 4207, '骂': 4208, '骁': 4209, '盍': 4210, '枇': 4211, '杷': 4212, '敏': 4213, '霆': 4214, '炯': 4215, '瀼': 4216, '瘳': 4217, '洼': 4218, '悭': 4219, '涴': 4220, '攘': 4221, '筏': 4222, '臊': 4223, '谠': 4224, '朕': 4225, '募': 4226, '腋': 4227, '睽': 4228, '雒': 4229, '菉': 4230, '溽': 4231, '栝': 4232, '靳': 4233, '隧': 4234, '苫': 4235, '薙': 4236, '佣': 4237, '惸': 4238, '餔': 4239, '蒜': 4240, '螂': 4241, '邴': 4242, '袴': 4243, '挲': 4244, '谌': 4245, '赂': 4246, '蒯': 4247, '绘': 4248, '榕': 4249, '瑗': 4250, '荑': 4251, '菁': 4252, '彷': 4253, '徨': 4254, '钲': 4255, '牂': 4256, '牁': 4257, '轰': 4258, '踊': 4259, '偿': 4260, '犍': 4261, '螟': 4262, '篦': 4263, '斐': 4264, '衒': 4265, '桀': 4266, '鶂': 4267, '镮': 4268, '蛊': 4269, '汍': 4270, '咄': 4271, '珉': 4272, '蜕': 4273, '柑': 4274, '蜴': 4275, '蚬': 4276, '鹕': 4277, '窣': 4278, '缣': 4279, '邽': 4280, '毯': 4281, '艛': 4282, '艓': 4283, '嗽': 4284, '呷': 4285, '煞': 4286, '攫': 4287, '疼': 4288, '蝙': 4289, '蝠': 4290, '伉': 4291, '睫': 4292, '麇': 4293, '捻': 4294, '袷': 4295, '窍': 4296, '它': 4297, '咎': 4298, '帕': 4299, '拢': 4300, '妪': 4301, '嗥': 4302, '雘': 4303, '袪': 4304, '钳': 4305, '蔫': 4306, '阤': 4307, '縆': 4308, '吒': 4309, '培': 4310, '苌': 4311, '悰': 4312, '匿': 4313, '湮': 4314, '縻': 4315, '痍': 4316, '铛': 4317, '堡': 4318, '枰': 4319, '蓊': 4320, '诃': 4321, '汞': 4322, '缶': 4323, '埙': 4324, '帜': 4325, '囿': 4326, '嫱': 4327, '蓍': 4328, '胼': 4329, '拶': 4330, '括': 4331, '沆': 4332, '瀣': 4333, '歉': 4334, '淄': 4335, '倅': 4336, '僖': 4337, '谶': 4338, '穀': 4339, '幞': 4340, '獠': 4341, '捏': 4342, '栲': 4343, '栳': 4344, '晷': 4345, '缔': 4346, '閈': 4347, '殖': 4348, '踵': 4349, '晬': 4350, '歈': 4351, '闓': 4352, '酆': 4353, '鏚': 4354, '禔': 4355, '旞': 4356, '恺': 4357, '毓': 4358, '饬': 4359, '脯': 4360, '冽': 4361, '朏': 4362, '巽': 4363, '饎': 4364, '珽': 4365, '竁': 4366, '怠': 4367, '豳': 4368, '勖': 4369, '粤': 4370, '贽': 4371, '璆': 4372, '蟜': 4373, '獯': 4374, '糦': 4375, '慝': 4376, '昕': 4377, '祧': 4378, '皦': 4379, '斁': 4380, '伟': 4381, '隮': 4382, '殽': 4383, '综': 4384, '絅': 4385, '蓪': 4386, '袤': 4387, '斒': 4388, '葶': 4389, '苈': 4390, '蝮': 4391, '螫': 4392, '亻': 4393, '扌': 4394, '濬': 4395, '笃': 4396, '竦': 4397, '摹': 4398, '拓': 4399, '緌': 4400, '牍': 4401, '槚': 4402, '驔': 4403, '轶': 4404, '疴': 4405, '袿': 4406, '萃': 4407, '茝': 4408, '桄': 4409, '纭': 4410, '鞦': 4411, '址': 4412, '捍': 4413, '雊': 4414, '摈': 4415, '靃': 4416, '钜': 4417, '伺': 4418, '鼷': 4419, '惩': 4420, '茄': 4421, '袨': 4422, '耨': 4423, '棼': 4424, '兑': 4425, '僵': 4426, '崤': 4427, '崚': 4428, '咿': 4429, '墠': 4430, '壬': 4431, '祛': 4432, '嵫': 4433, '芟': 4434, '鹇': 4435, '朣': 4436, '菟': 4437, '踠': 4438, '幨': 4439, '闍': 4440, '鹫': 4441, '舼': 4442, '芮': 4443, '娼': 4444, '郧': 4445, '趺': 4446, '恕': 4447, '麚': 4448, '渟': 4449, '扼': 4450, '倪': 4451, '庑': 4452, '韭': 4453, '榈': 4454, '齑': 4455, '莳': 4456, '呗': 4457, '嫠': 4458, '坻': 4459, '醋': 4460, '斥': 4461, '鷃': 4462, '糁': 4463, '怖': 4464, '鄢': 4465, '羔': 4466, '酡': 4467, '欻': 4468, '泯': 4469, '啮': 4470, '懵': 4471, '恙': 4472, '咤': 4473, '晁': 4474, '蔑': 4475, '氓': 4476, '秭': 4477, '猥': 4478, '蚋': 4479, '毬': 4480, '盱': 4481, '贲': 4482, '纚': 4483, '页': 4484, '冗': 4485, '沴': 4486, '锤': 4487, '锱': 4488, '眦': 4489, '茹': 4490, '鄜': 4491, '逻': 4492, '詹': 4493, '榉': 4494, '枸': 4495, '锉': 4496, '桤': 4497, '瓷': 4498, '垫': 4499, '褊': 4500, '鹖': 4501, '划': 4502, '汁': 4503, '饕': 4504, '侪': 4505, '鶬': 4506, '罂': 4507, '郇': 4508, '狈': 4509, '氐': 4510, '淰': 4511, '姨': 4512, '禖': 4513, '酹': 4514, '杕': 4515, '铉': 4516, '圄': 4517, '娭': 4518, '沨': 4519, '秞': 4520, '浘': 4521, '鲭': 4522, '硎': 4523, '砰': 4524, '蚯': 4525, '蚓': 4526, '翣': 4527, '醭': 4528, '俜': 4529, '趯': 4530, '黾': 4531, '雇': 4532, '赎': 4533, '畲': 4534, '螳': 4535, '蕲': 4536, '苹': 4537, '诲': 4538, '菹': 4539, '痒': 4540, '謏': 4541, '跹': 4542, '滹': 4543, '淤': 4544, '罛': 4545, '缦': 4546, '遰': 4547, '觿': 4548, '窝': 4549, '鄣': 4550, '燋': 4551, '眯': 4552, '菅': 4553, '簨': 4554, '觳': 4555, '罘': 4556, '罳': 4557, '悫': 4558, '圞': 4559, '删': 4560, '榇': 4561, '髇': 4562, '岗': 4563, '娩': 4564, '貅': 4565, '琰': 4566, '饪': 4567, '舐': 4568, '颢': 4569, '蟏': 4570, '蛸': 4571, '蝎': 4572, '翚': 4573, '鼐': 4574, '跬': 4575, '矍': 4576, '溱': 4577, '洧': 4578, '瘁': 4579, '鹎': 4580, '褎': 4581, '岣': 4582, '嵝': 4583, '輈': 4584, '牝': 4585, '槊': 4586, '戡': 4587, '檠': 4588, '胛': 4589, '垦': 4590, '怳': 4591, '龌': 4592, '龊': 4593, '燂': 4594, '兕': 4595, '鲕': 4596, '雎': 4597, '怗': 4598, '賸': 4599, '潞': 4600, '羖': 4601, '忏': 4602, '浍': 4603, '琚': 4604, '喓': 4605, '咍': 4606, '懦': 4607, '磋': 4608, '痰': 4609, '庳': 4610, '狮': 4611, '肋': 4612, '萨': 4613, '痹': 4614, '灸': 4615, '跛': 4616, '抖': 4617, '叮': 4618, '咛': 4619, '鞅': 4620, '伛': 4621, '偻': 4622, '腷': 4623, '甪': 4624, '溳': 4625, '朿': 4626, '颅': 4627, '蝗': 4628, '姊': 4629, '蟭': 4630, '喃': 4631, '潎': 4632, '袒': 4633, '嘎': 4634, '吻': 4635, '锥': 4636, '锸': 4637, '皖': 4638, '嘴': 4639, '鬃': 4640, '髀': 4641, '肓': 4642, '傞': 4643, '悖': 4644, '厘': 4645, '硫': 4646, '爬': 4647, '嫣': 4648, '黥': 4649, '醲': 4650, '喔': 4651, '铦': 4652, '衩': 4653, '埭': 4654, '脾': 4655, '兖': 4656, '沩': 4657, '睦': 4658, '楮': 4659, '拌': 4660, '雭': 4661, '鹔': 4662, '鹴': 4663, '馑': 4664, '跑': 4665, '夐': 4666, '痺': 4667, '痼': 4668, '禳': 4669, '摴': 4670, '茉': 4671, '莉': 4672, '隽': 4673, '骰': 4674, '晻': 4675, '丱': 4676, '楖': 4677, '瘿': 4678, '枷': 4679, '茭': 4680, '哄': 4681, '麑': 4682, '淝': 4683, '嫫': 4684, '谮': 4685, '诡': 4686, '镬': 4687, '艎': 4688, '泂': 4689, '孛': 4690, '醨': 4691, '荈': 4692, '蠢': 4693, '邢': 4694, '脐': 4695, '襹': 4696, '屹': 4697, '滢': 4698, '篝': 4699, '锅': 4700, '窑': 4701, '戌': 4702, '苻': 4703, '郴': 4704, '郦': 4705, '狡': 4706, '侔': 4707, '箠': 4708, '秕': 4709, '糠': 4710, '饘': 4711, '铨': 4712, '葫': 4713, '甯': 4714, '颤': 4715, '伥': 4716, '噤': 4717, '厢': 4718, '蜚': 4719, '亢': 4720, '嶓': 4721, '砻': 4722, '谜': 4723, '柁': 4724, '靠': 4725, '笞': 4726, '谔': 4727, '呀': 4728, '惰': 4729, '篡': 4730, '佼': 4731, '谥': 4732, '瑾': 4733, '猬': 4734, '糜': 4735, '闵': 4736, '挨': 4737, '跁': 4738, '跒': 4739, '灊': 4740, '猧': 4741, '莘': 4742, '扎': 4743, '详': 4744, '脔': 4745, '塠': 4746, '诧': 4747, '狒': 4748, '鸑': 4749, '鷟': 4750, '蘘': 4751, '眈': 4752, '綍': 4753, '猾': 4754, '揩': 4755, '椑': 4756, '赣': 4757, '垠': 4758, '嗈': 4759, '矻': 4760, '俋': 4761, '撄': 4762, '叆': 4763, '溷': 4764, '璟': 4765, '惣': 4766, '菶': 4767, '猢': 4768, '狲': 4769, '钅': 4770, '屎': 4771, '喽': 4772, '腿': 4773, '郝': 4774, '蒐': 4775, '篑': 4776, '鄹': 4777, '嶪': 4778, '忱': 4779, '矩': 4780, '侁': 4781, '遄': 4782, '芣': 4783, '螽': 4784, '伣': 4785, '濊': 4786, '枧': 4787, '敔': 4788, '眊': 4789, '醢': 4790, '槱': 4791, '燔': 4792, '餴': 4793, '埏': 4794, '禩': 4795, '藨': 4796, '佑': 4797, '蟺': 4798, '煁': 4799, '侑': 4800, '迪': 4801, '妫': 4802, '檿': 4803, '慌': 4804, '铏': 4805, '炮': 4806, '戺': 4807, '拼': 4808, '倢': 4809, '铰': 4810, '諲': 4811, '媵': 4812, '轵': 4813, '殒': 4814, '柞': 4815, '嶰': 4816, '辀': 4817, '侮': 4818, '踬': 4819, '钮': 4820, '莛': 4821, '鲔': 4822, '鳃': 4823, '稗': 4824, '蓧': 4825, '澳': 4826, '聃': 4827, '樾': 4828, '斿': 4829, '脤': 4830, '籀': 4831, '穸': 4832, '煴': 4833, '箊': 4834, '鹑': 4835, '闤': 4836, '闠': 4837, '韫': 4838, '锷': 4839, '壹': 4840, '簳': 4841, '绤': 4842, '鞟': 4843, '郛': 4844, '糅': 4845, '羵': 4846, '娈': 4847, '朅': 4848, '漘': 4849, '庠': 4850, '缌': 4851, '褪': 4852, '樛': 4853, '屺': 4854, '镝': 4855, '砀': 4856, '苶': 4857, '笮': 4858, '睩': 4859, '阋': 4860, '嚘': 4861, '漭': 4862, '筿': 4863, '橑': 4864, '襚': 4865, '逖': 4866, '垌': 4867, '俞': 4868, '衎': 4869, '剽': 4870, '赦': 4871, '狴': 4872, '眚': 4873, '奂': 4874, '恧': 4875, '纮': 4876, '纾': 4877, '秬': 4878, '喋': 4879, '嫛': 4880, '婗': 4881, '鈒': 4882, '谳': 4883, '忭': 4884, '彪': 4885, '饔': 4886, '窌': 4887, '砝': 4888, '陉': 4889, '茀': 4890, '耜': 4891, '郯': 4892, '膂': 4893, '貊': 4894, '弰': 4895, '浉': 4896, '剸': 4897, '椅': 4898, '隩': 4899, '鳊': 4900, '羝': 4901, '酋': 4902, '離': 4903, '寀': 4904, '穊': 4905, '忖': 4906, '霮': 4907, '葹': 4908, '徕': 4909, '裸': 4910, '赩': 4911, '倜': 4912, '椹': 4913, '穞': 4914, '顗': 4915, '悁': 4916, '滁': 4917, '忺': 4918, '慊': 4919, '崷': 4920, '蝌': 4921, '陡': 4922, '矧': 4923, '惫': 4924, '蛚': 4925, '桁': 4926, '揣': 4927, '洫': 4928, '仳': 4929, '踔': 4930, '癫': 4931, '鬲': 4932, '涡': 4933, '鲑': 4934, '迳': 4935, '虿': 4936, '豉': 4937, '赀': 4938, '迮': 4939, '玃': 4940, '乂': 4941, '酦': 4942, '箑': 4943, '柈': 4944, '酱': 4945, '桶': 4946, '餮': 4947, '鸹': 4948, '囹': 4949, '剉': 4950, '騣': 4951, '酢': 4952, '鲦': 4953, '岨': 4954, '迓': 4955, '澶': 4956, '勣': 4957, '栴': 4958, '跕': 4959, '渑': 4960, '萚': 4961, '谘': 4962, '嫡': 4963, '衽': 4964, '磾': 4965, '碕': 4966, '澒': 4967, '蚤': 4968, '跚': 4969, '沪': 4970, '芩': 4971, '溓': 4972, '榷': 4973, '艨': 4974, '艟': 4975, '毋': 4976, '腠': 4977, '硖': 4978, '礓': 4979, '怃': 4980, '鐍': 4981, '鞶': 4982, '吓': 4983, '嗢': 4984, '妥': 4985, '匄': 4986, '磈': 4987, '瞋': 4988, '贩': 4989, '噀': 4990, '蛉': 4991, '覉': 4992, '迦': 4993, 'ē': 4994, '磵': 4995, '琬': 4996, '眩': 4997, '歠': 4998, '悸': 4999, '怊': 5000, '蒍': 5001, '肄': 5002, '缗': 5003, '荄': 5004, '祔': 5005, '醯': 5006, '畛': 5007, '垤': 5008, '珩': 5009, '殳': 5010, '灏': 5011, '龆': 5012, '龀': 5013, '缞': 5014, '炰': 5015, '罫': 5016, '葚': 5017, '郾': 5018, '甍': 5019, '桷': 5020, '莞': 5021, '蒻': 5022, '企': 5023, '枹': 5024, '狵': 5025, '欸': 5026, '磅': 5027, '礴': 5028, '潆': 5029, '菽': 5030, '豩': 5031, '餘': 5032, '赘': 5033, '罻': 5034, '丫': 5035, '騄': 5036, '囋': 5037, '裀': 5038, '抆': 5039, '甬': 5040, '惝': 5041, '洟': 5042, '傩': 5043, '倮': 5044, 'ń': 5045, '铲': 5046, '涅': 5047, '肿': 5048, '潈': 5049, '虻': 5050, '幮': 5051, '犷': 5052, '齰': 5053, '齖': 5054, '磹': 5055, '掐': 5056, '窬': 5057, '鞓': 5058, '潠': 5059, '杌': 5060, '髑': 5061, '髅': 5062, '擫': 5063, '柩': 5064, '鵾': 5065, '咙': 5066, '惺': 5067, '憁': 5068, '痎': 5069, '疟': 5070, '洺': 5071, '裯': 5072, '鳏': 5073, '纺': 5074, '騃': 5075, '匼': 5076, '埇': 5077, '稊': 5078, '恂': 5079, '恁': 5080, '忉': 5081, '昒': 5082, '攉': 5083, '剿': 5084, '豕': 5085, '圈': 5086, '苽': 5087, '愬': 5088, '舴': 5089, '艋': 5090, '弝': 5091, '骘': 5092, '璘': 5093, '玢': 5094, '厓': 5095, '聶': 5096, '泚': 5097, '稿': 5098, '辫': 5099, '荖': 5100, '葼': 5101, '屩': 5102, '亸': 5103, '粽': 5104, '嶛': 5105, '袋': 5106, '螯': 5107, '絣': 5108, '咂': 5109, '屼': 5110, '渗': 5111, '埽': 5112, '睚': 5113, '耍': 5114, '鸨': 5115, '葓': 5116, '鹒': 5117, '驩': 5118, '毅': 5119, '阯': 5120, '抓': 5121, '缋': 5122, '殇': 5123, '劼': 5124, '绋': 5125, '釱': 5126, '镒': 5127, '幛': 5128, '帱': 5129, '酴': 5130, '牸': 5131, '醎': 5132, '罨': 5133, '莩': 5134, '矮': 5135, '玛': 5136, '瑙': 5137, '洳': 5138, '棉': 5139, '郫': 5140, '艄': 5141, '鸩': 5142, '漩': 5143, '鈇': 5144, '漴': 5145, '郓': 5146, '紊': 5147, '膘': 5148, '掁': 5149, '筚': 5150, '缎': 5151, '缰': 5152, '篲': 5153, '瞢': 5154, '箐': 5155, '碡': 5156, '哇': 5157, '瀺': 5158, '灂': 5159, '泐': 5160, '逭': 5161, '胱': 5162, '粔': 5163, '籹': 5164, '呻': 5165, '樬': 5166, '巑': 5167, '岏': 5168, '瘢': 5169, '戆': 5170, '飔': 5171, '撇': 5172, '麽': 5173, '靫': 5174, '镃': 5175, '旸': 5176, '畬': 5177, '坪': 5178, '袄': 5179, '掿': 5180, '扛': 5181, '猃': 5182, '狁': 5183, '琤': 5184, '螓': 5185, '觇': 5186, '羿': 5187, '魃': 5188, '簰': 5189, '踡': 5190, '瞷': 5191, '诬': 5192, '疹': 5193, '阀': 5194, '噆': 5195, '梠': 5196, '罱': 5197, '籦': 5198, '桹': 5199, '鯆': 5200, '庥': 5201, '艅': 5202, '齁': 5203, '棫': 5204, '踉': 5205, '枲': 5206, '滫': 5207, '瀡': 5208, '粕': 5209, '篾': 5210, '甔': 5211, '羜': 5212, '醷': 5213, '楯': 5214, '蚴': 5215, '蟉': 5216, '鱙': 5217, '窳': 5218, '獳': 5219, '篓': 5220, '筤': 5221, '篣': 5222, '饽': 5223, '售': 5224, '狙': 5225, '犭': 5226, '瘤': 5227, '鲎': 5228, '婑': 5229, '媠': 5230, '狻': 5231, '猊': 5232, '胏': 5233, '黁': 5234, '芡': 5235, '彯': 5236, '觫': 5237, '枍': 5238, '栺': 5239, '唅': 5240, '笱': 5241, '抨': 5242, '寘': 5243, '嫪': 5244, '袯': 5245, '襫': 5246, '腒': 5247, '樕': 5248, '坫': 5249, '瓿': 5250, '杠': 5251, '漦': 5252, '濎': 5253, '湎': 5254, '塸': 5255, '埞': 5256, '肖': 5257, '賨': 5258, '璚': 5259, '骼': 5260, '恚': 5261, '颣': 5262, '撶': 5263, '伧': 5264, '楢': 5265, '絇': 5266, '喙': 5267, '筰': 5268, '摏': 5269, '粜': 5270, '剜': 5271, '磑': 5272, '颛': 5273, '顼': 5274, '钤': 5275, '鈋': 5276, '邳': 5277, '诔': 5278, '咆': 5279, '哮': 5280, '鶢': 5281, '鶋': 5282, '罙': 5283, '芿': 5284, '凘': 5285, '贬': 5286, '讦': 5287, '窖': 5288, '漕': 5289, '檇': 5290, '锜': 5291, '柙': 5292, '殄': 5293, '纛': 5294, '瓣': 5295, '挛': 5296, '蜉': 5297, '蝣': 5298, '鮹': 5299, '僭': 5300, '瓟': 5301, '綖': 5302, '俶': 5303, '僦': 5304, '醵': 5305, '蒱': 5306, '楗': 5307, '轭': 5308, '碪': 5309, '奖': 5310, '啑': 5311, '玎': 5312, '坳': 5313, '鳜': 5314, '痄': 5315, '蕺': 5316, '碟': 5317, '洴': 5318, '澼': 5319, '哺': 5320, '港': 5321, '餧': 5322, '豗': 5323, '郏': 5324, '鄏': 5325, '跧': 5326, '毷': 5327, '氉': 5328, '鏖': 5329, '阂': 5330, '緺': 5331, '諴': 5332, '觊': 5333, '觎': 5334, '擐': 5335, '嚭': 5336, '抒': 5337, '症': 5338, '盾': 5339, '祟': 5340, '悒': 5341, '撏': 5342, '锼': 5343, '胃': 5344, '祅': 5345, '礿': 5346, '羑': 5347, '刿': 5348, '蛭': 5349, '讙': 5350, '獹': 5351, '嗾': 5352, '獒': 5353, '撮': 5354, '鹞': 5355, '痡': 5356, '疽': 5357, '贿': 5358, '縯': 5359, '佚': 5360, '楷': 5361, '窘': 5362, '赡': 5363, '籴': 5364, '麴': 5365, '苴': 5366, '殴': 5367, '瞪': 5368, '俚': 5369, '賝': 5370, '搵': 5371, '哳': 5372, '洿': 5373, '蛴': 5374, '螬': 5375, '酕': 5376, '醄': 5377, '骡': 5378, '埼': 5379, '淦': 5380, '巏': 5381, '嵍': 5382, '玖': 5383, '髽': 5384, '杆': 5385, '浼': 5386, '瓓': 5387, '薶': 5388, '苋': 5389, '綀': 5390, '嬿': 5391, '蠙': 5392, '锻': 5393, '鬔': 5394, '谨': 5395, '貙': 5396, '殂': 5397, '霙': 5398, '隟': 5399, '佥': 5400, '挚': 5401, '赧': 5402, '昱': 5403, '筈': 5404, '蕾': 5405, '椆': 5406, '筩': 5407, '墁': 5408, '菘': 5409, '廌': 5410, '偪': 5411, '蒀': 5412, '瞤': 5413, '绒': 5414, '蚨': 5415, '赶': 5416, '铤': 5417, '妩': 5418, '嵊': 5419, '瞽': 5420, '迕': 5421, '颧': 5422, '凹': 5423, '戽': 5424, '谀': 5425, '熁': 5426, '槠': 5427, '笐': 5428, '胁': 5429, '跣': 5430, '闒': 5431, '榸': 5432, '碇': 5433, '龁': 5434, '齾': 5435, '酽': 5436, '兇': 5437, '蕈': 5438, '獮': 5439, '芚': 5440, '斅': 5441, '曵': 5442, '熛': 5443, '恞': 5444, '侃': 5445, '瀔': 5446, '诠': 5447, '琛': 5448, '俣': 5449, '串': 5450, '嗄': 5451, '擉': 5452, '褕': 5453, '煨': 5454, '硾': 5455, '媭': 5456, '佪': 5457, '霢': 5458, '霂': 5459, '腑': 5460, '淀': 5461, '浏': 5462, '刂': 5463, '逤': 5464, '犒': 5465, '莜': 5466, '歜': 5467, '鷇': 5468, '狌': 5469, '亳': 5470, '魍': 5471, '魉': 5472, '陊': 5473, '垅': 5474, '芫': 5475, '颡': 5476, '蜿': 5477, '缱': 5478, '绻': 5479, '髆': 5480, '嚏': 5481, '骗': 5482, '很': 5483, '偬': 5484, '胪': 5485, '踜': 5486, '捺': 5487, '颏': 5488, '炒': 5489, '薨': 5490, '蛆': 5491, '蜫': 5492, '蜦': 5493, '锣': 5494, '飠': 5495, '莆': 5496, '岿': 5497, '娵': 5498, '硇': 5499, '裈': 5500, '捶': 5501, '饤': 5502, '燖': 5503, '踢': 5504, '觱': 5505, '匍': 5506, '匐': 5507, '拉': 5508, '荍': 5509, '荼': 5510, '谞': 5511, '腔': 5512, '癞': 5513, '镪': 5514, '猳': 5515, '撝': 5516, '邬': 5517, '儋': 5518, '幹': 5519, '瑝': 5520, '嵎': 5521, '瓚': 5522, '塑': 5523, '鲫': 5524, '蠮': 5525, '螉': 5526, '謥': 5527, '蛁': 5528, '蟟': 5529, '糕': 5530, '鹁': 5531, '做': 5532, '卬': 5533, '鄯': 5534, '欔': 5535, '紖': 5536, '需': 5537, '癸': 5538, '瘕': 5539, '綯': 5540, '瘫': 5541, '圮': 5542, '殛': 5543, '该': 5544, '桦': 5545, '刬': 5546}
5547
In [7]:
XY_digit = np.array(tokenizer.texts_to_sequences(XY))
X_digit = XY_digit[:, :3]
Y_digit = XY_digit[:, 3]

for i in range(132763, 132773):
    print("{:<35}".format(str(XY[i])), "\t", "{:<30}".format(str(list(X_digit[i]))),"\t", Y_digit[i])
['b', 'b', 'b', '床']                	 [1, 1, 1]                      	 533
['b', 'b', '床', '前']                	 [1, 1, 533]                    	 73
['b', '床', '前', '明']                	 [1, 533, 73]                   	 54
['床', '前', '明', '月']                	 [533, 73, 54]                  	 14
['前', '明', '月', '光']                	 [73, 54, 14]                   	 141
['明', '月', '光', '疑']                	 [54, 14, 141]                  	 430
['月', '光', '疑', '是']                	 [14, 141, 430]                 	 45
['光', '疑', '是', '地']                	 [141, 430, 45]                 	 114
['疑', '是', '地', '上']                	 [430, 45, 114]                 	 16
['是', '地', '上', '霜']                	 [45, 114, 16]                  	 203

建模:Embedding + 逻辑回归

  • 构建模型
  • 训练模型
  • 模型效果检验

drawing

In [8]:
# Embedding + 线性模型
from tensorflow.keras.layers import Input, Embedding
from tensorflow.keras.models import Sequential, load_model, Model
from tensorflow.keras.layers import Input, Dense, Activation, Embedding, Flatten
hidden_size = 300

inp = Input(shape=(3,))
x = Embedding(vocab_size, hidden_size)(inp)
x = Flatten()(x)
x = Dense(vocab_size)(x)
pred = Activation('softmax')(x)

lstm_model = Model(inp, pred)
lstm_model.summary()
Model: "model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, 3)]               0         
_________________________________________________________________
embedding (Embedding)        (None, 3, 300)            1664100   
_________________________________________________________________
flatten (Flatten)            (None, 900)               0         
_________________________________________________________________
dense (Dense)                (None, 5547)              4997847   
_________________________________________________________________
activation (Activation)      (None, 5547)              0         
=================================================================
Total params: 6,661,947
Trainable params: 6,661,947
Non-trainable params: 0
_________________________________________________________________
In [14]:
# 训练模型
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X_digit,Y_digit,test_size=0.2, random_state=0)

from tensorflow.keras.optimizers import Adam
lstm_model.compile(loss='sparse_categorical_crossentropy', optimizer=Adam(lr=0.001))
lstm_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), batch_size=1000, epochs=1)
lstm_model.save('CNNPoem' + 'Model')
# model.save_weights('CNN.h5') # 文件类型是HDF5
C:\Users\yuewe\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:375: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.
  "The `lr` argument is deprecated, use `learning_rate` instead.")
641/641 [==============================] - 390s 609ms/step - loss: 5.8834 - val_loss: 6.0789
INFO:tensorflow:Assets written to: CNNPoemModel\assets
In [15]:
# 模型效果检验
from tensorflow.keras.models import load_model
model = load_model('CNNPoem' + 'model')
# model.load_weights('CNN.h5')
sample_text = ['白', '日', '依'] 
print(sample_text)
sample_index = tokenizer.texts_to_sequences(sample_text)
print(sample_index)
word_prob = model.predict(np.array(sample_index).reshape(1, 3))[0]
print(tokenizer.index_word[word_prob.argmax()], word_prob.max())
['白', '日', '依']
[[34], [6], [264]]
旧 0.12443037
In [16]:
# 模型应用
poem_incomplete = 'bbb风****花****雪****月****'
poem_index = []
poem_text = ''
for i in range(len(poem_incomplete)):
    current_word = poem_incomplete[i]
    
    if  current_word != '*':
        # 给定的词
        index = tokenizer.word_index[current_word]
    else:
        # 根据前三个词预测 *
        x = poem_index[-3:]
        y = model.predict(np.expand_dims(x, axis=0))[0]
        index = y.argmax()
        current_word = tokenizer.index_word[index]


    poem_index.append(index)
    poem_text = poem_text + current_word
        

poem_text = poem_text[3:]
print(poem_text[0:5])
print(poem_text[5:10])
print(poem_text[10:15])
print(poem_text[15:20])
风雨过江城
花落日斜阳
雪满衣裳不
月明月照前

逻辑回归(CNN)模型写诗,缺点?

  • 静夜思:床前明月光,疑似地上霜,举头望明月,低头思故乡

  • 输入长度必须固定(例如:X=明,月,光)!问:能否长度任意?

  • 输入没有记忆(例如:X=前,明,月;床?去哪里了?)!问:能否对历史有记忆!

$$P\Big (X_{t}=光\Big)=f\Big(X_{t-1}=月,X_{t-2}=明,X_{t-3}=前\Big)$$

3 利用RNN进行自动写作

3.1 探讨一个更为合理的建模方式

  • 对于“序列数据”中信息的充分提取,需要我们将“历史”的作用不断“传递”

drawing

状态空间模型

  • 静夜思:床前明月光,疑似地上霜,举头望明月,低头思故乡
$$Z_{t+1}=h\Big(X_{t}=故,Z_{t}\Big).$$$$P\Big (X_{t+1}=乡\Big)=f\Big(Z_{t+1}\Big)$$

RNN:更好的处理“序列数据”

  • RNN(Recurrent Neural Network),也叫循环神经网络,是一种专门处理“文本序列数据”的方法。

  • 核心思想:通过将历史信息不断保留与传递,而保留与传递的载体就是状态$Z_t$。

  • RNN最早被认知科学与计算神经科学的研究人员提出并应用,后来被广泛应用于研究序列数据,下图展示了一些早期的RNN相关文献。

drawing

3.2 RNN的基本原理

  • 传统的BP神经网络结构
  • 数据输入——输出彼此相互独立
    • 每次的训练过程中只会进行网络连接权重的调整,具体的网络输出并不会影响下一次的网络输入信号

drawing

  • Recurrent Neural Networks
  • 文本是非常典型的序列数据,后续文本内容显然和前导文本内容之间存在语义关联,而传统的神经网络模型并不能匹配这一数据特征
  • 期望:分类器能够记得上下文的内容并用于预测 -特别是将上文内容用于预测
  • RNN是包含循环的神经网络,允许原有输入信息的持久化
  • 因此RNN是对应文本这种序列类数据的最自然的神经网络架构

RNN结构

  • 当前时刻的数据 + 上一时刻的状态 = 当前时刻的状态

  • 每一次神经网络的判断过程之后,都会把信息传给下一次判断过程,就类似于我们人脑的思考理解过程

drawing

  • 非线性变换:$Z_{t+1}=f(W_1X_t,W_2Z_t)$。问题:(1)可以考虑什么样的非线性变幻?(2)消耗多少个参数?

RNN的结构与参数量计算

  • 从Input到Hidden: InputHidden+hiddenhidden+hidden
  • 从Hidden到Output:Hidden*Output+Output
  • 值得注意的是,文本分析还存在Input到embedding:Input*Embedding;上面讲的Input则变为embedding

drawing

In [5]:
# 数据的读入与展示
import string
import numpy as np

f = open('data/poems_clean.txt', "r", encoding='utf-8')

poems = []
for line in f.readlines():
    title, poem = line.split(':')
    poem = poem.replace(' ', '') #将空格去掉
    poem = poem.replace('\n', '') #将换行符去掉
    poems.append(list(poem))
    
print(poems[0][:])
['寒', '随', '穷', '律', '变', '春', '逐', '鸟', '声', '开', '初', '风', '飘', '带', '柳', '晚', '雪', '间', '花', '梅', '碧', '林', '青', '旧', '竹', '绿', '沼', '翠', '新', '苔', '芝', '田', '初', '雁', '去', '绮', '树', '巧', '莺', '来']
In [6]:
# 数据整理:文字编码
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences

tokenizer = Tokenizer()
tokenizer.fit_on_texts(poems)
poems_digit = tokenizer.texts_to_sequences(poems)
vocab_size = len(tokenizer.word_index) + 1 #加上停止词0
vocab_size #有多少个不同的字
Out[6]:
5546

数据整理

  • 由于每首诗的长度不一致,为了将所有的诗放在一个统一的$m\times n$维数组中,我们需要在较短诗的末尾用0进行补齐

drawing

  • 对齐$X$和$Y$:将每首诗的前一个字作为$X$,后一个字作为$Y$,进行数据对齐
In [7]:
#补全数据:为了将所有的诗放在一个M*N的np.array中,将每一首诗补0到同样的长度
poems_digit = pad_sequences(poems_digit, maxlen=50, padding='post')
print("原始诗歌")
print(poems[3864])
print("\n")
print("编码+补全后的结果")
print(poems_digit[3864])
原始诗歌
['床', '前', '明', '月', '光', '疑', '是', '地', '上', '霜', '举', '头', '望', '明', '月', '低', '头', '思', '故', '乡']


编码+补全后的结果
[532  72  53  13 140 429  44 113  15 202 688 128 106  53  13 502 128  75
 134 169   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0]
In [8]:
# 对齐X和Y
X = poems_digit[:, :-1]
Y = poems_digit[:, 1:]

print(poems_digit.shape)
print(X.shape)
print(Y.shape)

print("X示例", "\t", "Y示例")

for i in range(10):
    print(X[0][i], "\t", Y[0][i])
    
print("...", "\t", "...")
(24117, 50)
(24117, 49)
(24117, 49)
X示例 	 Y示例
42 	 180
180 	 401
401 	 1143
1143 	 671
671 	 9
9 	 331
331 	 130
130 	 58
58 	 84
84 	 177
... 	 ...
In [9]:
# 把$Y$变成One-Hot向量
print(vocab_size)
from tensorflow.keras.utils import to_categorical
Y = to_categorical(Y, num_classes=vocab_size)
print(Y.shape)
5546
(24117, 49, 5546)
In [10]:
# 确定空间维度
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, SimpleRNN, Dense, Embedding, Activation, BatchNormalization
embedding_size = 100
hidden_size = 200

# 构建RNN模型
inp = Input(shape=(49,))

# Encoder
x = Embedding(vocab_size, embedding_size, mask_zero=True)(inp)
x = SimpleRNN(hidden_size,return_sequences=True)(x)

# prediction
x = Dense(vocab_size)(x)
pred = Activation('softmax')(x)

model = Model(inp, pred)
model.summary()
Model: "model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, 49)]              0         
_________________________________________________________________
embedding (Embedding)        (None, 49, 100)           554600    
_________________________________________________________________
simple_rnn (SimpleRNN)       (None, 49, 200)           60200     
_________________________________________________________________
dense (Dense)                (None, 49, 5546)          1114746   
_________________________________________________________________
activation (Activation)      (None, 49, 5546)          0         
=================================================================
Total params: 1,729,546
Trainable params: 1,729,546
Non-trainable params: 0
_________________________________________________________________

参数个数的计算

  • vocab_size=5546; embedding_size=64; hidden_size=128
  • Embedding: 5546*64 = 354944
  • RNN:128*64 +128*128+128 = 24704
  • Dense: 5546*128+5546=715434
In [12]:
# 模型训练
from tensorflow.keras.optimizers import Adam
model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.001), metrics=['accuracy'])
model.fit(X, Y, epochs=1, batch_size=200, validation_split=0.2)
model.save('RNNPoem' + 'Model')
C:\Users\yuewe\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:375: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.
  "The `lr` argument is deprecated, use `learning_rate` instead.")
97/97 [==============================] - 338s 3s/step - loss: 4.7575 - accuracy: 0.0299 - val_loss: 4.4116 - val_accuracy: 0.0327
INFO:tensorflow:Assets written to: RNNPoemModel\assets
In [11]:
# 模型应用
from tensorflow.keras.models import load_model
model = load_model('RNNPoem' + 'model')

poem_incomplete = '床****疑****举****低****'
poem_index = []
poem_text = ''
for i in range(len(poem_incomplete)):
    current_word = poem_incomplete[i]
    
    if  current_word != '*':
        index = tokenizer.word_index[current_word]
        
    else:
        x = np.expand_dims(poem_index, axis=0)
        x = pad_sequences(x, maxlen=49, padding='post')
        y = model.predict(x)[0, i]
        
        y[0] = 0            #去掉停止词
        index = y.argmax()
        current_word = tokenizer.index_word[index]
        
    poem_index.append(index)
    poem_text = poem_text + current_word
        
poem_text = poem_text[0:]
print(poem_text[0:5])
print(poem_text[5:10])
print(poem_text[10:15])
print(poem_text[15:20])
床人人不不
疑不不不不
举不不不不
低不不不不

4. LSTM进行自动写作

完形填空

drawing

RNN存在的问题

  • 如果让RNN完成上面的题目,它可以很容易的猜出(1),但是猜不出(2)
  • 这是因为RNN无法处理“长距离依赖”(Long-Term Dependencies)
  • RNN的这一短板是由于其算法导致:在训练RNN模型时,每步的梯度随距离会明显减弱,因此当距离过长时,迅速减小的梯度无法将之前的信息传递过去

drawing

改进思路

  • 原始RNN在隐藏层只有一个状态,即上一时刻的状态,它对于短期的输入非常敏感。
  • 加入我们再增加一个状态,让它来保存“长期信息”,问题是不是就可以解决啦?

drawing

RNN的进阶:LSTM

  • LSTM (Long Short Term Memory Network),也叫长短期记忆网络。
    • LSTM是RNN的一个优秀的变种模型,能很好的处理“长距离依赖”问题

drawing

LSTM的改进

  • 相比于传统的RNN,LSTM主要有两方面的改进:
  • 在输入中增加了长期状态($c_{t-1}$)
  • 内部对信息的处理更加复杂:多过程(红色圈圈)+多层网络(黄色方块)

drawing

drawing

预备知识

$\tanh$ 变换

  • $\tanh$ 也是常用的非线性激活函数,可以将一个实数映射到 $(-1,1)$ 的区间,其数学表达式如下:
  • $$\tanh x = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$$
  • 与 sigmoid 不同的是,$\tanh$ 是0均值的, 而且 sigmoid 函数在输入处于0附近时,函数值变化比 $\tanh$ 敏感,一旦接近或者超出区间就失去敏感性,处于饱和状态

drawing

sigmoid 变换

  • sigmoid 函数也叫 Logistic 函数,是神经网络中常用的非线性激活函数,可以将一个实数映射到 $(0,1)$ 的区间,其数学表达式如下: $$\sigma(x) = \frac{1}{1+e^{-x}}$$

两种变换的效果图

drawing

LSTM的核心

  • 使用三个控制开关,控制信息的输入和输出

drawing

LSTM结构详解

遗忘门(Forgotten Gate)

  • LSTM的第一个环节是进入遗忘门,所谓“遗忘”,是指数据通过这个结构后要“过滤”一部分信息
  • 这部分的输入为$h_{t-1}$和$x_t$,经过一个sigmoid layer后输出一个$0$和$1$之间的数,越接近于$1$表示保留的信息越多
  • $[h_{t-1},x_t]$ 是将两个向量连接

drawing

输入门(Input Gate)

  • 输入门将决定对下一时刻的状态加入多少“新信息”
  • 它由两层结构组成:前面的sigmoid layer将决定我们更新数据中的哪几个值,后面的tanh layer则会对数据中所有值输出更新值向量$\tilde{C_t}$。 drawing

  • 经过上面两步,可以计算当前时刻的长期状态$C_t$ drawing

更新门(Update Gate)

  • 把老cell state更新为新cell state
  • XOR:去除相同的信息
  • AND:增加信息
  • 处理完毕后,就得到了当前单元的最终cell state

drawing

输出门(Output Gate)

  • 输出门将决定单元的输出值$h_t$。
  • 它同样由两层结构组成:前面的sigmoid layer将决定我们输出数据中的哪部分值,同时长期状态$C_t$将通过tanh layer转换至$-1$至$1$之间,最后的输出结果为两者的乘积。

drawing

LSTM的展开和参数量计算

drawing

In [13]:
# 数据的输入与展示
import string
import numpy as np

f = open('data/poems_clean.txt', "r", encoding='utf-8')
poems = []
for line in f.readlines():
    title, poem = line.split(':')
    poem = poem.replace(' ', '') #将空格去掉
    poem = poem.replace('\n', '') #将换行符去掉
    poems.append(list(poem))
    
print(poems[0][:])
['寒', '随', '穷', '律', '变', '春', '逐', '鸟', '声', '开', '初', '风', '飘', '带', '柳', '晚', '雪', '间', '花', '梅', '碧', '林', '青', '旧', '竹', '绿', '沼', '翠', '新', '苔', '芝', '田', '初', '雁', '去', '绮', '树', '巧', '莺', '来']
In [14]:
# 数据整理:文字编码,读入数据并使用`keras`中的`Tokenizer`为我们的语料库建立词典,给每个字分配一个索引。
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences

tokenizer = Tokenizer()
tokenizer.fit_on_texts(poems)
vocab_size = len(tokenizer.word_index) + 1 #加上停止词0
poems_digit = tokenizer.texts_to_sequences(poems)
#为了将所有的诗放在一个M*N的np.array中,将每一首诗补0到同样的长度
poems_digit = pad_sequences(poems_digit, maxlen=50, padding='post')
In [15]:
# 数据整理:数据补全
print("原始诗歌")
print(poems[3864])
print("\n")
print("编码+补全后的结果")
print(poems_digit[3864])
原始诗歌
['床', '前', '明', '月', '光', '疑', '是', '地', '上', '霜', '举', '头', '望', '明', '月', '低', '头', '思', '故', '乡']


编码+补全后的结果
[532  72  53  13 140 429  44 113  15 202 688 128 106  53  13 502 128  75
 134 169   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0]
In [16]:
# 生成X和Y
X = poems_digit[:, :-1]
Y = poems_digit[:, 1:]
print("X示例", "\t", "Y示例")

for i in range(10):
    print(X[0][i], "\t", Y[0][i])
    
print("...", "\t", "...")
X示例 	 Y示例
42 	 180
180 	 401
401 	 1143
1143 	 671
671 	 9
9 	 331
331 	 130
130 	 58
58 	 84
84 	 177
... 	 ...
In [17]:
# 把Y变成One-Hot向量
from tensorflow.keras.utils import to_categorical
Y = to_categorical(Y, num_classes=vocab_size)
print(Y.shape)
(24117, 49, 5546)
In [21]:
# 构建LSTM的模型

# from keras.models import Model
from tensorflow import keras
from tensorflow.keras.layers import Input, LSTM, Dense, Embedding, Activation, BatchNormalization
from tensorflow.keras import Model

hidden_size1 = 300
hidden_size2 = 100

inp = Input(shape=(49,))

# Encoder
x = Embedding(vocab_size, hidden_size1, input_length=49, mask_zero=True)(inp)
x = LSTM(hidden_size2, return_sequences=True)(x)

# prediction
x = Dense(vocab_size)(x)
pred = Activation('softmax')(x)

model = Model(inp, pred)
model.summary()
Model: "model_4"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_5 (InputLayer)         [(None, 49)]              0         
_________________________________________________________________
embedding_4 (Embedding)      (None, 49, 300)           1663800   
_________________________________________________________________
lstm_3 (LSTM)                (None, 49, 100)           160400    
_________________________________________________________________
dense_4 (Dense)              (None, 49, 5546)          560146    
_________________________________________________________________
activation_4 (Activation)    (None, 49, 5546)          0         
=================================================================
Total params: 2,384,346
Trainable params: 2,384,346
Non-trainable params: 0
_________________________________________________________________

数参数个数

  • Embedding层

    • 我们一共有5546个字,每个字嵌入到一个128维的空间中,所以参数个数为:$5546\times 128=70988$。
  • LSTM层

    • 第一、参考之前LSTM的介绍可以知道,需要参数估计的非线性变幻主要涉及到:$f_t$, $i_t$, $\tilde C_t$, 还有 $o_t$。每个非线性变化所消耗的参数一样。背后主要的原因是:TF要求$h_t$和$c_t$的维度一样(理论上完全可以不一样)。

    • 第二、以$f_t$为例,它作用在$(h_{t-1},x_{t})$上面。由于$h_{t-1}$和$x_{t}$分别是一个64维和128维的向量。加上截距项,需要64+128+1=193个参数。这些参数应用到遗忘门,帮助$C_t$状态更新的时候,需要消耗:193*64=12352个参数。

    • 第三,因为,$f_t$, $i_t$, $\tilde C_t$, 还有$o_t$一共4个非线性变换,而每一个变换所消耗的参数都是12352,因此,最终所需的所有参数是:$12352\times 4=49408$。

  • dense层

    • 这是一个5546类的分类问题,输入就是h维度+常数项,所以参数个数为:$(64+1)\times 5546=360490$。
In [22]:
# 模型训练
from tensorflow.keras.optimizers import Adam
model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.01), metrics=['accuracy'])
model.fit(X, Y, epochs=1, batch_size=1000, validation_split=0.2)
model.save('LSTMPoem' + 'Model')
C:\Users\yuewe\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:375: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.
  "The `lr` argument is deprecated, use `learning_rate` instead.")
20/20 [==============================] - 360s 14s/step - loss: 5.0930 - accuracy: 0.0281 - val_loss: 4.4971 - val_accuracy: 0.0321
WARNING:absl:Found untraced functions such as lstm_cell_3_layer_call_fn, lstm_cell_3_layer_call_and_return_conditional_losses, lstm_cell_3_layer_call_fn, lstm_cell_3_layer_call_and_return_conditional_losses, lstm_cell_3_layer_call_and_return_conditional_losses while saving (showing 5 of 5). These functions will not be directly callable after loading.
INFO:tensorflow:Assets written to: LSTMPoemModel\assets
INFO:tensorflow:Assets written to: LSTMPoemModel\assets
In [23]:
# 应用模型
from tensorflow.keras.models import load_model
model = load_model('LSTMPoem' + 'model')

poem_incomplete = '风****花****雪****月****'
poem_index = []
poem_text = ''
for i in range(len(poem_incomplete)):
    current_word = poem_incomplete[i]
    
    if  current_word != '*':
        index = tokenizer.word_index[current_word]
        
    else:
        x = np.expand_dims(poem_index, axis=0)
        x = pad_sequences(x, maxlen=49, padding='post')
        y = model.predict(x)[0, i]
        
        y[0] = 0            #去掉停止词
        index = y.argmax()
        current_word = tokenizer.index_word[index]

    poem_index.append(index)
    poem_text = poem_text + current_word
        
poem_text = poem_text[0:]
print(poem_text[0:5])
print(poem_text[5:10])
print(poem_text[10:15])
print(poem_text[15:20])
风不不不不
花不不不不
雪不不不不
月不不不不

Homework

  1. 构建一个文本深度学习模型,开展自动写作任务(如写歌词、小说、诗歌等)。说明你使用的文本深度学习模型、语料库及处理方式,编写并附上程序。
  2. 提供你的写作结果。如果训练次数翻一倍,写作结果会有什么样的变化,更好还是更差?请实践并说明原因。
  3. 作业模板下载:homework6



谢谢大家!



诗词语料库下载

Note: Keras+TensorFlow使用说明

Keras+TensorFlow组合的优势

  • TensorFlow:作为 google主推的学习框架,未来支持会更好
    • Theano速度更快,但太难使用
    • Theano的主要开发者现在都在 Google
  • Keras
    • 跨平台兼容,后台 TensorFlow/Theano/CNTK均可
    • 极易上手,可以直接当黑箱使用
    • 速度稍慢,隐藏了很多内部参数,相对而言扩展性较差
  • 结论:Keras+ TensorFlow组合
    • 以 Keras为主进行使用
    • 用theano或tensorflow的语句来写扩展功能并和keras结合使用

TensorFlow的安装

  • 有能力的可以考虑lunix,或Win10新版本下的Lunⅸ环境
  • 1.2版本之后开始支持 Window
  • 要求 Python版本3.5 64位及以上
  • CPU版本:pip3 install --upgrade tensorflow
  • GPU版本:pip3 install --upgrade tensorflow-gpu
    • 需要进一步安装CUDA和 cuDNN
  • 安装测试
    • import tensorflow as tf
    • hello = tf.constant('Hello, TensorFlow!')
    • print(tf.Session(). run(hello))

Keras的安装

  • 依赖包
    • numpy,scipy(注意版本依赖问题,不熟悉的直接让程序自动更新)
    • pyyaml
    • HDF5,h5py(可选,仅在模型的save/load函数中使用)
    • 如果拟合CNN(卷积神经网络),推荐安装 cuDNN
  • 后端框架
    • TensorFlow
    • Theano
    • CNTK
  • pip install keras -U --pre