Deep Learning


create by Arwin Yu

Tutorial 03 - Recurrent Neural Networks - Sequential Tasks


Agenda


  • 自然语言处理和序列数据(Natural Language Processing and Sequences)
    • 语言模型
    • 词嵌入
    • 任务类型
    • 文本预处理
  • 循环神经网络(Recurrent Neural Networks)
  • 长短期记忆网络(LSTM)
  • 门控循环单元(GRU)
  • 示例(PyTorch RNN Model Example)

自然语言处理和序列数据


  • 序列建模是建模序列的领域,例如文本句子、视频、股票价格、强化学习或自动驾驶中的轨迹、天气预报等……
  • 与我们之前假设的数据是独立同分布的不同,序列中通常并非如此(例如,如果你随机改变句子中的单词,就很难理解它的含义)。
  • 我们将重点关注自然语言处理 (NLP) 领域的文本数据。

语言模型(Language Models)


语言模型是一种用来评估一段文本出现概率的工具。例如,给定一段文本“我喜欢人工智能”,语言模型可以计算出这段文本的概率,即$p(我, 喜欢, 人工, 智能)$。

为了简化计算,最常见的方法是利用概率分解的基本原则和马尔可夫假设,将复杂的概率分布拆解成多个条件概率的乘积,


p(我,喜欢,人工,智能)=p(我)p(喜欢∣我)p(人工∣喜欢)p(智能∣人工)。这样,计算每个词的出现概率只需要考虑它前一个词的情况。

然而,这种方法存在一些不必要的假设。马尔可夫假设认为每个词的出现只依赖于前一个词,而忽略了整个句子的历史信息。实际上,某个词的出现可能与更早之前的词有关,而不仅仅是前一个词。因此,马尔可夫假设在某些情况下可能过于简化,无法捕捉到语言的复杂性。

词嵌入(Word embeddings)


  • 实际上,存在一些经典的机器学习方法或数学模型来构建语言模型,但本课程的重点是深度学习,因此我们将把经典方法留给大家进行探索,可以参考网上各种 NLP 课程。

  • 我们提出的第一个问题是:如何将字符串(字符/单词)转换为可以输入神经网络的数字?

  • 这种转换通常称为嵌入(Embeddings)

  • PyTorch 中的嵌入层:nn.Embedding(num_embeddings, embedding_dim)

  • 有几种预先训练好的模型,例如 BERT 或 Word2Vec,它们已经训练了具有某些目标的词嵌入,并已准备好用于下游任务。

one-hot编码形式的词嵌入:

Image Source

对于给定的词 $w$ ,嵌入矩阵(Embedding Matix) $E$ 是一个权重矩阵(weight Matix),它将词的独热 (1-hot) 表示 $o_w$ 映射到其嵌入 $e_w$ ,具体如下:
$$
e_w=E o_w
$$

tips: 嵌入矩阵的学习可以通过目标/上下文似然模型完成。

Image Source

Image Source

Word2vec

Word2vec 是一个框架,旨在通过估计给定词被其他词包围的可能性来学习词嵌入。常见的模型包括 skip-gram、负采样(negative sampling)和 CBOW(连续词袋模型)。

下图中展示了 Word2vec 的基本工作流程:

训练网络执行代理任务:左图显示了一个网络在执行代理任务(例如预测一个词的上下文词)时的训练过程。输入的是一个句子片段“...A cute teddy bear is reading...”,通过神经网络学习该句子中各词的关系。

提取高级表示:中图展示了在训练过程中提取到的词的高级表示。这些表示保留了词之间的语义关系。

计算词嵌入:右图展示了最终得到的词嵌入,例如“teddy bear”与“soft”、“art”、“Persian poetry”等词的关系。这些词嵌入可以用于各种自然语言处理任务。

  • Skip-gram

Skip-gram Word2vec 模型是一种有监督的学习任务,通过评估给定目标词 $t$ 与上下文词 $c$ 同时出现的可能性来学习词嵌入。记 $\theta_t$为与目标词 $t$ 相关的参数,目标词 $t$ 在给定上下文词 $c$ 时的概率 $P(t \mid c)$ 表示如下:
$$
P(t \mid c)=\frac{\exp \left(\theta_t^T e_c\right)}{\sum_{j=1}^{V \mid} \exp \left(\theta_j^T e_c\right)}
$$

CBOW(连续词袋模型) 是另一种 Word2vec 模型,与Skip-gram的逻辑正好想反,它使用周围的词来预测给定的词。

  • Negative sampling

负采样是一组使用逻辑回归的二元分类器,旨在评估给定上下文词和给定目标词同时出现的可能性。模型在 $k$ 个负样本和 1 个正样本的集合上进行训练。给定一个上下文词 $c$和一个目标词 $t ,$ 预测表示如下:
$$
P(y=1 \mid c, t)=\sigma\left(\theta_t^T e_c\right)
$$

  • GloVe

“Global Vectors for Word Representation”(全局词向量表示)的简称,是一种用于生成词嵌入的方法。它通过使用共现矩阵$X$来实现, 共现矩阵 $X$ 记录了词与词之间在一定上下文窗口内共同出现的次数。例如,假设我们有一个单词"apple"和它的上下文词"fruit",如果“apple"和“fruit"在大量文本中经常一起出现,那么 $X_{i, j}$ 的值会很高。GloVe 通过分析大量文本中词与词共同出现的频率,来生成每个词的向量表示。这些向量可以捕捉到词与词之间的语义关系,尽管每个向量的具体数值可能不容易解释其实际意义。具体而言,GloVe的损失函数设计如下:
$$
J=\sum_{i, j=1}^V f\left(X_{i, j}\right)\left(w_i^T \cdot \tilde{w}_j+b_i+\tilde{b}_j-\log X_{i, j}\right)^2
$$

其中:

  • $V$是词汇表的大小。
  • $w_i$和$\tilde{w}_j$分别是词$i$和词$j$的词向量。
  • $b_i$和$\tilde{b}_j$是词$i$和词$j$的偏置项。
  • $\log X_{i,j}$是词$i$和词$j$共现次数的对数。
  • $f(X_{i,j})$是一个权重函数,用来减少共现次数过少的词对损失函数的影响。

