Recurrent Neural Networks (RNN)

20240913202835406 Deep Learning


create by Arwin Yu

Tutorial 03 – Recurrent Neural Networks – Sequential Tasks


20240913202904521

Checklist Agenda


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

Language 自然语言处理和序列数据


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

语言模型(Language Models)


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

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


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

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

20240913203042685

词嵌入(Word embeddings)


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

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

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

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

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

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

20240913203146354

Image Source

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

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

20240913203330361

Image Source

20240913203434842

Image Source

20240913203513194

Word2vec

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

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

20240913203547275

训练网络执行代理任务:左图显示了一个网络在执行代理任务(例如预测一个词的上下文词)时的训练过程。输入的是一个句子片段“…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


20240913204007572

Image Source

Connection Sync 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的句子比批处理中最长的句子。单词,或者您决定遗漏一些单词,例如名字)。

20240913204112528

Image Source

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

Re Enter Pincode Recurrent Neural Networks (RNNs)


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

20240913204210610

  • Image Source

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

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

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

    20240913204246737

  • Image Source

    20240913204334106

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 时的初始隐藏状态。

20240913204410404

  • Image by Michael Nguyen

RNN的两个常见变体

20240913204503473

?size=100&id=91CnU00i6HLv&format=png&color=000000 这两个变体的设计动机是?


Memory Slot Long Term Short Memory (LSTM)


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

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

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

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

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

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

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

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

20240913204605991

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)。$$

20240913205104920

在 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)
$$

20240913205325161

第二步决定会从当前时刻的输入信息中, 选择什么信息进行处理, 如下图所示。其中 $\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)
$$

20240913205510640

第三步, 使用 $\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)
$$

20240913205843441

最后一步, 决定着当前时刻隐藏状态的输出结果, 如下图所示。其中 $\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}
$$

20240913205843441

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])

Front Gate Open Gated Recurrent Unit (GRU)


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

20240913210213976

  • 假设输入是给定时间步长 $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])

Fire Element 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")

20240913212729782

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

20240913212914960

20240913212931156

Prize Credits


Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top