Forms of Sequence Prediction Tasks


Image Source

Text Preprocessing


  • 在深入研究具体模型之前,我们需要了解如何处理文本数据,因为你不能直接将单词输入神经网络,还需要为它们提供一些数字表示。

  • 在经典 NLP 中,单词有时表示为独热向量,其中向量的大小是词汇量。

  • 一般步骤如下:

  • 将文本作为字符串加载到内存中。

  • 标记化(Tokenization):将字符串拆分为tokens(例如,单词、单词的部分和字符)。

  • 词汇表(Vocabulary):构建词汇表以将拆分的 token 映射到数字索引,以便模型可以轻松操作它们。

  • 我们将使用 PyTorch 官方库 torchtext 来处理文本数据。

  • 我们使用 IMDB 数据集:该数据集包含标记为“正面”和“负面”(分别表示好评和差评)的电影评论。

  • 此任务在 NLP 中称为情绪分析,本质上是一个分类任务。

  • 如果你想加载其他数据集或从文本文件创建自定义数据集:

  • https://pytorch.org/tutorials/beginner/torchtext_custom_dataset_tutorial.html

  • https://pytorch.org/text/stable/datasets.html

  • https://pytorch.org/data/beta/torchdata.datapipes.iter.html#text-datapipes

  • 特殊标记

  • <sos>/<bos> - 标记句子的开始/开始的标记。
    *` - 用来pad的句子比批处理中最长的句子。单词,或者您决定遗漏一些单词,例如名字)。

Image Source

右图展示了通过动态批处理来处理不同长度的序列的方法。虽然在每个批次内部进行了填充对齐,但不同批次之间可以有不同的长度,从而减少计算中的填充浪费,提高计算效率。同时,批处理不会改变序列在原文中的顺序,只是为了计算优化进行的分组。

Recurrent Neural Networks (RNNs)


  • 循环神经网络 (RNN) 的理念:保存某一时刻的输出并将其反馈给下一时刻的输入。
  • 在每个时间步骤中,我们都会维护一些状态(从上一个时间步骤接收)——hidden state 隐藏状态,它代表我们迄今为止所读的内容。这与当前正在阅读的单词相结合,并在稍后的状态中使用。然后,我们根据需要重复此过程,直至达到所需的时间步骤。

  • Image Source

  • 令 $x$ 表示输入层,$h$ 表示隐藏层,$y$ 表示输出层。

  • 令 $A, B \text{ 和 } C$ 为用于改善模型输出的一些网络参数。

  • 在任何给定时间 $t$,当前输入是 $x(t)$ 和 $x(t-1)$ 处的输入组合。

  • Image Source

The Hidden State of RNN Cells


  • 对于输入序列中的每个元素,每一层计算以下函数: $$ ht = tanh\left(W{ih}xt +b{ih} + W{hh}h{(t-1)} + b_{hh}\right), $$ 其中 $h_t$ 是时间 $t$ 的隐藏状态,$xt$ 是时间 $t$ 的输入,$h{(t-1)}$ 是时间 $t-1$ 时前一层的隐藏状态或时间 0 时的初始隐藏状态。

  • Image by Michael Nguyen

RNN的两个常见变体

这两个变体的设计动机是?


Long Term Short Memory (LSTM)


  • 在反向传播过程中,RNN 会遭受梯度消失问题的影响,这实质上会产生短期记忆

  • 长短期记忆 (LSTM) 是一种试图保存长期信息的循环单元。

  • LSTM 引入了一种与隐藏状态形状相同的记忆单元,旨在记录更多信息。

  • 记忆由 3 个主要门控制:

    输入门:决定何时将数据读入单元。

    输出门:输出单元中的条目。

    遗忘门:一种重置单元内容的机制。

  • 这些门会了解在训练过程中哪些信息与遗忘或记住有关。这些门包含一个 S 形激活函数(sigmoid)。

Memory Cell


  • LSTM 在每个时间步 $t$ 上接收一个输入向量 $\boldsymbol{x}_t$, 更新其细胞状态 $\boldsymbol{C}_t$和隐藏状态 $\boldsymbol{h}_t$ 。其中, 细胞状态 (cell state) 是 LSTM 的新概念,有时候也被称为候选记忆单元 $\tilde{C}_t$ (candidate memory cell), 它类似于传送带, 是 LSTM 的关键, 直接贯穿整个模型, $C_t$在传递中只有一些少量的线性交互, 使得信息在上面传递很容易,这对远距离的信息更好的传递到当前计算时刻有很大帮助。也就是长短期记忆网络名字中对“长期”概念的一种实现。
  • 具体来说,输入门 $I_t$控制我们通过 $\tilde{C}_t$考虑多少新数据,而遗忘门 $F_t$ 决定我们保留了多少旧记忆单元内容 $C_{t-1}$。由此得出: $$ C_t = F_t \odot C_{t-1} + I_{t} \odot \tilde{C}_t$$
  • $\odot$ 是元素乘积运算符 (Hadamard)。
  • 如果遗忘门始终近似为 1,输入门始终近似为 0,则过去的记忆单元 $C_{t-1}$ 将随时间保存并传递到当前时间步骤。
  • 引入这种设计可以缓解消失梯度问题(memory cell路径中经历的计算比hidden state少一次相乘),并更好地捕获序列内的长距离依赖关系。
  • 最后,时间 $t$ 的隐藏状态: $$ H_t = O_t \odot \text{tanh}(C_t)。$$

在 LSTM 的计算过程中, 第一步决定我们会从上一时刻的隐藏状态中丟弃(忘记)什么信息。如图, 其中 $\sigma$被称作遗忘门 (forget gate), 本质上是一个带有 Sigmoid 函数的神经网络层, 通过读取 $\boldsymbol{h}_{t-1}$ 和 $\boldsymbol{x}_t$, 输出一个在 0 到 1 之间的数值给到细胞状态 $\boldsymbol{C}_{t-1}$ 。通过相乘的操作来决定保留多少 $\boldsymbol{C}_{t-1}$ 中的信息, 1 表示保留全部信息, 0 表示遗忘全部信息。公式表示如下
$$
f_t=\sigma\left(\boldsymbol{W}_f *\left[\boldsymbol{h}_{t-1}, \boldsymbol{x}_t\right]+b_f\right)
$$

第二步决定会从当前时刻的输入信息中, 选择什么信息进行处理, 如下图所示。其中 $\sigma$ 被称作输入门 input $i_t$, 公式表示如下:
$$
\boldsymbol{i}_t=\sigma\left(\boldsymbol{W}_i \cdot\left[\boldsymbol{h}_{t-1}, \boldsymbol{x}_t\right]+b_i\right)
$$

第三步, 使用 $\tanh$ 激活函数创建一个新的候选细胞状态 $\tilde{\boldsymbol{C}}_t$, 如下图所示。本质上是一个带有 $\tanh$ 函数的神经网络层, 通过读取 $\boldsymbol{h}_{t-1}$ 和 $\boldsymbol{x}_t$ ,输出 $\tilde{\boldsymbol{C}}_t$, 这个 $\tilde{\boldsymbol{C}}_t$可以一定程度上代表 $\left[\boldsymbol{h}_{t-1}, \boldsymbol{x}_t\right]$, 即代表输入信息, 公式表示如下:
$$
\tilde{\boldsymbol{C}}_t=\tanh \left(\boldsymbol{W}_C \cdot\left[\boldsymbol{h}_{t-1}, \boldsymbol{x}_t\right]+b_C\right)
$$

最后一步, 决定着当前时刻隐藏状态的输出结果, 如下图所示。其中 $\sigma$ 被称作输出门 (forget gate), 本质上还是一个带有 Sigmoid 函数的神经网络层, 它的计算结果决定着当前时刻的输出结果有多少比例能进入到下一时刻。具体来说, 输出门的计算结果, 将与更新后的且经过激活函数 $\tanh$ 映射后的细胞状态 $\boldsymbol{C}_t$ 相乘, 作为当前时刻隐藏状态 $\boldsymbol{h}_t$ 的输出结果。公式表示如下:
$$
\begin{gathered}
\boldsymbol{o}_t=\sigma\left(\boldsymbol{W}_o *\left[\boldsymbol{h}_{t-1}, \boldsymbol{x}_t\right]+b_o\right) \\
\boldsymbol{h}_t=\boldsymbol{o}_t \odot \tanh \left(\boldsymbol{C}_t\right)
\end{gathered}
$$

rnn = nn.LSTM(input_size=10, hidden_size=20, num_layers=2)  # batch_first=False
x = torch.randn(5, 3, 10)  # 5 words per senetence, 3 sentences (batch_size), embedding dimension of each word is 10
h0 = torch.randn(2, 3, 20)  # initialize hidden states per layer
c0 = torch.randn(2, 3, 20)  # initialize memory per layer
output, (hn, cn) = rnn(x, (h0, c0))
print(f'shapes: output - {output.shape}, hidden - {hn.shape}, memory - {cn.shape}')
shapes: output - torch.Size([5, 3, 20]), hidden - torch.Size([2, 3, 20]), memory - torch.Size([2, 3, 20])

Gated Recurrent Unit (GRU)


  • 与常规 RNN 不同,门控循环单元 (GRU) 支持隐藏状态的门控。
  • GRU 有两种机制来控制何时应更新隐藏状态:
  • 重置门:允许控制应记住多少先前状态,有助于捕获序列中的短期依赖关系。
  • 更新门:允许控制新状态中有多少只是旧状态的副本,有助于捕获序列中的长期依赖关系。
  • 与 LSTMS 不同,GRU 没有记忆组件,因此更新速度更快(从而可以加快训练速度),但通常 LSTM 表现更好。

  • 假设输入是给定时间步长 $t$ 的小批量 $X_t \in \mathbb{R}^{n\times d}$,前一个时间步长的隐藏状态是 $H_{t−1}\in \mathbb{R}^{n\times h}$。
  • 重置门$R_t \in \mathbb{R}^{n \times h}$ 和更新门$Z_t \in \mathbb{R}^{n \times h}$计算如下: $$ R_t = \sigma(X_tW_{xr} + H_{t-1}W_{hr} +b_r), $$ $$ Z_t = \sigma(X_tW_{xz} + H_{t-1}W_{hz} +b_z), $$ 其中 $W_{xr}, W_{xz} \in \mathbb{R}^{d \times h}$ 和 $W_{hr}, W_{hz} \in \mathbb{R}^{h \times h}$ 为权重参数,$b_r, b_z \in \mathbb{R}^{1 \times h}$存在偏见。

GRUs Hidden State


  • 时间步 $t$ 的 候选 隐藏状态 $\tilde{H}_{t} \in \mathbb{R}^{n \times h}$ 定义为: $$ \tilde{H}_{t} = \text{tanh}\left(X_t W_{xh} + (R_t \odot H_{t-1})W_{hh} \right) + b_h$$
  • 结果为候选,因为我们仍需结合 更新门 的作用。
  • 最后,新的隐藏状态 $H_t$ 和时间步 $t$ 中 GRU 的最终更新:$$ H_t = Z_t \odot H_{t-1} +(1-Z_t) \odot \tilde{H}_t。 $$
  • 每当更新门 $Z_t$ 接近 1 时,我们只需保留旧状态。在这种情况下,来自 $X_t$ 的信息基本上被忽略,从而有效地跳过了依赖链中的时间步骤 $t$。
  • 相反,每当 $Z_t$ 接近 0 时,新的潜在状态 $H_t$ 就会接近候选潜在状态 $\tilde{H}_t$。
  • 这些设计可以帮助我们应对 RNN 中的梯度消失问题,并更好地捕获具有较大时间步长距离的序列的依赖关系。
rnn = nn.GRU(input_size=10, hidden_size=20, num_layers=2)  
x = torch.randn(5, 3, 10)  # 5 words per senetence, 3 sentences (batch_size), embedding dimension of each word is 10
h0 = torch.randn(2, 3, 20)  # initialize hidden states per layer
output, hn = rnn(x, h0)
print(f'shapes: output - {output.shape}, hidden - {hn.shape}')
shapes: output - torch.Size([5, 3, 20]), hidden - torch.Size([2, 3, 20])

PyTorch RNN Model Example


Following is an example of building a classifier with LSTMs.

#环境配置
# -*- coding: utf-8 -*-
import numpy as np
import pickle as pkl
from tqdm import tqdm
from torch.utils.data import Dataset, DataLoader
import torch.nn as nn
import time
import torch
from sklearn import metrics
from sklearn.model_selection import train_test_split

# 超参数设置
data_path =  './datasets/rnndata/data.txt'              
vocab_path = './datasets/rnndata/vocab.pkl'             
save_path = './datasets/rnndata/rnn.ckpt'                    
embedding_pretrained = torch.tensor(np.load('./datasets/rnndata/embedding_Tencent.npz')["embeddings"].astype('float32')) 
embed = embedding_pretrained.size(1)        
dropout = 0.5                              
num_classes = 2                             
num_epochs = 50                            
batch_size = 128                             
pad_size = 50                                
learning_rate = 1e-3                        
hidden_size = 128                            
num_layers = 2                               
MAX_VOCAB_SIZE = 10000                        
import pickle
import numpy as np

# 加载词汇表
with open('./datasets/rnndata//vocab.pkl', 'rb') as f:
    vocab = pickle.load(f)

# 加载预训练词向量
embeddings = np.load('./datasets/rnndata/embedding_Tencent.npz')['embeddings']

# 示例:获取一个词的向量表示
word = '我'
if word in vocab:
    word_index = vocab[word]
    word_vector = embeddings[word_index]
    print(f"词 '{word}' 的向量表示是:", word_vector)
    print(word_vector.shape)
else:
    print(f"词 '{word}' 不在词汇表中")
词 '我' 的向量表示是: [ 0.25011599 -0.36695799  0.065014    0.010725    0.231398   -0.177817
  0.064359   -0.005259    0.115888    0.154       0.17193501  0.07247
 -0.003175   -0.09248     0.20276    -0.030792   -0.30699101 -0.289693
 -0.055264   -0.189153    0.122888    0.081699    0.017909    0.15846901
  0.14746401  0.079238   -0.224966    0.14583699  0.182973   -0.149864
 -0.15604401  0.044855   -0.237059    0.174146   -0.108293   -0.066462
  0.140773    0.092687   -0.124868   -0.026098    0.167881   -0.117048
  0.39074999 -0.036812   -0.051702   -0.161367   -0.355791   -0.311515
 -0.090306    0.084679   -0.18447199  0.090339   -0.098312    0.25659499
  0.29255399  0.27464801  0.039325    0.150774    0.239049   -0.011787
 -0.014104    0.13506199  0.151537   -0.208729   -0.171538    0.08003
 -0.116087    0.159768   -0.061878   -0.149166   -0.065586    0.029528
 -0.020271    0.098718   -0.068513    0.238489    0.174631   -0.003655
  0.161002   -0.002617    0.202535    0.276254    0.03933     0.008368
  0.258403   -0.25468501 -0.046402    0.415975   -0.36980301 -0.070436
  0.165418    0.167119    0.047878    0.105566   -0.127156    0.189587
 -0.022974   -0.21011201 -0.29733899  0.071683   -0.111609    0.26536801
 -0.108999    0.24790099 -0.43430701  0.216444    0.033944   -0.55144203
 -0.072594    0.00983    -0.028967   -0.181977   -0.032623   -0.179671
  0.128933   -0.087196    0.12034    -0.221466   -0.20084099 -0.21887299
  0.277069   -0.36693299  0.003879   -0.027925    0.069605   -0.057702
 -0.010946   -0.035958    0.039027    0.36728701  0.044901    0.128941
 -0.039109   -0.088411   -0.21058699 -0.195746   -0.26508701  0.117322
  0.057173   -0.134257   -0.214258   -0.247163   -0.27433899  0.054974
 -0.111022   -0.567581    0.212942   -0.222993   -0.027288    0.198594
 -0.052249    0.149065   -0.24225099 -0.19462501 -0.040973   -0.00749
  0.168107   -0.079271    0.26327199 -0.370942    0.190593    0.015323
  0.115155    0.074836    0.307684    0.20419499 -0.105276    0.29840299
  0.151988    0.045363   -0.12802801 -0.065257   -0.150151    0.13884
 -0.07511     0.019008   -0.181566   -0.044517    0.208922    0.067851
  0.059112   -0.029587   -0.138191   -0.009103   -0.083886   -0.25208199
 -0.224802    0.45078599  0.100208   -0.050416    0.050791    0.095502
 -0.180603    0.003119    0.17693201  0.36746699 -0.042056   -0.33071601
 -0.165911    0.19402801]
(200,)
# dataset load
import matplotlib.pyplot as plt
import seaborn as sns
from collections import Counter

data_path = './datasets/rnndata/data.txt'

def load_raw_data(path):
    data = []
    with open(path, 'r', encoding='gbk') as f:
        for line in f:
            lin = line.strip()
            if not lin:
                continue
            label, content = lin.split('   ####    ')
            data.append((content, int(label)))
    return data

raw_data = load_raw_data(data_path)
def data_summary(data):
    print(f"数据集中样本数量: {len(data)}")
    lengths = [len(sample[0]) for sample in data]
    print(f"样本的平均长度: {np.mean(lengths):.2f}")
    print(f"样本的最大长度: {np.max(lengths)}")
    print(f"样本的最小长度: {np.min(lengths)}")

data_summary(raw_data)
数据集中样本数量: 119988
样本的平均长度: 66.05
样本的最大长度: 260
样本的最小长度: 3
for i in range(10):
    print(raw_data[i])
('?更博了,爆照了,帅的呀,就是越来越爱你!生快傻缺[爱你][爱你][爱你]', 1)
('@张晓鹏jonathan 土耳其的事要认真对待[哈哈],否则直接开除。@丁丁看世界 很是细心,酒店都全部OK啦。', 1)
('姑娘都羡慕你呢…还有招财猫高兴……//@爱在蔓延-JC:[哈哈]小学徒一枚,等着明天见您呢//@李欣芸SharonLee:大佬范儿[书呆子]', 1)
('美~~~~~[爱你]', 1)
('梦想有多大,舞台就有多大![鼓掌]', 1)
('[花心][鼓掌]//@小懒猫Melody2011: [春暖花开]', 1)
('某问答社区上收到一大学生发给我的私信:“偶喜欢阿姨!偶是阿姨控!”我回他:“阿姨稀饭小盆友!偶是小盆友控!” [哈哈]', 1)
('吃货们无不啧啧称奇,好不喜欢!PS:写错一个字![哈哈]@森林小天使-波琪 @SEVEN厦门摄影师 @日月星辰-心在路上 @每种型号生两胎 @志远天下行 @监控防盗安装XM @创意美食simon哥 @漫游者-强子 @陈小kitty猫@游子的歌@solo在厦门', 1)
('#Sweet Morning#From now on,love yourself,enjoy living then smile.从现在开始,爱自己,享受生活并且微笑。[呵呵] [嘻嘻] [哈哈] [挤眼] [太开心] 早安、甜心们', 1)
('【霍思燕剖腹产下“小江江” 老公落泪】今晨9时霍思燕产下一名男婴,宝宝重8斤3两,母子平安。杜江的脸上洋溢着做爸爸的欣喜:宝宝小名叫“小江江”,眼睛像他,鼻子和嘴巴则像霍思燕,看到宝贝就忍不住落泪!恭喜@杜江侦察记 @霍思燕 ,祝福“小江江”在爱里健康地成长[爱你]...http://t.cn/z8EwSPU', 1)
# 文本长度分布
def plot_length_distribution(data, title):
    lengths = [len(sample[0]) for sample in data]
    plt.figure(figsize=(10, 6))
    sns.histplot(lengths, bins=50, kde=True)
    plt.title(title)
    plt.xlabel("Text length")
    plt.ylabel("Frequency")
    plt.show()

plot_length_distribution(raw_data, "Text length distribution")

import re
# 定义常量
PAD = '<PAD>'
UNK = '<UNK>'
USER = '<USER>'
URL = '<URL>'
EMOJI = '<EMOJI>'

# 表情符号的正则表达式
emoji_pattern = re.compile(r'\[.*?\]')

def preprocess_text(text):
    # 去除URL
    text = re.sub(r'http[s]?://\S+', URL, text)
    # 替换@用户
    text = re.sub(r'@\S+', USER, text)
    # 替换表情符号
    text = emoji_pattern.sub(EMOJI, text)
    # 去除标点符号
    text = re.sub(r'[^\w\s]', '', text)
    return text
#数据预处理
def load_dataset(path, pad_size, tokenizer, vocab):
    contents = [] 
    n=0
    with open(path, 'r', encoding='gbk') as f: 
        for line in tqdm(f):
            lin = line.strip() 
            if not lin: 
                continue
            label,content = lin.split('    ####    ') 
            content = preprocess_text(content)   
            words_line = [] 
            token = tokenizer(content) 
            # print(token)
            seq_len = len(token) 
            if pad_size:

                if seq_len < pad_size:
                    token.extend([vocab.get(PAD)] * (pad_size - len(token))) 
                else:
                    token = token[:pad_size] 
                    seq_len = pad_size

            for word in token:
                words_line.append(vocab.get(word, vocab.get(UNK)))
            n+=1
            contents.append((words_line, int(label))) 
    train, X_t = train_test_split(contents, test_size=0.2, random_state=42) 
    dev,test= train_test_split(X_t, test_size=0.5, random_state=42)  
    return train,dev,test

def get_data(): 
    tokenizer = lambda x: [y for y in x]  #jieba
    vocab = pkl.load(open(vocab_path, 'rb'))  
    # print('tokenizer',tokenizer)
    print('vocab',vocab)
    print(f"Vocab size: {len(vocab)}") 

    train,dev,test = load_dataset(data_path, pad_size, tokenizer, vocab) 
    return vocab, train, dev, test
#定义数据集类,用于处理文本数据。
class TextDataset(Dataset):
    def __init__(self, data):
        self.device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu') 
        self.x = torch.LongTensor([x[0] for x in data]).to(self.device) 
        self.y = torch.LongTensor([x[1] for x in data]).to(self.device) 
    def __getitem__(self,index): 
        self.text = self.x[index] 
        self.label = self.y[index] 
        return self.text, self.label 
    def __len__(self):
        return len(self.x) 
# 定义 模型
class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()

        self.embedding = nn.Embedding.from_pretrained(embedding_pretrained, freeze=False)

        self.rnn = nn.RNN(embed, hidden_size, num_layers, bidirectional=True, batch_first=True, dropout=dropout)

        self.fc = nn.Linear(hidden_size * 2, num_classes)

    def forward(self, x): 
        out = self.embedding(x) 
        out, _ = self.rnn(out) 
        out = self.fc(out[:, -1, :]) #RNN的输出 out 形状为 (batch_size, seq_length, hidden_size * 2)
        return out
# 权重初始化,默认xavier
def init_network(model, method='xavier', exclude='embedding'):
    for name, w in model.named_parameters():
        if exclude not in name:
            if 'weight' in name:
                if method == 'xavier':
                    nn.init.xavier_normal_(w)
                elif method == 'kaiming':
                    nn.init.kaiming_normal_(w)
                else:
                    nn.init.normal_(w)
            elif 'bias' in name:
                nn.init.constant_(w, 0) 
            else:
                pass
#损失绘制
def plot_loss(train_loss):
    plt.figure(figsize=(10, 7)) 
    x = list(range(len(train_loss))) 
    plt.plot(x, train_loss, alpha=0.9, linewidth=2, label='train acc') 
    plt.xlabel('Epoch') 
    plt.ylabel('loss') 
    plt.legend(loc='best')  
#准确率绘制   
def plot_acc(train_acc):
    plt.figure(figsize=(10, 7))
    x = list(range(len(train_acc))) 
    plt.plot(x, train_acc, alpha=0.9, linewidth=2, label='train acc') 
    plt.xlabel('Epoch')
    plt.ylabel('Acc')
    plt.legend(loc='best') 
from sklearn.metrics import accuracy_score
#定义模型训练
def train( model, dataloaders):
    optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) 
    loss_function = torch.nn.CrossEntropyLoss() 

    dev_best_loss = float('inf')  

    device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu') 
    print("Start Training...\n")

    plot_train_acc = []
    plot_train_loss = []

    for i in range(num_epochs):
        step = 0  
        train_lossi=0 
        train_acci = 0 
        for inputs, labels in dataloaders['train']: 
            model.train() 

            inputs = inputs.to(device)
            labels = labels.to(device)
            optimizer.zero_grad()  
            outputs = model(inputs)  
            loss = loss_function(outputs, labels) 
            loss.backward() 
            optimizer.step()

            step += 1  
            true = labels.data.cpu() 
            predic = torch.max(outputs.data, 1)[1].cpu() 

            train_lossi += loss.item()
            train_acci += metrics.accuracy_score(true, predic)
        #对验证集进行评估    
        dev_acc, dev_loss = dev_eval(model, dataloaders['dev'], loss_function,Result_test=False)
        if dev_loss < dev_best_loss:
            dev_best_loss = dev_loss
            torch.save(model.state_dict(), save_path)

        train_acc = train_acci/step
        train_loss = train_lossi/step

        plot_train_acc.append(train_acc)
        plot_train_loss.append(train_loss)

        print("epoch = {} :  train_loss = {:.3f}, train_acc = {:.2%}, dev_loss = {:.3f}, dev_acc = {:.2%}".
                  format(i+1, train_loss, train_acc, dev_loss, dev_acc))

    plot_loss(plot_train_loss)
    plot_acc(plot_train_acc)
    # 加载最佳模型参数并在测试集上进行评估
    model.load_state_dict(torch.load(save_path))#模型加载
    model.eval()#设置验证模型
    test_acc, test_loss = dev_eval(model, dataloaders['test'], loss_function,Result_test=True)#输出准确率和损失
    print('================'*8)
    print('test_loss: {:.3f}      test_acc: {:.2%}'.format(test_loss, test_acc))

# 对测试结果进行分析
def result_test(real, pred):
    acc = accuracy_score(real, pred)#准确率计算

# 模型评估函数定义
def dev_eval(model, data, loss_function,Result_test=False):

    model.eval() 
    loss_total = 0  
    predict_all = np.array([], dtype=int) 
    labels_all = np.array([], dtype=int) 
    with torch.no_grad():
        # 遍历数据集
        for texts, labels in data:
            outputs = model(texts)  
            loss = loss_function(outputs, labels) 
            loss_total += loss.item()
            labels = labels.data.cpu().numpy() 
            predic = torch.max(outputs.data, 1)[1].cpu().numpy() 

            labels_all = np.append(labels_all, labels)
            predict_all = np.append(predict_all, predic)
    # 计算准确率
    acc = metrics.accuracy_score(labels_all, predict_all)
    # 如果需要进行测试结果分析,则调用result_test函数
    if Result_test:
        result_test(labels_all, predict_all)
    else:
        pass
     # 返回准确率和平均损失
    return acc, loss_total / len(data)
# 设置随机种子,以确保结果的可重复性
np.random.seed(1)
torch.manual_seed(1)
torch.cuda.manual_seed_all(1)
torch.backends.cudnn.deterministic = True  # 保证每次结果一样

start_time = time.time()
print("Loading data...")
vocab, train_data, dev_data, test_data = get_data()# 加载数据集
# 创建数据加载器
dataloaders = {
        'train': DataLoader(TextDataset(train_data), batch_size, shuffle=True),
        'dev': DataLoader(TextDataset(dev_data), batch_size, shuffle=True),
        'test': DataLoader(TextDataset(test_data), batch_size, shuffle=True)
}
end_time = time.time()
time_dif=end_time - start_time
print("Time usage:", time_dif)#数据处理用时
device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')#设备选择
model = Model().to(device)
init_network(model)# 初始化模型参数
train(model, dataloaders)#进行模型训练及验证和评估
print('end')
Loading data...
vocab {' ': 0, '0': 1, '1': 2, '2': 3, ':': 4, '大': 5, '国': 6, '图': 7, '(': 8, ')': 9, '3': 10, '人': 11, '年': 12, '5': 13, '中': 14, '新': 15, '9': 16, '生': 17, '金': 18, '高': 19, '《': 20, '》': 21, '4': 22, '上': 23, '8': 24, '不': 25, '考': 26, '一': 27, '6': 28, '日': 29, '元': 30, '开': 31, '美': 32, '价': 33, '发': 34, '学': 35, '公': 36, '成': 37, '月': 38, '将': 39, '万': 40, '7': 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, 'C': 107, '产': 108, '赛': 109, '是': 110, 'P': 111, '指': 112, '与': 113, '京': 114, '多': 115, '方': 116, '商': 117, 'S': 118, 'A': 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, 'i': 147, '通': 148, '城': 149, '交': 150, '法': 151, '东': 152, '强': 153, '之': 154, '周': 155, '民': 156, '数': 157, '用': 158, '打': 159, '亿': 160, '科': 161, '经': 162, '%': 163, '线': 164, '合': 165, '第': 166, '马': 167, 'O': 168, '山': 169, '超': 170, 'o': 171, '世': 172, '体': 173, '调': 174, '专': 175, '员': 176, 'e': 177, '无': 178, '个': 179, '要': 180, '总': 181, '级': 182, '定': 183, '传': 184, '外': 185, 'D': 186, '老': 187, '建': 188, '信': 189, '试': 190, '军': 191, '遭': 192, '热': 193, '王': 194, '再': 195, '星': 196, '持': 197, '投': 198, '获': 199, '进': 200, '亚': 201, '心': 202, '四': 203, '巴': 204, '比': 205, 'I': 206, '门': 207, '身': 208, '涨': 209, '戏': 210, '安': 211, '保': 212, '光': 213, '受': 214, '尔': 215, '研': 216, '评': 217, '计': 218, '来': 219, '台': 220, '续': 221, 'a': 222, '事': 223, '特': 224, '预': 225, '面': 226, '政': 227, '校': 228, '者': 229, 'T': 230, 'n': 231, '关': 232, '增': 233, '司': 234, '精': 235, '南': 236, '二': 237, '购': 238, '选': 239, '火': 240, '装': 241, '港': 242, '低': 243, '队': 244, '升': 245, '视': 246, '跌': 247, 'G': 248, '证': 249, 'L': 250, '反': 251, '德': 252, '水': 253, '实': 254, '均': 255, '米': 256, '变': 257, '次': 258, '提': 259, '头': 260, '尼': 261, '阿': 262, 'E': 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, 'M': 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, 'B': 373, '位': 374, 'F': 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, 'l': 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, 'r': 447, '奖': 448, '夫': 449, '他': 450, '规': 451, '何': 452, '优': 453, '亲': 454, '想': 455, '落': 456, '险': 457, '沪': 458, '划': 459, '决': 460, '及': 461, '卖': 462, '佳': 463, '值': 464, '备': 465, '官': 466, '助': 467, '足': 468, '环': 469, 'N': 470, '支': 471, '口': 472, '千': 473, '排': 474, '弹': 475, '清': 476, '准': 477, '记': 478, 'V': 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, 'd': 523, '媒': 524, '如': 525, '更': 526, '青': 527, '技': 528, '微': 529, '秘': 530, '宣': 531, '黑': 532, '债': 533, '仍': 534, '府': 535, '观': 536, '质': 537, '模': 538, '防': 539, '伊': 540, '墅': 541, '住': 542, '停': 543, '需': 544, '庆': 545, '还': 546, 'Q': 547, '幅': 548, '先': 549, '减': 550, '普': 551, '非': 552, '否': 553, '券': 554, '率': 555, '绩': 556, 'X': 557, '惠': 558, '融': 559, '了': 560, '钱': 561, '维': 562, '冲': 563, '企': 564, '遇': 565, '育': 566, '铁': 567, '救': 568, '密': 569, '秀': 570, '参': 571, '策': 572, '洲': 573, '直': 574, '六': 575, 's': 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, 'H': 601, '省': 602, '歌': 603, '话': 604, '设': 605, '俄': 606, 't': 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, 'R': 668, '存': 669, '魔': 670, '拟': 671, '希': 672, '终': 673, 'W': 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, 'h': 713, '验': 714, 'K': 715, '狂': 716, '确': 717, '袭': 718, '章': 719, '说': 720, 'm': 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, 'c': 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, 'y': 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, 'b': 908, '字': 909, '妇': 910, '端': 911, 'k': 912, '偷': 913, '仙': 914, '察': 915, '欢': 916, '翻': 917, '甲': 918, '顺': 919, '润': 920, '射': 921, '样': 922, '冰': 923, '药': 924, '域': 925, '效': 926, '松': 927, 'u': 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, 'U': 992, '误': 993, '沙': 994, '食': 995, '丹': 996, '哈': 997, '寸': 998, '执': 999, '贷': 1000, '询': 1001, '永': 1002, '怀': 1003, '灾': 1004, '旅': 1005, '材': 1006, '细': 1007, '捕': 1008, '伟': 1009, '逾': 1010, '找': 1011, '赢': 1012, 'p': 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, 'g': 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, 'J': 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, 'v': 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, 'Z': 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, 'w': 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, 'Y': 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, 'f': 1471, '歉': 1472, '赤': 1473, 'x': 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, 'z': 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, '\u3000': 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, 'j': 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, 'q': 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, '5': 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, 'O': 3817, 'M': 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, 'A': 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, '0': 4021, '桀': 4022, '$': 4023, '蹴': 4024, '帘': 4025, '傀': 4026, '儡': 4027, '懦': 4028, '沱': 4029, '痘': 4030, '哦': 4031, '孰': 4032, '笙': 4033, '馥': 4034, '戌': 4035, '滦': 4036, '臆': 4037, '「': 4038, '」': 4039, '峤': 4040, '胯': 4041, '辄': 4042, '枥': 4043, '1': 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, 'I': 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, '4': 4150, 'L': 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, '9': 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, 'F': 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, '3': 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, 'G': 4297, 'T': 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, '8': 4326, '6': 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, 'C': 4435, 'S': 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, '\x7f': 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, '2': 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, 'R': 4705, 'B': 4706, '愫': 4707, 'P': 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, 'V': 4754, '玷': 4755, '瘁': 4756, '蚱': 4757, '§': 4758, '霎': 4759, '': 4760, '': 4761}
Vocab size: 4762

14002it [00:00, 46239.08it/s]119988it [00:03, 37652.90it/s]

Time usage: 3.715178966522217
Start Training...

epoch = 1 :  train_loss = 0.710, train_acc = 50.87%, dev_loss = 0.686, dev_acc = 53.61%
epoch = 2 :  train_loss = 0.693, train_acc = 52.07%, dev_loss = 0.695, dev_acc = 50.37%
epoch = 3 :  train_loss = 0.690, train_acc = 52.64%, dev_loss = 0.703, dev_acc = 52.38%
epoch = 4 :  train_loss = 0.690, train_acc = 52.29%, dev_loss = 0.696, dev_acc = 52.15%
epoch = 5 :  train_loss = 0.688, train_acc = 52.53%, dev_loss = 0.704, dev_acc = 52.01%
epoch = 6 :  train_loss = 0.684, train_acc = 52.87%, dev_loss = 0.700, dev_acc = 52.65%
epoch = 7 :  train_loss = 0.685, train_acc = 53.21%, dev_loss = 0.694, dev_acc = 53.20%
epoch = 8 :  train_loss = 0.681, train_acc = 53.68%, dev_loss = 0.711, dev_acc = 51.15%
epoch = 9 :  train_loss = 0.679, train_acc = 53.93%, dev_loss = 0.705, dev_acc = 52.41%
epoch = 10 :  train_loss = 0.676, train_acc = 54.22%, dev_loss = 0.705, dev_acc = 50.55%
epoch = 11 :  train_loss = 0.676, train_acc = 54.47%, dev_loss = 0.725, dev_acc = 52.14%
epoch = 12 :  train_loss = 0.677, train_acc = 53.82%, dev_loss = 0.703, dev_acc = 51.69%
epoch = 13 :  train_loss = 0.663, train_acc = 57.83%, dev_loss = 0.706, dev_acc = 52.45%
epoch = 14 :  train_loss = 0.673, train_acc = 54.70%, dev_loss = 0.706, dev_acc = 51.09%
epoch = 15 :  train_loss = 0.664, train_acc = 57.07%, dev_loss = 0.679, dev_acc = 62.89%
epoch = 16 :  train_loss = 0.674, train_acc = 54.61%, dev_loss = 0.722, dev_acc = 50.65%
epoch = 17 :  train_loss = 0.666, train_acc = 56.64%, dev_loss = 0.699, dev_acc = 59.89%
epoch = 18 :  train_loss = 0.665, train_acc = 56.30%, dev_loss = 0.715, dev_acc = 50.62%
epoch = 19 :  train_loss = 0.674, train_acc = 54.50%, dev_loss = 0.708, dev_acc = 53.67%
epoch = 20 :  train_loss = 0.670, train_acc = 55.22%, dev_loss = 0.718, dev_acc = 53.39%
epoch = 21 :  train_loss = 0.671, train_acc = 54.64%, dev_loss = 0.714, dev_acc = 52.66%
epoch = 22 :  train_loss = 0.664, train_acc = 56.20%, dev_loss = 0.716, dev_acc = 52.83%
epoch = 23 :  train_loss = 0.656, train_acc = 58.69%, dev_loss = 0.706, dev_acc = 55.55%
epoch = 24 :  train_loss = 0.663, train_acc = 57.57%, dev_loss = 0.703, dev_acc = 56.21%
epoch = 25 :  train_loss = 0.666, train_acc = 56.45%, dev_loss = 0.709, dev_acc = 51.55%
epoch = 26 :  train_loss = 0.662, train_acc = 56.77%, dev_loss = 0.705, dev_acc = 52.80%
epoch = 27 :  train_loss = 0.650, train_acc = 60.24%, dev_loss = 0.709, dev_acc = 53.09%
epoch = 28 :  train_loss = 0.663, train_acc = 55.89%, dev_loss = 0.712, dev_acc = 54.12%
epoch = 29 :  train_loss = 0.662, train_acc = 55.80%, dev_loss = 0.713, dev_acc = 51.41%
epoch = 30 :  train_loss = 0.659, train_acc = 58.09%, dev_loss = 0.709, dev_acc = 52.50%
epoch = 31 :  train_loss = 0.672, train_acc = 54.47%, dev_loss = 0.719, dev_acc = 52.73%
epoch = 32 :  train_loss = 0.668, train_acc = 55.06%, dev_loss = 0.717, dev_acc = 53.13%
epoch = 33 :  train_loss = 0.665, train_acc = 55.47%, dev_loss = 0.713, dev_acc = 52.45%
epoch = 34 :  train_loss = 0.663, train_acc = 55.80%, dev_loss = 0.713, dev_acc = 53.17%
epoch = 35 :  train_loss = 0.663, train_acc = 55.46%, dev_loss = 0.713, dev_acc = 52.65%
epoch = 36 :  train_loss = 0.649, train_acc = 60.63%, dev_loss = 0.688, dev_acc = 62.12%
epoch = 37 :  train_loss = 0.640, train_acc = 63.75%, dev_loss = 0.689, dev_acc = 60.96%
epoch = 38 :  train_loss = 0.652, train_acc = 59.89%, dev_loss = 0.697, dev_acc = 57.65%
epoch = 39 :  train_loss = 0.655, train_acc = 58.81%, dev_loss = 0.706, dev_acc = 53.71%
epoch = 40 :  train_loss = 0.661, train_acc = 55.94%, dev_loss = 0.707, dev_acc = 54.12%
epoch = 41 :  train_loss = 0.654, train_acc = 57.61%, dev_loss = 0.732, dev_acc = 53.49%
epoch = 42 :  train_loss = 0.657, train_acc = 56.41%, dev_loss = 0.710, dev_acc = 54.98%
epoch = 43 :  train_loss = 0.641, train_acc = 62.07%, dev_loss = 0.686, dev_acc = 62.00%
epoch = 44 :  train_loss = 0.640, train_acc = 61.98%, dev_loss = 0.682, dev_acc = 61.96%
epoch = 45 :  train_loss = 0.635, train_acc = 62.63%, dev_loss = 0.701, dev_acc = 56.87%
epoch = 46 :  train_loss = 0.658, train_acc = 56.43%, dev_loss = 0.700, dev_acc = 59.63%
epoch = 47 :  train_loss = 0.634, train_acc = 63.87%, dev_loss = 0.692, dev_acc = 61.46%
epoch = 48 :  train_loss = 0.646, train_acc = 60.44%, dev_loss = 0.706, dev_acc = 57.70%
epoch = 49 :  train_loss = 0.653, train_acc = 57.99%, dev_loss = 0.716, dev_acc = 52.55%
epoch = 50 :  train_loss = 0.655, train_acc = 57.76%, dev_loss = 0.719, dev_acc = 52.46%
================================================================================================================================
test_loss: 0.675      test_acc: 62.90%
end

Credits


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

作者

arwin.yu.98@gmail.com

相关文章