├── .gitignore ├── README.md ├── config ├── bert_phonics_dictionary_strokes.yaml ├── default.yaml ├── hybrid.yaml ├── test13.yaml ├── test14.yaml └── test15.yaml ├── main.py ├── metric ├── BasicMetric.py ├── CharCorrectPRFMetric.py ├── CharDetectPRFMetric.py ├── PRFMetric.py ├── SentCorrectPRFMetric.py └── SentDetectPRFMetric.py ├── model ├── CrossEntropyLossWithMask.py ├── GlyphClassifier.py ├── GlyphEncoder.py ├── InfoNCELossForCSC.py ├── SpellBERT.py ├── WordClassifier.py └── modeling_bert.py ├── pipeline ├── BasicPipeline.py ├── HybridPipeline.py ├── MultiModelPipeline.py └── MultiTaskPipeline.py ├── processor ├── BasicProcessor.py ├── HybridProcessor.py ├── MultiSourceProcessor.py ├── PinyinConvertor.py └── ReorderProcessor.py ├── reader ├── BasicDataset.py ├── BasicReader.py ├── ConfusionExpandedReader.py ├── HybridReader.py └── WordDictReader.py ├── resources ├── confusion.txt └── dictionary_word.json ├── run.sh ├── test.sh └── utils ├── __pycache__ ├── _global.cpython-39.pyc └── config_parser.cpython-39.pyc ├── _global.py └── config_parser.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | .idea/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LEAD 2 | 3 | Pytorch Implementation for EMNLP2022 Findings (Long Paper) 4 | 5 | "Learning from the Dictionary: Heterogeneous Knowledge Guided Fine-tuning for Chinese Spell Checking". 6 | 7 | ## Requirements 8 | 9 | - python >= 3.9 10 | 11 | - torch == 1.11.0 12 | 13 | - transformers == 4.14.1 14 | 15 | - hanlp == 2.1.0b27 16 | 17 | - pypinyin == 0.46.0 18 | 19 | - einops == 0.4.1 20 | 21 | ## Prepare Data and Pretrained Model 22 | 23 | 1. The raw data contains: 24 | 25 | - SIGHAN Bake-off 2013: http://ir.itc.ntnu.edu.tw/lre/sighan7csc.html 26 | 27 | - SIGHAN Bake-off 2014: http://ir.itc.ntnu.edu.tw/lre/clp14csc.html 28 | 29 | - SIGHAN Bake-off 2015: http://ir.itc.ntnu.edu.tw/lre/sighan8csc.html 30 | 31 | - Wang271K: https://github.com/wdimmy/Automatic-Corpus-Generation 32 | 33 | You can also directly download the processed data from [ReaLiSe](https://github.com/DaDaMrX/ReaLiSe). 34 | 35 | Put the processed data files in the `resources/data` directory. 36 | 37 | 2. Download pretrained Chinese RoBERTa model, `chinese-roberta-wwm-ext`, from [huggingface](https://huggingface.co/hfl/chinese-roberta-wwm-ext), and put the all files in the `resources/pretrained_onlybert` directory. 38 | 39 | 3. Download the glyph-enhanced pretrained model from [GCC](https://github.com/lbe0613/GCC) and put the model files in `resources/glyph`. 40 | 41 | ## Run the Code 42 | 43 | Run `run.sh` or directly execute the following command: 44 | 45 | ```shell 46 | python main.py --config config/bert_phonics_dictionary_strokes.yaml 47 | ``` 48 | 49 | The `config` parameters can be replaced with other files placed in the `config` directory. And the configuration files can also be modified. 50 | 51 | After training, run `test.sh` to test the model. The `checkpoint` parameter should be set correctly. 52 | 53 | Trained checkpoints for SIGHAN datasets can be found [here](https://cloud.tsinghua.edu.cn/d/63b90d13487249c4b6b8/). 54 | 55 | ## Citation 56 | 57 | ``` 58 | @inproceedings{li2022learning, 59 | title={Learning from the Dictionary: Heterogeneous Knowledge Guided Fine-tuning for Chinese Spell Checking}, 60 | author={Li, Yinghui and Ma, Shirong and Zhou, Qingyu and Li, Zhongli and Yangning, Li and Huang, Shulin and Liu, Ruiyang and Li, Chao and Cao, Yunbo and Zheng, Haitao}, 61 | booktitle = {Findings of the Association for Computational Linguistics: EMNLP 2022}, 62 | year={2022} 63 | } 64 | ``` 65 | 66 | -------------------------------------------------------------------------------- /config/bert_phonics_dictionary_strokes.yaml: -------------------------------------------------------------------------------- 1 | meta: 2 | fallback: config/hybrid.yaml 3 | scheduler: get_linear_schedule_with_warmup 4 | model: 5 | - SpellBERT 6 | - WordClassifier 7 | - GlyphClassifier 8 | criterions: 9 | - class: CrossEntropyLossWithMask 10 | weight: 1.0 11 | - class: InfoNCELossForCSC 12 | weight: 0.1 13 | kwargs: 14 | negative_sample: 8 15 | temperature: 1 16 | - class: CrossEntropyLossWithMask 17 | weight: 0.05 18 | - class: CrossEntropyLossWithMask 19 | weight: 0.05 20 | no_cache: True 21 | multi_explanation: 0 22 | use_word_dict: True 23 | use_glyph: True 24 | use_part: True 25 | use_mean_pooling: True 26 | fixed_encoder: True 27 | 28 | dataset: 29 | train: 30 | file: resources/data/trainall.times2.pkl 31 | batch_size: 32 32 | test15: 33 | file: resources/data/test.sighan15.pkl 34 | batch_size: 128 35 | test14: 36 | file: resources/data/test.sighan14.pkl 37 | batch_size: 128 38 | test13: 39 | file: resources/data/test.sighan13.pkl 40 | batch_size: 128 41 | 42 | model: 43 | pretrained_model: ./resources/pretrained_onlybert 44 | glyph_model: ./resources/glyph 45 | 46 | optimizer: 47 | lr: 0.00005 48 | weight_decay: 0.0 49 | eps: 0.00000001 50 | num_warmup_steps: 8000 51 | max_grad_norm: 1.0 52 | 53 | output: 54 | directory: ./output/hybrid_glyph_part_fixed_schedule -------------------------------------------------------------------------------- /config/default.yaml: -------------------------------------------------------------------------------- 1 | meta: 2 | reader: BasicReader 3 | processor: BasicProcessor 4 | pipeline: BasicPipeline 5 | model: 6 | - SpellBERT 7 | optimizer: AdamW 8 | # scheduler: get_linear_schedule_with_warmup 9 | scheduler: null 10 | criterion: CrossEntropyLossWithMask 11 | mode: train 12 | 13 | dataset: 14 | train: 15 | file: resources/data/trainall.times2.pkl 16 | batch_size: 64 17 | test15: 18 | file: resources/data/test.sighan15.pkl 19 | batch_size: 100 20 | test14: 21 | file: resources/data/test.sighan14.pkl 22 | batch_size: 100 23 | test13: 24 | file: resources/data/test.sighan13.pkl 25 | batch_size: 100 26 | 27 | train: 28 | epoch: 10 29 | gradient_step: 1 30 | max_step: 0 31 | 32 | model: 33 | pretrained_model: ./resources/pretrained_onlybert 34 | 35 | optimizer: 36 | lr: 0.00002 37 | weight_decay: 0.0 38 | eps: 0.00000001 39 | num_warmup_steps: 0 40 | max_grad_norm: 1.0 41 | 42 | metric: 43 | train: 44 | - CharCorrectPRFMetric 45 | - SentCorrectPRFMetric 46 | - CharDetectPRFMetric 47 | - SentDetectPRFMetric 48 | test15: 49 | - CharCorrectPRFMetric 50 | - SentCorrectPRFMetric 51 | - CharDetectPRFMetric 52 | - SentDetectPRFMetric 53 | test14: 54 | - CharCorrectPRFMetric 55 | - SentCorrectPRFMetric 56 | - CharDetectPRFMetric 57 | - SentDetectPRFMetric 58 | test13: 59 | - CharCorrectPRFMetric 60 | - SentCorrectPRFMetric 61 | - CharDetectPRFMetric 62 | - SentDetectPRFMetric 63 | 64 | output: 65 | directory: ./output/default 66 | 67 | debug: 68 | epoch_step: 0 -------------------------------------------------------------------------------- /config/hybrid.yaml: -------------------------------------------------------------------------------- 1 | meta: 2 | fallback: ./config/default.yaml 3 | reader: HybridReader 4 | processor: HybridProcessor 5 | pipeline: HybridPipeline 6 | model: 7 | - SpellBERT 8 | - WordClassifier 9 | criterions: 10 | - 11 | class: CrossEntropyLossWithMask 12 | weight: 1.0 13 | - 14 | class: InfoNCELossForCSC 15 | weight: 0.25 16 | kwargs: 17 | negative_sample: 8 18 | temperature: 1 19 | - 20 | class: CrossEntropyLossWithMask 21 | weight: 0.1 22 | mode: train 23 | no_cache: True 24 | expansion_times: 2 25 | share_encoder: False 26 | fixed_encoder: False 27 | multi_explanation: 0 28 | 29 | dataset: 30 | train: 31 | file: resources/data/trainall.times2.pkl 32 | batch_size: 20 33 | test15: 34 | file: resources/data/test.sighan15.pkl 35 | batch_size: 48 36 | 37 | extra_dataset: 38 | confusion_file: resources/confusion.txt 39 | dict_file: resources/dictionary_word.json 40 | negative_sample: 7 41 | select_negative: False 42 | positive_sample: 1 43 | 44 | model: 45 | pretrained_model: ./resources/pretrained_onlybert 46 | 47 | output: 48 | directory: ./output/hybrid -------------------------------------------------------------------------------- /config/test13.yaml: -------------------------------------------------------------------------------- 1 | meta: 2 | reader: BasicReader 3 | processor: BasicProcessor 4 | pipeline: BasicPipeline 5 | model: 6 | - SpellBERT 7 | optimizer: AdamW 8 | # scheduler: get_linear_schedule_with_warmup 9 | scheduler: null 10 | criterion: CrossEntropyLossWithMask 11 | mode: train 12 | 13 | dataset: 14 | train: 15 | file: resources/data/trainall.times2.pkl 16 | batch_size: 64 17 | test13: 18 | file: resources/data/test.sighan13.pkl 19 | batch_size: 128 20 | 21 | train: 22 | epoch: 10 23 | gradient_step: 1 24 | max_step: 0 25 | 26 | model: 27 | pretrained_model: ./resources/pretrained_onlybert 28 | 29 | optimizer: 30 | lr: 0.00002 31 | weight_decay: 0.0 32 | eps: 0.00000001 33 | num_warmup_steps: 0 34 | max_grad_norm: 1.0 35 | 36 | metric: 37 | train: 38 | - CharCorrectPRFMetric 39 | - SentCorrectPRFMetric 40 | - CharDetectPRFMetric 41 | - SentDetectPRFMetric 42 | test13: 43 | - CharCorrectPRFMetric 44 | - SentCorrectPRFMetric 45 | - CharDetectPRFMetric 46 | - SentDetectPRFMetric 47 | 48 | output: 49 | directory: ./output/test15 50 | 51 | debug: 52 | epoch_step: 0 -------------------------------------------------------------------------------- /config/test14.yaml: -------------------------------------------------------------------------------- 1 | meta: 2 | reader: BasicReader 3 | processor: BasicProcessor 4 | pipeline: BasicPipeline 5 | model: 6 | - SpellBERT 7 | optimizer: AdamW 8 | # scheduler: get_linear_schedule_with_warmup 9 | scheduler: null 10 | criterion: CrossEntropyLossWithMask 11 | mode: train 12 | 13 | dataset: 14 | train: 15 | file: resources/data/trainall.times2.pkl 16 | batch_size: 64 17 | test14: 18 | file: resources/data/test.sighan14.pkl 19 | batch_size: 128 20 | 21 | train: 22 | epoch: 10 23 | gradient_step: 1 24 | max_step: 0 25 | 26 | model: 27 | pretrained_model: ./resources/pretrained_onlybert 28 | 29 | optimizer: 30 | lr: 0.00002 31 | weight_decay: 0.0 32 | eps: 0.00000001 33 | num_warmup_steps: 0 34 | max_grad_norm: 1.0 35 | 36 | metric: 37 | train: 38 | - CharCorrectPRFMetric 39 | - SentCorrectPRFMetric 40 | - CharDetectPRFMetric 41 | - SentDetectPRFMetric 42 | test14: 43 | - CharCorrectPRFMetric 44 | - SentCorrectPRFMetric 45 | - CharDetectPRFMetric 46 | - SentDetectPRFMetric 47 | 48 | output: 49 | directory: ./output/test15 50 | 51 | debug: 52 | epoch_step: 0 -------------------------------------------------------------------------------- /config/test15.yaml: -------------------------------------------------------------------------------- 1 | meta: 2 | reader: BasicReader 3 | processor: BasicProcessor 4 | pipeline: BasicPipeline 5 | model: 6 | - SpellBERT 7 | optimizer: AdamW 8 | # scheduler: get_linear_schedule_with_warmup 9 | scheduler: null 10 | criterion: CrossEntropyLossWithMask 11 | mode: train 12 | 13 | dataset: 14 | train: 15 | file: resources/data/trainall.times2.pkl 16 | batch_size: 64 17 | test15: 18 | file: resources/data/test.sighan15.pkl 19 | batch_size: 128 20 | 21 | train: 22 | epoch: 10 23 | gradient_step: 1 24 | max_step: 0 25 | 26 | model: 27 | pretrained_model: ./resources/pretrained_onlybert 28 | 29 | optimizer: 30 | lr: 0.00002 31 | weight_decay: 0.0 32 | eps: 0.00000001 33 | num_warmup_steps: 0 34 | max_grad_norm: 1.0 35 | 36 | metric: 37 | train: 38 | - CharCorrectPRFMetric 39 | - SentCorrectPRFMetric 40 | - CharDetectPRFMetric 41 | - SentDetectPRFMetric 42 | test15: 43 | - CharCorrectPRFMetric 44 | - SentCorrectPRFMetric 45 | - CharDetectPRFMetric 46 | - SentDetectPRFMetric 47 | 48 | output: 49 | directory: ./output/test15 50 | 51 | debug: 52 | epoch_step: 0 -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | import random 4 | import numpy as np 5 | import torch 6 | 7 | from utils._global import _global 8 | from utils.config_parser import Config 9 | 10 | def init_seeds(seed): 11 | os.environ["PYTHONHASHSEED"] = str(seed) 12 | random.seed(seed) 13 | np.random.seed(seed) 14 | torch.manual_seed(seed) 15 | if torch.cuda.is_available(): 16 | torch.cuda.manual_seed_all(seed) 17 | torch.backends.cudnn.deterministic = True 18 | torch.backends.cudnn.benchmark = False 19 | 20 | if __name__ == "__main__": 21 | args_parser = argparse.ArgumentParser() 22 | args_parser.add_argument("--config", required=True) 23 | args_parser.add_argument("--variables", required=False) 24 | args_parser.add_argument("--checkpoint", required=False) 25 | args_parser.add_argument("--device", required=False) 26 | args_parser.add_argument("--seed", required=False, type=int) 27 | 28 | args = args_parser.parse_args() 29 | _global.config_file = args.config 30 | _global.config = Config(args.config) 31 | seed = args.seed if args.seed is not None else 19260817 32 | init_seeds(seed) 33 | 34 | def _eval(value): 35 | try: 36 | return eval(value) 37 | except Exception as e: 38 | return value 39 | 40 | if args.variables is not None: 41 | for item in args.variables.split(","): 42 | key, value = item.split("=") 43 | fields = key.split(".") 44 | _global.config.set(*fields, _eval(value)) 45 | if args.device is not None: 46 | _global.device = args.device 47 | 48 | pipeline = _global.get_instance("pipeline", _global.config.get("meta", "pipeline")) 49 | pipeline.initialize() 50 | if args.checkpoint is not None: 51 | pipeline.load_checkpoint(args.checkpoint) 52 | pipeline.run() 53 | -------------------------------------------------------------------------------- /metric/BasicMetric.py: -------------------------------------------------------------------------------- 1 | class BasicMetric: 2 | def __init__(self, **kwargs): 3 | pass 4 | 5 | def reset(self): 6 | pass 7 | 8 | def __call__(self, prediction, target, **kwargs): 9 | pass -------------------------------------------------------------------------------- /metric/CharCorrectPRFMetric.py: -------------------------------------------------------------------------------- 1 | from metric.PRFMetric import PRFMetric 2 | 3 | 4 | class CharCorrectPRFMetric(PRFMetric): 5 | def __init__(self, **kwargs): 6 | super(CharCorrectPRFMetric, self).__init__(**kwargs) 7 | 8 | def __call__(self, *args, **kwargs): 9 | return super(CharCorrectPRFMetric, self).__call__(*args, **kwargs, is_macro=False, is_detection=False, prefix="cc") -------------------------------------------------------------------------------- /metric/CharDetectPRFMetric.py: -------------------------------------------------------------------------------- 1 | from metric.PRFMetric import PRFMetric 2 | 3 | 4 | class CharDetectPRFMetric(PRFMetric): 5 | def __init__(self, **kwargs): 6 | super(CharDetectPRFMetric, self).__init__(**kwargs) 7 | 8 | def __call__(self, *args, **kwargs): 9 | return super(CharDetectPRFMetric, self).__call__(*args, **kwargs, is_macro=False, is_detection=True, prefix="cd") -------------------------------------------------------------------------------- /metric/PRFMetric.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import transformers 3 | 4 | from metric.BasicMetric import BasicMetric 5 | 6 | 7 | class PRFMetric(BasicMetric): 8 | def __init__(self, **kwargs): 9 | super(PRFMetric, self).__init__(**kwargs) 10 | self.name = kwargs["name"] 11 | self.tokenizer: transformers.PreTrainedTokenizer = kwargs["tokenizer"] 12 | self.removed_index = [self.tokenizer.vocab[token] for token in ["的", "地", "得"]] 13 | self.reset() 14 | 15 | def reset(self): 16 | self.correct_1 = self.pred_1 = self.target_1 = 0 17 | self.correct_all = self.total = 0 18 | 19 | def accumulate(self, prediction, target, inputs, mask, is_macro, is_detection, **kwargs): 20 | """ 21 | :param prediction: Tensor (B, S, H) 22 | :param target: LongTensor (B, S) 23 | :param inputs: LongTensor (B, S) 24 | :param mask: LongTensor (B, S) \in {0,1}^{B*S} 25 | :param is_macro: bool 26 | :param is_detection: bool 27 | :return: 28 | """ 29 | if prediction.size() != target.size(): 30 | prediction = prediction.max(dim=-1).indices 31 | assert prediction.size() == target.size() == inputs.size() == mask.size() 32 | # if self.name == "test13": 33 | if self.name in ["test13", "test14"]: 34 | def remove_de(_source): 35 | source = _source.clone() 36 | removed_mask = torch.zeros_like(source, dtype=torch.bool) 37 | for index in self.removed_index: 38 | removed_mask = removed_mask | (source == index) 39 | source[removed_mask] = inputs[removed_mask] 40 | return source 41 | prediction_removed_de = remove_de(prediction) 42 | correct_matrix = (prediction == target).long() 43 | correct_matrix_removed = (prediction_removed_de == target).long() 44 | diff = ((correct_matrix | correct_matrix_removed) - correct_matrix).bool() 45 | prediction[diff] = prediction_removed_de[diff] 46 | # target = remove_de(target) 47 | prediction_changed = (inputs != prediction) 48 | target_changed = (inputs != target) 49 | mask = mask.bool() 50 | if is_detection: 51 | correct_matrix = (prediction_changed == target_changed).long() 52 | else: 53 | correct_matrix = (prediction == target).long() 54 | if is_macro: 55 | sum_1 = lambda item: (item.bool() & mask).sum(dim=1) 56 | correct_sum = sum_1(correct_matrix) 57 | mask_sum = mask.sum(dim=1) 58 | pred_sum = sum_1(prediction_changed) 59 | target_sum = sum_1(target_changed) 60 | self.correct_1 += (correct_sum == mask_sum)[pred_sum > 0].sum().item() 61 | self.pred_1 += (pred_sum > 0).sum().item() 62 | self.target_1 += (target_sum > 0).sum().item() 63 | self.correct_all += (correct_sum == mask_sum).sum().item() 64 | self.total += pred_sum.shape[0] 65 | else: 66 | get_sum = lambda item, mask: item[mask].sum().item() 67 | self.correct_1 += get_sum(correct_matrix, mask & prediction_changed & target_changed) 68 | self.pred_1 += get_sum(prediction > -1, mask & prediction_changed) 69 | self.target_1 += get_sum(target > -1, mask & target_changed) 70 | self.correct_all += get_sum(correct_matrix, mask) 71 | self.total += mask.sum().item() 72 | 73 | def output(self, prefix="", **kwargs): 74 | metric = {"p": self.correct_1 / self.pred_1 if self.pred_1 > 0 else 1.0, "r": self.correct_1 / self.target_1 if self.target_1 > 0 else 1.0, "a": self.correct_all / self.total if self.total > 0 else 1.0} 75 | metric["f"] = 2 * metric["p"] * metric["r"] / (metric["p"] + metric["r"]) if metric["p"] + metric["r"] > 0 else 0.0 76 | return {prefix + key: value for key, value in metric.items()} 77 | 78 | def __call__(self, prediction, target, **kwargs): 79 | self.accumulate(prediction, target, **kwargs) 80 | return self.output(**kwargs) -------------------------------------------------------------------------------- /metric/SentCorrectPRFMetric.py: -------------------------------------------------------------------------------- 1 | from metric.PRFMetric import PRFMetric 2 | 3 | 4 | class SentCorrectPRFMetric(PRFMetric): 5 | def __init__(self, **kwargs): 6 | super(SentCorrectPRFMetric, self).__init__(**kwargs) 7 | 8 | def __call__(self, *args, **kwargs): 9 | return super(SentCorrectPRFMetric, self).__call__(*args, **kwargs, is_macro=True, is_detection=False, prefix="sc") -------------------------------------------------------------------------------- /metric/SentDetectPRFMetric.py: -------------------------------------------------------------------------------- 1 | from metric.PRFMetric import PRFMetric 2 | 3 | 4 | class SentDetectPRFMetric(PRFMetric): 5 | def __init__(self, **kwargs): 6 | super(SentDetectPRFMetric, self).__init__(**kwargs) 7 | 8 | def __call__(self, *args, **kwargs): 9 | return super(SentDetectPRFMetric, self).__call__(*args, **kwargs, is_macro=True, is_detection=True, prefix="sd") -------------------------------------------------------------------------------- /model/CrossEntropyLossWithMask.py: -------------------------------------------------------------------------------- 1 | from torch import nn 2 | 3 | 4 | class CrossEntropyLossWithMask(nn.Module): 5 | def __init__(self, **kwargs): 6 | super(CrossEntropyLossWithMask, self).__init__() 7 | self.base_criterion = nn.CrossEntropyLoss() 8 | 9 | def forward(self, prediction, target, **kwargs): 10 | if (mask := kwargs.get("mask", None)) is not None: 11 | mask = mask.bool() 12 | return self.base_criterion(prediction[mask], target[mask]) 13 | return self.base_criterion(prediction, target) -------------------------------------------------------------------------------- /model/GlyphClassifier.py: -------------------------------------------------------------------------------- 1 | import einops 2 | import torch 3 | import transformers 4 | from torch import nn 5 | 6 | from model.GlyphEncoder import GlyphEncoder 7 | from utils._global import _global 8 | 9 | 10 | class GlyphClassifier(nn.Module): 11 | def __init__(self): 12 | super(GlyphClassifier, self).__init__() 13 | self.bert = GlyphEncoder() 14 | self.bert.requires_grad_(False) 15 | config: transformers.PretrainedConfig = self.bert.config 16 | self.hidden_size = config.hidden_size 17 | self.transform = nn.Sequential( 18 | nn.Linear(config.hidden_size, config.hidden_size), 19 | nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps) 20 | ) 21 | self.layer_norm = nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps) 22 | 23 | def forward(self, **kwargs): 24 | hidden_states = kwargs["hidden_states"] 25 | start, end = kwargs["glyph_start"], kwargs["glyph_end"] 26 | batch_size, num_samples, _ = kwargs["glyph_input_ids"].shape 27 | glyph_inputs = {key.replace("glyph_", ""): value for key, value in kwargs.items() if key.startswith("glyph_")} 28 | glyph_output = self.bert(**glyph_inputs) 29 | glyph_output = einops.rearrange(self.transform(glyph_output), "(b s) h -> b s h", s=num_samples) 30 | selected_hidden_states = torch.zeros(glyph_output.shape[0], glyph_output.shape[2]).to(_global.device) 31 | for i in range(batch_size): 32 | selected_hidden_states[i] = torch.mean(hidden_states[i, start[i]:end[i]], dim=0) 33 | selected_hidden_states = einops.repeat(self.layer_norm(selected_hidden_states), "b h -> b s h", s=glyph_output.shape[1]) 34 | # print(glyph_output.shape, selected_hidden_states.shape) 35 | score = torch.cosine_similarity(selected_hidden_states, glyph_output) 36 | return score -------------------------------------------------------------------------------- /model/GlyphEncoder.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import einops 4 | import torch 5 | from torch import nn 6 | 7 | from model.modeling_bert import BertForMaskedLM 8 | from utils._global import _global 9 | from transformers import BertConfig 10 | 11 | 12 | class GlyphEncoder(BertForMaskedLM): 13 | def __init__(self): 14 | config = _global.config 15 | glyph_path = config.get("model", "glyph_model") 16 | bert_config = BertConfig.from_pretrained(os.path.join(glyph_path, "config.json")) 17 | super(GlyphEncoder, self).__init__(bert_config) 18 | self.stru_embeddings = nn.Embedding(15, bert_config.hidden_size) 19 | self.keys = ["attention_mask", "position_ids", "type_ids", "char_sep_ids", "inputs_embeds"] 20 | self.input_keys = ["input_ids", "stru_mask", "char_mask"] + self.keys 21 | checkpoint = torch.load(os.path.join(glyph_path, "pytorch_model.bin")) 22 | self.load_state_dict(checkpoint, strict=False) 23 | self.use_mean_pooling = _global.config.get("meta", "use_mean_pooling", default=True) 24 | 25 | def forward(self, **kwargs): 26 | # print({key: value.shape for key, value in kwargs.items()}) 27 | kwargs = {key: einops.rearrange(value, "b s1 s2 -> (b s1) s2") if key in self.input_keys and len(value.shape) == 3 else value for key, value in kwargs.items()} 28 | # print({key: value.shape for key, value in kwargs.items()}) 29 | input_ids, stru_mask = kwargs.pop("input_ids"), kwargs.pop("stru_mask") 30 | stru_input_ids = input_ids * stru_mask - self.config.vocab_size 31 | stru_input_ids[stru_input_ids < 0] = 0 32 | stru_embeddings = self.stru_embeddings(stru_input_ids) 33 | normal_input_ids = input_ids * (1 - stru_mask) 34 | normal_embeddings = self.bert.embeddings.word_embeddings(normal_input_ids) 35 | kwargs["inputs_embeds"] = torch.einsum("bsh,bs->bsh", stru_embeddings, stru_mask) + torch.einsum("bsh,bs->bsh", normal_embeddings, 1 - stru_mask) 36 | inputs = {key: value for key, value in kwargs.items() if key in self.keys} 37 | # print({key: value.shape for key, value in inputs.items()}) 38 | bert_output = self.bert(**inputs, return_dict=True, output_hidden_states=True) 39 | # print(sequence_output.shape, char_mask.shape) 40 | if self.use_mean_pooling: 41 | char_mask = kwargs.pop("char_mask") 42 | char_output = torch.einsum("ijk,ij->ik", bert_output.last_hidden_state, char_mask.float()) 43 | else: 44 | char_output = (hs := bert_output.hidden_states)[-1][:, 0, :] + hs[-2][:, 0, :] 45 | return char_output 46 | 47 | -------------------------------------------------------------------------------- /model/InfoNCELossForCSC.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | import torch 4 | from torch import nn 5 | import einops 6 | 7 | from utils._global import _global 8 | 9 | 10 | class InfoNCELossForCSC(nn.Module): 11 | def __init__(self, **kwargs): 12 | super(InfoNCELossForCSC, self).__init__() 13 | self.base_criterion = nn.CrossEntropyLoss() 14 | self.negative_sample = kwargs["negative_sample"] 15 | self.temperature = kwargs["temperature"] 16 | self.positive_sample = _global.config.get("extra_dataset", "positive_sample", default=1) 17 | self.item_padding = _global.config.get("meta", "item_padding", default=False) 18 | self.normalized = kwargs.get("normalized", False) 19 | self.multi_modal = kwargs.get("multi_modal", False) 20 | 21 | def forward(self, *args, **kwargs): 22 | valid_size = kwargs["valid_size"] 23 | _selection = kwargs["selection"] 24 | hidden_states = kwargs["hidden_states"] 25 | hidden_states_list = [hidden_states] 26 | if self.multi_modal: 27 | hidden_states_list += [kwargs["pho_hidden_states"], kwargs["res_hidden_states"]] 28 | mask = kwargs["mask"] 29 | length = mask.sum(dim=-1) 30 | loss_size = hidden_states.shape[0] - valid_size 31 | if loss_size <= 0: 32 | return 0 33 | if self.item_padding: 34 | assert valid_size == int(loss_size / self.positive_sample) 35 | loss_size = int(loss_size / self.positive_sample) 36 | loss = 0 37 | for k in range(self.positive_sample): 38 | for l, _hidden_states in enumerate(hidden_states_list): 39 | if l == 0: 40 | continue 41 | loss_size = int((_hidden_states.shape[0] - kwargs["valid_size"]) / self.positive_sample) 42 | similar = kwargs["similar"][:loss_size] 43 | # print("\nfuck:", l, _hidden_states.shape[0], loss_size) 44 | _cat = lambda hs, inc: torch.cat((hs[:loss_size][inc], hs[kwargs["valid_size"]:][inc]), dim=0) 45 | _cut = lambda hs, inc: hs[:loss_size][inc] 46 | hidden_states = _hidden_states if l == 0 else (_cat(_hidden_states, similar) if l == 1 else _cat(_hidden_states, ~similar)) 47 | if hidden_states.shape[0] <= 0: 48 | continue 49 | selection = _selection if l == 0 else (_cut(_selection, similar) if l == 1 else _cut(_selection, ~similar)) 50 | loss_size = loss_size if l == 0 else (similar.sum().item() if l == 1 else (~similar).sum().item()) 51 | valid_size = kwargs["valid_size"] if l == 0 else loss_size 52 | # print(l, hidden_states.shape[0], valid_size, loss_size) 53 | anchor = torch.zeros(hidden_states.shape[0], hidden_states.shape[2], device=hidden_states.device) 54 | positive = torch.zeros(hidden_states.shape[0], hidden_states.shape[2], device=hidden_states.device) 55 | negative = torch.zeros(hidden_states.shape[0], self.negative_sample, hidden_states.shape[2], device=hidden_states.device) 56 | for i in range(loss_size): 57 | anchor[i] = hidden_states[i, selection[i]] 58 | if self.item_padding: 59 | positive[i] = hidden_states[valid_size + k * loss_size + i, selection[i]] 60 | else: 61 | positive[i] = hidden_states[valid_size + i, selection[i]] 62 | for j in range(self.negative_sample): 63 | sample = random.randint(1, length[i].item() - 1) 64 | while sample == selection[i].item(): 65 | sample = random.randint(1, length[i].item() - 1) 66 | negative[i, j] = hidden_states[i, sample] 67 | positive_logits = torch.einsum("bh,bh->b", anchor, positive) 68 | negative_logits = torch.einsum("bh,bsh->bs", anchor, negative) 69 | if self.normalized: 70 | eps = 1e-8 71 | positive_logits = positive_logits / ((anchor_norm := anchor.norm(dim=1)) * positive.norm(dim=1) + eps) 72 | negative_logits = negative_logits / (torch.einsum("b,bs->bs", anchor_norm, negative.norm(dim=2)) + eps) 73 | labels = torch.zeros(hidden_states.shape[0], dtype=torch.long, device=hidden_states.device) 74 | logits = torch.cat([einops.rearrange(positive_logits, "(b s) -> b s", s=1), negative_logits], dim=1) 75 | loss += self.base_criterion(logits / self.temperature, labels) 76 | return loss / self.positive_sample 77 | -------------------------------------------------------------------------------- /model/SpellBERT.py: -------------------------------------------------------------------------------- 1 | from torch import nn 2 | import transformers.models.bert.modeling_bert 3 | 4 | from utils._global import _global 5 | 6 | 7 | class SpellBERT(nn.Module): 8 | def __init__(self): 9 | # Components 10 | super(SpellBERT, self).__init__() 11 | self.bert = transformers.BertModel.from_pretrained(_global.config.get("model", "pretrained_model")) 12 | config: transformers.BertConfig = self.bert.config 13 | self.dropout = nn.Dropout(config.hidden_dropout_prob) 14 | self.classifier = nn.Linear(config.hidden_size, config.vocab_size) 15 | self.classifier.weight = self.bert.embeddings.word_embeddings.weight 16 | 17 | # Constants 18 | self.keys = ["input_ids", "attention_mask", "token_type_ids", "inputs_embeds"] 19 | 20 | def forward(self, **kwargs): 21 | inputs = {key: value for key, value in kwargs.items() if key in self.keys} 22 | outputs = self.bert(**inputs, output_hidden_states=True, output_attentions=True, return_dict=True) 23 | sequence_output = outputs.last_hidden_state 24 | logits = self.classifier(self.dropout(sequence_output)) 25 | if kwargs.get("return_output", None): 26 | return logits, (sequence_output, outputs.hidden_states) 27 | if kwargs.get("output_attentions", None): 28 | return logits, outputs.attentions 29 | return logits -------------------------------------------------------------------------------- /model/WordClassifier.py: -------------------------------------------------------------------------------- 1 | import einops 2 | import torch 3 | import transformers 4 | from torch import nn 5 | from torch.nn import functional as F 6 | 7 | from utils._global import _global 8 | 9 | class WordClassifier(nn.Module): 10 | def __init__(self): 11 | super(WordClassifier, self).__init__() 12 | self.bert = transformers.BertModel.from_pretrained(_global.config.get("model", "pretrained_model")) 13 | if _global.config.get("meta", "share_encoder", default=False): 14 | del self.bert 15 | self.bert = None 16 | if _global.config.get("meta", "fixed_encoder", default=False): 17 | self.requires_grad_(False) 18 | config: transformers.BertConfig = self.bert.config 19 | self.hidden_size = config.hidden_size 20 | self.transform = nn.Sequential( 21 | nn.Linear(config.hidden_size, config.hidden_size), 22 | nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps) 23 | ) 24 | self.layer_norm = nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps) 25 | self.multi_explanation = _global.config.get("meta", "multi_explanation", default=0) 26 | self.use_mean_pooling = _global.config.get("meta", "use_mean_pooling", default=False) 27 | self.use_whitening = _global.config.get("meta", "use_whitening", default=False) 28 | self.covariance = self.bias = self.step = None 29 | if self.use_whitening: 30 | self.covariance = torch.zeros(config.hidden_size, config.hidden_size, device=_global.device) 31 | self.bias = torch.zeros(config.hidden_size, device=_global.device) 32 | self.step = 0 33 | self.use_attention = _global.config.get("meta", "use_attention", default=False) 34 | self.attention_transform = None 35 | if self.use_attention: 36 | self.attention_transform = nn.Linear(config.hidden_size, config.hidden_size, bias=False) 37 | 38 | def forward(self, **kwargs): 39 | hidden_states = kwargs["hidden_states"] 40 | all_hidden_states = kwargs["all_hidden_states"] 41 | input_attention_mask = kwargs["attention_mask"] 42 | # print(hidden_states.shape) 43 | start, end = kwargs["extra_start"], kwargs["extra_end"] 44 | batch_size, num_samples, _ = kwargs["extra_input_ids"].shape 45 | input_ids = einops.rearrange(kwargs["extra_input_ids"], "b s1 s2 -> (b s1) s2") 46 | attention_mask = einops.rearrange(kwargs["extra_attention_mask"], "b s1 s2 -> (b s1) s2") 47 | if self.multi_explanation: 48 | num_samples = int(num_samples / self.multi_explanation) 49 | index = kwargs["extra_index"] 50 | index_sum = index.sum().item() 51 | compact_input_ids = torch.zeros(index_sum, input_ids.shape[1], dtype=input_ids.dtype).to(_global.device) 52 | compact_attention_mask = torch.zeros_like(compact_input_ids) 53 | step = 0 54 | for i in range(index.shape[0]): 55 | for j in range(index.shape[1]): 56 | offset = (i * num_samples + j) * self.multi_explanation 57 | # print(i, j, index[i, j], step, offset) 58 | # print(index.shape, input_ids.shape, compact_input_ids.shape) 59 | compact_input_ids[step:step + index[i, j]] = input_ids[offset:offset + index[i, j]] 60 | compact_attention_mask[step:step + index[i, j]] = attention_mask[offset:offset + index[i, j]] 61 | step += index[i, j] 62 | input_ids = compact_input_ids 63 | attention_mask = compact_attention_mask 64 | bert_output = self.bert(input_ids=input_ids, attention_mask=attention_mask, output_hidden_states=True, return_dict=True) 65 | sequence_output = bert_output.last_hidden_state 66 | if self.use_whitening: 67 | word_hidden_states = torch.einsum("ijk,ij,i->ik", bert_output.hidden_states[-1] + bert_output.hidden_states[-2], attention_mask.float(), 1 / attention_mask.float().sum(dim=1)) 68 | bias = (detach_hidden_states := word_hidden_states.detach()).mean(dim=0) 69 | covariance = torch.cov(detach_hidden_states.T) 70 | MA = lambda old, new: old * self.step / (self.step + 1) + new / (self.step + 1) 71 | self.bias, self.covariance = MA(self.bias, bias), MA(self.covariance, covariance) 72 | U, S, Vh = torch.linalg.svd(self.covariance) 73 | kernel = torch.einsum("ij,jk->ik", U, torch.diag(1 / torch.sqrt(S))) 74 | sequence_cls = torch.einsum("ik,kk->ik", word_hidden_states + self.bias, kernel) 75 | else: 76 | if self.use_mean_pooling or self.use_attention: 77 | # sequence_cls = torch.einsum("ijk,ij,i->ik", sequence_output, attention_mask.float(), 1 / attention_mask.float().sum(dim=1)) 78 | sequence_cls = torch.einsum("ijk,ij,i->ik", bert_output.hidden_states[-1] + bert_output.hidden_states[-2], attention_mask.float(), 1 / attention_mask.float().sum(dim=1)) 79 | # sentence_pooling = torch.einsum("ijk,ij,i->ik", hidden_states, input_attention_mask.float(), 1 / input_attention_mask.float().sum(dim=1)) 80 | # print(all_hidden_states[-1], input_attention_mask.shape, bert_output.last_hidden_state.shape) 81 | sentence_pooling = torch.einsum("ijk,ij,i->ik", all_hidden_states[-1] + all_hidden_states[-2], input_attention_mask.float(), 1 / input_attention_mask.float().sum(dim=1)) 82 | else: 83 | sequence_cls = sequence_output[:, 0, :] 84 | if self.multi_explanation: 85 | pooling_cls = torch.zeros(batch_size * num_samples, sequence_cls.shape[1]).to(_global.device) 86 | step = 0 87 | if self.use_mean_pooling: 88 | for i in range(index.shape[0]): 89 | for j in range(index.shape[1]): 90 | similarity = torch.einsum("j,ij,i->i", v1 := sentence_pooling[i], v2 := sequence_cls[step:step+index[i, j]], 1 / (v1.norm() * v2.norm(dim=1))).detach() 91 | max_index = similarity.max(dim=0).indices 92 | pooling_cls[i * num_samples + j] = v2[max_index] 93 | step += index[i, j] 94 | elif self.use_attention: 95 | for i in range(index.shape[0]): 96 | for j in range(index.shape[1]): 97 | similarity = torch.einsum("j,ij->i", v1 := sentence_pooling[i], self.attention_transform(v2 := sequence_cls[step:step+index[i, j]])) / torch.sqrt(torch.tensor(self.hidden_size).to(_global.device)) 98 | pooling_cls[i * num_samples + j] = torch.einsum("i,ij->j", F.softmax(similarity, dim=0), v2) 99 | step += index[i, j] 100 | else: 101 | for i in range(index.shape[0]): 102 | for j in range(index.shape[1]): 103 | pooling_cls[i * num_samples + j] = sequence_cls[step:step + index[i, j]].mean(dim=0) 104 | step += index[i, j] 105 | sequence_cls = pooling_cls 106 | cls_output = einops.rearrange(self.transform(sequence_cls), "(b s) h -> b s h", s=num_samples) 107 | selected_hidden_states = torch.zeros(cls_output.shape[0], cls_output.shape[2]).to(_global.device) 108 | for i in range(batch_size): 109 | selected_hidden_states[i] = torch.mean(hidden_states[i, start[i]:end[i]], dim=0) 110 | selected_hidden_states = self.layer_norm(selected_hidden_states) 111 | selected_hidden_states = einops.repeat(selected_hidden_states, "b h -> b s h", s=cls_output.shape[1]) 112 | score = torch.cosine_similarity(selected_hidden_states, cls_output) 113 | return score 114 | -------------------------------------------------------------------------------- /pipeline/BasicPipeline.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import pickle 4 | import re 5 | import shutil 6 | import time 7 | from functools import reduce 8 | 9 | import numpy as np 10 | import pandas as pd 11 | import torch 12 | from torch import nn 13 | from torch.utils.data import DataLoader 14 | 15 | from processor.BasicProcessor import BasicProcessor 16 | from reader.BasicReader import BasicReader 17 | from utils._global import _global 18 | 19 | class BasicPipeline: 20 | def __init__(self): 21 | # Variables 22 | self.data_loaders = {} 23 | self.metrics = {} 24 | self.current_epoch = 0 25 | # Constants 26 | self.total_epoch = _global.config.get("train", "epoch") 27 | self.save_dir = _global.config.get("output", "directory") 28 | if not os.path.exists(self.save_dir): 29 | os.makedirs(self.save_dir) 30 | if not os.path.exists(file := os.path.join(self.save_dir, os.path.split(_global.config_file)[-1])) or not os.path.samefile(_global.config_file, file): 31 | shutil.copy(_global.config_file, file) 32 | self.optim_params_list = ["lr", "betas", "eps", "weight_decay"] 33 | self.no_decay = ["bias", "layernorm.weight"] 34 | self.use_swa = _global.config.get("meta", "use_swa", default=False) 35 | self.swa_start_epoch = _global.config.get("meta", "swa_start_epoch", default=0) 36 | 37 | def _get_optimizer(self, *models): 38 | return eval("_optimizer(params=_params, {})".format(", ".join([f"{key}={value}" for key, value in _global.config["optimizer"].items() if key in self.optim_params_list])), {"_optimizer": getattr(__import__("torch.optim", fromlist=["dummy"]), _global.config.get("meta", "optimizer")), "_params": [{"params": (p for model in models for name, p in model.named_parameters() if any(n in name for n in self.no_decay))}, {"params": (p for model in models for name, p in model.named_parameters() if not any(n in name for n in self.no_decay)), "weight_decay": 0.0}]}) 39 | 40 | def _get_scheduler(self, optimizer): 41 | scheduler = _global.config.get("meta", "scheduler") 42 | if scheduler is None: 43 | return None 44 | max_step = _global.config.get("train", "max_step") 45 | gradient_step = _global.config.get("train", "gradient_step") 46 | total_step = round(self.total_epoch * len(self.data_loaders["train"]) / gradient_step) 47 | kwargs = {"optimizer": optimizer, "num_warmup_steps": _global.config.get("optimizer", "num_warmup_steps"), "num_training_steps": min(max_step, total_step) if max_step > 0 else total_step} 48 | lib = __import__("transformers.optimization", fromlist=["dummy"]) 49 | if hasattr(lib, scheduler): 50 | _scheduler = getattr(lib, scheduler)(**kwargs) 51 | else: 52 | lib = __import__("torch.optim.lr_scheduler", fromlist=["dummy"]) 53 | if hasattr(lib, scheduler): 54 | _scheduler = getattr(lib, scheduler)(**kwargs) 55 | else: 56 | raise NotImplementedError 57 | return _scheduler 58 | 59 | def get_optimizer(self): 60 | self.optimizer = self._get_optimizer(self.model) 61 | self.scheduler = self._get_scheduler(self.optimizer) 62 | 63 | def get_loader(self): 64 | for key, value in self.reader.datasets.items(): 65 | shuffle = key.startswith("train") 66 | batch_size = _global.config.get("dataset", key, "batch_size") 67 | if batch_size <= 0: 68 | batch_size = len(value) 69 | self.data_loaders[key] = DataLoader(dataset=value, collate_fn=lambda data: self.processor.process(data, key), shuffle=shuffle, drop_last=False, batch_size=batch_size) 70 | 71 | def init_model(self): 72 | config = _global.config 73 | self.reader: BasicReader = _global.get_instance("reader", config.get("meta", "reader")) 74 | self.processor: BasicProcessor = _global.get_instance("processor", config.get("meta", "processor")) 75 | 76 | self.models = [] 77 | for name in config.get("meta", "model"): 78 | model_class = _global.get_class("model", name) 79 | if hasattr(model_class, "from_pretrained"): 80 | model = model_class.from_pretrained(_global.config.get("model", "pretrained_model")) 81 | if hasattr(model, "after_load_pretrained"): 82 | model.after_load_pretrained() 83 | else: 84 | model = model_class() 85 | self.models.append(model) 86 | # self.models = [_global.get_instance("model", name) for name in config.get("meta", "model")] 87 | for i, model in enumerate(self.models): 88 | if hasattr(model, "to"): 89 | self.models[i] = model.to(_global.device) 90 | self.model = self.models[0] 91 | self.swa_model = None 92 | if self.use_swa: 93 | self.swa_model = torch.optim.swa_utils.AveragedModel(self.model, avg_fn=lambda ax, x, num: ax + (x - ax) / (num + 1)) 94 | 95 | def init_criterion(self): 96 | config = _global.config 97 | try: 98 | self.criterion = _global.get_instance("model", config.get("meta", "criterion")) 99 | except Exception as e: 100 | self.criterion = getattr(nn, config.get("meta", "criterion"))() 101 | self.metrics = {key: [_global.get_instance("metric", item, name=key, tokenizer=self.reader.tokenizer) for item in value] for key, value in config.get("metric").items()} 102 | 103 | def initialize(self): 104 | self.init_model() 105 | self.init_criterion() 106 | self.reader.read() 107 | self.get_loader() 108 | self.get_optimizer() 109 | 110 | def run_one_epoch(self, index: str, **kwargs) -> None: 111 | gradient_step = _global.config.get("train", "gradient_step") 112 | max_step = _global.config.get("train", "max_step") 113 | is_train = index.startswith("train") 114 | debug_step = _global.config.get("debug", "epoch_step", default=0) 115 | valid_times = _global.config.get("train", "valid_times", default=0) 116 | part = kwargs.get("part", 0) 117 | part = f"-{part}" if part else "" 118 | if is_train: 119 | self.model.train() 120 | torch.set_grad_enabled(True) 121 | else: 122 | self.model.eval() 123 | torch.set_grad_enabled(False) 124 | data_loader = self.data_loaders[index] 125 | metrics = self.metrics.get(index, []) 126 | for item in metrics: 127 | item.reset() 128 | start_time = time.time() 129 | total_loss = 0 130 | MA = lambda current, total, step: total * step / (step + 1) + current / (step + 1) 131 | metrics_result = {} 132 | for step, batch in enumerate(data_loader): 133 | if is_train and max_step > 0 and self.current_epoch * len(data_loader) + step > max_step: 134 | return 135 | raw_inputs = batch.pop("raw_inputs", None) 136 | batch = batch["inputs"] 137 | target = batch.get("target", None) 138 | kwargs = {} 139 | if (mask := batch.get("target_mask", None)) is not None: 140 | kwargs["mask"] = mask 141 | if self.use_swa and self.current_epoch >= self.swa_start_epoch and (not is_train): 142 | if self.swa_model.n_averaged == 0: 143 | self.swa_model.update_parameters(self.model) 144 | prediction = self.swa_model(**batch) 145 | else: 146 | prediction = self.model(**batch) 147 | loss = self.criterion(prediction, target, **kwargs) 148 | total_loss = MA(loss.item(), total_loss, step) 149 | metrics_result = reduce(lambda x, y: {**x, **y}, [metric(prediction, target, inputs=batch["input_ids"], **kwargs) for metric in metrics], {}) 150 | metrics_filter = ",".join([f"{key}={round(value, 3)}" for key, value in metrics_result.items()]) 151 | if is_train: 152 | loss.backward() 153 | torch.nn.utils.clip_grad_norm_(self.model.parameters(), _global.config.get("optimizer", "max_grad_norm")) 154 | if (step + 1) % gradient_step == 0: 155 | self.optimizer.step() 156 | if self.scheduler is not None: 157 | self.scheduler.step() 158 | self.optimizer.zero_grad() 159 | total_time = time.time() - start_time 160 | print(f"\rE{self.current_epoch}{part} S{step + 1}/{len(data_loader)} {index[0].upper() + index[1:]} {int(total_time / 60)}min{round(total_time) % 60}s Loss={round(total_loss, 4)} {metrics_filter}", end="") 161 | if is_train and (step + 1) % (size := int(len(data_loader) / valid_times + 1) + 1) == 0: 162 | print() 163 | if self.use_swa and self.current_epoch >= self.swa_start_epoch: 164 | self.swa_model.update_parameters(self.model) 165 | p = int((step + 1) / size) 166 | for key in self.data_loaders: 167 | if key.startswith("test"): 168 | self.run_one_epoch(key, part=p) 169 | self.save_checkpoint(f"{self.save_dir}/{self.current_epoch}-{p}.pkl") 170 | self.model.train() 171 | torch.set_grad_enabled(True) 172 | if debug_step > 0 and step >= debug_step: 173 | break 174 | if is_train: 175 | self.save_checkpoint(f"{self.save_dir}/{self.current_epoch}.pkl") 176 | if hasattr(self.model, "save"): 177 | self.model.save(f"{self.save_dir}/extra") 178 | if hasattr(self.reader, "save"): 179 | self.reader.save(f"{self.save_dir}/extra") 180 | json.dump(metrics_result, open(f"{self.save_dir}/{self.current_epoch}{part}_{index}_metrics.json", "w+", encoding="utf-8"), indent=4) 181 | print() 182 | 183 | def run(self): 184 | mode = _global.config.get("meta", "mode") 185 | if mode == "train": 186 | for self.current_epoch in range(self.total_epoch): 187 | for key in self.data_loaders: 188 | self.run_one_epoch(key) 189 | elif mode == "test": 190 | for key in self.data_loaders: 191 | if key.startswith("test"): 192 | self.run_one_epoch(key) 193 | else: 194 | raise NotImplementedError 195 | 196 | def save_checkpoint(self, ckpt_file): 197 | save_model = self.swa_model if self.swa_model is not None else self.model 198 | checkpoint = {"model": save_model.state_dict(), "optimizer": self.optimizer.state_dict(), "epoch": self.current_epoch} 199 | pickle.dump(checkpoint, open(ckpt_file, "wb")) 200 | 201 | def load_checkpoint(self, ckpt_file): 202 | checkpoint = pickle.load(open(ckpt_file, "rb")) 203 | self.model.load_state_dict(checkpoint["model"]) 204 | self.optimizer.load_state_dict(checkpoint["optimizer"]) 205 | self.current_epoch = checkpoint["epoch"] -------------------------------------------------------------------------------- /pipeline/HybridPipeline.py: -------------------------------------------------------------------------------- 1 | import json 2 | import time 3 | from functools import reduce 4 | 5 | import torch 6 | 7 | from pipeline.MultiModelPipeline import MultiModelPipeline 8 | from utils._global import _global 9 | 10 | 11 | class HybridPipeline(MultiModelPipeline): 12 | def __init__(self): 13 | super(HybridPipeline, self).__init__() 14 | 15 | def run_one_epoch(self, index: str, **kwargs) -> None: 16 | gradient_step = _global.config.get("train", "gradient_step") 17 | max_step = _global.config.get("train", "max_step") 18 | is_train = index.startswith("train") 19 | debug_step = _global.config.get("debug", "epoch_step", default=0) 20 | expansion_times = _global.config.get("meta", "expansion_times", default=1) 21 | valid_times = _global.config.get("train", "valid_times", default=0) 22 | part = kwargs.get("part", 0) 23 | part = f"-{part}" if part else "" 24 | # model, helper = self.models 25 | model = self.models[0] 26 | if is_train: 27 | # model.train() 28 | # helper.train() 29 | for _model in self.models: 30 | _model.train() 31 | torch.set_grad_enabled(True) 32 | else: 33 | # model.eval() 34 | # helper.eval() 35 | for _model in self.models: 36 | _model.eval() 37 | torch.set_grad_enabled(False) 38 | data_loader = self.data_loaders[index] 39 | metrics = self.metrics.get(index, []) 40 | for item in metrics: 41 | item.reset() 42 | start_time = time.time() 43 | total_loss = 0 44 | MA = lambda current, total, step: total * step / (step + 1) + current / (step + 1) 45 | metrics_result = {} 46 | output = [] 47 | for step, batch in enumerate(data_loader): 48 | if is_train and max_step > 0 and self.current_epoch * len(data_loader) + step > max_step: 49 | return 50 | meta_info = batch.pop("meta", {}) 51 | raw_inputs = batch.pop("raw_inputs", None) 52 | extra_batch, batch = batch["inputs"] 53 | target = batch.get("target", None) 54 | kwargs = {} 55 | if (mask := batch.get("target_mask", None)) is not None: 56 | kwargs["mask"] = mask 57 | input_ids = batch["input_ids"] 58 | if self.use_swa and self.current_epoch >= self.swa_start_epoch and (not is_train): 59 | if self.swa_model.n_averaged == 0: 60 | self.swa_model.update_parameters(model) 61 | prediction, hidden_states = self.swa_model(**batch, return_output=True) 62 | else: 63 | prediction, hidden_states = model(**batch, return_output=True) 64 | 65 | if isinstance(hidden_states, tuple): 66 | if len(hidden_states) == 2: 67 | kwargs["hidden_states"], kwargs["all_hidden_states"] = hidden_states 68 | else: 69 | kwargs["hidden_states"], kwargs["all_hidden_states"], kwargs["pho_hidden_states"], kwargs["res_hidden_states"] = hidden_states 70 | else: 71 | kwargs["hidden_states"] = hidden_states 72 | expansion_flag = False 73 | if valid_size := meta_info.get("valid_size"): 74 | assert valid_size == extra_batch["input_ids"].shape[0], f"{input_ids.shape}\n{extra_batch['input_ids'].shape}" 75 | prediction = prediction[:valid_size] 76 | target = target[:valid_size] 77 | kwargs["mask"] = kwargs["mask"][:valid_size] 78 | kwargs["valid_size"] = valid_size 79 | expansion_flag = True 80 | elif expansion_times > 1: 81 | batch_size = prediction.shape[0] 82 | valid_size = int(batch_size / expansion_times) 83 | prediction = prediction[:valid_size] 84 | target = target[:valid_size] 85 | kwargs["mask"] = kwargs["mask"][:valid_size] 86 | expansion_flag = True 87 | if expansion_flag and (selection := batch.pop("selection", None)) is not None: 88 | kwargs["selection"] = selection[:valid_size] 89 | input_ids = input_ids[:valid_size] 90 | kwargs["similar"] = batch.pop("similar", None)[:valid_size] 91 | metrics_result = reduce(lambda x, y: {**x, **y}, [metric(prediction, target, inputs=input_ids, **kwargs) for metric in metrics], {}) 92 | metrics_filter = ",".join([f"{key}={round(value, 3)}" for key, value in metrics_result.items()]) 93 | if is_train: 94 | (criterion1, weight1), (criterion2, weight2) = self.criterions[:2] 95 | loss: torch.Tensor = weight1 * criterion1(prediction, target, **kwargs) 96 | loss += weight2 * criterion2(prediction, target, **kwargs) 97 | # reorder_index = meta_info.get("reorder_index") 98 | reorder_index = meta_info.get("inverted_reorder_index") 99 | kwargs["hidden_states"] = kwargs["hidden_states"][reorder_index] 100 | kwargs["all_hidden_states"] = tuple(kwargs["all_hidden_states"][i][reorder_index] for i in range(-2, 0)) 101 | for i, (criterion, weight) in enumerate(self.criterions[2:]): 102 | name = "glyph" if "glyph" in self.models[i + 1].__class__.__name__.lower() else "extra" 103 | extra_label = extra_batch.pop(f"{name}_label") 104 | extra_prediction = self.models[i + 1](**extra_batch, **kwargs) 105 | loss += weight * criterion(extra_prediction, extra_label, **{key: value for key, value in kwargs.items() if key != "mask"}) 106 | loss /= gradient_step 107 | total_loss = MA(loss.item(), total_loss, step) 108 | loss.backward() 109 | for i in range(len(self.models)): 110 | torch.nn.utils.clip_grad_norm_(self.models[i].parameters(), _global.config.get("optimizer", "max_grad_norm")) 111 | if (step + 1) % gradient_step == 0: 112 | self.optimizers[i].step() 113 | if self.schedulers[i] is not None: 114 | self.schedulers[i].step() 115 | self.optimizers[i].zero_grad() 116 | else: 117 | tokenizer = self.reader.tokenizer 118 | prediction = prediction.max(dim=-1).indices 119 | prediction_tokens_list = tokenizer.batch_decode(prediction, skip_special_tokens=False) 120 | target_tokens_list = tokenizer.batch_decode(target, skip_special_tokens=False) 121 | input_tokens_list = tokenizer.batch_decode(input_ids, skip_special_tokens=False) 122 | for input_tokens, target_tokens, prediction_tokens in zip(input_tokens_list, target_tokens_list, prediction_tokens_list): 123 | input_tokens = input_tokens.split(" ") 124 | target_tokens = target_tokens.split(" ") 125 | input_sep = input_tokens.index("[SEP]") 126 | target_sep = target_tokens.index("[SEP]") 127 | assert input_sep == target_sep 128 | input_tokens = " ".join(input_tokens[1:input_sep]) 129 | target_tokens = " ".join(target_tokens[1:target_sep]) 130 | prediction_tokens = " ".join(prediction_tokens.split(" ")[1:target_sep]) 131 | output.append({"原文": input_tokens, "答案": target_tokens, "预测": prediction_tokens}) 132 | total_time = time.time() - start_time 133 | print(f"\rE{self.current_epoch}{part} S{step + 1}/{len(data_loader)} {index[0].upper() + index[1:]} {int(total_time / 60)}min{round(total_time) % 60}s Loss={round(total_loss, 4)} {metrics_filter}", end="") 134 | if debug_step > 0 and step >= debug_step: 135 | break 136 | if is_train and (step + 1) % (size := int(len(data_loader) / valid_times + 1) + 1) == 0: 137 | print() 138 | if self.use_swa and self.current_epoch >= self.swa_start_epoch: 139 | self.swa_model.update_parameters(model) 140 | p = int((step + 1) / size) 141 | for key in self.data_loaders: 142 | if key.startswith("test"): 143 | self.run_one_epoch(key, part=p) 144 | self.save_checkpoint(f"{self.save_dir}/{self.current_epoch}-{p}.pkl") 145 | # model.train() 146 | # helper.train() 147 | for _model in self.models: 148 | _model.train() 149 | torch.set_grad_enabled(True) 150 | if is_train: 151 | self.save_checkpoint(f"{self.save_dir}/{self.current_epoch}.pkl") 152 | else: 153 | json.dump(output, open(f"{self.save_dir}/{self.current_epoch}{part}_{index}_output.json", "w+", encoding="utf-8"), ensure_ascii=False, indent=4) 154 | json.dump(metrics_result, open(f"{self.save_dir}/{self.current_epoch}{part}_{index}_metrics.json", "w+", encoding="utf-8"), indent=4) 155 | print() -------------------------------------------------------------------------------- /pipeline/MultiModelPipeline.py: -------------------------------------------------------------------------------- 1 | import json 2 | import time 3 | from functools import reduce 4 | 5 | import torch 6 | 7 | from pipeline.MultiTaskPipeline import MultiTaskPipeline 8 | from utils._global import _global 9 | 10 | 11 | class MultiModelPipeline(MultiTaskPipeline): 12 | def __init__(self): 13 | super(MultiModelPipeline, self).__init__() 14 | self.share_encoder = _global.config.get("meta", "share_encoder", default=False) 15 | 16 | def init_model(self): 17 | super(MultiModelPipeline, self).init_model() 18 | if self.share_encoder: 19 | self.models[1].bert = self.models[0].bert 20 | 21 | def get_optimizer(self): 22 | self.optimizers = [] 23 | self.schedulers = [] 24 | for model in self.models: 25 | optimizer = self._get_optimizer(model) 26 | scheduler = self._get_scheduler(optimizer) 27 | self.optimizers.append(optimizer) 28 | self.schedulers.append(scheduler) 29 | self.optimizer = self.optimizers[0] 30 | 31 | def run_one_epoch(self, index: str, **kwargs) -> None: 32 | gradient_step = _global.config.get("train", "gradient_step") 33 | max_step = _global.config.get("train", "max_step") 34 | is_train = index.startswith("train") 35 | debug_step = _global.config.get("debug", "epoch_step", default=0) 36 | expansion_times = _global.config.get("meta", "expansion_times", default=1) 37 | valid_times = _global.config.get("train", "valid_times", default=0) 38 | part = kwargs.get("part", 0) 39 | part = f"-{part}" if part else "" 40 | # model, helper = self.models 41 | model = self.models[0] 42 | if is_train: 43 | # model.train() 44 | # helper.train() 45 | for _model in self.models: 46 | _model.train() 47 | torch.set_grad_enabled(True) 48 | else: 49 | # model.eval() 50 | # helper.eval() 51 | for _model in self.models: 52 | _model.eval() 53 | torch.set_grad_enabled(False) 54 | data_loader = self.data_loaders[index] 55 | metrics = self.metrics.get(index, []) 56 | for item in metrics: 57 | item.reset() 58 | start_time = time.time() 59 | total_loss = 0 60 | MA = lambda current, total, step: total * step / (step + 1) + current / (step + 1) 61 | metrics_result = {} 62 | for step, batch in enumerate(data_loader): 63 | if is_train and max_step > 0 and self.current_epoch * len(data_loader) + step > max_step: 64 | return 65 | meta_info = batch.pop("meta", {}) 66 | raw_inputs = batch.pop("raw_inputs", None) 67 | batch = batch["inputs"] 68 | target = batch.get("target", None) 69 | # print(batch.keys()) 70 | kwargs = {} 71 | if (mask := batch.get("target_mask", None)) is not None: 72 | kwargs["mask"] = mask 73 | input_ids = batch["input_ids"] 74 | if self.use_swa and self.current_epoch >= self.swa_start_epoch and (not is_train): 75 | if self.swa_model.n_averaged == 0: 76 | self.swa_model.update_parameters(model) 77 | prediction, hidden_states = self.swa_model(**batch, return_output=True) 78 | else: 79 | prediction, hidden_states = model(**batch, return_output=True) 80 | 81 | if isinstance(hidden_states, tuple): 82 | if len(hidden_states) == 2: 83 | kwargs["hidden_states"], kwargs["all_hidden_states"] = hidden_states 84 | else: 85 | kwargs["hidden_states"], kwargs["all_hidden_states"], kwargs["pho_hidden_states"], kwargs["res_hidden_states"] = hidden_states 86 | else: 87 | kwargs["hidden_states"] = hidden_states 88 | metrics_result = reduce(lambda x, y: {**x, **y}, [metric(prediction, target, inputs=input_ids, **kwargs) for metric in metrics], {}) 89 | metrics_filter = ",".join([f"{key}={round(value, 3)}" for key, value in metrics_result.items()]) 90 | if is_train: 91 | criterion, weight = self.criterions[0] 92 | loss: torch.Tensor = weight * criterion(prediction, target, **kwargs) 93 | for i, (criterion, weight) in enumerate(self.criterions[1:]): 94 | name = "glyph" if "glyph" in self.models[i + 1].__class__.__name__.lower() else "extra" 95 | extra_label = batch.pop(f"{name}_label") 96 | extra_prediction = self.models[i + 1](**batch, **kwargs) 97 | loss += weight * criterion(extra_prediction, extra_label, **{key: value for key, value in kwargs.items() if key != "mask"}) 98 | loss /= gradient_step 99 | total_loss = MA(loss.item(), total_loss, step) 100 | loss.backward() 101 | for i in range(len(self.models)): 102 | torch.nn.utils.clip_grad_norm_(self.models[i].parameters(), _global.config.get("optimizer", "max_grad_norm")) 103 | if (step + 1) % gradient_step == 0: 104 | self.optimizers[i].step() 105 | if self.schedulers[i] is not None: 106 | self.schedulers[i].step() 107 | self.optimizers[i].zero_grad() 108 | total_time = time.time() - start_time 109 | print(f"\rE{self.current_epoch}{part} S{step + 1}/{len(data_loader)} {index[0].upper() + index[1:]} {int(total_time / 60)}min{round(total_time) % 60}s Loss={round(total_loss, 4)} {metrics_filter}", end="") 110 | if debug_step > 0 and step >= debug_step: 111 | break 112 | if is_train and (step + 1) % (size := int(len(data_loader) / valid_times + 1) + 1) == 0: 113 | print() 114 | if self.current_epoch >= self.swa_start_epoch: 115 | self.swa_model.update_parameters(model) 116 | p = int((step + 1) / size) 117 | for key in self.data_loaders: 118 | if key.startswith("test"): 119 | self.run_one_epoch(key, part=p) 120 | self.save_checkpoint(f"{self.save_dir}/{self.current_epoch}-{p}.pkl") 121 | # model.train() 122 | # helper.train() 123 | for _model in self.models: 124 | _model.train() 125 | torch.set_grad_enabled(True) 126 | if is_train: 127 | self.save_checkpoint(f"{self.save_dir}/{self.current_epoch}.pkl") 128 | json.dump(metrics_result, open(f"{self.save_dir}/{self.current_epoch}{part}_{index}_metrics.json", "w+", encoding="utf-8"), indent=4) 129 | print() -------------------------------------------------------------------------------- /pipeline/MultiTaskPipeline.py: -------------------------------------------------------------------------------- 1 | import json 2 | import time 3 | from functools import reduce 4 | 5 | import torch 6 | from torch import nn 7 | 8 | from pipeline.BasicPipeline import BasicPipeline 9 | from utils._global import _global 10 | 11 | 12 | class MultiTaskPipeline(BasicPipeline): 13 | def __init__(self): 14 | super(MultiTaskPipeline, self).__init__() 15 | 16 | def init_criterion(self): 17 | config = _global.config 18 | self.criterions = [] 19 | for item in config.get("meta", "criterions"): 20 | kwargs = item.get("kwargs", {}) 21 | try: 22 | criterion = _global.get_instance("model", item["class"], **kwargs) 23 | except Exception as e: 24 | criterion = getattr(nn, item["class"])(**kwargs) 25 | self.criterions.append((criterion, item["weight"])) 26 | self.metrics = {key: [_global.get_instance("metric", item, name=key, tokenizer=self.reader.tokenizer) for item in value] for key, value in config.get("metric").items()} 27 | 28 | def run_one_epoch(self, index: str, **kwargs) -> None: 29 | gradient_step = _global.config.get("train", "gradient_step") 30 | max_step = _global.config.get("train", "max_step") 31 | is_train = index.startswith("train") 32 | debug_step = _global.config.get("debug", "epoch_step", default=0) 33 | expansion_times = _global.config.get("meta", "expansion_times", default=1) 34 | valid_times = _global.config.get("train", "valid_times", default=0) 35 | part = kwargs.get("part", 0) 36 | part = f"-{part}" if part else "" 37 | if is_train: 38 | self.model.train() 39 | torch.set_grad_enabled(True) 40 | else: 41 | self.model.eval() 42 | torch.set_grad_enabled(False) 43 | data_loader = self.data_loaders[index] 44 | metrics = self.metrics.get(index, []) 45 | for item in metrics: 46 | item.reset() 47 | start_time = time.time() 48 | total_loss = 0 49 | MA = lambda current, total, step: total * step / (step + 1) + current / (step + 1) 50 | metrics_result = {} 51 | for step, batch in enumerate(data_loader): 52 | if is_train and max_step > 0 and self.current_epoch * len(data_loader) + step > max_step: 53 | return 54 | meta_info = batch.pop("meta", {}) 55 | raw_inputs = batch.pop("raw_inputs", None) 56 | batch = batch["inputs"] 57 | target = batch.get("target", None) 58 | kwargs = {} 59 | if (mask := batch.get("target_mask", None)) is not None: 60 | kwargs["mask"] = mask 61 | input_ids = batch["input_ids"] 62 | if self.use_swa and self.current_epoch >= self.swa_start_epoch and (not is_train): 63 | if self.swa_model.n_averaged == 0: 64 | self.swa_model.update_parameters(self.model) 65 | prediction, hidden_states = self.swa_model(**batch, return_output=True) 66 | else: 67 | prediction, hidden_states = self.model(**batch, return_output=True) 68 | if isinstance(hidden_states, tuple): 69 | if len(hidden_states) == 2: 70 | kwargs["hidden_states"], kwargs["all_hidden_states"] = hidden_states 71 | else: 72 | kwargs["hidden_states"], kwargs["all_hidden_states"], kwargs["pho_hidden_states"], kwargs["res_hidden_states"] = hidden_states 73 | else: 74 | kwargs["hidden_states"] = hidden_states 75 | loss: torch.Tensor = 0 76 | expansion_flag = False 77 | if valid_size := meta_info.get("valid_size", False): 78 | prediction = prediction[:valid_size] 79 | target = target[:valid_size] 80 | kwargs["mask"] = kwargs["mask"][:valid_size] 81 | kwargs["valid_size"] = valid_size 82 | expansion_flag = True 83 | elif expansion_times > 1: 84 | batch_size = prediction.shape[0] 85 | valid_size = int(batch_size / expansion_times) 86 | prediction = prediction[:valid_size] 87 | target = target[:valid_size] 88 | kwargs["mask"] = kwargs["mask"][:valid_size] 89 | expansion_flag = True 90 | if expansion_flag and (selection := batch.pop("selection", None)) is not None: 91 | kwargs["selection"] = selection[:valid_size] 92 | input_ids = input_ids[:valid_size] 93 | kwargs["similar"] = batch.pop("similar", None)[:valid_size] 94 | # print(kwargs["selection"].shape, kwargs["similar"].shape, kwargs["selection"]) 95 | for (criterion, weight) in self.criterions: 96 | loss += weight * criterion(prediction, target, **kwargs) 97 | total_loss = MA(loss.item(), total_loss, step) 98 | metrics_result = reduce(lambda x, y: {**x, **y}, [metric(prediction, target, inputs=input_ids, **kwargs) for metric in metrics], {}) 99 | metrics_filter = ",".join([f"{key}={round(value, 3)}" for key, value in metrics_result.items()]) 100 | if is_train: 101 | loss.backward() 102 | torch.nn.utils.clip_grad_norm_(self.model.parameters(), _global.config.get("optimizer", "max_grad_norm")) 103 | if (step + 1) % gradient_step == 0: 104 | self.optimizer.step() 105 | if self.scheduler is not None: 106 | self.scheduler.step() 107 | self.optimizer.zero_grad() 108 | total_time = time.time() - start_time 109 | print(f"\rE{self.current_epoch}{part} S{step + 1}/{len(data_loader)} {index[0].upper() + index[1:]} {int(total_time / 60)}min{round(total_time) % 60}s Loss={round(total_loss, 4)} {metrics_filter}", end="") 110 | if debug_step > 0 and step >= debug_step: 111 | break 112 | if is_train and (step + 1) % (size := int(len(data_loader) / valid_times + 1) + 1) == 0: 113 | print() 114 | if self.current_epoch >= self.swa_start_epoch: 115 | self.swa_model.update_parameters(self.model) 116 | p = int((step + 1) / size) 117 | for key in self.data_loaders: 118 | if key.startswith("test"): 119 | self.run_one_epoch(key, part=p) 120 | self.save_checkpoint(f"{self.save_dir}/{self.current_epoch}-{p}.pkl") 121 | self.model.train() 122 | torch.set_grad_enabled(True) 123 | if is_train: 124 | self.save_checkpoint(f"{self.save_dir}/{self.current_epoch}.pkl") 125 | if hasattr(self.model, "save"): 126 | self.model.save(f"{self.save_dir}/extra") 127 | if hasattr(self.reader, "save"): 128 | self.reader.save(f"{self.save_dir}/extra") 129 | json.dump(metrics_result, open(f"{self.save_dir}/{self.current_epoch}{part}_{index}_metrics.json", "w+", encoding="utf-8"), indent=4) 130 | print() -------------------------------------------------------------------------------- /processor/BasicProcessor.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import transformers 3 | from transformers import PreTrainedTokenizer 4 | 5 | from processor.PinyinConvertor import PinyinConvertor 6 | from utils._global import _global 7 | 8 | 9 | class BasicProcessor: 10 | def __init__(self): 11 | self.use_multi_modal = _global.config.get("meta", "use_multi_modal", default=False) 12 | self.tokenizer: PreTrainedTokenizer = transformers.BertTokenizer.from_pretrained(_global.config.get("model", "pretrained_model")) 13 | self.pinyin_convertor = None 14 | if self.use_multi_modal: 15 | self.pinyin_convertor = PinyinConvertor() 16 | 17 | def process(self, data: list, mode: str, **kwargs): 18 | output = {key: [] for key in data[0]["inputs"]} 19 | max_length = max([len(item["inputs"]["input_ids"]) for item in data]) 20 | for item in data: 21 | for key, value in item["inputs"].items(): 22 | if isinstance(value, (dict, int)): 23 | output[key].append(value) 24 | elif isinstance(value, list) and isinstance(value[0], int): 25 | output[key].append(value + [0] * (max_length - len(value))) 26 | else: 27 | print(key, value, type(value)) 28 | raise NotImplementedError 29 | for key, value in output.items(): 30 | if isinstance(value, list) and isinstance(value[0], (list, float, int)): 31 | output[key] = torch.tensor(value).to(_global.device) 32 | if self.use_multi_modal: 33 | input_ids = output["input_ids"].reshape(-1).tolist() 34 | input_tokens = self.tokenizer.convert_ids_to_tokens(input_ids) 35 | pinyin_ids, pinyin_length = self.pinyin_convertor.convert_string(input_tokens) 36 | output = output | {"pho_input_ids": torch.nn.utils.rnn.pad_sequence([torch.tensor(x) for x in pinyin_ids], batch_first=True, padding_value=0).to(_global.device), "pho_length": pinyin_length} 37 | if kwargs.get("no_raw", False): 38 | return {"inputs": output} 39 | return {"inputs": output, "raw_inputs": [item["raw_inputs"] for item in data]} -------------------------------------------------------------------------------- /processor/HybridProcessor.py: -------------------------------------------------------------------------------- 1 | from processor.MultiSourceProcessor import MultiSourceProcessor 2 | from processor.ReorderProcessor import ReorderProcessor 3 | 4 | 5 | class HybridProcessor(MultiSourceProcessor, ReorderProcessor): 6 | def __init__(self): 7 | super(HybridProcessor, self).__init__() 8 | 9 | def process(self, data: list, mode: str, **kwargs): 10 | data_1, data_2 = [], [] 11 | raw_inputs = [item.pop("raw_inputs") for item in data] 12 | for item in data: 13 | item_part = item["inputs"].pop("expanded") 14 | data_2.append({"inputs": item_part, "raw_inputs": item.pop("raw_inputs", None)}) 15 | data_1.append(item) 16 | output_1 = MultiSourceProcessor.process(self, data_1, mode, **kwargs, no_raw=True) 17 | output_2 = ReorderProcessor.process(self, data_2, mode, **kwargs, no_raw=True) 18 | return {"inputs": (output_1["inputs"], output_2["inputs"]), "meta": output_2["meta"], "raw_inputs": raw_inputs} -------------------------------------------------------------------------------- /processor/MultiSourceProcessor.py: -------------------------------------------------------------------------------- 1 | import torch 2 | 3 | from processor.BasicProcessor import BasicProcessor 4 | from utils._global import _global 5 | 6 | 7 | class MultiSourceProcessor(BasicProcessor): 8 | def __init__(self): 9 | super(MultiSourceProcessor, self).__init__() 10 | 11 | def process(self, data: list, mode: str, **kwargs): 12 | input_sample = data[0]["inputs"] 13 | # if "extra" in input_sample and "length" in input_sample["extra"]: 14 | # extra_length = max([item["inputs"]["extra"]["length"] for item in data]) 15 | output = {f"{key}_{subkey}": [] for key in input_sample for subkey in input_sample[key]} 16 | max_length = {key: max([len(item["inputs"][key]["input_ids"]) for item in data]) for key in input_sample} 17 | extra_length = {key: max([item["inputs"][key]["length"] for item in data]) for key in input_sample if input_sample[key].get("length", None) is not None} 18 | for item in data: 19 | for key, subitem in item["inputs"].items(): 20 | for subkey, value in subitem.items(): 21 | map_key = f"{key}_{subkey}" 22 | if isinstance(value, (dict, int, bool)): 23 | output[map_key].append(value) 24 | elif isinstance(value, list): 25 | if isinstance(value[0], int): 26 | output[map_key].append(value + [0] * (max_length[key] - len(value))) 27 | elif isinstance(value[0], list): 28 | output[map_key].append([item + [0] * (extra_length[key] - len(item)) for item in value] + [[0] * extra_length[key]] * (max_length[key] - len(value))) 29 | elif isinstance(value, tuple): 30 | output[map_key].append(list(value)) 31 | else: 32 | print(item) 33 | print(key, subkey, value) 34 | raise NotImplementedError 35 | for key, value in output.items(): 36 | if isinstance(value, list) and isinstance(value[0], (list, float, int)): 37 | output[key] = torch.tensor(value).to(_global.device) 38 | output = {key.replace("normal_", ""): value for key, value in output.items()} 39 | if self.use_multi_modal: 40 | input_ids = output["input_ids"].reshape(-1).tolist() 41 | input_tokens = self.tokenizer.convert_ids_to_tokens(input_ids) 42 | pinyin_ids, pinyin_length = self.pinyin_convertor.convert_string(input_tokens) 43 | output = output | {"pho_input_ids": torch.nn.utils.rnn.pad_sequence([torch.tensor(x) for x in pinyin_ids], batch_first=True, padding_value=0).to(_global.device), "pho_length": pinyin_length} 44 | if kwargs.get("no_raw", False): 45 | return {"inputs": output} 46 | return {"inputs": output, "raw_inputs": [item["raw_inputs"] for item in data]} -------------------------------------------------------------------------------- /processor/PinyinConvertor.py: -------------------------------------------------------------------------------- 1 | from typing import Union 2 | 3 | import pypinyin 4 | 5 | from utils._global import _global 6 | 7 | 8 | class PinyinConvertor: 9 | def __init__(self): 10 | self.vocab = {char: index for index, char in enumerate(["P", *[chr(c) for c in range(ord("1"), ord("5") + 1)], *[chr(c) for c in range(ord("a"), ord("z") + 1)], "U"])} 11 | _global.config.set("model", "pho_vocab_size", len(self.vocab)) 12 | 13 | def convert_char(self, char): 14 | if len(char) != 1: 15 | return "U" 16 | p = pypinyin.pinyin(char, style=pypinyin.Style.TONE3, neutral_tone_with_five=True, errors=lambda x: ["U"])[0][0] 17 | p = p[-1] + p[:-1] 18 | return p 19 | 20 | def convert_string(self, string): 21 | pinyin_ids = [[self.vocab.get(alpha) for alpha in self.convert_char(char)] for char in string] 22 | return pinyin_ids, list(map(len, pinyin_ids)) -------------------------------------------------------------------------------- /processor/ReorderProcessor.py: -------------------------------------------------------------------------------- 1 | from processor.BasicProcessor import BasicProcessor 2 | 3 | 4 | class ReorderProcessor(BasicProcessor): 5 | def __init__(self): 6 | super(ReorderProcessor, self).__init__() 7 | 8 | def process(self, data: list, mode: str, **kwargs): 9 | wrap_data = [(item, index) for index, item in enumerate(data)] 10 | wrap_data.sort(key=lambda x: -len(x[0]["inputs"])) 11 | data, reorder_index = [], [] 12 | inverted_reorder_index = [0] * len(wrap_data) 13 | for i, (item, index) in enumerate(wrap_data): 14 | reorder_index.append(index) 15 | inverted_reorder_index[index] = i 16 | data.append(item) 17 | 18 | length = len(data[0]["inputs"]) 19 | flatten_data = [{"inputs": data[i]["inputs"][j], "raw_inputs": {}} for j in range(length) for i in range(len(data)) if j < len(data[i]["inputs"])] 20 | output = super(ReorderProcessor, self).process(flatten_data, mode, **kwargs) 21 | output = output | {"meta": {"valid_size": len(data), "reorder_index": reorder_index, "inverted_reorder_index": inverted_reorder_index}} 22 | return output -------------------------------------------------------------------------------- /reader/BasicDataset.py: -------------------------------------------------------------------------------- 1 | from torch.utils.data import Dataset 2 | 3 | from utils._global import _global 4 | 5 | 6 | class BasicDataset(Dataset): 7 | def __init__(self, raw_data, converter): 8 | super(BasicDataset, self).__init__() 9 | self.raw_data = raw_data 10 | self.converter = converter 11 | self.converted_data = [None] * len(self.raw_data) 12 | self.no_cache = _global.config.get("meta", "no_cache", default=False) 13 | 14 | def __getitem__(self, item): 15 | if self.no_cache: 16 | inputs = self.converter(self.raw_data[item]) 17 | else: 18 | if self.converted_data[item] is None: 19 | self.converted_data[item] = self.converter(self.raw_data[item]) 20 | inputs = self.converted_data[item] 21 | return {"inputs": inputs, "raw_inputs": self.raw_data[item]} 22 | 23 | def __len__(self): 24 | return len(self.raw_data) -------------------------------------------------------------------------------- /reader/BasicReader.py: -------------------------------------------------------------------------------- 1 | import json 2 | import pickle 3 | 4 | import transformers 5 | from transformers import PreTrainedTokenizer 6 | 7 | from reader.BasicDataset import BasicDataset 8 | from utils._global import _global 9 | 10 | class BasicReader: 11 | def __init__(self): 12 | # Variables 13 | self.datasets = {} 14 | self.tokenizer: PreTrainedTokenizer = transformers.BertTokenizer.from_pretrained(_global.config.get("model", "pretrained_model")) 15 | 16 | # Functions 17 | self.load_pickle = lambda file: pickle.load(open(file, "rb")) 18 | self.load_json = lambda file: json.load(open(file, "r+", encoding="utf-8")) 19 | self.tokenize = lambda text: self.tokenizer.__call__(text=text, add_special_tokens=True, max_length=512, truncation=True, return_token_type_ids=False, return_attention_mask=True) 20 | 21 | def read(self): 22 | dataset_items = _global.config.get("dataset") 23 | default_func = lambda file: {"json": self.load_json, "pkl": self.load_pickle}[file.split(".")[-1]](file) 24 | for key, values in dataset_items.items(): 25 | # print(key, values) 26 | func = getattr(self, values["func"]) if "func" in values else default_func 27 | self.datasets[key] = BasicDataset(self.convert_all(func(values["file"]), key), lambda item, key=key: self.convert(item, mode=key)) 28 | # exit() 29 | 30 | def convert_all(self, items, name=""): 31 | # if name == "test13": 32 | # items = [{"src": item["src"], "tgt": "".join([schar if schar != tchar and tchar in ["地", "得"] else tchar for (schar, tchar) in zip(item["src"], item["tgt"])])} for item in items] 33 | return items 34 | 35 | def convert(self, item, mode: str): 36 | source, target = self.tokenize(item["src"]), self.tokenize(item["tgt"]) 37 | return {"input_ids": source.input_ids, "attention_mask": source.attention_mask, "target": target.input_ids, "target_mask": [0] + source.attention_mask[1:-1] + [0]} -------------------------------------------------------------------------------- /reader/ConfusionExpandedReader.py: -------------------------------------------------------------------------------- 1 | import copy 2 | 3 | import numpy as np 4 | 5 | from processor.PinyinConvertor import PinyinConvertor 6 | from reader.BasicReader import BasicReader 7 | from utils._global import _global 8 | 9 | 10 | class ConfusionExpandedReader(BasicReader): 11 | def __init__(self): 12 | super(ConfusionExpandedReader, self).__init__() 13 | self.positive_sample = _global.config.get("extra_dataset", "positive_sample") 14 | self.confusion_set = {} 15 | self.item_padding = _global.config.get("meta", "item_padding", default=False) 16 | self.convertor = PinyinConvertor() 17 | self.use_part = _global.config.get("meta", "use_part", default=False) 18 | 19 | def read(self): 20 | super(ConfusionExpandedReader, self).read() 21 | extra_file = _global.config.get("extra_dataset", "file") 22 | lines = open(extra_file, "r+", encoding="utf-8").readlines() 23 | for line in lines: 24 | center, confusion = line.strip().split(":") 25 | center_py = self.convertor.convert_char(center) 26 | confusion_py = list(map(self.convertor.convert_char, confusion)) 27 | is_similar = list(map(lambda x: 2 * len(set(x) & set(center_py)) >= len(set(center_py)), confusion_py)) 28 | # self.confusion_set[center] = list(confusion) 29 | self.confusion_set[center] = list(zip(confusion, is_similar)) 30 | if self.use_part: 31 | self.confusion_set[center] = [item for item in self.confusion_set[center] if item[1] is True] 32 | 33 | def convert(self, item, mode: str): 34 | output = [super(ConfusionExpandedReader, self).convert(item, mode)] 35 | selection = -1 36 | similar = True 37 | for _ in range(self.positive_sample): 38 | next_output = copy.deepcopy(output[0]) 39 | try: 40 | input_ids, target = next_output["input_ids"], next_output["target"] 41 | error_index = [i for i in range(len(input_ids)) if input_ids[i] != target[i]] 42 | # error_tokens = [self.tokenizer.convert_ids_to_tokens(input_ids[i]) for i in error_index] 43 | # error_index = [error_index[i] for i in range(len(error_index)) if error_tokens[i] in self.confusion_set] 44 | if len(error_index) <= 0: 45 | raise NotImplementedError 46 | selection = int(np.random.choice(error_index)) 47 | input_id, target_id = input_ids[selection], target[selection] 48 | input_token = self.tokenizer.convert_ids_to_tokens(input_id) 49 | target_token = self.tokenizer.convert_ids_to_tokens(target_id) 50 | # if input_token not in self.confusion_set or ((input_token, True) not in (confusion := self.confusion_set[input_token]) and (input_token, False) not in confusion): 51 | # raise NotImplementedError 52 | if input_token not in self.confusion_set: 53 | raise NotImplementedError 54 | confusion = self.confusion_set[input_token] 55 | candidates = list(set(confusion) - {(target_token, True), (target_token, False)}) 56 | if len(candidates) <= 0: 57 | raise NotImplementedError 58 | replaced_token, similar = candidates[np.random.choice(len(candidates))] 59 | replaced_id = self.tokenizer.convert_tokens_to_ids(replaced_token) 60 | next_output["input_ids"][selection] = replaced_id 61 | output.append(next_output) 62 | except NotImplementedError as e: 63 | if not self.item_padding: 64 | break 65 | output.append(next_output) 66 | 67 | output = [item | {"selection": selection, "similar": similar} for item in output] 68 | return output 69 | -------------------------------------------------------------------------------- /reader/HybridReader.py: -------------------------------------------------------------------------------- 1 | import os 2 | from collections import defaultdict 3 | 4 | from reader.BasicReader import BasicReader 5 | from reader.ConfusionExpandedReader import ConfusionExpandedReader 6 | from reader.WordDictReader import WordDictReader 7 | from utils._global import _global 8 | 9 | 10 | class HybridReader(WordDictReader, ConfusionExpandedReader): 11 | def __init__(self): 12 | super(HybridReader, self).__init__() 13 | 14 | def read(self): 15 | confusion_file = _global.config.get("extra_dataset", "confusion_file") 16 | lines = open(confusion_file, "r+", encoding="utf-8").readlines() 17 | for line in lines: 18 | center, confusion = line.strip().split(":") 19 | center_py = self.convertor.convert_char(center) 20 | confusion_py = list(map(self.convertor.convert_char, confusion)) 21 | is_similar = list(map(lambda x: 2 * len(set(x) & set(center_py)) >= len(set(center_py)), confusion_py)) 22 | # self.confusion_set[center] = list(confusion) 23 | self.confusion_set[center] = list(zip(confusion, is_similar)) 24 | if self.use_part: 25 | self.confusion_set[center] = [item for item in self.confusion_set[center] if item[1] is True] 26 | dict_file = _global.config.get("extra_dataset", "dict_file") 27 | dict_data = self.load_json(dict_file) 28 | self.dict_data = {key: ["".join([char for char in sent if "\u4e00" <= char <= "\u9fa5" or char in ",。:;?!~~|"]) for sent in value] for key, value in dict_data.items()} 29 | self.dict_keys = list(self.dict_data.keys()) 30 | self.char_word_set = defaultdict(set) 31 | for word in self.dict_keys: 32 | for char in word: 33 | self.char_word_set[char].add(word) 34 | self.similar_data = None 35 | if len(similar_file := _global.config.get("extra_dataset", "similar_file", default="")) > 0: 36 | self.similar_data = self.load_json(similar_file) 37 | self.similar_data = {key: {subkey: [item for item in value if item in self.dict_data] for subkey, value in self.similar_data[key].items()} for key in self.similar_data if key in self.dict_data} 38 | if self.use_glyph: 39 | self.glyph_dict = self.load_json(os.path.join(_global.config.get("model", "glyph_model"), "han_seq.json")) 40 | self.valid_dict_data = {key: value for key, value in self.dict_data.items() if all([char in self.glyph_dict for char in key])} 41 | BasicReader.read(self) 42 | 43 | def convert_all(self, items, name=""): 44 | return WordDictReader.convert_all(self, items, name) 45 | 46 | def convert(self, item, mode: str): 47 | return WordDictReader.convert(self, item, mode) | {"expanded": ConfusionExpandedReader.convert(self, item, mode)} 48 | -------------------------------------------------------------------------------- /reader/WordDictReader.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | import pickle 4 | from collections import defaultdict 5 | from functools import reduce 6 | 7 | import hanlp 8 | import numpy as np 9 | from tqdm import tqdm 10 | 11 | from reader.BasicReader import BasicReader 12 | from utils._global import _global 13 | 14 | 15 | class WordDictReader(BasicReader): 16 | def __init__(self): 17 | super(WordDictReader, self).__init__() 18 | self.hanlp_model = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH, devices=0, verbose=True) 19 | for task in list(self.hanlp_model.tasks.keys()): 20 | if not task.startswith("tok"): 21 | del self.hanlp_model[task] 22 | print() 23 | self.negative_sample = _global.config.get("extra_dataset", "negative_sample", default=0) 24 | self.manual_cache = {} 25 | self.extra_tokenize = lambda text: self.tokenizer.__call__(text=text, add_special_tokens=True, max_length=64, truncation=True, return_token_type_ids=False, return_attention_mask=True, return_length=True) 26 | 27 | self.out_dir = _global.config.get("output", "directory") 28 | self.select_negative = _global.config.get("extra_dataset", "select_negative", default=False) 29 | self.multi_explanation = _global.config.get("meta", "multi_explanation", default=0) 30 | self.use_word_dict = _global.config.get("meta", "use_word_dict", default=True) 31 | self.use_glyph = _global.config.get("meta", "use_glyph", default=False) 32 | 33 | def read(self): 34 | extra_file = _global.config.get("extra_dataset", "file") 35 | dict_data = self.load_json(extra_file) 36 | self.dict_data = {key: ["".join([char for char in sent if "\u4e00" <= char <= "\u9fa5" or char in ",。:;?!~~|"]) for sent in value] for key, value in dict_data.items()} 37 | self.dict_keys = list(self.dict_data.keys()) 38 | self.char_word_set = defaultdict(set) 39 | for word in self.dict_keys: 40 | for char in word: 41 | self.char_word_set[char].add(word) 42 | self.similar_data = None 43 | if len(similar_file := _global.config.get("extra_dataset", "similar_file", default="")) > 0: 44 | self.similar_data = self.load_json(similar_file) 45 | self.similar_data = {key: {subkey: [item for item in value if item in self.dict_data] for subkey, value in self.similar_data[key].items()} for key in self.similar_data if key in self.dict_data} 46 | if self.use_glyph: 47 | self.glyph_dict = self.load_json(os.path.join(_global.config.get("model", "glyph_model"), "han_seq.json")) 48 | self.valid_dict_data = {key: value for key, value in self.dict_data.items() if all([char in self.glyph_dict for char in key])} 49 | super(WordDictReader, self).read() 50 | 51 | def convert_all(self, items, name=""): 52 | if "test" in name: 53 | # if name == "test13": 54 | # items = [{"src": item["src"], "tgt": "".join([schar if schar != tchar and tchar in ["地", "得"] else tchar for (schar, tchar) in zip(item["src"], item["tgt"])])} for item in items] 55 | return items 56 | valid_items = [] 57 | if os.path.exists(cache_file := f"{self.out_dir}/cache.pkl"): 58 | self.manual_cache = pickle.load(open(cache_file, "rb")) 59 | for item in tqdm(items): 60 | src, tgt = item["src"], item["tgt"] 61 | tgt_hash = str(hash(tgt)) + str(len(tgt)) 62 | if tgt_hash in self.manual_cache: 63 | valid_items.append(item) 64 | else: 65 | for item in tqdm(items): 66 | src, tgt = item["src"], item["tgt"] 67 | tgt_hash = str(hash(tgt)) + str(len(tgt)) 68 | words = self.hanlp_model.__call__(tgt, tasks="tok/fine")["tok/fine"] 69 | 70 | valid_index = [i + 1 for i in range(len(words)) if words[i] in self.dict_data] 71 | if len(valid_index) <= 0: 72 | self.hanlp_model["tok/fine"].dict_force = set(self.dict_keys) 73 | words = self.hanlp_model.__call__(tgt, tasks="tok/fine")["tok/fine"] 74 | valid_index = [i + 1 for i in range(len(words)) if words[i] in self.dict_data] 75 | self.hanlp_model["tok/fine"].dict_force = None 76 | if len(valid_index) <= 0: 77 | continue 78 | tokens = [["CLS"], *[self.tokenizer.tokenize(word) for word in words], ["SEP"]] 79 | valid_items.append(item) 80 | word_offset = [0] 81 | for token in tokens: 82 | word_offset.append(word_offset[-1] + len(token)) 83 | self.manual_cache[tgt_hash] = {"words": words, "word_offset": word_offset, "valid_index": valid_index} 84 | pickle.dump(self.manual_cache, open(cache_file, "wb")) 85 | print(f"Train Size: {len(items)}, Valid Train Size: {len(valid_items)}") 86 | return valid_items 87 | 88 | def convert(self, item, mode: str): 89 | src, tgt = item["src"], item["tgt"] 90 | source, target = self.tokenize(src), self.tokenize(tgt) 91 | normal_output = {"input_ids": source.input_ids, "attention_mask": source.attention_mask, "target": target.input_ids, "target_mask": [0] + source.attention_mask[1:-1] + [0]} 92 | # if not mode.startswith("train"): 93 | # return {"normal": normal_output} 94 | output = {"normal": normal_output} 95 | tgt_hash = str(hash(tgt)) + str(len(tgt)) 96 | if (item := self.manual_cache.get(tgt_hash, None)) is not None: 97 | words = item["words"] 98 | word_offset = item["word_offset"] 99 | valid_index = item["valid_index"] 100 | else: 101 | words = self.hanlp_model.__call__(tgt, tasks="tok/fine")["tok/fine"] 102 | valid_index = [i + 1 for i in range(len(words)) if words[i] in self.dict_data] 103 | if len(valid_index) <= 0: 104 | self.hanlp_model["tok/fine"].dict_force = set(self.dict_keys) 105 | words = self.hanlp_model.__call__(tgt, tasks="tok/fine")["tok/fine"] 106 | valid_index = [i + 1 for i in range(len(words)) if words[i] in self.dict_data] 107 | self.hanlp_model["tok/fine"].dict_force = None 108 | tokens = [["CLS"], *[self.tokenizer.tokenize(word) for word in words], ["SEP"]] 109 | word_offset = [0] 110 | for item in tokens: 111 | word_offset.append(word_offset[-1] + len(item)) 112 | self.manual_cache[tgt_hash] = {"words": words, "word_offset": word_offset, "valid_index": valid_index} 113 | error_index = [i for i in range(len(source.input_ids)) if source.input_ids[i] != target.input_ids[i]] 114 | np.random.shuffle(error_index) 115 | flag = False 116 | word = "" 117 | word_index = 10000 118 | start = end = -1 119 | 120 | for index in error_index: 121 | word_index = np.searchsorted(word_offset, index, 'right') - 1 122 | word = words[word_index - 1] 123 | if word in self.dict_data: 124 | flag = True 125 | break 126 | 127 | # if len(error_index) > 0 and not flag: 128 | # index = int(np.random.choice(error_index)) 129 | # word = self.tokenizer.decode(target.input_ids[index]) 130 | # if word in self.dict_data: 131 | # flag = True 132 | # start = index 133 | # end = index + 1 134 | 135 | if len(error_index) <= 0 or not flag: 136 | if len(valid_index) <= 0: 137 | print(words) 138 | raise RuntimeError 139 | word_index = np.random.choice(valid_index) 140 | word = words[word_index - 1] 141 | 142 | if start == end == -1: 143 | start = word_offset[word_index] 144 | end = word_offset[word_index + 1] 145 | 146 | label = np.random.choice(self.negative_sample + 1) 147 | extra_output = {"start": start, "end": end, "label": label} 148 | 149 | if self.use_word_dict: 150 | negative_keys = list(set(self.dict_data) - {word}) 151 | negative_words = [negative_keys[i] for i in np.random.choice(len(negative_keys), self.negative_sample, replace=False)] 152 | if self.select_negative: 153 | if self.similar_data is not None and word in self.similar_data: 154 | similar_item = self.similar_data[word] 155 | similar_keys = similar_item["jin"] 156 | else: 157 | similar_keys = list(reduce(lambda x, y: x | y, [self.char_word_set[char] for char in word], set())) 158 | if len(similar_keys) < self.negative_sample: 159 | negative_words = similar_keys + negative_words[:self.negative_sample - len(similar_keys)] 160 | else: 161 | negative_words = [similar_keys[i] for i in np.random.choice(len(similar_keys), self.negative_sample, replace=False)] 162 | sample_words = [word, *negative_words] 163 | sample_words[0], sample_words[label] = sample_words[label], sample_words[0] 164 | 165 | sample_sentences, index = [], [] 166 | if self.multi_explanation: 167 | for word in sample_words: 168 | sents = self.dict_data[word][:self.multi_explanation] 169 | index.append(len(sents)) 170 | sample_sentences.extend(sents) 171 | sample_sentences.extend([""] * max(0, self.multi_explanation - len(sents))) 172 | else: 173 | sample_sentences = [(sent := self.dict_data[word])[np.random.choice(len(sent))] for word in sample_words] 174 | # sample_sentences = [(sent := self.dict_data[word])[0 if i == label else np.random.choice(len(sent))] for i, word in enumerate(sample_words)] 175 | # sample_sentences = [(sent := self.dict_data[word])[0] for word in sample_words] 176 | sample_inputs = self.extra_tokenize(sample_sentences) 177 | # print(word, negative_words, label, sample_sentences, self.dict_data[word]) 178 | # print(tokens, start, end, word_offset) 179 | word_extra_output = extra_output | {"input_ids": sample_inputs.input_ids, "attention_mask": sample_inputs.attention_mask, "length": max(sample_inputs.length)} 180 | if self.multi_explanation: 181 | word_extra_output = word_extra_output | {"index": tuple(index)} 182 | 183 | output = output | {"extra": word_extra_output} 184 | 185 | if self.use_glyph: 186 | negative_keys = list(set(self.valid_dict_data) - {word}) 187 | negative_words = [negative_keys[i] for i in np.random.choice(len(negative_keys), self.negative_sample, replace=False)] 188 | sample_words = [word, *negative_words] 189 | sample_words[0], sample_words[label] = sample_words[label], sample_words[0] 190 | expand_keys = ["input_ids", "stru_mask", "attention_mask", "position_ids", "type_ids", "char_sep_ids", "char_mask"] 191 | sample_inputs = {key: [] for key in expand_keys} 192 | sample_inputs["length"] = 0 193 | for word in sample_words: 194 | sample_inputs["input_ids"].append([1]) 195 | sample_inputs["stru_mask"].append([0]) 196 | sample_inputs["char_sep_ids"].append([0]) 197 | sample_inputs["position_ids"].append([0]) 198 | sample_inputs["attention_mask"].append([1]) 199 | sample_inputs["type_ids"].append([0]) 200 | sample_inputs["char_mask"].append([0]) 201 | for i, char in enumerate(word): 202 | if (item := self.glyph_dict.get(char, None)) is None: 203 | pass 204 | _len = len(item["src_idx"]) 205 | sample_inputs["input_ids"][-1].extend(item["src_idx"]) 206 | sample_inputs["stru_mask"][-1].extend(item["type_mask"]) 207 | sample_inputs["attention_mask"][-1].extend([1] * _len) 208 | sample_inputs["char_mask"][-1].extend([1] + [0] * (_len - 1)) 209 | sample_inputs["position_ids"][-1].extend(list(range(1, _len + 1))) 210 | sample_inputs["char_sep_ids"][-1].extend([i + 1] * _len) 211 | sample_inputs["type_ids"][-1].extend([1] + [i + 2 for i in item["type_mask"][1:]]) 212 | sample_inputs["length"] = max(sample_inputs["length"], len(sample_inputs["input_ids"][-1])) 213 | output = output | {"glyph": extra_output | sample_inputs} 214 | return output 215 | 216 | -------------------------------------------------------------------------------- /resources/confusion.txt: -------------------------------------------------------------------------------- 1 | 基:急击接阶蓦记绩及纪饥扈肌草甚金鸡即今蒙既技袁皂际墓寨疆激集暮结鲫差级积迹继蒽塞吉机觊季家计几 2 | 蒽:惠忘总恩基海意 3 | 在:庄奋土才再哉载茌存台灾子石宰右 4 | 子:主兹实纸梓自籽资仔者次紫季直之孑字在姿 5 | 后:后或候活享污侯厚 6 | 候:慷后火或偿喉假侯 7 | 精:胃经静筋厝青唐晴胥糟津仅唱惊尽金荆杞今盾惰近兢情粘进敬菁矜睛斤境盲谨京净唁清 8 | 经:静景轻应径记津仅镜惊纪尽竟金井绎锦今鲸验禁近竞进请巾敬矜紧豚精斤境京晶俩铎净警垄清迳 9 | 的:贞伪择个德迪得地等到酌 10 | 贞:真员臻征的珍桌帧针 11 | 日:扫曰热男时目六如 12 | 曰:约白信日月职已且目言甘石闩曾扫 13 | 使:侵式距世始事吏十试便尸师失诗示时食此识史枝实矢钜屎是嚏德施市适驶 14 | 始:试输失诒实起视室市冶世台事示时贴十使是如 15 | 本:东会别笨杰奔苯班 16 | 苯:本 17 | 将:讲才缰姜捡狩狞江降痔装汐喀浔浆涨隋持剑特件建僵惰柠萼疆监寻酱碍奖蒋间 18 | 痔:将诗侍持虐特蒂祷得拜捧盘待 19 | 营:应荣莆蔫迎琶苣引因盈赢菖茴夸莒彗颍音菅冒宫管当昔影渲英萦硬映银尹鹰莺苦 20 | 莒:害算富百署宫套官营菖首莫言拿掌誉畜笔省 21 | 以:乙义役异翼医引耿因已一倚艺该依蚁怡于易与隐趴又仪喜亦印议助益移遗尹疑亿铡意宜椅 22 | 一:谊彝大三义役乙二姨事异翼逸医弈屹驿引因淫衣懿已羿溢体倚艺胤绎依蚁也音怡以伊疫旦译易这抑影忆仪漪毅殷奕亦印议益夷移遗壹银尹裔黟疑亿阴意宜翌椅 23 | 童:喧音堇冒啬桶同捅眉潼菖壹萱痛鳕查彤通铜直 24 | 堇:董奉量蓬隆谨冀革童查薰黄仅誓鳌 25 | 说:输税噶皖硕工受书院说蜕锐属叔所蔬话 26 | 所:锁司斯听随新蒐速时昕宿说索甫缩搜 27 | 他:太摊大蒯牠弹谈叹它塌贪台坦她讨坍淘瘫陶伽踏涛套胎多地泰探塔 28 | 它:太匕涛台碳他她牠塌塔探 29 | 弟:单低底帝地弗第韦 30 | 第:低菊跌莆笺鹅箔娼菇芽鳄底婧筹策滴撂堤笫嬉巍蒂地弟笛簧箫 31 | 议:音以移义异哎易已一溢医艺意仪毅 32 | 意:蒿义姨异蔫逸言医驿因熠衣思惫愫已一溢苛艺依音怡以饮自易嵩抑隐忆慧毅智啬惠盲议印益蒽亦遗移疑亿蕙惹 33 | 木:姆母末慕宋穆杰睦术目募幕牧杂 34 | 术:米述叔木树鼠硕书杰殊熟疏属数 35 | 再:朝闰甫雨才载轲鲆鳕醇离丙碍在 36 | 下:先吓现销效夏霞辖笑限晓仙孝消瑕线县萧虾小峡嫌瞎 37 | 虾:呷下瑕黠瞎霞 38 | 官:客富冠宙观吕宫管门莒目言光馆关 39 | 宫:胃昌署口吕龚客攻公甚营寓莒宣宙氧供工管巩含富馨官哥 40 | 政:城症诊玫敦阵征正玟整争峥镇郑震证侦 41 | 城:程政承诚辰尘称成呈趁晨臣陈惩喊乘 42 | 起:追漆其戚始七记祈绩及茄逅崎妲去启弃器汽习旗棋企逞骑妻次坦气迄己岂齐期短奇乞 43 | 期:漆起其七祈琴朗琦汽器弃真旗棋企月妻欺请气迄级齐歧奇亲乞阴 44 | 千:钱欠签迁前谦干铅芊倩彼潜枪 45 | 干:午肝千赶汗感干钢敢刚甘杠杆 46 | 供:公攻宫工贡仁拱功件俄躬保共 47 | 共:乓公攻供工贡更荣功巩洪龚弓恭 48 | 和:嗬口赫禾租荷贺炯耙核甜鹤还阳扣汉何胭合粕相祖而呵莉盒很科河喝旧利桐帼 49 | 禾:合和河 50 | 好:还壕毫嚎妤哈号法郝话奸浩耗豪皓昊濠 51 | 豪:繁景荣号暴磊言扁濠宸崇襄浩聚票吴荤羡蒙鬓毫某慕雇象素案冢美亲泰桑好柔裹 52 | 东:乐董栋宋同本动春冬咚冻懂洞 53 | 冬:董叉东动条 54 | 德:拱庐膘犹侥律痣僧债嫖蔑唔饽的萼使虑漕倘得恶亿清蕙惩猜 55 | 清:胃经侵蒿青轻庆潘晴禽淆洞钦肯琴浦渭焉情演倾请滴涓精靖薄境涌禧德蒂亲肩卿氢 56 | 已:曰乙义应姨言记医引一艺依蚁矣怡以疫易抑己亦议巳益移遗银疑亿意宜椅 57 | 相:先翔涸柜现享柏帽镶唱限橡湘侣想涠像厢泪香乡和行向祥根项象详箱桐显帼 58 | 想:翔柜享植响险顺厘像厢咱香息乡巷相向祥棉项线象详憬箱桐嫌显捏娉 59 | 客:害吾刻喀科友宫可各霁官课缂壳艾菩柯窖渴克 60 | 害:客吾焉亥宙宝工哈息古菖莒菩海言雷熹窘曼 61 | 对:兑得谢队堆怼都 62 | 队:对堆隧怼都 63 | 己:级斤近起挤今即机资记已激进集计之几 64 | 迪:迫敌因的地 65 | 取:举曲群去确叹处驭驱聚激蛐趋缺区 66 | 驭:取飘育与仅 67 | 但:单大佃倒氮诞担弹答蛋档丹淡旦当胆们祖坦伯旧袒 68 | 倒:岛道刀但捣导到盗打 69 | 影:景应彭莹熹彤蹦彰引因淫赢营瘾一颍音饮澎颖隐扇昙彩稍硬印映银黟 70 | 引:应迎因盈淫营瘾已樱一音蚁以饮易影隐硬印遗银阴 71 | 突:度吞兔天涂类宪凸尖犬图拓土途瓮秃 72 | 秃:屠秀涂凸图突 73 | 因:荫茵瑛应迪迎医姻婴国引困赢营樱一音以颖影鹦殷硬英印益银疑鹰阴囚意 74 | 应:经迎婴寅引因盈赢营瘾已樱音颖影隐鹦英硬映印尹鹰阴殷 75 | 柜:拒洹轨桂相想恒 76 | 箔:薄领谘泊箝箱籍筑第策铂 77 | 然:鲅洋辕烈熬殊容染簿让热延吠人淋能钛触燃锹妖认川那冉煞仍 78 | 让:然止比嚷试样 79 | 没:度设投发媒梅浸们枚每霉美麽汶煤酶莓反莫 80 | 麽:没吗们 81 | 察:寮蔡萦窜祭差雷查擦寅茶镶 82 | 查:拆苣直菖夸肇茶宣堇宙察苔嘲差覃奎童裔亘萱聋杳 83 | 道:岛直答刀套大倒逼首得遭导遣到遵盗通达蹈 84 | 逼:必别比语毕笔逅躏遭遣迢匾演币逞桌避海遍亭遵通鼻道京闭柔 85 | 之:指织知治质支志久脂直值乏制只蜘侄此芝枝肢诸纸自职着这子执至己智致置止滞汁栀 86 | 久:酒欠九救纠就旧之 87 | 打:耷搭答单汀大蹈倒哒导到逮达塔 88 | 塔:墙搭踏唔哈苔培他打唐络它堵塌惰嗒 89 | 札:榨化比孔礼 90 | 化:滑欢患画划札华怀活坏幻换焕花伦话 91 | 是:侍世石士始事蛊试十属啻视驶势师失尸係诗示食时识史足狮誓摄涅昱实饰氏逞次疆使拾皇室逝柿正释需罡施市数适式 92 | 罡:罪最刚提是 93 | 情:慵胃忏静侵厝景青轻懵唐禽晴帽恬慎持眉型擒琴特件盾惰倾请兴续性悄精勤秦悟幅警严亲镇清 94 | 件:牛拣践架价什剑建键荐见情供鉴涧监检减将渐伶家贱健间 95 | 柯:客科可课磕桐棵何克间 96 | 间:捡同询践降闯价问阎简坚剑奸件建见闻歼鉴监町将店兼门尖肩柯家闾艰 97 | 亦:奕以益示已翼逸一亿抑意艺办 98 | 奕:义栾亦一 99 | 曾:胃程曰增普兽呈层 100 | 呈:守量最孛成拿城雪称彗字宇皂逞撑皇宁室隆程宴曾橙曼 101 | 题:犀梯蔻噩露烦特铁趣体替提颢藿霾匙 102 | 提:扭逻握剃聂赭扮腊捷替贴体铁嫂揩蔑寇冒蹄题赶踢剔楚护撂拈捉拐憬图罡捏湟 103 | 达:搭答道大瘩遮陀拿带代到耷打 104 | 答:单桉道弹签大但各笨打撘带容到达担 105 | 任:扔妊认往仁人年住刃忍仍运 106 | 忍:忿认任人烈仁葱 107 | 妨:访彷仿防方房 108 | 防:妨访凡放方仿芳陈分反肪房 109 | 她:贪陶瘫踏涛摊套池胁他地泰它塌 110 | 未:胃慰威尾宋卫夫伟为位猥猬来蔚耒末魏卡微味围畏维委违 111 | 为:伪胃违慰威卫薇萎伟位唯纬猥喂外未蔚韦玮谓危会魏炜微味维围畏力委尾 112 | 金:跻经静击硷景径籍险津仅镜劲惊尽竟荆锦今鲸验禁技近竞全婧基进巾激馑集检敬紧睛精靖斤级境继京晶机净季警计 113 | 今:经静津仅及劲惊纪尽竟茎金鸡既近竞进基泾令精己级斤境京晶机净季几 114 | 有:皙唷呕铀犹右由幼萄酉悠哟忧尤优佑蓓育又概釉荀友油游诱苜苟邮 115 | 荀:葡有萄 116 | 避:璧必腥彼醴逼鲑圭碧趣遍遵遐 117 | 必:别宾彼逼比并壁避泌毕弊陛 118 | 种:钟肿重总呻偬终种中众冲 119 | 总:茵急同综纵种从顺思山鬃聪岫宗息仙葱趴忌患皿蒽唰煎终粽 120 | 须:虚绩领许学质希猬序顷焱煦凋需续削顺徐佰 121 | 顺:瞬树总想随训倾须需赖颁悲喷损惩怒 122 | 这:知浙最者直蔗针设撤遂一怎之区真阵遮自着住迷至送折测 123 | 住:庄竺竹族租出往珠仨组筑驻朱著诸密宿祝注铸这拄抓主助猪任居柱 124 | 杨:央桥烊养洋羊砀阳颜严标延仰珜核扬样 125 | 阳:洋疡柏杨扬帕限炎央和眼阻羊氧胆颜坦光样积养 126 | 按:谙安桉疫接俺案暗挥岸胺 127 | 安:按妥桉啊乾鞍军案恩暗氨岸女阿担胺 128 | 话:滑患画划会环华化活法花请语换培说好适耗 129 | 画:滑润患华划化更固圃受换圆花通闯话 130 | 加:较击嘉妞假架价焦佳夹建交稼驾见迦贾咖教减娇兼荚家搅叫 131 | 架:价渠件嫁加嚷耍家假建铂染如轿驾 132 | 到:稻岛悼刊答讨道刀大叨的倒动达祷导盗打蹈 133 | 刀:道倒力到盗 134 | 把:扭佃钣翘伴版吧杷肥罢柏坝保八犯拔巴板爸宝霸办般百汨叭扒 135 | 杷:把 136 | 与:裕雨举渔喻遇语欲予瑜禺愈越愚鱼俞预跃寓域郁迂逾玉菅宇娱以于月浴驭兴育淤吁约阅虞峪羽谕馀余庾御渝允云运 137 | 于:裕雨觎渔喻遇语瑜予愚愈愉鱼俞无预寓域郁芋逾玉宇以娱于与育誉谀约宁峪馀余豫云运 138 | 最:追亏昂冠侵暖展做睾罪韫岫暇匾嘴醉撮冒就晨录这呈晕辰痘爵我鄙罡 139 | 晕:孕运最 140 | 轻:较情经侵羟押青妤庆倾径进亲泾清畜妾 141 | 青:胃侵静轻庆晴菖看氰情倾请争勤精盲秦吉亲氢卿清靑 142 | 受:妥收守寿画授售爱搜股首绍嗽说兽夏瘦手 143 | 收:寿授售走受首悠帧咬哎瘦手 144 | 吁:盱叮娱嘘与 145 | 叮:吁定盯丁订 146 | 不:簿无布部钸普步怖补示标卜捕 147 | 部:韶音簿邛罐布不陪步补邰首叩邹郜捕都 148 | 并:芹兵必拼秉宾冰荆井卉槟饼滨病丙炳斌 149 | 拼:乒平评品并苹批肿 150 | 向:项线商乡象尚巷现相想上像箱拘祥香狗响 151 | 记:借起极经急击接籍绩及纪祭已杞鸡即技既近济进基激忌己级积尼迹继挤介机季计几 152 | 计:疾寄急界击籍记绩及津汴针妓脊价纪尽金即锦技既近济际进基激集甘结忌己级积迹继介剂机汁季几 153 | 象:项乡限泵翔现相想像向响祥豪蕨蓼蒙荥 154 | 师:世士私事帅十试驰视脯尸势失诗示时食史识狮肆湿实书叩使是生室施市式 155 | 实:买世石始事十试视蚀驶贯师失尸势诗示时食识史头央湿子使是拾戏逝释施市适式 156 | 认:诙然扔任人叭热次联刃忍仍 157 | 个:根格葛歌的各隔铬课儿跟割咯侗何哥给 158 | 坦:扭唱掴起谈但些旧阳汨他怕钽 159 | 压:庄轧呀押往演浊要亚丫汪哑厌 160 | 丫:鸦压 161 | 如:知若汝日茹蛔叩始乳入儒姐架嚅 162 | 入:若辱弱录乳六儒如 163 | 紧:跻经静景晋痿仅璜金井锦霾近竞济进集累祟级斤领寰境继谨剂颈京孳辛警几 164 | 领:顶陵邻菠林颌疲临箔页另玲零淋灵紧敛令镀项浈聆岭拎烦须簧 165 | 准:雅难渲推佳军堆维注谁淮雄尊准屈 166 | 军:举钧茬君准俊珺彗竣荤芽冒菌峻琵车宿均安覃茸专鸯居笃拘窒莺运 167 | 重:董充钟种里从众直忠扈币痛主喧仲萧动终亘中市 168 | 亘:真县宣寞重置互拿冥戛查夏宜直 169 | 掣:撤靼 170 | 靼:掣剪典鞋 171 | 免:冕眠兔勉棉面 172 | 兔:免图涂突 173 | 超:吵巢照枣潮差嘲遭钞造迢抄妲 174 | 照:赵诈熙兆肇隋招胍着帽靠绍交昭造黑超找召 175 | 且:解曰截巳其界接旦届车企惬奇目言祈切姐结器 176 | 姐:借极急界接阶且宛咀姻妲解节如姊集结级积街杰几 177 | 健:姜犍坚鲑剑愤件建荐见鉴链隍监挝例蝗煎家慑贱畦 178 | 建:追嘉现加践架价箭简坚剑捷迂件键荐见奠逞鉴溅监检舰廷减将谏介兼渐湮家湟贱健间 179 | 观:贯欢冠罐逛管现官剐挂馆砚光灌广关 180 | 关:贯冠惯天管刮官挂棺光馆广观 181 | 着:榨兆蓄者君羞召炸渣菖看赵之早合若择菁这找卓盲钊照正趁招 182 | 菖:董信署莤青蓄享者事震翼言籍掌雷拿查夏萎尊笔直省害蕃鲁雪霭普苫营首看霉雾莒遭肇督誓毫算真宣蔓章音暂葛管豆副着菁寡暨薄喜富百置晶革童宴警落背囊苦蕾餐 183 | 藉:借疟戒厝霜 184 | 借:界藉击模接莆横决记皆姐及错解戒节祭彗即技猎伊结介街惜届传措倍 185 | 茌:在 186 | 美:大贡模妹熹豪镁趸责赁枚眉霉莫逞梅煤没主玫媒魅每黄么 187 | 失:世石始私事士十试势师尸诗时夹朱誓头习湿实矢噬使是室逝施市释式 188 | 矢:使天失参 189 | 末:柬牟某寞木默束未谋莫 190 | 朗:期览琅兰郎狼 191 | 表:耒亵袁衷浸畏衰标录熹聂袭婊敖写丧 192 | 录:戮璜鲁最表露暴灵路旅禄陆碌入绿隶宗 193 | 寅:寒其景暴应衰损复裘竟宾晃良吴身侯寮真演察桌灵束亭臭点奥具银案畏黄裹 194 | 依:以伊移衣液已易一医侬意宜胶毅 195 | 择:折怪捍的责着檡则捏泽搂樨 196 | 檡:择 197 | 希:杀稀新磊蔫熹曦兮系桁席欣熙惰蒜习息帘奚请昔续溪西喜萧布细洗嘻须需市夕锡 198 | 请:谙胃经醒希青仅蒲琴踊盾诘谓情庸寝壤涛秦橇期肩亲清话 199 | 竞:经静兑景晋镜劲幸尽竟菀浸金壳兄锦今鲸禁近霓进灵敬紧靖境淨京净警宽 200 | 竟:经静景嫣仅寅镜劲尽菀金井莞今既近竞霓进敬境京净警克 201 | 令:领聆林临琳邻灵淋另零今 202 | 苜:真蔓耳雀慕当葛革墓首有耸崔苴募甘 203 | 衰:率摔寰衷袁袤塞表素案帅里寅 204 | 摔:衰樽 205 | 响:项线象胴翔享想嚮像山向显肋峒 206 | 像:偏现享橡限湘朦襄想厢香算乡相宿向项线象衔憬箱儡响 207 | 形:信醒刑新行型兴姓邢开心星彤性 208 | 行:信醒汀新幸伺欣刑型心付形厅鑫相芯兴航性门姓星 209 | 成:威忱盛咸障臣陈试城戴戒诚尘称撑晨呈程承神沉辰谌澄丞层橙惩乘 210 | 程:胃成陈城骋诚称字晨呈碍押承秆赛释产澄丞湟曾乘 211 | 直:董指知亩质卫支资志植查甫隻夏值省制只责菖遭芝之真宣纸重自职这子执至致道置止童亘宜 212 | 代:戴贷弋大旦黛袋带逮待达 213 | 待:戴贷痣侍大持台殆地带代续呆痔 214 | 里:量历塑衰礼立甲望璧睾叟林腥厘临型鳕黑荤迢蜊粒理重莉锂哩琳壁例眶雯李力黎利鲤丽列离埕 215 | 甲:假佳嘉墓钾椒申贾家里 216 | 该:盖撮獭以铉爱骑撤孩蔽改骇概钙核 217 | 改:玟致感该 218 | 自:知支资志直制目之字息仔集子这至致白置紫意姿 219 | 集:棘极急洁击籍姐及唱脊渠纪辑金鸡即锦技莫禁真栗逞际纠自基激紧结锭己级积皇继唧街具机雯季计冀几羁 220 | 大:太搭单氮诞带到待蹈歹戴贷弹答但蛋一逮呆丹打淡旦袋犬代道瘩美他得导奇祷耷盗达 221 | 犬:大全人突头 222 | 其:漆起蕲侵鳍契七苴且凄寅崎祁脐冥启琦器汽弃莫真旗棋斯某企逞旦妻骑欺气切迄岂琪綦齐歧期具奇乞 223 | 莫:凳其寞萤苣昊茉崇亮苗陌莒吴羡漠鬓真奠奚某末墓墨集募寡臭萸类没篡英虞默套具宴案美磨黄赏 224 | 持:侍菩挥驰待痔搐诗此特抬掩情捐抟斥迟将扦寺池炽拮吃 225 | 讨:陶涛套工过圃挑他导淘到寸逃桃 226 | 导:稻岛劈到冒道皂大倒辱淂寻讨打写寸 227 | 值:指治俪质支植恒殖直制只眉之匾真纸职执伯至佰旨置止俏 228 | 纽:组绍妞 229 | 妞:榔友魁细短铀轴加姓驶蜓蝶艇抽纽袖 230 | 警:经静些景簪整菩仅镜藩雪尽竟金菖井替彗弩譬訾誓饕冒情竞进敬紧亟壑靖鼬京晶颈憬净堑箐 231 | 誓:量事整琶籍熹势失雪菖看鳕彗僵冒饕堇暂争昔藿是蜇奎警垄堑餐 232 | 宰:芽宴萼辛肆在 233 | 寻:将荨循许浔询得导需讯哥曼巡 234 | 荨:寻萎寿 235 | 雪:繁霄雷臀啻鲁菖譬誓冒学管呈暨许皇昏擘奎蒂警需墅穴圭臂 236 | 现:先咸献觐砚险岘馅损视限宪像陷建羡乡见仙理相规兴向观项线县象皿下嫌显叨鲜 237 | 线:先纤献现险钱馅残限掀宪想像陷羡仙饯浅向贤项县下闲嫌显响鲜 238 | 致:指织知治质支志改直制只痣掷之肢緻蚁自职毂址至颧智鲛玫纹置止汶挚 239 | 至:指织知治质歪稚支志殖直值制只秩掷芝彗之肢纸自这址智玄旨致室置止奎壹汁垄窒土 240 | 得:胃信了大祠写痔房浔侣对时侗泻僵渭腭的饲寻碍涓微焊道德徇黟磨御地懂 241 | 模:梗檀蘑借某媒锚墨植抹美磨摩渍魔摹膜漠谋镶 242 | 渍:境茨模溃遣摆渡 243 | 撤:擂彻扯敞捐歉车掣愤撇这璇揣甜澈该撒 244 | 史:势师央视实诗英市蚀世石时黑吏施十使四是 245 | 吏:央使夷历更事束聚史夹 246 | 义:牺役翼逸医立熠衣已一艺以译易育仪奕议益艾意宜 247 | 性:信醒新杏幸牲腥型心薪讯形情行兴社芯辛姓胜星忡杜 248 | 星:量信醒虽屋新腥欣型昕心形鑫行兴耍性皇馨隆邢埕 249 | 界:借洁接且姐绩解纪畀戒节祭既际揭霁结积秸迹养介捍届机计 250 | 养:芹央荠羊界演氧洋荞薯阳乔雾仰贾杨扬蒜样 251 | 宣:董胃量萱言查直复宾瑄眉菖冒宙宫选轩喧渲室堂吉亘旋宜 252 | 喧:董塑拿慢夏穆瑄遣堡宣蔓暄重墨槟遍填厦虞置擘堕童曼 253 | 系:吸信希稀些亨席票心隙熙息习累溪西谢协糸萦素戏细悉洗紊係锡 254 | 西:吸司蹊析牺希稀烯新七泄晒系欣酉洒昕心熙息习奚斯昔溪四喜戏细洗膝袭锡 255 | 只:指织知质支志植脂直值制秩帜掷枝芝之肢字纸职执址至迟智旨积致置止汁芷 256 | 作:做坐炸非助奏走租昨组佐左座卓 257 | 做:最俪佃铀租啪左贼错作钠愤组足坐啵阻奏倾昨佐座帧碳 258 | 又:由叉以优友投授幼柚济油有佑艾诱犹汉右尤 259 | 夏:喧盲蔓皇萧下吓菖灵受效亘筐直复 260 | 由:白员优油友用游邮鱿当有申犹又完尤 261 | 威:微味危魏卫猥维成薇魔未慑委韦为位 262 | 微:胃威卫薇伟为位唯猥猬腓叶未韦仙危魏徵征伽维得委违故 263 | 就:球忧兢最酒舅九救旧脱肮揪久扰究矾碗 264 | 究:冗咒酒穷宪就旧尤 265 | 萦:率系素繁察营累索 266 | 们:没闻萌但门闷焖猛盟归麽嫩面 267 | 进:疾寄经静击景轻晋径记津仅镜劲惊纪尽竟浸金井锦今既禁荐近竞迸鞋敬激紧睛旺精己靖级境继谨颈晶机警季计几 268 | 近:经极洁击景新晋径记及仅迈镜劲尽竟金锦即今技禁竞济进敬紧精己靖斤境继京颈晶机净计几 269 | 雯:闻文斐集里曼姿 270 | 早:睾澡覃着旱阜遭臣造荤找 271 | 旱:平早草亨异阜拿掌汉 272 | 各:了吕隔晋客答喀疙铬鸽昝格葛割洛苔咯畜个歌各革备笛哥 273 | 蒙:孟荣暴事萤熹豪索宸萘艋朦靠猛票芽梦袁慕基盟寡锰皋萌象门冢裳 274 | 货:霍户贷或获活伐伙祸火花 275 | 花:滑欢患还华画划化幻换哗货话 276 | 求:球秋救丘囚 277 | 救:孜求玫舅酒叔急九就拔旧鹫揪汉久 278 | 署:胃屠暑善富曙盲述宫蒿厝书者菖奢莒碧属数输 279 | 袁:哀员秉表远嘉暴元衰圆猿媛蒙援源妻基麦素原泰 280 | 质:指织知析治资志脂直值制只腰吱之职址至智旨致置须芷赓 281 | 疑:怡镉以毅夷因遗踞宜睫已异亿一霸艺意锭婕锂 282 | 了:乐聊寮垒亮各疗垃暸得泪累雷勒瞭类 283 | 暸:聊了 284 | 犹:由忧获德有拢又扰尤 285 | 扰:扎捞就捥绕批恼犹抗泷执忧 286 | 方:翻妨访樊放旁会返烦泛番范防芳万反饭房 287 | 放:访旗犯发返族斿坊范防激蒯芳赦反饭方房 288 | 邂:遐遛 289 | 遛:邂遇遗遣邀摰澳 290 | 而:额雨和尔耳二儿需面何 291 | 浈:领棘赖 292 | 郜:策部高 293 | 随:髓虽陋距苏岁顺所 294 | 陋:牌漏随落 295 | 被:波焙贝卑倍破披呗悲杯彼惫辈蓓袖陂北背备袒碑 296 | 袖:修曲秀神油福裤佃腊涠妞绣被抽 297 | 当:单晋虫蛊担省由喵但营兰首刍弩档丹淡聿书昔党儅酱谱挡苜灯荡 298 | 档:欓裆宕淡梢但当堂挡党荡 299 | 另:领拎别玲邻令 300 | 贡:真锁员公供工贝巩美侯隶鬓共乘 301 | 员:辕远贡贝元圆园损负由媛院贪贞援源袁演贸怨冤缘具原愿 302 | 奠:真责酋建黄殿莫 303 | 积:疾极击界计私记绩姐及只肌颛阳识鸡寂技珀济基激集级继挤机税几 304 | 激:击戚接烈记邀仅敖败澈赦缉纪取金鸡嫩即瞰基进集颊殿己级减积迹敌畸敷吉机碳漱家计放灏几 305 | 报:包振暴罢豹八保鲍猥巴撮掴爸宝椴爆偎推幅辰抱饱 306 | 撮:辑最懦腈桐损该报 307 | 我:握泷喔卧截最沃浅婐拢窝垅载栈找 308 | 喔:握垦理哦嘘墨我赛望堡 309 | 暮:惠穆基赛菩碁等 310 | 湾:鹿启漩厝完唐蔫万望玩晚弯詹 311 | 玩:顽王婉腕垸晚万望沅莞完宛湾碗 312 | 时:侍世石士始事十试视驶势师失诗适席日思什叶示食识史习湿实俗肘噬社射使所是拾吋室戏得施市释式 313 | 事:世石士苇始享吏十试熹甫视尸师失势诗鄄思菖示时食一识韦蒙誓菅实饰氏虱社亭鄢使是勤拾郢仕室寺逝辜释施市适式 314 | 证:真症诊政振臻阵征亚正挣争証镇郑针 315 | 証:证 316 | 毕:必华币逼比闭毙 317 | 拍:排掴掉泊派怕扣牌抽扫 318 | 泊:启护涸眉铀拍箔涠汨剥伯柏抽博 319 | 比:必札彼币别让逼壁鼻俾鄙蔽毕臂彬离论笔 320 | 彼:披必千比避鄙被鼻 321 | 司:丝减伺斯室市勇思私次似施西四所哥词 322 | 港:赶巷感渚泡钢敢刚肛溶潜杠岗 323 | 溶:镕容港融 324 | 图:提屠徒圈兔吐涂读围凸突土途秃 325 | 途:徒涂图突土逾 326 | 叶:微也业晔冶肘液页时夜耶椰 327 | 夜:也业晔烨野叶液页佼耶 328 | 恢:灰诙惊谈饮汇例回燃快 329 | 回:迥惠会汇怀恢佪恛辉敢毁慧悔徽 330 | 会:贿亏汇本卉忒挥鸣为狐灰呼晖衣酉辉毁舍坏讳学荟慧秽徽方玄惠绘互回飞蕙悔话 331 | 稍:稻少哨梢消影烧悄硝 332 | 梢:挡档稍 333 | 继:寄极急洁记及妓纪去金节鸡即既近际谜进基讥集续紧积迹介机维杰季家计几 334 | 班:边扯斑本伴版弧扮帮八榜脏珊巴半研板跚趴办般孤搬棒酊琼 335 | 珊:硼商善瑚杉姗山莎上跚拥班 336 | 遭:追灶违过匿苣糟邀直逼菖曹逾僵滢早虐遵遐超谴周渲道造适 337 | 明:朝命胡民泯朋职敏盟茗名阴冥弭铭鸣 338 | 名:抿命蚤民明敏茗珉备闵铭鸣 339 | 要:药谣牙尧邀腰钥压幺萝亚疆菱耍咬妖姚耀雅女澳 340 | 耍:更要宴费赛聚票刷星娶委架 341 | 林:羚怀梨里立陵邻杯临森玲体零砷禁吝磷凌理楚龄麟淋灵璃令铃领聆袜琳柿力霖李离 342 | 袜:枺林 343 | 拜:排白汗爱菏邦鹦浑摆库弃败痔 344 | 败:激白百拜 345 | 绝:拒纲绢崛倔举觉爵抱堀咆决局馅饱掘疤 346 | 绢:缉组绝 347 | 层:县丢蹭成肩属曾 348 | 物:五无舞忽悟吻屋雾韧误牠勿吴污务乌 349 | 吻:翁闻温文物稳 350 | 贵:贯鬼怪奏桂块责溃规过归跪轨瑰 351 | 责:寒秉贝溃熹直贷靠债泽昼鬓卖昱奠摘择叠灵麦贾贲夷素置壹吉美泰则离贵宽 352 | 旦:弹段其大但具且一代巨 353 | 角:较缴娇焦脚家教蛟铂胶甬嚼叫 354 | 甬:涌铺用前泳甫角通 355 | 存:村群亨序纯俘寸在 356 | 何:伺和问口合个可河喝荷柯而核盒 357 | 合:和格禾台河着喝拿荷痕何核给盒 358 | 楚:褚林除础处厨提渣出 359 | 渣:扎踏咋楚站罩着 360 | 力:历里立礼为林沥蜊粒猎理栗裂厉育隶办莉刀励例黎利丽李列离狸 361 | 觉:较叫学诀举饺绝居决著噘局 362 | 处:初矗楚除去取厨触趣储据憷畜出 363 | 船:床腊川传舟铅穿 364 | 传:床转借砖船拆川专穿炮串伟恬 365 | 调:周吊掉圃阔挑凋惆钓 366 | 掉:悼倬刁吊柿拍焯淖掸调钓 367 | 词:司问同饲磁次洞询此慈辞吃 368 | 玉:雨遇欲予愈毓鱼王预域郁钰宇于月玥与育誉煜余渝云运 369 | 爆:包暴嶂啧爽保报惊圃燥嫁嫖瀑惶肚孀淳雇煌幅憬康抱慑 370 | 憬:境橡悬缘想像警保提绿爆 371 | 教:较敦加孜焦佳枚交角驾孝校狡窖缴郊脚椒家轿叫 372 | 孜:兹救教 373 | 英:瑛应藁契璎婴因芙赢营史莫音央颖萸硬映银尹荚鹰阴 374 | 芙:茱寰笑英福夫荚菱服父 375 | 务:午无五鹉屋隽芳误伍物舒条武 376 | 逛:观尪狂涎 377 | 狂:庄框逛矿汪广俇 378 | 告:生稿口搞膏高造诰 379 | 高:蒿同厝告扁寓茴古嘎焉稿搞羔嵩郜糕皋莴尚裔膏鄙局 380 | 确:去雀取阙却趣决诵趋缺砷 381 | 却:裕去雀确欲怯型契扣缺 382 | 藏:慰兢葳栽赢上屁燕瞄扁癌苘臧灏 383 | 屁:披匹底顾咸藏瑰混聘魇屈 384 | 坐:错做挫作走昨佐座卓 385 | 走:收坐作迁逞奏止昨迂圭揍 386 | 拥:庸理远用橱泳瑕抚珊永佣雍 387 | 永:涌勇用昶泳水拥咏 388 | 糟:唱梧漕遭晴躁招精 389 | 斯:丝嘶司死浙其撕思私昕似西四所 390 | 浙:渐这斯者 391 | 良:量艮梁两粮凉寅 392 | 艮:良腿很 393 | 籍:极撸急厝菩记懈及耙普箔菖金鳕麸曹器誓惰蒜唔际疆集级噜吉机计瞎笈霜几 394 | 唔:无舞喀赔五啜塔德坚籍跨吴伍晤 395 | 负:员夫资服符附复福付父袱人副伏赋富扶幅敷覆赴妇 396 | 复:夫服府扁肤夏符寅附霞负福辅傅付愎宣护洹副伏赋富盲扶幅覆浮腹赴妇 397 | 馈:遗溃 398 | 遗:引暄渲以遥遐移遇衣遛遢疑已一贻艺意仪馈 399 | 速:塑医厘逮俗树苏隍遢宿束遐所缩送诉素湮湟数违 400 | 送:宋遂速这诵讼松 401 | 郊:交邡家教 402 | 追:迫起锥最坠遍遭退坞造建趋遽 403 | 决:央解诀借倔确蹶泱块觉庆夹快绝局 404 | 味:脉赚谓威魏卫睐昧珠委围外伟未炜呋为位 405 | 昧:味妹 406 | 岗:冈刚港 407 | 厉:励顾历曆力利丽立病 408 | 励:历烈动利力厉立劣 409 | 需:雨击希震训熹雷顺虚雪去戌学辐轰续幕寻而睛徐是许罩序须唁霖常哥 410 | 胁:亵摊助琳啡混险她肋蹦肪抛 411 | 肋:勘助胁响累流勤类 412 | 特:将情题牦侍寺持忒菩辐轩痔 413 | 断:愤锻端段 414 | 段:旦短端股殴锻断 415 | 鲁:胃祠兽雷唱雪辑菖茼罗冒露洛争录卢噜芦路瞎湟 416 | 兽:寿鲁些授受瘦曾手 417 | 执:指织知治支植脂直值制只仇热之汛扰佤朐职讥止滞 418 | 知:指知治质蛔支资志者植咀脂直制只枝芝之肢如桎自职这执至智致置止滞汨拘窒吃局 419 | 渠:曲橥努谋兼莱娶驱集趋架区 420 | 年:庄念罐牢碾洋那任茸铵黏 421 | 那:你耐难捺然纳钠娜郎男南年拿哪 422 | 签:答钱千牵欠迁前谦鉴枪壶 423 | 谓:唱味嫣请畏语霸据为 424 | 挤:侪积急济击羁拐祭记既鸡即及几己 425 | 几:跻疾寄极急击酒接籍记姐圾及仅绩纪辑九鸡即今既技近基进激集紧暨畿己级积继挤朵剂吉机季计 426 | 多:度掇毒朵豁躲读独托他哆夕爹夺都舵 427 | 都:堆赌毒嘟对郁督度夺读堵部多邰独邢鄙郗耶渡队杜 428 | 侣:倡伊相得招僵 429 | 兹:炫舷孜资滋子 430 | 炫:兹绚选弦漩 431 | 宅:窄翟 432 | 窄:宁宅 433 | 居:举觉扁君属踞巨房去聚据区军洛住均遽主屠剧句具驹局 434 | 友:客唷由油发游悠有诱妞哟又忧尤 435 | 唷:友有喀 436 | 偶:禹欧睛遇圃阔隅惆儒懦 437 | 隅:鱼陪隔遇福偶嵎 438 | 果:睾叟佝栗谷巽秦骨郭过课罘案棵粟呆扩裹国故 439 | 栗:采柬巢某深案束聚集黑力果桑呆票李立粟 440 | 曼:昌慢吗害璧嫚漫蛮钽冒蔓寝昱逞呈寻喧皇雯霆墅晏羁 441 | 晏:严曼 442 | 很:和恨涸侗浪亨横艮跟徊痕泪恒狠偎 443 | 跟:瞩很艰恨眼个歌更哥路耕根 444 | 咖:加开擦 445 | 京:经宋文景亨藁津仅氯璜靳尽竟金逼荆示今宗禁近竞敬泾泉紧睛精靖境晶禀警尿 446 | 赞:贲讚参暂站蛰赘瞌脏替鳕彗簧螯 447 | 贲:赞责龚泰黄 448 | 度:突赌渡毒厘督妒睹顿疫读肚堵镀都没厦多痘铎独路吨夺杜 449 | 厘:度理谨匣黎想捷速康李涯摩里踵遵属裡通愿 450 | 圆:援源员画袁演远辕渊缘围元媛原园 451 | 园:援源猿员菌缘远元院原圆愿 452 | 鼓:岐努敲骨壹股培勋古载破尌故 453 | 尌:鼓 454 | 育:胃遇悦义有言瑜欲予预域登芋钰弃玉于玥驭与誉狱盲套噢力运 455 | 喀:客将唷唔跑幅各昭靠看路嘻唁窖咯瞎帽晤 456 | 瞎:陪窜暗喙睡禽籍啥辖喀鲁蟹蓖黑狭赔镀履虾下唁鹰聘臂膺 457 | 车:彻王扯芘牢厕军洋撤茸者且轫荤澈 458 | 荤:率幸单早军蕈车窜寨里豪 459 | 茸:军车霹荣年苴昔苣 460 | 电:点癜滇店惦垫甸淀典靛殿 461 | 点:碘电卢店天垫占胍寅蔫煎熹典甫薰甜煦颠 462 | 儿:尔匕个二而 463 | 地:低坻敌底的池迪蒂帝慢得他她弟堤第递滴待抵 464 | 动:董纫东栋励重洞劝冬咚切到冻勃懂酶 465 | 人:凌扔然认任仁犬忍负仍惹 466 | 仁:供任人忍仍 467 | 胃:寄署静青景暴者胥宵臀为脊吾鲁肯舄喂未窘韦宣冒情宫请育晨精微盲程置昏骨骂得清曾 468 | 伊:依滑倡借侗衣惜侣异一惆惘医隐仪铜弈 469 | 项:现顶橡湘想像顷厢香羡乡巷相向祥线领象箱丽响 470 | 顶:项定领盯预顿颂丁颈顷钉鼎 471 | 蔡:采率才察黎菜藿彩猜 472 | 台:太治合檯胎始他泰它抬待拾在 473 | 案:按寞藁暗衰熹豪岸寅羞窦彗莫蔓栗某奏妻安啊枭素蓁果窒蹇 474 | 溜:窟流潘耀六滢 475 | 耀:势跃药溜逞崂唠要蒲湟睛涅 476 | 用:由涌勇甪游月泳永拥佣甬雍 477 | 肘:周叶轴时偷射 478 | 遵:道厘逼避遍遭湟尊 479 | 尊:酋萼菖芮标遵准淳 480 | 魏:微玻味巍威魄豌围未韦渭为位 481 | 韦:微胃焉威魏毛事围维菩伟苇弟望为慧 482 | 布:部不希步怖补摆市佈 483 | 市:董司希世始私事士带十试视巿势师失尸诗示时食史识讳实饰氏重使是拾布室逝石适式 484 | 岁:碎虽随水秽夕穗 485 | 秽:穆岁会 486 | 喂:胃根曝碾卫涠粮艰为位 487 | 流:理丢酒溜游瘤柳硫旅讪肋六留刘 488 | 刘:柳浏六留流 489 | 域:鱼雨峨喻于月遇悦咸浴诚欲语与育誉狱越壤玉 490 | 雨:禹渔遇语欲瑜愈预前域郁钰玉宇币于与而狱再噢余渝需 491 | 真:其振贡震整陈证寅直值针诊甚菖首怎郑莫贞真奠臻阵征争集这鼻盲百甄期珍具正苜亘逗 492 | 适:世士事造十试透猛示时遭遣湿实使谴通是室市黄适式话 493 | 获:惑霍户或护荻活狄茯互伙犹狱火货狐 494 | 荻:获灰 495 | 施:司事十试弛尸师失诗时食史狮实饰旋使是拖腿石释 496 | 拖:瓶吐脱托拓施弛抱 497 | 发:翻没反罚放友犯繁爬烦伐法范阀怕饭凡筏乏 498 | 怕:指枯帕跑发爬拍旧派坦伯趴柏枪 499 | 谋:茉渠某末谟模葆荣溧谍陌识误煤牟 500 | 感:惑慰厄赶戊盛咸哺戚干唇敢改刚撼芯港廓根愿 501 | 附:富甫福覆琳副服府咐符付父复负 502 | 付:服府咐附复负村福傅父副行馥赋富斧幅敷抚腹赴妇 503 | 瘾:引蠕应颖扁癖隐影 504 | 仔:自纾纸子 505 | 闻:问文吻们圃雯闾闯间 506 | 闾:闻阖间榈简寓泡阋询罔局阁淘 507 | 女:安努要奴艾萎怒 508 | 努:诺渠顾鼓女怒 509 | 校:姣较肖笑孝萧先饺小佼销枚皎消嚣效舍教铰棱 510 | 赶:竿赳迁感干敢刚迂港提杆 511 | 刚:纲赶酬杠树尴前添缸感钢冈干敢港罡协岗杆 512 | 算:筒篹菖圃像漳焯莒璋笛谭卸筐蒜 513 | 筒:算桶同简通 514 | 续:谟希蓄训啧待虚债卖学情犊读荬喽饿徐绫许继蟆旬序须需旭数 515 | 谟:琪谋续谍 516 | 侵:援寝信情秦最其青轻七亲清使侯保 517 | 增:唱墙赠谱茁正培憎郑曾 518 | 唱:昌猖售雷望糟帽瞩缉鲁敞鸟福鸡场驾峒长冒谓相寨榻焰集坦碧坞噌精乌倡屠皇增罩潜憎畅偿 519 | 繁:凡樊萦雪发烦铀番敏票墅豪壑反彗房 520 | 壑:警繁堡 521 | 副:服符附复负翻田福剐菖付父伏赋富幅覆唰围赴妇哥 522 | 才:采将踩蔡再刁财裁菜材彩在猜 523 | 菜:采踩才蔡莱粟黄材彩餐猜 524 | 抵:披低坻敌底朊地概桩砥 525 | 底:低庸理屁蒂扁地弟庙第抵 526 | 销:肖萧笑晓铺潇校嚣消锚小下霄效铛宵箫硝 527 | 消:滑润逍肖笑萧骁下校小销肩效宵浦稍涓 528 | 备:呗啬蚤杯田各惫北名背悲倍被斋诣 529 | 唯:微玮危叩睢维伟为濉惟 530 | 惟:推唯帷卫维堆椎 531 | 带:歹怠戴贷答帘大套滞黛莆袋代市逮待达 532 | 涛:满焘寿逃套畴滔请祷他掏她淘讨涡它韬 533 | 锂:哩埋理骊疑李丽里礼离 534 | 谈:摊恢伙谭爽糖灰坛炎抉贪淡谦读坦檀诙滩妖堂他探 535 | 淡:漾单弹谈大但当蛋氮炎档 536 | 拉:泣扭啦扯扩腊垃兰来立扛位 537 | 泣:拉广立弃汱 538 | 座:庄做坐作桌组 539 | 戴:崴贷或截大戟成玳虱带代载待哉 540 | 或:霍后戴候获呼活伙祸火货 541 | 争:真政鲁振阵征徵青净正簪整债箬蒸证誓镶针 542 | 蒸:熏征争整熹针 543 | 万:王往腕忘方完外网瓦万望玩晚旺湾 544 | 佳:徒价偿嘉维加挂夹莹家教假甲准 545 | 生:伤盛些伸告损省声师牲笙审慎设甚森沈僧升身上圣主级神深剩衡胜申晟 546 | 身:声牲生笙审舅设神甚深盛什伸胜申升寅房省 547 | 状:庄转装赚伏撞壮 548 | 壮:状撞 549 | 言:信曰吕士且豪省害烟菖已莒延炎妍厌盐掩毫音宣学眼赔演岩颜育誉样旨盲艳官膏严彦意 550 | 炎:淡眼谈阎岩阳焱言延闫 551 | 痹:演 552 | 演:员衍屋言圆庚寅辖逼换延压验盐眼研痹岩俨颜潢滨潭渎渲藻养艳严携庾清汶澳 553 | 活:盾后焉或狐获店化蓁麦互唐伙火货舌话 554 | 食:世石士事植拿十试视势师示时识实饰噬使是施市式 555 | 治:指织知质支志值制冶掷启之汽桎职台执址诒至涓智致置止洽旧汁挚 556 | 冶:也恰治洽始叶殆爷拾 557 | 气:琪旗起棋济企期戚妻欺其汽契七机去奇祈弃器 558 | 黄:环莆荣菜寅还荒莱茴幌鳕彗薰凰莫慌堇奠茜潢类贲皇煌兼谎美适 559 | 征:微贞症真政甄铮怔正挣争峥郑蒸证睁 560 | 蹈:道大滔路帑躏到瑶打 561 | 管:董冠懵琶苣筐惯雪营菖剐关菅冒宫愕昔光广观旨官馆箐 562 | 琶:音睾毒暂誓爸管叠鹜营壹番菁啻苦 563 | 涂:屠兔深图突土徐途秃 564 | 瑕:虾下醌踊拥暇 565 | 毫:嚎辜菖号亳辱言熹豪好笔 566 | 亳:辱博毒毫 567 | 预:雨渔遇颅顶予欲越愈寓郁逾玉浴于与育馀余豫御运 568 | 愈:俞雨预于遇思语与瑜越玉 569 | 油:扭袖歹由鼬神友游铀涠有庙又抽邮甜尤 570 | 涠:袖温油湘浪泊相维喂海混渴澳 571 | 常:尝长昌肠偿吊窜帛产党需场甫津赏厂 572 | 产:长程铲芦新缠严差广常泮场展婵茶彦厂 573 | 牠:物他它 574 | 买:埋实麦荬夹迈卖 575 | 弃:泣起齐棋其企窍期妻七奇育气浮拜汽器萍 576 | 则:侧择测责泽 577 | 渲:擅拿雷殖准营靠遭遣宣迫演挹雀范槟酱霍薄置遗覆 578 | 昕:研曦斯腥听欣新兴心星西所 579 | 仪:怡议以伊义懿遗翼一艺宜 580 | 福:窟孢隔夫服府雷符附复负唱耐扈芙辅腐癌付涪袱捅副隅俯伏袖赋倡富禧扶幅敷届抚浮弗腹 581 | 届:解雇借介戒界街福节季且扁刷结膳 582 | 炸:榨扎咋诈作蚱着假 583 | 咋:炸昨眨体渣 584 | 还:嬛环反返孩幻换和缓划述恍海潢桓好患欢华谎骇花黄运 585 | 驳:播姣博佼 586 | 博:播驳桓薄渤波慎傅棒泊懵亳嘻搏伯溥勃铂 587 | 破:玻迫剖波魄鼓坡砸颇祸泼被硒婆 588 | 波:废播披啵反薄跛歧疲拨坡皮搏伯泼被破博 589 | 遮:谊越这逅达 590 | 科:珂客嗑刻和颗可轲课壳抖瞌柯克蚪 591 | 课:客刻科悚懦可个屎咳溧喋棵柯误果克 592 | 菅:寒肇套管营事拳掌与苣稽彗 593 | 碌:绿禄录缘 594 | 律:率侍德伸轩禄串绿库虑 595 | 伸:声倬仲律生神甚深怖呻俾焯申升身 596 | 资:咨兹知製谘质赘自支租滋负子姿字直己 597 | 纪:经极界记绩辑妃今技既禁济基进激集结鲫级继介吉机计冀几 598 | 济:极记及仅津侪纪九鸡脐技既近际骑气紧又忌积齐剂挤机计冀 599 | 虑:律痣卢德利炉庙绿 600 | 卢:点鲁露路旅炉陆虑 601 | 哪:挪难纳那娜男拿乃 602 | 展:扎最震扁斩掌盏民站张摄栈雇占屉崭产晟战铡闸 603 | 斩:暂渐圻掌战沂展杂轿 604 | 错:做挫坐借锗惜锚倘绰措策诣 605 | 措:错挫搐借捐蒿茜惜莆苣昔彗撒 606 | 耒:表步未杀 607 | 尼:拟你妮呢记泥 608 | 呢:拟你尼妮逆泥倪 609 | 毒:莆昆琶赌渡看茴惰蒜邑度顿母读亳嵩堵都辜多独夺 610 | 崔:霍柠街辈裙裴墓钵愕苜催 611 | 罐:冠惯徒部罅维愕年馆观 612 | 谱:洁铺增普当厝 613 | 百:闆真白菖莒芭把佰臣摆柏败八 614 | 臣:城百早沉辰成陈 615 | 张:长奖彰章装场占站涨胀漳仗掌璋账弧展怅 616 | 长:尝昌唱强肠偿杖上铲仗畅产张常场厂 617 | 释:螃视失势实程援籽示事时译澄浮施十是式 618 | 浮:孚福幅夫译服泽释弃复 619 | 维:威卫雏薇堆伟准为位罐唯佳鲑涠蛙未绾韦危炜巍惟微继绀围违畦 620 | 堆:都推疟对维婚谁碓队准惟 621 | 邻:羚领林璘民临淋另陵令 622 | 蚪:料科 623 | 墓:盖母皂宴基目苜募崔甲差莫 624 | 冕:免霓郾疆霆面羞 625 | 郾:冕廉 626 | 隧:燧队 627 | 冠:贯罐屉最管官翘挂遢圃旭望观关 628 | 翘:冠娇瞧卡把跳 629 | 洲:沙周州渊川轴舟沪训 630 | 州:洲周舟 631 | 中:仲钟忠盅衷锺重终种众宗 632 | 廊:厂 633 | 厂:长商信偿产廊常场污广 634 | 步:耒少部布不涉哺埠怖补莎卉捕 635 | 奥:啊窦寞糕傲类契舆寅阿澳 636 | 窦:奥投案 637 | 辆:晒量镉亮蛎辅嫣俩厢瞒两辐酮炳靓啮 638 | 量:恋里炼亮良彗誓连宣冒堇链梁两呈靓谅辆置星粮练 639 | 雷:了雹盂震翼磊君啻愚害唱贯垒审雪鲁田福菖雾羸露察累嘞暨类霍患富擂渲覆畏赛需蕾 640 | 君:菌钧军俊祠骏居奢着雷据均 641 | 民:觅鹿冒命宙米尾琵明邻昆敏秘名圈冥迷展庚 642 | 昆:毒困琵民混尾坤 643 | 兰:岚拦羊迁栏浪览拉二当蓝朗澜 644 | 澜:兰阑 645 | 囚:球求困因闪 646 | 办:斑伴邦版吧罢辩判扮班帮八颁犯拔把刃半板苏般亦搬棒辨力协 647 | 帮:榜搬鸪棒晤邦韧扮办班瑶保 648 | 缩:锁琐纲诉哺苏速宿唁编嗦索所 649 | 唁:精喀稿瞎亨需癌怎亭甫馆差缩糖辖 650 | 呕:岖柩坚有枢 651 | 月:曰遇悦欲越鱼跃用域郁目丹玉玥与闫约周阅岳期馀肩 652 | 闫:研沿阎岩普月颜严延炎盐 653 | 从:重聪总众 654 | 抬:太持拾台 655 | 场:倡长唱昌尝肠炀敞砀产常畅张汤厂 656 | 狭:瞎陕 657 | 卓:主坐作洹覃竹桌亨型着焯灼亭桓垣 658 | 新:吸蕲信希祈锌幸汐腥欣刑劫型厢昕心颢薪夹息形近鑫行兴芯昔西性所勤馨悉辛洗亲产星沂 659 | 心:吸信析新锌幸系欣刑圃型昕薪息形匕鑫芯兴行西性馨巳细邢辛悉姓亲恐星係 660 | 节:借界洁接姐及解捷古苔菲切结扫级继介街苷届机杰拮 661 | 结:佶借极急洁界接阶计且姐皆解纪纬节鳕启给截基集减介街届机杰拮 662 | 侍:恃停律持待时特是痔 663 | 尚:商上倘向高赏 664 | 上:善商长伤擅生衫尚站山藏向卡绍胜珊讪闪赏 665 | 字:只纸宇学程孛自籽资子呈姿 666 | 宇:鱼雨半皇室峪羽于遇馀亨呈余与语瑜字玉 667 | 酱:将渲当浆詹 668 | 席:瘫系喜奚绵戏些希袭洗时魔锦棉儒伟篇血 669 | 勇:司涌庸舅用泳男鳕永咏 670 | 纲:缸钢刚网绝缩杆 671 | 钢:纲悯缸干刚网泅港 672 | 田:巧母苗天幅副略备填雷黑甜恬 673 | 甜:点和田猖油天撤柑填 674 | 丙:访再昏冰并病芮饼炳 675 | 语:雨谓宇揄云瑜羽于诏逼馀郁域榆与渝予愈晤话 676 | 利:俪历里立荔粒和理厉璃莉励砺笠例力丽李鲤莅离虑 677 | 费:废萤癈麂萎匪肺非捷彗鬓螯韩茜赘疆菲耍堤焊痘赛飞捏夔 678 | 痘:虚度患崴凌窥惠最兜疫疲短费癫蚩海癌绩斗渡 679 | 酒:歹九救具酉洒就久究流几泗 680 | 酉:会酒暂有票贾酋西 681 | 除:初赊楚处厨黜触储纯隙出 682 | 出:初除楚去础处厨唇祝春触趣储住绰雏畜完滁 683 | 协:痂系泄恤息鞋脚刚携螂斜谢谐袭办卸写血 684 | 降:讲将奖见姜隆陪阵隋江帐峄匠贱间 685 | 脂:制只纸知质置腥能支胀芷执之肽 686 | 更:蔓耿哽画羹洹粳硬灵跟匾吏耍冥便根蹇共 687 | 九:兀酒济仇救就完旧玖久灸几 688 | 兀:九完元 689 | 天:点先田店添矢夫季关体突甜夭填 690 | 魔:雇威某席模咸圃麾磨摩睛魇庵 691 | 麾:鹰摩魔序 692 | 古:害估顾骨郭享鼓沽股志节页国高谷故 693 | 骨:滑胃冒鼓过股果国古谷故 694 | 拔:披白巴办救跋把吧拨泼八 695 | 通:同遇遁彤逅筒厘逼铜甬统洹捅遢遍痛道画潼童适 696 | 遇:雨遛予欲愚愈预域郁遏遣迢玉宇于月遢隅遍与育狱遐通云遗馀豫御偶运 697 | 扮:拌半搬粉伴版份标提汾分办班帮探 698 | 伴:半板爸佯班版把俘办扮 699 | 拟:你尼呢似凝倪碍 700 | 你:拟尼尔妮您逆那呢称妳泥倪 701 | 尸:师户鳄欧实捐失市士事识施使是 702 | 户:尸护获忽呼湖空沪互服火货虎 703 | 秘:米密民私泌蜜祕迷 704 | 蜜:米密宓室坠蛋秘敏 705 | 推:榷非颓掩忒腿退淮堆报准惟 706 | 退:追推洹鏖遍腿遐迟 707 | 朱:主失竺助洙宋竹珠猪煮逐祝祖注住驻诸 708 | 宋:颂东京木宗未朱松送 709 | 习:失喜系起写戏希惜玺洗时奇繫西袭係息 710 | 息:恳吸怠析信希稀屋新熄害系思想葸心隙习冒皂总自歇宦渴慧西患喜戏细惜肃协 711 | 也:业世野叶冶爷夜一耶 712 | 体:帖梯林题咋天怖休钵一替贴提仰侬 713 | 休:修秀秋体沭羞 714 | 烟:眼焖燕言咽婀姻 715 | 姻:烟因捆衣咽阴殷姐 716 | 萼:率将碎寒德筹季雾李票拳等黎宰尊攀 717 | 区:岖曲渠群去取居这趣趋屈 718 | 勒:乐叻勘了劝累勤蹦类勐 719 | 迹:极继介蹟界击吉机基记季激计既即绩技 720 | 蹟:绩迹 721 | 香:项吞音吾乡湘翔蜃相蚕箱像厢向想享祥乔岙舌 722 | 兵:乓乒柄宾冰并饼滨病炅斌 723 | 乓:兵典共 724 | 胀:瘴涨脂张 725 | 涨:将章账站杖胀掌张帐战丈 726 | 海:害亥还鹿煊嗨亩阈蒽蜃逼葱孩每痘涠怎澍熹 727 | 每:没母亩媒魅梅眉枚美海妹迷笛煤楣 728 | 弦:絃炫显 729 | 絃:旋弦 730 | 版:播板榜扳坂班畈伴吧把眅办扮般 731 | 溢:议益衣异易一意宜控 732 | 昂:最靠帛扁幕 733 | 悟:午吾情慢物 734 | 迷:米民咪谜靡每秘这眯 735 | 咪:米迷 736 | 终:钟忠衷重总绥咚种中众佟 737 | 位:微仙味威魏卫拉维围外喂未蔚伟立薇委尾渭为 738 | 立:梨俪义历痢里礼位泣林拉荔躏理栗俐厉莉哩励例力利丽李列离 739 | 露:蹊题鲁卢鼠霹鄄路嘻聚落鄙雷录炉霜陆 740 | 马:满冯蔓嘛鸟蚂忙麻茂毛骂妈码吗玛迈 741 | 忙:满马盲 742 | 鳕:势再葛勇黛赞童男婚籍里结黄誓 743 | 此:瓷茨刺些持磁次外使之慈辞词 744 | 次:灰欢侧司起茨认刺测思赐雌款此子疵慈是词 745 | 益:谊亦印以因义颐异已一抑溢医艺意宜 746 | 桑:栗秦三逞奏噪磊熹豪萎斋蒜 747 | 秦:情侵豢青请禽果桑羞 748 | 妲:超组起姐 749 | 履:瞎愕旅房 750 | 纸:指织只止细职支仔祝枝子之至脂字直值 751 | 钸:铈怖不 752 | 怖:沛饰布钸不滞步伸锋体瑞 753 | 葛:湟格苗个隔各菖苜鳕阁渴摹离哥 754 | 刃:认任仞韧办 755 | 室:司雹世士亨事蜜始掌十试窒势师率失示时宣宇氏宦呈是至市宴石适式 756 | 晨:城胃冒雇程慰最神承沉辰浪称成陈摄 757 | 赊:除 758 | 误:诬吾五舞无娱课吴勿捂污物谋务乌 759 | 勿:易物乌误 760 | 欢:患吹还缓雚华歌化暗次款劝换花观 761 | 难:楠那能哪南男拿囊染准喃 762 | 染:难然杀栾澡嫂冉梁袭杂架 763 | 某:其模契豪谋贯草摹漠禁莫栗末皂魔摩嬉牟默案嘻磨 764 | 余:俞雨预娱宇于馀郁与佘渝玉 765 | 示:世始士事十试视势师尔诗适时识食票六实饰使是亦诉不室京丽市释式 766 | 尔:你尔耳小二示儿穴洱而饵 767 | 者:胃知署浙震菩疹辙吾蛰菖看著喆诸音车苔着昔这子嵩畜折啬哲 768 | 敦:玫政整吨教载 769 | 拿:纳男熹菖食莒詹难合南呈盒哪喧渲皇那罩旱亘达 770 | 缆:蓝 771 | 蓝:缆栏览篮兰监狼 772 | 仍:初扔然认任人仁 773 | 扶:福幅夫辅庆服府琼弗伏父复负 774 | 服:夫府符脲附复负瞩福芙辅暇付父眼朋副辐俯伏富户眠扶幅胎浮弗腹氟赴妇 775 | 险:线仙限隆蚬先咸衔现金享想胁闲嫌陷睑显检 776 | 纯:顿除存唇春醇沌 777 | 杰:佶洁击木本接姐及解劫节捷胍茶婕截术结继介删机杰 778 | 尤:由优油友游邮有犹又究 779 | 雀:渲确鹊却苜垄筐省 780 | 鹰:焉雇印因英厝银营应麾腹瞎庵 781 | 逞:缝起其逢斐暴震龚望幸强缉逼吴遣建堡遑裴走麦墨梁集呈坞臭谴是县垦承皇馨桑美耀造袭惩曼 782 | 具:员其酒距巨寅惧寓锯聚冥据莫真拒旦集俱均剧句居霆局 783 | 冥:其民明更具亘 784 | 愤:额满翩憾懵横雌啧断炼擦崎核懈做绑惯慎惋丰诚撤龌嫩倏分喷债躁键撒奋罹麟倾噬嘲牌棚氛峨娇胰僚毗跋份懊懒俄烧健 785 | 鼠:树露囝术数既 786 | 树:诉述鼠叔硕书速术刚疏梳浏韧顺数 787 | 镓:嫁 788 | 嫁:镓价架脚妹爆假驾 789 | 呀:讶鸭亚伢押压 790 | 交:较接加矫绞嚼姣价焦剿皎浇父骄窖教胶缴鲛娇郊照脚蕉家六轿叫 791 | 揭:解介街界接捣机竭掏渴揣 792 | 接:按借急界击阶搔懵且挥凄搓皆姐痿记妾镶解戒节竭捷即交捂既技见援涪截揭基激结擂级介街机杰捏几 793 | 蒐:葵所 794 | 遣:喧渲暄道扈置遐遇眉逼遛逞前瞳遍潜渍钱谴适 795 | 条:萘矣笑篆祭挑亲冬跳夹务 796 | 亲:侵青轻庆新七豪茉璜崇琴心薪情妻敬请祟勤寰素兼期紊氢茅卿清六条 797 | 单:搭孽大窜荸塑茧萎担睾答弹但蛋阜荤丹打淡当胆党覃蓁弟 798 | 丹:周单大但月当蛋舟冉氮诞担 799 | 够:构狗过购 800 | 过:顾迅呙寸国够郭锅遭掴沟讨估雇谨骨股果逗裹贵故 801 | 肖:骁笑晓潇校小消销肯挡霄效宵 802 | 看:青蓄侃者簪抗淆堪缉刊喀毒菖彗誓勘坎着霍盲砍康氢阚 803 | 牵:煊牢迁签前潜钱莺蒜 804 | 莺:军营牵 805 | 落:厝唇蔫菩炉藩菖罗涪若露洛薯弱蓓络陆陋艾路濡 806 | 蔫:点薄寄蹄善希营落帝意湾 807 | 数:守散署硕娄纾庶属敖暑敞牧淑输述树书宿束术熟续敛叔是舒许敌纹鼠竖速塾墅疏故 808 | 束:柬暑栗诉末述竖荣书莱速策吏属数寅荥 809 | 首:真收守寿道部授当售狩菖茴受莒苜芮酋手省 810 | 茴:窗蔓毒营首啻高黄省 811 | 黑:噩寰蹊栗巽田雳照囝嘿史票里瞎熙 812 | 搜:嗖理受漕熟凄所楷 813 | 勉:棉免 814 | 担:安单答洹但当蛋携袒撞丹 815 | 恛:回 816 | 迢:篷蓬遇贸逼里超运 817 | 蕃:莆菖彗 818 | 莆:借蓄蒋番翼带蕃垂毒营蒲罹善幕第兼蒂措黄臂蕾 819 | 遐:邂遇遗墨速避谴退遭遣邀暇婆遽邃 820 | 及:疾寄棘起极急洁击借籍记绩仅脊堪解价尽辑节鸡即今既近济骑基集暨忌级积继挤吉机杰季家计几 821 | 急:疾极击接扁籍记姐及辑鸡刍即既技总基集结亟稳级继唧挤救计几 822 | 霓:冕竟竞筹倪笔 823 | 找:赚拽早浅伐照着我掌造召泷招著技 824 | 技:疾借急投接伎记绩仅纪尽辑疲金捷枝即既禁近凌济疫基集找忌级积迹介唧吉机季计几 825 | 敌:散迪敏激地数抵故 826 | 极:吸棘极急籍汲记姐及饥纪辑劫即既近济际集结级积迹继吉机季几 827 | 链:连量廉莲恋联练健 828 | 攻:姣公玫供宫工叹巩功哎弓戍共 829 | 玫:致敦攻政救梅枚美效哎 830 | 暖:援缓最腥暗媛暧睬 831 | 睬:採暖踩寐 832 | 螯:赞赘费类螫 833 | 率:孛亨衰整菩熹苍滤律茎伞葵略摹荤著霾半萼薯蔡蓬室辜萦路茗蓉禄绿 834 | 熹:寄悬烹丢信表希嘉景享蓄事震觐拿索害率亮纛甚责靠鬣蒙誓毫寮善囊蔓慕煮叠鼐筹菁海募影幕亭畜纂鼻蒸点喜盲置黛蠢案蒂美蕉需桑哥蕾 835 | 仨:三住撒 836 | 前:虔雨先阈欠可铅潮钱枪嵌融强千箭剐蓟遣甬见渤歉牵浅抢谦刚卡谴剧签迁潜酌 837 | 券:卷全权劝拳泉圈 838 | 圈:梠民全权圜恩劝图券拳暨 839 | 投:没扭援昱设窦透役壹股偷丑又头技 840 | 头:失实投豆透夫犬偷夹 841 | 桶:筒统涌漏楢同捅楠童痛诵俑懦铜 842 | 捅:播擅桶摘撙同福振搞括童描璃捕通插 843 | 渡:度毒痘溏涯渍都 844 | 助:族租肋作组足筑驻朱初以逐煮铸祝注住主蛀猪胁 845 | 组:族租纽妲做迥作徊目泪足绾狙绢阻卒祖佐住座主铟助 846 | 夫:服府复负天福芙辅腐未傅夹头父伏赋富孚扶幅浮弗妇 847 | 铀:做钿油繁泊有妞 848 | 昱:垦投旻责整是曼 849 | 磨:屠摸某模膺腈傍肩扁摩魔得膜腔莫 850 | 腔:枪墙磨庭 851 | 富:昌署夫服扁雷甫咐附复负福眉辅菖腐莒阜傅付父宫副宦渴赋置覆官圭赴妇赏 852 | 格:口隔馅滔哥陷恪惰韬帖合葛戈洛苔根个歌各革憎掐阁 853 | 恪:可滔惰格 854 | 指:织知治质稚支志植怕直诣值制只眉滔枝之肢纸捐职执悄至旨致置止楷 855 | 馀:输鱼俞愉预宇渔于月遇榆余语与渝瑜逾禺 856 | 鲸:鲈经竞金纺练 857 | 鱼:禹裕俞殒宇渔觎于月玥馀誉域隅与渝瑜予玉 858 | 手:守收寿丰荸售受首熟兽掌瘦 859 | 刺:制割测赐次剩喇此剌莉莿 860 | 莿:刺 861 | 见:捡接现加江降假价箭简前坚剑奸件建键眼鉴监检减渐尖贱健间 862 | 法:废洁法志旌反乏歹去返伐讳饭麦选薯罚发烦好凡话 863 | 旧:扭珀和沿治但九救洛就扣坦怕伯柏久究保伍 864 | 疗:料潦了聊 865 | 料:聊疗抖斗撩蚪忡 866 | 概:盖喵腰橱有砚帼抵该嘈 867 | 盖:善茎墓艾莹尬概钙丐该 868 | 先:咸现险限掀天前宪仙酰校相贤线县衔下洗嫌显鲜 869 | 欲:雨预喻浴月遇寓羽域却豫与育予玉 870 | 扈:厦谊慎擅挹重福基屋翼镇遣漫属尾鼻 871 | 碍:拟将智硐硼程再础爱得碉硝 872 | 论:聊润比乱抡伦轮 873 | 伦:仑化俨沦论轮 874 | 央:英实映养洋殃阳吏史决夹杨 875 | 舒:淑抒述书纾梳疏数务 876 | 抒:杼纾舒书 877 | 拘:洵知枸军河抱向掏据 878 | 据:举距摀君巨搪扼涯锯聚摒嘱器掘拒谓撂均倡剧橇句处具居拘掂局 879 | 工:害公攻讨供宫贡拱功龚说弓汞广共 880 | 公:攻供宫工贡巩功弓空松么共 881 | 逍:趟消 882 | 赏:富凳葬尚堂山上常偿莫 883 | 堂:宣诣谈孛覃街坛倘唐汤趟凿萱档赏糖诸 884 | 景:昌胃经静屋晋径熹豪仅寅镜劲惊竟瑾金井票锦幄近冒情竞进敬影紧祟乐鬟境皇京颈警 885 | 练:连绮纮脸纫量链综恋联泺绍两缚炼鲸鍊 886 | 鍊:练 887 | 验:研眼捡经艳演金砬颜严睑俭延眙胯妍厌堰吩 888 | 俭:检验 889 | 苔:咨格若各节者峇登查塔 890 | 去:举起丢祛法出趋取却娶屈区初曲蛆确驱气畜继处居趣需 891 | 球:珥涞王求秋悚撕囚就糗豫拣撼楝琢搽蕨 892 | 蕨:球象 893 | 绩:起击界记啧及纪辑蹟戒浸寂债技叽际缜基级积迹机痘须家计几 894 | 昌:倡长唱冒富宫昏景常场暨督哥曼 895 | 暂:檀皙赞菖酉琶崭斩咱誓 896 | 皙:晰暂细哲有 897 | 戒:价借界藉戕接介届鉴成季诫试绩 898 | 草:章某苗覃基茧旱淖苣曹垣 899 | 蔽:币该比 900 | 币:雨重逼闭蔽比毕笔 901 | 充:重兖葱虫冲 902 | 兖:充 903 | 厦:度喧屠雇信扈疫厝山煞凰 904 | 轲:科再怒 905 | 较:轻佼觉加假绞价焦皎交角铰校教蛟胶娇饺酵脚蕉家叫 906 | 佼:较驳校皎夜 907 | 同:东彤国洞筒瞳铜词统捅总饲痛通周桶潼童桐高间 908 | 易:依氛引以议疫义衣蜴宜已亿一抑溢勿艺意扇椅 909 | 挫:错坐拙剉措唑 910 | 忧:啸忱优友惦就悌悠有诱犹泷扰 911 | 边:偏变远邀迦鞭编遍扁贬便迈班般斌 912 | 便:梗卞边哽变平匣更遍扁编使面辩保 913 | 路:撸烙跟螺炉蹈率鹿胳喀鲁赂略旅度露洛录络璐陆卢骷落禄六麓鹭 914 | 璐:路 915 | 纷:份峰分 916 | 分:冯奉缝逢扮封丰愤风饭奋粪疯纷粉峰防氛穷芬份 917 | 置:指胃织量知治质暴志植熹脂直值制只责眉菖掷遣彗之冒炙自职至智喧富致渲止罩亘苦 918 | 霄:肖雪晓销宵 919 | 宵:胃肖晓消销霄箫 920 | 辱:亳唇春导入蒜毫 921 | 靠:考渲喀昂罚覃烤责照疆肯熹蒙 922 | 旺:瓩低跃王忘进网脏汪万望桩运 923 | 菇:估姑股茹第 924 | 茹:汝若如菇 925 | 煎:点兼剪坚总肩健颧 926 | 剪:减价兼简煎靼 927 | 盲:胃信署青暗言熹夏忙羞复省赢看窘亡音真赔着育精喜耳套短吉互意 928 | 赛:寒文霹萤雷麂萎羞镶晒鬓蒜喔茜疆耍宦赉暮差昙程塞费猩霖寥 929 | 猩:狙甚狩赛獐狸 930 | 湟:强鲁甚捷漫建罹理葛辈撑疆惶碧遵灌惠程煌蝗速耀提捏撞 931 | 试:世始士事成十视势师失戒让示时识食实饰使是陆武甙室逝战施市适式 932 | 捍:韩界择悍汉厚淳 933 | 族:旖旗助租旌组祖住足放 934 | 苣:音菅章荳腊管草营茸享芦耸苴遭掌措查莫 935 | 游:旖涟由漩友油用游沥悠有诱邮流尤 936 | 运:匀孕还辽预辕军于晕任银遇韵允与育云迢旺玉 937 | 轫:车 938 | 顾:估雇庸护努肝棍郭颅屁圃股过朦厉颐古颢国故 939 | 圃:冠顾唐调圄犀舅橱心算润闻囿饲魔匦爆讨淘周温画围康趣偶臂愿 940 | 僧:德生森懵 941 | 夭:天 942 | 趟:逍堂越趋汤糖 943 | 越:约预钺跃岳月遮迦域悦与趟予愈 944 | 怒:惑诺努轲奴恕顺恣女 945 | 瑞:蕊埔睿怖芮喘锐揣踹 946 | 揣:端撤揭摧湍惴瑞 947 | 洒:栖牺酒西撒 948 | 舞:骤午无五癜寰唔雳震涯篝麸吴误污物嫖武 949 | 无:诬午舞五吾不唔于婺乌鹉屋沈吴误污物务武 950 | 宗:棕踪京宋宾总纵录泉中 951 | 核:渤和合河喝荷愤杨何该 952 | 辜:率喜毫毒皂吉疆事掌故 953 | 玄:选铉至会 954 | 烧:娆晓炔毙愤尧莞稍侥虎 955 | 晓:筱肖孝笑脘下潇小销跷霄绍宵烧 956 | 冲:充匆呻忡种恒宠 957 | 翻:樊鄱番潮反蹦韶帆犯颢饭翱副范鄢靓方耦发凡栩 958 | 捕:部不捅步补浦 959 | 腰:跻碑艘妖尽映啤质概要腹嘎 960 | 机:疾极击界接籍汲记绩及仅矾缉纪尽肌金节鸡即今技既禁近济叽际揭枫基进巾激讥集气结暨忌己级积迹剂继吉杰季家计几 961 | 毅:韶依怡议毂异疑逸一艺意屹 962 | 袒:被但祖担 963 | 外:味歪此万为位 964 | 韩:邯钝掂寒捍汗哈蒂戟费涵炜幕碲讳汉含喊羁 965 | 钝:韩擎顿 966 | 啬:音陪童者番奇备倍意省 967 | 隆:堇龙隍陌瞳呈险降星陷陆笼 968 | 陆:鹿陪隆卢露芦路旅落录试 969 | 憎:唱格增赠懵稽 970 | 债:危德责寨愤争续绩儒懂猜 971 | 濉:滩稚唯 972 | 江:庄将见姜监汪降 973 | 徐:虚许学涂蓄询须需旭续绪驯 974 | 许:虚雪诉汗寻数训须需续旭穴叙徐婿 975 | 薪:蕲欣新兴亲心莽性蒜 976 | 祈:折起析期欺新七且气沂 977 | 阜:富单早臬旱串 978 | 门:萌梦闷竹官们行盟蒙么间 979 | 遢:强冠踏温谩曝遇遗速遏躏漫渴递通 980 | 络:烙落路囉绍馅罗塔 981 | 止:指制织只知致治纸置滞让职走执之至直值 982 | 即:疾寄借极急击接记及尽鸡锦寂技既近基激集鲫己级迹继挤吉机季家计几 983 | 淂:导 984 | 彻:制街衔车撤铡澈 985 | 澈:彻散车撤欣热激敝恐澍辙 986 | 踹:瑞蹄晤 987 | 配:珮瓶赔陪裴北佩培祀 988 | 陪:啬部赔裴暗培隅配降瞎倍陆 989 | 辉:灰惠峙会晖回澄浑潢慧徽 990 | 抱:包拖跑鲍暴泡拘爆绝保报 991 | 尽:经静晋及仅劲尺竟腰金浸遏即今技禁近竞进敬精境京机净警计殷儘 992 | 仅:经权景晋径及尽竟金井鸡锦今技禁近堇济进敬请激驭紧叔精级斤谨京机净仗警几儘 993 | 楷:指阶摧开梭揩凯搜 994 | 径:近境经静阱景轻金进泾津仅镜胫 995 | 境:经静景晋径镜鹿璜尽竟金井今禁慌近墙竞进敬紧睛垣精墒京晶憬净瞌渍清魇 996 | 房:妨放繁异芳反旁滂返身浣尻防方履访仿坊居得肩虏纺凡肪 997 | 棋:琪栖旗慎起齐其枳期骑妻七奇气弃器惧 998 | 溃:馈濒责读渍损贵 999 | 历:伤理励沥例力吏利厉丽立里礼李莉 1000 | 正:政振圳挣震整证针诊郑真定臻阵征着争是侦增珍镇睁 1001 | 滑:焉华划伊画骨眉滞消化厝哗花渭涓话 1002 | 焉:滑害活嘉裔毛舄鹰延清高污韦斋 1003 | 仲:重中忠伸 1004 | 距:炬堪拒使跖剧踪跑句具随聚钜据巨局 1005 | 炬:造距 1006 | 病:庸冰并厉痛滨兵丙 1007 | 庸:瘫廉底顾疲勇请康唐痛痕傅拥病睛浦 1008 | 睛:循荫偏醒障暗潘晴储属津赎崎镜金嚣曜襟罹庸进痛魔谴靓精境髓曝曙瞻畸晶畴京耀需聘偶麓愿 1009 | 支:指知治资志脂直值制只蜘秩掷枝芝之肢纸自职执址至智致 1010 | 父:富贷扶芙夫腐副服负傅交赴伏妇付附赋腹 1011 | 杳:妖森沓峇姚查 1012 | 渭:滑魏得清灌位 1013 | 盱:吁默呼吓睦 1014 | 势:沿式世石士事十试视师失搪娼示时识鳕食史誓实饰婚是室戏耀市释驶 1015 | 式:世士事似试视势师失诗示时识食狮湿实使是武室逝释市适 1016 | 捩:振戾泪列 1017 | 泪:狙很了涸银相组累嘞捩根类 1018 | 理:俪历现拥里立礼裡俚婶搜硼林临厘惺粒喔底捆裂押流锂哩骊例湮李丽利力帼捏湟离 1019 | 哩:艘理墨李立累里礼锂 1020 | 犯:反翻罚发梵返泛范贩把办放饭 1021 | 面:免冕眠们麵缅便而棉 1022 | 荆:茎京晶金并热剩锦精 1023 | 音:荫应暗者琶言苣医婴引因盈旁营菖臼一韾香滢章赔饮颖昔影隐盲啬英部议印映银童阴倍意 1024 | 朝:赵再明钊钥潮辨翰斡昭霸召羁 1025 | 蛊:斐当盎盘是 1026 | 拐:巧怪捞挤乖斐提摄 1027 | 学:举雪会孛觉序睡言薛需穴续须叙徐字写 1028 | 卖:买脉责麦荚渎骂荬续迈类 1029 | 票:繁霹景荣恒漂豪系慎襄酉示黑曹蒙栗萼葭耍贾祟昙填素尹飘霆螟 1030 | 祟:崇景裴桌紫亲票祡累紧禁 1031 | 牢:老非牵劳车年 1032 | 顷:项颈须顶惘颁 1033 | 连:量脸廉逢莲链恋捷联两练 1034 | 联:连聊怜帘脸廉粮认莲链恋两骐敛练 1035 | 透:投疆诱遴头适逅 1036 | 效:肖笑玫下校小消销夏 1037 | 笑:肖孝晓芙下校小消销效条 1038 | 罗:逻裸鲁洛螺锣骆落络萝 1039 | 漠:溴默寞某模蒗凝膜滢澳莫 1040 | 默:盱某末歌黔黜吠漠莫 1041 | 足:做定阻助族租祝组是 1042 | 定:停盯叮厅丁啶挺正顶足钉鼎腚订锭 1043 | 阴:荫茵应姻引因盈一咱音阻罂盟英印硬期明银尹殷 1044 | 狗:够勾购向苟 1045 | 耗:咤琵号浩托好话 1046 | 琵:军民嘉昆聚混宽耗 1047 | 喜:析希熹席菖玺隙息习善奚以薯西嬉盲辜戏细壹吉惜洗袭 1048 | 圣:声劲生茎盛肾甚胜申晟泽 1049 | 申:声省由印审生神升甚深盛伸沈娠圣胜串甲身笙 1050 | 众:忠重终种中从 1051 | 愿:员远忽元唇扁园痣匣厘感圃媛屑院匾援源煽怨睛睦原庙 1052 | 督:蔷昌度厝菖独抨訾押都 1053 | 独:度毒犊浊多嘟读夺肚狸督赌堵都杜 1054 | 渤:博湔核前 1055 | 佟:终 1056 | 拙:挫捉绌茁抽撒 1057 | 强:蔷长墙弹湟抢逞前骚遢枪弭涅 1058 | 阻:做阳组足咱阴咀 1059 | 咱:阻暂攒想砸喒阴偺 1060 | 餐:幄残参誓惨叔蜃撞蚕菖簪菜僵訾昼 1061 | 儅:当 1062 | 华:滑欢还桦画怀环划丰化哗毕花话 1063 | 巷:项卷想向替港 1064 | 蛔:知如扣 1065 | 播:擂驳啵搐波靥捅潘摇瞳版膳拨捂博庵 1066 | 擂:播接撤猫雷撞 1067 | 哺:埔喃步感嫌缩脯 1068 | 甫:点附富惠再嘉腈隋事南唁讳常幕浦所甬直 1069 | 设:没色生审坟投涉甚麝奢社这舍射身摄 1070 | 捐:指掮尸卷撤持娟捎惆祸措柏涓 1071 | 淋:领然林龄临玲邻令铃 1072 | 聂:表轰浸提 1073 | 厅:定停听行订岸 1074 | 听:停婷厅庭听挺昕艇亭所 1075 | 噢:雨澳懊育嗅 1076 | 佣:拥用假 1077 | 占:点栈湛站张战展含丈 1078 | 战:栈占截站湛沾涨账仗裁斩帐试颤展戍詹 1079 | 北:呗兆杯辈配背备悲被倍 1080 | 背:董呗杯辈菖肯北备苘悲被 1081 | 浪:歹宸很粮兰银郎涠晨揽乱烂 1082 | 蒜:寄奉踪希嘉籍拳毒森薪算牵葬赤辱春养赛桑苦酸 1083 | 娼:势蝎裙嫚婚第 1084 | 世:石始士事恒十试视势师失示时食史也实使是拾室介逝池市适式 1085 | 逝:视失实世事试市是式 1086 | 普:蔷曝扑不铺朴菖晋曾谱苹臼籍讪仆浦妇瀑闫 1087 | 晋:劲近境寄尽静竞普当各景婧进紧仅禁 1088 | 艾:客盖爱义落癌又埃女丈 1089 | 爱:哀菪啊姜壹受碍哎艾菱挨拜埃羞该 1090 | 玲:领凌林岭龄琳临淋灵伶另陵零 1091 | 文:翁闻温问纹京蚊吻雯赛汶稳 1092 | 问:闻瘟刁温文句蚊可何稳词间 1093 | 薮:薇菽 1094 | 薇:微藩蕊威为薮懵维灏巍位 1095 | 省:亩售言筐国直声审菖首沈茴莒绳升身甥冒雀当旨盲啬生神剩胜申酋 1096 | 融:前荣触蓉溶容 1097 | 荣:戎豪容谋榕融柬茉营票芝蒙束誉绒共茸蓁熔蓉黄 1098 | 李:梨孛孪历里立礼挛裡林厘理栗霁萼锂哩您骊例季力丽黎利六离 1099 | 国:省闰掴估因优蝈同顾骨郭古过股锅果光裹故 1100 | 光:管官阳关国广观 1101 | 邦:绑邛棒拜镑办帮 1102 | 写:解学表泄些耳鞋洗携得械导谢渴习协卸血 1103 | 织:指旨只致纸治质止置职之缠植识炽驴执叭至 1104 | 功:珀公攻供工巩龚弓空叨共 1105 | 叨:初现功劝韧到 1106 | 散:敞敌三颛萨目数澈 1107 | 奏:做骤作走案碧凑彗桑蓥萎羞贵 1108 | 碧:倡璧唱署奏壁筹避湟霜押 1109 | 掷:制绑只致治置职支郎至 1110 | 郎:邸浪那篮郁掷狼朗 1111 | 库:律酷裤霹朦挥庙拜扩苦 1112 | 庙:疯底油妙秒描疝康猫库虑愿盾 1113 | 笔:币别霓笨比菖逼壁莒靶堑等鼻毫 1114 | 绊:拌 1115 | 拌:绊扮 1116 | 吃:知尺口池持痴斥驰迟词 1117 | 变:边辨遍扁便蛮辩贬 1118 | 洛:涪鹿鲁格薏厝各漕滔旧路居遏落伯启罗萝 1119 | 涪:洁福接洛落培泽 1120 | 锁:琐贡索所缩侦 1121 | 琐:索锁素缩 1122 | 循:编镇寻睛插 1123 | 环:患还璜嬛华缓谎换坏黄桓话 1124 | 换:患涣还欢缓画环演瑛化谎幻挨花庾焕唤坏损话 1125 | 麦:买法迈萎羞脉泯责卖蔓袁逞叠活妻疆菱汗蓁霆圭 1126 | 搭:搐踏单大洽懵达哒挥撘捂打塔嗒 1127 | 搐:播搭持括擒撂措 1128 | 讯:硐信恤毗性刑旬询训醌迅旭酮寻汛矾 1129 | 汛:讯执 1130 | 坏:怀环会化换毁坏壤 1131 | 壤:攘墙璜寰疃蜃域嚷震埭请晴坏蹦 1132 | 寞:偿末奥案墨亘亭漠莫 1133 | 奎:奋亏帘誓雪苄彗查土藿至 1134 | 藿:题馨蔡寒塞奎震垄誓 1135 | 萃:脆粹翠 1136 | 翠:脆萝璀萃 1137 | 脸:连眼硷篮俩股颜恋两联睑练眙 1138 | 呙:过 1139 | 审:声垂生宙慎设神塞窜什沈社申胜雷串升身省 1140 | 旅:玈履旗屡卢吕路录驴茄旋绿流陆滤 1141 | 吕:冒屡宫官各旅言召晤 1142 | 扣:珀掴和口蛔括叩拍却汨旧摧 1143 | 丝:炒司斯竹思饲似四 1144 | 思:司死私事愚愈诗舄时识息斯憩撕总饲次四丝患剧意 1145 | 护:户虎获顾呼湖泊沪互乎提泸狐妒复 1146 | 妒:度护 1147 | 亿:亦信以移德银已易逸一翼译医忆艺意疑 1148 | 趋:追薄渠渔去取确阙箱驱趣趟区 1149 | 镇:慵筝循政振圳懵震证慎扈郑惰症朕情镉铺阵珍正镍铂 1150 | 慎:生棋情审扈神甚深珍僚懵愤镇恒俱票博惧 1151 | 莱:茉装米渠来菜束荬赖甘粟黄蔬 1152 | 粟:栗莱菜聚果螟 1153 | 初:硼除助去处触戳仍出叨 1154 | 硼:初绷栅理娜珊切棚碍 1155 | 玛:冯嘛码马吗 1156 | 吗:满嬷貌嘛骂范麽慢妈码马玛曼鸣 1157 | 厚:后捍原摩哼 1158 | 吧:半爸搬办罢拔黜版舥把保肥霸饱靶巴扒八疤 1159 | 旋:宣旗絃选旅淀施 1160 | 扇:屠垦煽晶易康影累凄癌 1161 | 猫:擂冒贸毛描茅庙癌狱懋帽殖 1162 | 冒:胃昌寄量悬最吕景暴号异帽省唱犀鲁雪舅民眉营毛猫誓氰息宣貌军管叠贸晨慧鼻霍旨檀垦皇置骨茂膏童警导提臂哥曼 1163 | 戏:势血系喜实戍憩席细裁时衅谢西袭媳息习 1164 | 射:封设涉肘时社舍摄躬 1165 | 触:初然除处厨触出融 1166 | 十:石世始士事试视势师失示时识食史湿实饰氏使是拾室释施市适 1167 | 亭:停婷崇信寞皂听逼亨事串唁熹艇寅卓 1168 | 歌:欢耿格默个隔戈各铬跟阁咯舸哥 1169 | 源:歹援褓员袁缘远渊汰蓁元媛原院圆怨园嫖愿 1170 | 原:援源猿员袁缘远渊元媛康冤院圆园厚愿 1171 | 农:侬浓衣 1172 | 侬:依农体 1173 | 整:敦政震擎菩敖针率诊弹怎彗誓症真昱葬争蒸正警弊蓥萝 1174 | 溯:朔诉 1175 | 朔:塑溯 1176 | 祖:扭和祉但族租昨祝组袒朱 1177 | 府:扶福幅夫辅孵服俯符付附赋复 1178 | 诱:友游透有又忧 1179 | 统:铳桶同潼绕桐痛绣通铜毓 1180 | 毓:统筑玉 1181 | 斐:叟茎逞拐裴畏雯霆蛊飞捏婓 1182 | 茎:盖率酷斐今荆辛圣芎 1183 | 读:度睹顿赌谈毒多溃独图凑续肚夺堵都 1184 | 叭:认织把八 1185 | 墅:雪述些繁鄄壅疆数勤曼 1186 | 廉:连鹿帘雇庸厝莲链郾鄙联膳涕 1187 | 厝:滑署藉蓄潘唐籍岸湾婿鹿督情洛碁畜精屠厦廉虞谱落鹰潜高哥膺 1188 | 迫:追谊渲迪遍破 1189 | 遍:追喧迫边偏变骗遇逼避遏退逸遣便遵扁通篇 1190 | 譬:雪警登菩臂 1191 | 森:惑生林杳深葆僧杏屎蒜 1192 | 杏:信森兴姓登性 1193 | 克:客剋刻科颗竟可课壳柯芜 1194 | 堡:喧喔停雹逞唾售醴堡垡饱壑保 1195 | 保:包偏傈侵慢吧佛便偃俚帮报愣把呆巴傀侯堡供宝惶爆屎憬僳旧儡抱饱 1196 | 街:彻解借衔接衍阶节届揭堂崔集姐结惩 1197 | 故:微孤雇敌辜顾骨鼓吉固股过敢果古数国 1198 | 七:漆起侵其戚契凄祈琦弃汽器棋企妻欺骑气西祺琪齐期奇亲乞 1199 | 伯:薄褓波但泊洛旧仰怕勃拨柏招博值 1200 | 洽:搭治冶启给拾 1201 | 裹:袤过括磊畏果豪寅国 1202 | 趸:夷壹妻美宦 1203 | 蔓:喧更菖麦案茴苜熹芎夏马曼 1204 | 尖:突见肩间 1205 | 握:喔卧愕我擢提摒懦 1206 | 愕:握履停罐管撑铎慢挥崔撞幢 1207 | 肇:郢菅睾兆壁菖照赵造望招查 1208 | 招:扭赵侣沼昭照着托伯肇糟找召 1209 | 陌:隆阵障恒谋莫 1210 | 兑:羌兜竞对兄莞 1211 | 刻:客科可课克 1212 | 驶:势实粳时妞使是嫂 1213 | 焦:铵较缴娇黛嫣加谯椒家教交角胶 1214 | 横:很璜借喵柚牺甚戟愤衡械恒啧磺 1215 | 磺:硒横 1216 | 愉:粒娱喻于谕馀渝偷枪 1217 | 娱:愉吁于媛翼余与误予舆暇愚 1218 | 涓:滑缉沿治捐消得清淆湄 1219 | 赋:富福妇斌副夫瞄府傅狱赈赌付父复负 1220 | 壁:必坠比闭碧里肇笔 1221 | 戍:载戏攻战 1222 | 级:吸疾极急击接籍姐绩记及仅缉纪辑偈金节鸡即锦今技既瘠际进基激集紧己积生期机季家计几 1223 | 视:现世士始事石砚十试圾蚀势师示食时史狮实饰氏规祝是拾逝市释式 1224 | 士:世事言十试视尸师势失示时食识饰氏是室吉市土适式 1225 | 土:妥屠徒吐奎涂吉士凸图拓突圭途至在 1226 | 嘉:焘亩加熹假甫甲价佳夹建蒜焉袁慕琵迦疆贾幕家晤 1227 | 缸:钢刚纲 1228 | 哎:收攻议玫爱枚汶阿唉 1229 | 援:源员缓侵投袁授接淫浸远元锾原院圆暖园释愿 1230 | 缓:欢援还环绶绥换暧暖绫缙 1231 | 塌:瘫曝漏踏榻他她它塔 1232 | 站:栈渣占账赞沾上障端涨咕佔绽战帐颤张展詹 1233 | 颤:站战匡 1234 | 妳:你 1235 | 衣:依印胰会伊遗农懿义宜异易翼一溢医艺意姻 1236 | 岛:道皂鸟倒导到盗 1237 | 墙:境强壤抢增裔培焰枪腔塔 1238 | 掌:菅雇室辜障涨撑菖莒旱斩张苣账摹展找手 1239 | 撑:嫦称成惶愕掌掸呈搅湟悄悖淳 1240 | 眉:滑指嵋窜屋植属殖值声缉蛋棺遣宣冒章情黯梅楣煤富置媒覆泊童罩每美肩湄蕾 1241 | 砀:场杨扬畅 1242 | 吹:欢欧歉饮坎软敢款锤 1243 | 浸:没劲援尽静表竞授进井漫聂绩 1244 | 小:少肖尔笑孝萧沙晓下骁校伽消销效绍霞硝 1245 | 钜:使剧铂句距恒巨铮逅 1246 | 访:妨谊凡畹放丙唰坊痫防纺迈肟蝙方房 1247 | 肟:访 1248 | 砸:破杂咱碰 1249 | 既:跻极急界击接记及纪竟即寂今技腮济际基进级迹继挤鼠厩机季计几慨 1250 | 兴:信现新杏锌幸欣刑型昕心薪形半情鑫行与谢性姓星 1251 | 望:冠腕些塑擎网里万婴湾唱王惯往忘肇訾韦昼晚喔逞汪玩暨旺完翌碗 1252 | 碗:腕就网望玩晚 1253 | 盘:血盼盅旁爬磐潼叛屋潘蛊滢痔般 1254 | 滢:音蓬溜濒澎莹潦遭混潜漥盘津漠 1255 | 皆:借截阶接毙捷结 1256 | 蓄:虚厝莆菖看着熹续叙徐畜膨 1257 | 佩:沛涮唰偑配 1258 | 敬:近境尽静谨京晶竟竞景金进净警觐亲经仅精 1259 | 截:戴解徵接阶杰裁我且戡结战皆载哉 1260 | 可:客克刻科颗问咳前课河壳肯奇柯何渴啃恪 1261 | 信:奉佶曰侵售新言杏熹仡厂幸系菖型倩心讯僵息形虐芯兴行佑亭性厦盲馨惜辛姓得亿星夕 1262 | 叛:盼畈颊盘判贩 1263 | 畈:版眅叛饭 1264 | 汉:韩滩和寒叉戊汊捍瀚叹哈汗救憨晗旱翰汶又喊 1265 | 汊:权测枚汶汉 1266 | 逅:孟起遮透逼钜迈通乘 1267 | 元:塬援兀源员袁缘远媛原院沅圆园完垣愿 1268 | 抑:亦益异已易一仰医艺意 1269 | 医:依音怡印议伊以益因衣义速已亿一抑意 1270 | 制:指知治涮质支志材脂直值彻只蜘刺刮侄掷枝之职自执至智致置止 1271 | 桐:统撮和同潼相想铜柯痛彤摄 1272 | 柱:主庄炷注住桩蛛枉样 1273 | 根:恨柚格个更感枚相垠跟喂泪帼帽耕 1274 | 停:倬定婷侍厅听庭挺序愕嘻霆艇哼亭堡廷 1275 | 锲:契楔 1276 | 契:砌英某夷企其奥汽却七气切锲哭器 1277 | 澳:溴奥演傲要遛噢痫涠舆漠 1278 | 汲:机极 1279 | 弯:穹豌湾完 1280 | 董:喧宣堇东栋重管菖蒂动娄萤冬背市懂直 1281 | 嬉:喜某嫚嘻撼第 1282 | 主:击竹王丰组驻著朱诸重逐煮注祝住子拄卓生助猪居美柱 1283 | 王:主球皇往忘车网汪晚万望玩完旺亡玉 1284 | 偏:片边伽翩骗像遍编睛保 1285 | 惆:捐伊偶调崎惧 1286 | 彗:量借繁赞整翼拳萎脊蕃腊营看型登替誓善菅若军叠奏妻薯呈载至馨塞置素奎案费警季措黄挚苦蕾局 1287 | 薄:簿渲波苘箔菖踵蔫蒲搏清伯溥博趋淳 1288 | 詹:澹雇禧站拿战酱差湾 1289 | 帼:柩和姆埋理幅相操缅概馆完根 1290 | 邹:部诌 1291 | 院:隗援源员脘缘远苑悦隘元媛沪原说陨园愿 1292 | 隗:院 1293 | 载:戍戴敦再截鼓戎伐虱我彗泷杂哉在 1294 | 倡:霍昌唱肠场伊福侣碧畅据 1295 | 畅:倡长唱砀场 1296 | 山:善商厦伤杀杉衫擅删上姗总莎闪珊响赏 1297 | 霁:界季李客 1298 | 桉:按安答枚 1299 | 谊:迫访益扈洹遮翼一宜 1300 | 宜:依宣谊以益疫义衣宾已易疑一溢亘仪直 1301 | 泰:太暴豪萎萘责黍鬓袁态墨台钛她贲綦瑟胎蓁他蓉 1302 | 乎:护呼忽湖沪互胡虎 1303 | 呼:盱户或护会忽湖沪互乎胡 1304 | 喃:啸难埔楠哺 1305 | 坡:玻波坂泼圾破婆 1306 | 坂:绑板坡版饭阪 1307 | 往:庄王婉忘任衡网住汪万望晚压 1308 | 瑯:乡琅 1309 | 琅:瑯腿朗 1310 | 癌:窟福短藏痘描艾唁扁猫膳扇疱 1311 | 摩:犀摸屡某淳靡厘模蜃墨磨麾魔膳膜厚赓 1312 | 升:声生审盛甚深昇伸申胜身省 1313 | 丽:硐命亩历里立礼耐沥示粒理锢朋厉莉锂项例砾黎力利李栎列离 1314 | 跑:袍喀鲍距爬泡炮怕疱抱刨饱抛 1315 | 泡:袍跑孢艳炮港抱闾抛 1316 | 弄:尹劳霹吉 1317 | 劳:聊老痨牢旁穷唠弄芳萝 1318 | 脑:胭恼 1319 | 恼:植扰脑闹 1320 | 懂:董楼东屋动登得冻债懦憧 1321 | 矾:就讯矶机 1322 | 汪:王往忘汗注网狂江妄旺望枉压 1323 | 睑:验硷脸险 1324 | 龙:陇隆珑拢容泷聋笼 1325 | 嘴:疆腭最 1326 | 浦:甫鹿涌庸埔渔铺普消蒲嫌清捕 1327 | 研:眼沿琰演矸岩蛋砾燕严雁昕闫延验班盐肝 1328 | 肝:研析顾吓干暗庶 1329 | 寺:芽孝诗持事菩特四夺 1330 | 转:轧装赚撰砖撞专传铸辐妆状轼轩抓拷 1331 | 绿:氯率律屡缘塶憬旅略录碌虑 1332 | 塞:霍晒雇举审蜚寒寨薯基衰赛苹疆萨寡彗墨藿寥 1333 | 薯:率喜善养塞暴寨法落碁彗 1334 | 婶:理押辣嫌赖坤娘 1335 | 疆:缰齍嘉暴震籍艇羇垂冕罪蛋透靠嚷霉葡僵嘴要寨基墨麦贾灌是将骝辜塞覆骊费赛霆墅囊湟 1336 | 裡:李厘理礼 1337 | 庄:装氏往专注年妆状奘狂江座住柱桩压在 1338 | 勤:芹情敷青庆蓟新事觐亲琴肋墅勒蹦勐 1339 | 离:禹梨蒿比禽里立礼禺林临责蜊理葛璃锂莴再骊例黎李丽力利 1340 | 莴:离禽酷高 1341 | 迁:赶牵千签前走兰迂 1342 | 低:柢底佃跌递地滴弟第抵旺 1343 | 类:米了磊似柒突雷肋萎勒萘鲨獒葵泪奘螯莫卖妻荽荬累嘞赉揉奥茭黄鳌 1344 | 赉:赛类 1345 | 洁:近涪继店界吉节杰捷法浩劫集谱结及婕诘 1346 | 目:母姆曰散慕耳日穆官自墓木月且组募幕牧 1347 | 述:还署丕诉远树竖书术熟束墅疏叙数舒禁 1348 | 擘:喧璧雪辟 1349 | 璧:蟹些擘型避碧鹫里曼 1350 | 蒿:蓠署腊意禽清高措离荡 1351 | 眠:免娩服面晚 1352 | 航:舫舟行杭肮撼吭 1353 | 吉:疾极口洁击青士籍及声纪辑责即技宣际基激喜盲迹辜机弄家土几故 1354 | 远:援源边员袁缘眼匹述元媛冤原院圆拥园愿 1355 | 焕:奂化幻换唤涣 1356 | 涣:换焕 1357 | 膘:骠蕊德深恿稳 1358 | 乃:哪奶 1359 | 奶:乃韧 1360 | 卸:算屑御谢策协押写 1361 | 御:预遇得豫与卸 1362 | 索:锁琐藜萦俗孛素嗦熹累所蒙缩 1363 | 宙:害寮宣罚审亩暨宫民官卑假寂查 1364 | 别:必剔本删刑比逼另贴笔 1365 | 挥:按灰搭檬污会汇接持愕浑捧库徽恽 1366 | 废:肺波疲痱法费癈肥飞 1367 | 跻:腰金几紧既 1368 | 携:吸腭写摸演些拱跷协械担偕膳媳斜憔惰血 1369 | 些:幽兽望写陛璧系席镗此泻燮熙选歇坦溪喹生坩警携墅 1370 | 家:较嘉加假甲及绞绩架价焦佳鸡即件夹交建角驾枷基监激贾教级娇继郊吉机冢蕉艰健间 1371 | 二:尔三兰儿一恶而 1372 | 套:菅盲踏道涛桃莫莒他育带掏她筐讨淘 1373 | 淘:陶闰饕迥讨涛套涸桃圃潮他闾逃 1374 | 宝:害包暴把饱保报 1375 | 戟:韩戴横 1376 | 命:民明叩丽名鸣 1377 | 伪:玮朐的份伟为 1378 | 神:砷声生审慎油深柿呻伸裨沈焯成申晨身坤袖省 1379 | 奴:弩叹女怒 1380 | 佛:睇腩炜弗锦拂保 1381 | 订:厅丁定叮 1382 | 丁:定叮宁顶钉鼎订 1383 | 擦:察嚓瘤愤咖撩差揍 1384 | 纬:结委伟为 1385 | 璃:娆林捅裂漓利螭踊离 1386 | 漓:擒褵噙璃 1387 | 蕴:孕壅蕰云藐 1388 | 蕰:蕴 1389 | 称:城你衬承程诚撑成趁呈晨陈祢橙惩乘 1390 | 鸿:宏虹鸠红洪坞 1391 | 虹:宏洪鸿红 1392 | 贷:戴大黛赁责岱带代货待父 1393 | 志:指知治质支法直制只秩怎古之寇蔻自羔至智致置汁挚 1394 | 深:盛伸膘声慎甚涂森溧沈升身床栗渗屎生神严申琛胜探 1395 | 溧:骤深课策谋 1396 | 血:皿恤戏席悉鞋洗携盘协写 1397 | 皿:恐现总血 1398 | 盼:帕旁粉叛昐酚盘吩 1399 | 昐:盼 1400 | 诉:许述素树晖苏塑书溯示速束肃疏垣缩 1401 | 半:率板宇搬扳牛棒班磅伴兴吧霸瓣办扮般八 1402 | 般:半边斑搬巴版把盘办班颁八 1403 | 沟:钩勾过构购 1404 | 购:够媾沟构昀狗垢 1405 | 哥:昌司厝跟熹寓厨蔚弼冒鸽格葛宫割戈副咯寻个歌各需嗝 1406 | 寥:聊塞暴寨黎赛 1407 | 朦:蒙顾像库濠 1408 | 稚:智指礁黎雅至濉 1409 | 智:制只知致治桎置质职稚懵志支之意至碍 1410 | 窒:知室军案至 1411 | 寰:舞素芙圜襄婚衰亲紧黑策壤 1412 | 虫:充蚩当欉 1413 | 欉:丛虫 1414 | 识:织士事十试谋势师尸思示时食湿实职祝使是积市式 1415 | 惩:城仙街逞沾德称成顺 1416 | 侃:看 1417 | 祝:主纸助逐竹注祖识出住足筑况视朱诸 1418 | 况:框矿祝款兄跨税快怳 1419 | 峰:冯封缝峙疯纷丰腊逢芬蜂婚锋风峥凤峭峄分脯 1420 | 峥:铮征峰政 1421 | 婚:势寰姆昏婧堆峰娟娼鳕混贻炼婿 1422 | 仿:妨防纺反房 1423 | 端:崴段站短湍喘龋断揣 1424 | 撒:敞三滞撤瞰洒仨愤萨措撇拙 1425 | 细:吸皙晰牺希稀绌妞系缠心隙息纸西喜禧戏悉洗膝 1426 | 耳:珥盲尔目苜而写 1427 | 炼:量峙恋婚愤嶂冻练 1428 | 叹:攻取肾炭双奴碳他探汉 1429 | 抓:转捉专住拽 1430 | 专:庄幸转装撰砖军穹传抓 1431 | 暨:昌宙雪菖匿机季瞳轩蔚雷圈望及几 1432 | 狠:很恒 1433 | 庚:痍疾演民戾虎 1434 | 豫:球预艳于遇御欲淤 1435 | 稳:稔温问急文吻紊膘隐 1436 | 牦:特 1437 | 善:盖喜擅缮口署陕上莆薯山蔫菩熹箬珊彗 1438 | 箬:善争等 1439 | 杆:竿忏纲赶汗桂干仟敢刚甘秆杵 1440 | 汗:韩许歼蓁麦牙开涵干讦汪拜萍汉含喊杆 1441 | 括:搐店捅刮搁插扣扩哭裹恬 1442 | 店:点电洁天垫甸活括颠殿间 1443 | 拒:非剧罪洹句距柜具锯聚沮据绝 1444 | 洹:拒桓谊疽担更柜退漫沮通垣复卓 1445 | 暄:喧遗鲨穆撞遣槿飓 1446 | 恒:很钜慎憧柜世亨横植陌衡票狠炳馆冲垣值 1447 | 皇:唱冒璜宇雪宁煌王逞景谎鼻拿集星呈夏黄是曼 1448 | 聆:领林呤耹令 1449 | 娆:烧璃 1450 | 测:侧朐厕汊刺次册这蒯则策 1451 | 蕊:膘蒲薇瑞麓 1452 | 寄:蔷胃吾冒继及峇进晋蔫奇计祭熹即鲫弓冀几蒜 1453 | 簸:筋 1454 | 筋:簸击晶津精 1455 | 艰:坚垠跟喂家间 1456 | 坚:艰减见价怪哽唔呕兼简鉴监陛煎健建僵键间 1457 | 鲑:龟畦维避健 1458 | 巽:黑翼短果 1459 | 哽:梗骤唬耿硬更坚瑰便 1460 | 眼:远跟服言膜呎瞩脸烟阎阳燕延炎盐验掩见研演岩职颜艳胴严 1461 | 陕:陵善峡狭 1462 | 嫌:赚先现姨槽瞒瞄险婶脯想躏浦娴贤孀涝线哺滞下闲显腺 1463 | 娴:闲贤嫌 1464 | 静:胃经青景径挣晋璟镜劲尽竟金浸今胫情竞婧进敬泾紧精靖境颈晶净警睁 1465 | 偎:很报 1466 | 洋:沣然珜岸杨扬阳醇徉央聿羊车注年样藻养详蕉濡 1467 | 密:觅米瓷峪秘蜜敏髦住 1468 | 涌:桶渔勇用泳蒲濡踊清永诵浦甬 1469 | 驾:唱硐价骂加霉家教嫁架叫 1470 | 辖:疃演下婧辐唁晴瞎婊 1471 | 辐:转辆辑幅特服需嗝腹妇辗轿辖 1472 | 篮:拦脸栏览郎蓝 1473 | 钱:线饯千牵浅欠签前谦潜遣铁枪 1474 | 浅:线鹿残前我潜钱找 1475 | 槽:檀枯擅漕懵杞嫌 1476 | 枯:哭怕槽 1477 | 属:输署扈眉厘数书屋居束肩扁术说嘻层熟睛是屈 1478 | 凌:虔磷凌林峻人痘灵梭霖陵玲凄零棱技 1479 | 零:领凌林龄临鲮苓灵枣菱玲陵令铃 1480 | 伤:商生擅衫衔历删上山饬 1481 | 商:伤尚上山箱萄茼向菏裔珊苘蔺斋厂 1482 | 劝:欢全权动蒯券泉圈勒叨 1483 | 晚:望午顽王眠往婉丸亡挽网宛琬万唤玩完睁湾碗 1484 | 网:纲王往忘婉完钢宛汪惘万望挽晚枉旺亡碗 1485 | 漫:满戊洹扈浔浸湮遢慢湟曼 1486 | 掐:卡格 1487 | 侯:后侵候贡偿寅保俟 1488 | 斌:边冰并彬氓滨兵赋 1489 | 非:肺拒推罪作牢菲费肥飞悲匪 1490 | 菲:非疟苷节井费霏肥飞悲 1491 | 嚷:疆让架壤 1492 | 板:半皈榜扳棒坂膀班伴版把办判 1493 | 痣:致德待虑愿 1494 | 咎:昝 1495 | 昝:咎各给 1496 | 璞:朴禁 1497 | 朴:扑普僕仆璞 1498 | 膺:赝痨厝磨瞎 1499 | 痨:撙镑劳膺 1500 | 嫣:媾辆谓焦竟艳蝎燕妍婿 1501 | 滔:指稻沿涛格谘谄洛恪蹈 1502 | 奖:讲将奚张降 1503 | 紊:系亲稳杀 1504 | 韬:稻涛格 1505 | 皂:岛某辜暴桌基墓导呈亭息 1506 | 魇:境餍魔屁 1507 | 忡:料性冲 1508 | 振:真捅阵辰圳栀正震争镇标郑捩证摄报 1509 | 扬:炀养羊砀洋阳杨汤样 1510 | 炀:场扬 1511 | 若:诺老入茹石苔茬落着茗弱芳臼彗右苦如惹 1512 | 茗:率若明名铭 1513 | 串:霍窗律审川传墨阜申穿亭 1514 | 川:然船传穿串洲 1515 | 佔:站 1516 | 甚:哀棘窟盛横伸扁熹贯声慎设升身真宫基圣昙雇生湛深猩谌申胜湟拭堰 1517 | 靴:鞾 1518 | 鞾:靴 1519 | 茯:获 1520 | 股:估雇段谷脸投顾骨鼓受咕菇过殁暌古肚肢国故 1521 | 肆:师宰霹毙厨异蔚痒四津 1522 | 赢:羸盲英亩因盈印温淫翩应藏营银鄙迎瀛影靛 1523 | 昙:县甚赛票影 1524 | 镜:近境劲经竞竟静晶景金进净漳警瞳径睛惰禁 1525 | 租:做和作助咀族资祖组足住霜 1526 | 乌:唱吾无午五鸟屋吴误呜勿弓物侮 1527 | 承:城哌程橇逞诚尘称成屑澄蒯晨陈廓暇乘 1528 | 毗:吡愤讯瞰 1529 | 瞰:毗傲啡激嗽撒 1530 | 淮:推怀浩谁槐雅雄准 1531 | 修:秀惨休咛皓羞袖 1532 | 滋:歹兹舷眩资恣姿 1533 | 姿:自资雯滋子肢字 1534 | 屠:唱厦署厝涂虐寨居磨肩图土扇秃 1535 | 杀:耒沙擅纱希山紊砂啥刹煞染 1536 | 沙:少汐杀纱涉沼小秒莎伞砂浏洲 1537 | 绍:少诏晓上受小邵照络昭练缙纽 1538 | 蓦:奉募基 1539 | 箐:警管籓等 1540 | 讳:韩会晦法市甫伟诸 1541 | 芘:车 1542 | 仡:信 1543 | 姆:母亩妈木婚目募帼牧妇 1544 | 妇:富姆普夫副嫚腹服辐赋傅赴伏付父复负 1545 | 植:指织知埔柚模懵恒柏直值只眉想食倌职恼执桓檀置栩 1546 | 懵:慵攘搭撰接槽植薇假博瞬榜慎猛愤僧瘠情矇管盟培摆缔智咨授镇樽憎橘撞 1547 | 群:郡区取全裙存瞿眷辟鲜 1548 | 郡:邯邵群 1549 | 舆:奥娱澳 1550 | 暧:缓暗媛暖膨 1551 | 幅:夫服府符复负报帕喀田福帼蝠付情副辐爆螈伏扶骊嗝浮粮 1552 | 苗:奋菌苖蓬葛药草蓖田临秒哲瞄描淼笛莫 1553 | 菌:苗军囝君园 1554 | 挽:梗完网琬晚拽 1555 | 琬:婉挽晚 1556 | 伟:伪尾卫售为位唯圩席纬蔚未讳韦惰玮炜微味传围维委违 1557 | 抖:料斗陡科 1558 | 疫:按度厦炭蜃痘已易痕一瘦宜技 1559 | 宏:灰虹泓鸿红洪 1560 | 红:宏虹泓鸿洪轰弘闳 1561 | 艺:乙义翼衣已一绎蚁矣以易抑忆仪毅亦议益遗疑亿意 1562 | 绎:艺一经 1563 | 句:拒举问剧距具居锯聚钜据巨局 1564 | 漂:骠僚慓飘票 1565 | 周:调同州月轴圃阔肘週粥遭洲丹局 1566 | 妈:满嬷貌嘛姆蚂麻骂慢马吗 1567 | 绕:饶统扰侥 1568 | 芳:反放若劳芬筹坊防范等差务方房 1569 | 朵:呆多几 1570 | 蒲:满薄涌蕊铺莆潘请菩濡耀凝浦 1571 | 踪:跖骗距综纵宗蒜 1572 | 纵:踪啾总综宗 1573 | 呆:栗大朵袋罘果炅待保 1574 | 罘:呆崇果 1575 | 患:惑欢还忠画环化思痘总换雷唤花愚息话 1576 | 枪:愉墙强沧千抢孢签前鎗怕钱呛腔 1577 | 肯:恳胃垦肖苘可靠茼清背 1578 | 爵:最祠鄙扁绝 1579 | 扁:边昂窟急便豪属展复甚腐瘾藏癌屈变底遍痛贬篇富晶届爵居磨高愿 1580 | 奢:署君设 1581 | 啧:赎壕倾横愤续爆绩喷 1582 | 臂:庇冒雪苷莆比圃弊瞎譬 1583 | 蛋:硐单弹淡研大但眉疆挡蜜弱党霸蛮丹担 1584 | 蛮:奋满变蛋茧瞒曼 1585 | 钧:军均笃君 1586 | 暴:胃焘奉包豪豹寅报蒙冒袁皂宝逞薯疆录寡爆霸雇置蠕霖泰抱寥 1587 | 侦:正锁甄政 1588 | 枚:没梗桉玫坟汊权校梅敉每哎美妹教根么 1589 | 监:见将荐歼胪坚鉴奸蓝江检家件建滥健间 1590 | 胪:监萨胆 1591 | 差:杈詹叉拆察墓潮基赛唁产芳查超擦羞茶岔插 1592 | 赐:次刺燃 1593 | 溽:泻 1594 | 泻:溽些竭得钨泄 1595 | 互:户盲护会获呼湖活沪乎混亘胡巨畦邑 1596 | 闰:润再罔国淘 1597 | 堪:距看康碪及垣 1598 | 碪:堪 1599 | 快:怢块恢夸跨决挟胯况缺 1600 | 嵩:毒者高意松 1601 | 笃:钧军窍穹骂等锷 1602 | 迸:进 1603 | 邀:边要遛遨激遭遐 1604 | 缘:源员远元憬嗉原碌圆院绿园 1605 | 佘:余参蛇 1606 | 虽:碎岁遂随星税 1607 | 税:积虽脘水睡聪说况秧 1608 | 脚:姣较缴价嫁狡卿蒯窖教搅绞角协交轿叫 1609 | 莉:和刺历蓟剩利丽力里立 1610 | 蓟:前莉勤 1611 | 掴:挹捆过拍拇坦扣国报 1612 | 蚱:炸 1613 | 职:指织知曰治质支植瓦直值制只掷识之聊眼纸朋执址智致置止明 1614 | 猿:园原袁 1615 | 潜:虔唱沿千牵浅欠滞前沼漕厝替遣港钱滢 1616 | 漕:撙浴德洛槽擒潜糟镑搜 1617 | 蒂:董韩秸雪底莆苇帝地清熹堤第痔 1618 | 弓:亏寄公攻鸟工拱号功乌共 1619 | 咀:租知阻姐 1620 | 睡:肺学晖唾麻水瞳吨谁税瞎 1621 | 水:输岁璀睡谁永税 1622 | 石:曰世事十视召右势失诗食时史狮在湿实浉若是室施市 1623 | 辨:朝变辕瓣办辩辞 1624 | 烂:栏浪滥斓 1625 | 抢:跄墙强沧前枪抡 1626 | 反:樊波繁法芳房翻还犯返饭泛范防方没凡发仿坊放贩 1627 | 返:还樊罚放犯烦方范法饭反遽房 1628 | 翱:翻遨 1629 | 褓:源伯 1630 | 剖:破 1631 | 白:由曰百自拔臼舟甘拜摆柏败 1632 | 惹:若人热蚩意 1633 | 厕:侧车测河策 1634 | 扼:据撼掘 1635 | 渥:涯淫漏屋 1636 | 漏:楼温桶涮陋渥混湄塌 1637 | 价:较间嘉加假及架佳戒坚剪夹交建件嫁驾见贾缴介脚家计叫 1638 | 呗:碑杯贝北备舰背被 1639 | 禁:樊经赫晋仅镜劲林尽纪金技近某竞述进集祟境京晶婪机净璞 1640 | 火:户或候获活灾伙胡货狐 1641 | 郑:症真政振增阵珍征甄正震镇证 1642 | 萤:董茜荧费赛迎莹贾蒙莫 1643 | 飙:颓飚飒飘标彪 1644 | 飘:瓢鹳驭票飙漂 1645 | 袤:衰裹 1646 | 喝:和踢合赫褐锡舄河碣祸噶何飓核 1647 | 噶:喝缡寓说 1648 | 罹:雇莆愤湟睛 1649 | 鬓:巢彝素贡责寨费赛季聚泰豪莫 1650 | 型:信醒新里璧蛰刑曜却心彗形情行兴琊性卓辛姓星 1651 | 装:庄焋转将赚揍裴专莱篝裳妆状张桩撞创 1652 | 彩:采才蔡财裁菜影 1653 | 采:才栗蔡亩米财釆裁菜策材彩 1654 | 啤:碑腰埤俾批牌 1655 | 埤:啤 1656 | 苍:率沧参态仓 1657 | 弩:警当奴 1658 | 印:音引硬映因益以衣赢应译一申影阴鹰意医卬 1659 | 映:音央碘英印腰应营影髁 1660 | 齐:琪岐起棋济其期企骑器祁七崎奇枝淇汽弃迄 1661 | 慌:境惊荒悦恍谎谍黄 1662 | 雅:鸦罪稚要亚牙谁哑淮霜准椎 1663 | 攸:悠例 1664 | 悠:收优友游删有攸忧憋右 1665 | 昏:昌胃雪婚丙 1666 | 逢:连冯逄疯丰逞峰蜂锋澄分造迳 1667 | 诚:城减讽陈程承尘域称成诫愤咙贼乘 1668 | 亩:奋采寮姆宙赢寓灾禀每嘉康丽海畜直省 1669 | 药:约妖苗钥要朽耀 1670 | 猥:微威银未委违为报 1671 | 吸:级夕系极牺细惜稀玺新洗携心西圾锡息阪 1672 | 遏:尽遇洛遢遍 1673 | 枝:指制只知纸齐支伎使之栀技 1674 | 检:栓减见怡怜捡恤简金监俭险件建拾 1675 | 荳:苣 1676 | 少:吵勺韶沙哨步小秒捎邵绍稍 1677 | 减:司捡咸戚加臧碱箭诚简坚剪件建键见鉴激检舰结渐凋 1678 | 咸:减鹿先戚敲现感域屁成闲魔险 1679 | 烦:领顿题发繁返坊番频法方 1680 | 坊:访放烦芳反房 1681 | 焱:艳岩颜须炎 1682 | 岩:宕眼研演峇焱言延炎妍盐闫 1683 | 衔:彻筝伤先街像闲险 1684 | 轰:哄素红葭需聂氦 1685 | 佃:做低但把仰偷假袖 1686 | 舟:白州船航洲丹 1687 | 号:冒毫嚎浩豪好弓皓昊耗 1688 | 潘:播靥溜厝番湮湍蒲濡澄灞滴清盘睛僵攀 1689 | 忌:惠济总机记计及技 1690 | 竭:旖揭蝎岿接弱渴泻 1691 | 渴:客富葛可糯揭蔼息湍竭涠遢祸写局 1692 | 儘:仅尽 1693 | 菩:奉者整拳籍等萎客率害持蒲特譬韦善菁春暮考寺警落 1694 | 贾:贯价蜚养嘉责酉疆加萤票家假甲贫 1695 | 谨:堇诸滞厘过进敬嘻紧谤仅撞精萍 1696 | 铸:转助售注住晤 1697 | 介:解价借迹继纪界戒接世届揭杰记节计结建技 1698 | 综:婷踪总纵练 1699 | 榜:绑板棒畴懵傍版愣谤班帮桡 1700 | 傍:榜旁俾磨愣倍 1701 | 锚:错模铆销银斟 1702 | 登:咨蹬遥苷叠苔翼育杏等彗譬懂灯窑 1703 | 析:喜质拆悉洗忻祈心沂西袭息肝 1704 | 沂:折析移拆新斩祈 1705 | 疲:废领庸波痘频批痿瘦技 1706 | 跚:班姗珊 1707 | 姗:孀山珊跚 1708 | 慢:喧谩损懦悟嫚骂惶愕瞳保地漫妈吗曼 1709 | 惶:撑慢佐爆湟徨保 1710 | 萱:宣瑄堂童轩誉查璇 1711 | 巨:举剧句距旦具互居聚矩钜据惧 1712 | 袭:析表震染裘席玺檄媳蔑习逞西喜戏畏洗嘻垄砻协 1713 | 葆:谋森樟 1714 | 尾:雇为扈卫民昆未伟位 1715 | 丰:主封疯华孛逢枫峰芊蜂愤锋风分吩俸手 1716 | 风:奋沣冯封疯缝丰碰峰朋冈份锋凤分八 1717 | 欺:旗其期妻碳七奇气祈歛 1718 | 妻:起丢其七凄萎趸妄彗弃棋袁欺麦气类琪期案霆亲 1719 | 业:也丛晔烨野叶页液爷夜掖 1720 | 歧:岐波其期崎 1721 | 滂:谤涝房 1722 | 涝:捞滂濒谦嫌 1723 | 吴:吾无五舞梧唔逞巫乌寅误豪伍污物昊邬武莫 1724 | 昊:号浩吴臭好莫 1725 | 骑:琪起棋齐济其麒祁崎奇七倚及汽该 1726 | 捞:老撙拐涝扰 1727 | 裨:神稗 1728 | 郁:雨预于月遇酝郎余语与云钰都玉 1729 | 沈:无生审疣神沉深什申甥省 1730 | 聊:料廖了劳疗职柳暸联论寥 1731 | 钓:约掉钩内调 1732 | 约:阅曰跃药喻于月勾悦与豹纣越钓 1733 | 柬:栗末菊荣束 1734 | 斗:料抖豆痘 1735 | 趁:城称着陈乘 1736 | 季:叁孽极击孛荸逵记及解饥戒天肌金鸡彗即嫉寂今既鬓技际萼蚕基霁进集子暨级綦迹秀继剂届机李计几 1737 | 叁:季 1738 | 际:级极继界击辑济吉机计基季籍集标鸡绩既 1739 | 犍:键健 1740 | 河:珂顽和厕合可禾喝荷癫何拘呵核闯盒 1741 | 抨:评督怦 1742 | 怦:抨怪 1743 | 寂:积宙击季即绩既 1744 | 滥:监烂 1745 | 秩:只支志至秧 1746 | 梁:粱量逞良两粮凉染晾 1747 | 晒:辆塞赛西硒 1748 | 隽:俊务 1749 | 铁:钕牲帖饯轶铢题铍铉佚替贴提钱呋镶 1750 | 铍:铁 1751 | 怪:鱠择乖拐坚怦贵 1752 | 鱠:怪 1753 | 捡:将减见简拣检验间 1754 | 简:讲筒减见侨捡剪坚茼肩检拣苘建闾间 1755 | 份:伪氛封疯纷粉愤风凤分扮 1756 | 搞:稿捅藁告痫痛高 1757 | 怅:帐张 1758 | 蹄:踢蔫提踹谛 1759 | 畜:亩去处各轻厝者蓄雏莒熹出僵 1760 | 穿:芽船川馔传串 1761 | 排:徘俳扯拍派拜牌 1762 | 牌:排啤陋炖拍腩愤派碑脯 1763 | 添:天刚删 1764 | 彭:蓬鹏壹影棚 1765 | 壹:喜趸投豆爱鼓责歪彭童翼琶一冀至 1766 | 剧:拒举句距前思具居剩聚刷俱钜据巨局 1767 | 似:拟丝司死斯类四式 1768 | 品:瓶拼乒平屏评凭晶叩频批聘贫 1769 | 晶:经静筋扁镜瞩金荆菖今禁近兢进敬泾睛扇境温京品警湄 1770 | 楠:难桶南男喃 1771 | 叉:冬汉又差插 1772 | 规:龟轨现归瑰砚闺赦岘视贵 1773 | 享:后章孝覃翔相菖想亨苣详事香祥熹古险像响 1774 | 靖:跆近静竞京婧岿金进警清羞盾脯 1775 | 脯:靖师赚瞻鹏哺喻腊峰吨略嫌嗽牌崎晤 1776 | 胜:声生审升渗盛甚深上剩脏圣申晟性身賸省 1777 | 溥:薄撙搏博滤 1778 | 恬:情田传括懦桥舔 1779 | 解:借界接霹锻且决姐假懈及写镶解雳晖节劫捷截揭锢结介街届杰镳季 1780 | 晖:解会诉裤睡辉 1781 | 贯:巢实惯冠某贵甚关雷贾灌歛观 1782 | 略:率胳骼田掠赂路绿脯 1783 | 胳:路略酪 1784 | 惑:患获态森感恶匙怒 1785 | 舌:香活蛇丢 1786 | 五:午舞无梧捂唔婺乌屋坞雾吴丑误伍污物务武 1787 | 垄:垒誓经雀袭藿至 1788 | 莲:连蓬廉链联 1789 | 热:乐然郴认日荆燕熟椒蒯卿执虬澈煦惹 1790 | 乐:东了景热牙累勒龠 1791 | 广:泣厂惯工管关狂产光六馆观 1792 | 茧:单蜚草革蛮 1793 | 孟:萌梦盅蒙盂逅 1794 | 碑:呗啤杯腰被牌砷 1795 | 琼:扶班掠玟拣凉谅 1796 | 俄:陇峨胧供哦愤锻饿 1797 | 漳:算镜张葬 1798 | 例:梨历烈恢攸里立礼材冽粒猎理咧利丽力列李离健 1799 | 咧:烈列例 1800 | 靡:摩迷 1801 | 痿:疾接疲紧 1802 | 键:见减建钳犍渐坚隍剑愤奸件鑑 1803 | 策:棠侧寰错郧采厕踝测箔笼溧束册郜第簧卸箫 1804 | 玈:旅 1805 | 切:硼砌其节窃契动且器 1806 | 趴:以爬总恐怕跳班扒 1807 | 扒:趴把拆吧 1808 | 泉:京全权浆劝拳券炅宗荥 1809 | 拆:折析柴传沂查差扒 1810 | 镗:些 1811 | 包:豹孢宝鲍暴胞爆抱巴褒饱保报 1812 | 康:慷亢錓堪庸亩崴厘抗圃看禄原庙隶庶阚扛扇爆 1813 | 錓:康 1814 | 崭:展暂 1815 | 短:盲婷段瘟巽煜起豆嬗蜃端痘妞癌鹭 1816 | 豆:壹短菖斗头 1817 | 柳:聊椥六留流刘 1818 | 慧:韦惠冒会薏辉荟回意徽息 1819 | 态:惑脊太泰苍 1820 | 脊:胃穹态裔集计及彗 1821 | 囊:难菖疆霆熹圭柔蕾 1822 | 母:姆毒田木墓每沐目募幕牧囹 1823 | 肚:度扯吐读独股爆堵 1824 | 声:盛肾伸萍省笙牲审甚眉什绳启升身圣生馨神深吉芦剩肩申胜 1825 | 肩:声屠雇姜月简眉消请尖磨痕煎清层属房间 1826 | 空:户公全功恐孔罕控仝 1827 | 控:空苦溢崆 1828 | 划:滑还画华化花话 1829 | 材:采制才财例裁菜 1830 | 驻:主助蛀逐猪骚住筑朱 1831 | 沽:呱姑古 1832 | 押:鸦理程呀卸穆轻鸭亚柙碧浑捏督婶压 1833 | 标:不表飚际赫振镖拧镳飙扮杨尊彪 1834 | 咚:动终东 1835 | 遂:虽逐睢绥这送 1836 | 唰:侧访辄琳总副喇佩剩嫩谢鼎俯榭 1837 | 贫:擅平评品贸盆龛贾岔萍 1838 | 盆:鹏贫 1839 | 幕:韩牧母昂慕木嘉莆茼目蔚募熹苘需甫寡 1840 | 跋:愤跛拔 1841 | 澄:承程逢潘辉成释 1842 | 陇:俄龙 1843 | 僵:霍将檀匮信擅誓兼侣坚疆潘得遭殭畜餍摄餐 1844 | 琴:情企期庆请奇亲清骞勤 1845 | 寿:荨收涛授售受首兽芜手 1846 | 三:散二仨萨一桑亡撒 1847 | 欧:尸吹哦殴偶 1848 | 燕:研眼烟艳藏嫣热雁砚延彦妍厌堰样 1849 | 培:墙涪陪赔增胚鼓懵配龋塔话 1850 | 飚:标飙 1851 | 启:声起治寝其企洽洛泊结器湾岂 1852 | 茂:马冒贸 1853 | 输:孰辕署喻叔骊朋轴书水馀始谕梳说疏属数拾 1854 | 书:署姝殊枢属师梳淑输述抒树当术束熟叔舒诉竖说疏数 1855 | 徒:妥罐佳徙图土途苦 1856 | 践:蹊渐跌溅件建武间 1857 | 溅:建涧践 1858 | 撂:搐懦摆据第提 1859 | 览:栏兰篮蓝朗 1860 | 评:拼乒平屏凭品频苹抨讦贫 1861 | 藩:落警薇 1862 | 夺:度毒寺多读独都 1863 | 两:连吾辆量脸亮俩南良梁联粮凉练 1864 | 羟:轻 1865 | 描:苗捅摧猫庙癌眇插 1866 | 眇:描 1867 | 荬:买莱续类卖 1868 | 睾:单崇最早辛果琶里肇 1869 | 骤:骥舞哽奏溧嗝 1870 | 旁:音盼庞谤劳朋傍盘方房 1871 | 橇:据撬承请 1872 | 咯:喀个歌戈各哥 1873 | 苹:拼平屏评塞普频聘苛萍 1874 | 苛:苹苟意 1875 | 竹:丝主门祝住町朱卓 1876 | 殆:待胎冶 1877 | 胎:太暗台殆服他泰眙 1878 | 赚:床转味装骈兼撞谦瞄状嫌贴找轩鑽脯 1879 | 喻:输愉约瑜于欲谕域与翰偷誉脯 1880 | 谕:喻与输愉 1881 | 困:因棍捆固昆囚团 1882 | 固:估雇画困故 1883 | 津:斤经济京筋睛金径进常计肆今岸滢精泞 1884 | 冀:堇寄纪凳济壹翼集 1885 | 熏:蒸黛忠 1886 | 扯:排拉车撤肚班 1887 | 温:湿瘟漏问愠文晶恤吻赢圃遢涠稳 1888 | 盂:孟雷 1889 | 醇:耐再洋腥纯 1890 | 搪:据塘势 1891 | 浩:洁号唐豪淮好皓昊耗 1892 | 嗜:尝耆晴堵诸 1893 | 尝:长偿场嚐常嗜 1894 | 蛰:折蜇赞哲型者 1895 | 梅:没洵柚玫媒椭眉晦枚每霉美妹煤棉悔 1896 | 柚:梅横植私又根椅 1897 | 范:翻迥危厄渲樊犯发馗返放泛贩汨芳反吗饭方疤 1898 | 暗:按陪暖赌肝皑腊暧眙音黯赔赠睛欢安盲胴胎案瞎 1899 | 圄:圃 1900 | 巩:硐玑公攻宫叽贡飒功恐筑汞共 1901 | 姣:驳攻校脚交叫 1902 | 偿:尝长唱候寞佳常侯赏厂 1903 | 矫:交 1904 | 震:攘窟政振者整雷熹展菖郑真舞逞阵疆藿壤雇珍正畏镇需袭 1905 | 构:讲够沟勾钩购侮 1906 | 脘:晓院税 1907 | 汽:起齐治其期骑契七泸气弃器 1908 | 八:半百爸罢鲍办疤拔芭粑吧把霸风六叭巴班般报 1909 | 巴:包爸峇拔芭保吧霸把粑班般八报 1910 | 盛:声生肾甚深感盟剩成胜圣申升身 1911 | 盟:萌檬盛门明懵们叩阴蒙 1912 | 胡:狙呼湖明糊沪互乎酮火虎 1913 | 酮:耐辆嘱胡讯 1914 | 塶:绿 1915 | 圭:土富封幸雪走麦避莹遴蚩囊逮违 1916 | 涯:舞崖潺厘据菠漩渡渥 1917 | 崖:涯灌鏖虞 1918 | 械:戚横诫携谢桩碱写 1919 | 摆:白布百腥懵撂霸渍拜捏 1920 | 腥:撰醒脲醇塑新避暖昕操里星摆性脾脂摄 1921 | 敞:唱散撤敉敝场数撒 1922 | 塑:喧单诉腥鄄蝗宿速朔里望 1923 | 濡:涌洋灠潘落蒲锦 1924 | 围:玮味违危囿魏圜副圃维囝伟畏图未圆委韦为位 1925 | 剩:声生剧盛刺刮唰荆剥乘胜莉省 1926 | 乘:城程承乖诚贡称剩趁成陈逅 1927 | 擎:孽钝辕孳蝗整望萍 1928 | 孽:擎季幸单 1929 | 懦:握撮偶诺惯桶棍蠕课撂慢懂橘锦假孀恬 1930 | 劲:近靳尽静竞竟景金劫晋净浸进井圣今镜禁 1931 | 砚:现规燕雁概视观 1932 | 勘:勒磡肋看 1933 | 邪:斜 1934 | 斜:亵邪鞋携谢协 1935 | 开:汗来卉开咖凯楷形 1936 | 喊:城韩寒焊汗涵汉含峒 1937 | 寒:韩菅塞责萼寅晗涵赛窘汉藿含喊 1938 | 鲍:包跑胞咆抱饱八报 1939 | 赔:音盲陪唔赠裴暗赂培言配瞎 1940 | 荞:养 1941 | 炒:吵丝巢潮嘲抄 1942 | 吵:少炒噪嘈秒超耖 1943 | 逐:主捉助煮促珠猪遂注祝灼驻朱 1944 | 促:逐催猝粗醋蹴 1945 | 鲤:利里 1946 | 陈:城真橙程承阵沉辰诚称成防谌晨趁臣脲乘 1947 | 等:芽孳的萼笔登菩笃芳箬暮箐灯邓 1948 | 覆:富渲赴眉辅副疆抚雷符附复负 1949 | 瞳:凳肾同睡臆慢翼彤噎镜嫚遣铜播筹暨嗤憧隆黛腹撞 1950 | 佈:布 1951 | 荸:奉单孝孚革季手 1952 | 旨:指织冒只质管值能言址至省 1953 | 款:欢吹矿软次蔚跨垮况宽 1954 | 铜:统缉桶伊辑同锢银童潼瞳桐锏彤通洞 1955 | 锢:绑解铜丽 1956 | 碁:暮厝薯 1957 | 畏:谓表斐宴围震未雷裹袭寅为 1958 | 笛:算苗各每筑第篇 1959 | 顿:度钝毒硕烦炖读恋顶赖纯盾 1960 | 赖:浈髓顿殒扔辍来莱颛颇懒桢顺婶 1961 | 垣:境堪诉洹草元恒卓 1962 | 趣:挪曲题去确处圃避踵出趋霾区 1963 | 悉:系析奚细稀新膝心溪血 1964 | 奚:奖喜酷席希悉洗嘻西莫 1965 | 辰:城最振成晨臣陈报 1966 | 辅:富辆扶福覆铺夫服府复 1967 | 牲:声生铁性身 1968 | 恨:很根悢跟 1969 | 托:妥拖多招陀脱拓託吒耗 1970 | 乱:论浪 1971 | 腊:老蒿船滞拉峰暗惜镳鹏藤昔苣提彗袖脯 1972 | 嚎:好骠号毫 1973 | 撙:痨撸禧捅捞漕溥拈 1974 | 拈:撙提 1975 | 满:馒谒澹涛妈马忙腈骂俩瞒愤蒲漫潢蛮码吗肪 1976 | 疱:癌跑 1977 | 俯:俪福唰僻服府傅 1978 | 诗:事痔师失持思示时史蔚实氏使是恃寺市棒施石式 1979 | 臧:减藏 1980 | 梦:孟萌蒙箩婪门猛萝肽 1981 | 婪:梦禁 1982 | 叟:斐里果 1983 | 蝠:幅 1984 | 颈:近静景进顷警顶紧胫 1985 | 孛:率学丰堂季李呈索字 1986 | 筹:酬仇霓萼臭瞳碧踌熹芳瞅第抽 1987 | 椴:报 1988 | 怎:真湛什志整唁这海 1989 | 移:依以议艳夷穆侈遗银已哆亿一髂沂稽意 1990 | 巳:四已且心 1991 | 派:排牌怕拍 1992 | 淀:旋电甸碇 1993 | 甸:店电淀 1994 | 渚:猪灌拷港 1995 | 屋:景属盘岸芜渥侮懂犀五无扈眉捂污务息演坞乌武县雇虞序星孱物 1996 | 辛:幸睾举信羊茎莘宰欣新型悻心紧性 1997 | 框:霍匡狂况宽 1998 | 惰:精将诺情毒格希堕携伟籍镇脆恪撞镜塔 1999 | 叫:较姣缴娇价纠觉烈脚加窖教交角侥驾轿 2000 | 哀:袁甚爱衷 2001 | 衷:哀钟亵盅表衰终中溟 2002 | 雇:屡顾麻暴过屋震掌豪展甚穆屑薰故霾罹詹催晨魔爆鼻厦垦廉塞届固股肩鹰尾赓 2003 | 奋:氛冯亩苗奎裔棼奄愤风分蛮在窑 2004 | 纾:抒野仔数舒 2005 | 卫:微味违威维喂伟未惟尉委尾为直位 2006 | 蹇:菱更案墨 2007 | 罪:醉雅劈拒非最曜疆鄙霏罡捏 2008 | 霏:黎菲罪飞 2009 | 陲:垂 2010 | 垂:炊审陲鄄莆疆槌 2011 | 妄:忘汪妻宴 2012 | 忘:王烹往蒽网汪妄万望蕙旺亡 2013 | 芜:羌寿宪屋完壳夹克 2014 | 痛:统庸桶重同搞腈童痫彤桐扁病睛通 2015 | 劣:烈励 2016 | 烈:然励例激列咧忍劣叫 2017 | 碰:椪鹏掽朋砸风捧 2018 | 喘:瑞嗤端瞒 2019 | 净:精劲近境尽竟静屉竞经金敬警争挣今仅镜禁 2020 | 艇:蜒瞪停听挺疆睫诞妞昭亭魉 2021 | 挺:定停婷听铤艇涎 2022 | 垃:圾拉了 2023 | 砂:沙杀啥 2024 | 裕:鱼俗羽浴于寓却与 2025 | 炳:辆秉并恒饼丙陃 2026 | 秉:袁兼责并炳 2027 | 芮:睿内首瑞丙尊 2028 | 睿:吾玺芮锐容瑞攀 2029 | 卜:补不 2030 | 杜:度仕独性都 2031 | 选:玄炫宣悬迭撰些法逸旋璇 2032 | 弹:强答淡单大但旦蛋惮整他 2033 | 吾:客胃害寄吞无睿悟巫者春两吴误香捂污乌 2034 | 财:采踩才裁材彩 2035 | 春:吾东肴蜃齣椿辱舂菩纯出蒜荐 2036 | 齣:春 2037 | 飞:废非会斐狒菲费霏肥匪 2038 | 悬:选冒熹憬 2039 | 宦:富嚏室趸宴赛息 2040 | 豹:约包暴报 2041 | 阑:澜 2042 | 淳:薄椁捍渟撑搏摩爆岸尊荐 2043 | 彰:影张 2044 | 诰:告糕 2045 | 裁:采彩才截戏财栽战材哉 2046 | 萌:孟梦荫门锰们猛盟蒙 2047 | 样:洋佯言杨桩扬让阳燕氧梓舜樟祥恽养浠严恙柱幢 2048 | 痴:疵吃 2049 | 疵:庇痴次 2050 | 筐:算簿篷套管雀襄墨夏省 2051 | 诣:指错诺屿堂售能备瑜诸 2052 | 沿:势研羊沼滔铅颜严旧潜延妍涓闫 2053 | 颜:蜒眼沿脸演亚阳严焱言延轩妍杨验闫 2054 | 颊:獗叛敉频激 2055 | 铅:沿千船前谦 2056 | 注:庄主瞩歹洋助煮逐猪铸祝住汪准柱著朱诸 2057 | 弱:若蛋竭落入溺 2058 | 妤:好轻野蜂 2059 | 叩:师命部口唯品郭盟扣卵如 2060 | 叙:许学述蓄迅钗赦 2061 | 符:孚複幅福覆副服府附复负 2062 | 佐:做坐作昨惶组左 2063 | 左:昨做佐作 2064 | 氛:奋份易愤氘分 2065 | 欣:幸歆希鑫新辛兴嘻昕行星心西薪曦澈 2066 | 製:资 2067 | 霹:犀解瑟踝露躲虐寨茸赛弄票肆溺库 2068 | 础:砒出碍楚 2069 | 擅:善渲杀伤撰扈捅攫上山槽摇棺僵贫 2070 | 黛:熏贷焦瞳鳕带熹代膳 2071 | 抡:论抢 2072 | 旗:滇棋起其企期橱欺琦族鳍旅气茄旋放 2073 | 聚:举距菊吏豪粟巨粲取据鬓拒焣栗琵露耍俱剧句具居 2074 | 曹:籍草遭票 2075 | 厢:项啸辆俪麻相想新像箱香插 2076 | 钕:铁 2077 | 壳:客萧科亮竞咳可芜荒克 2078 | 幸:孽信竞逞欣专新辛兴姓行心圭性荤 2079 | 疏:输诉述蔬荒树书术梳琉数舒 2080 | 簪:警争餐看 2081 | 仙:微线掀先下现总险惩鲜位 2082 | 悦:约阅跃岳月域育院誉越慌 2083 | 誉:鱼喻于穹悦荣域峇夸莒昔言祥眷育萱玉 2084 | 邛:邦部邓 2085 | 障:伥站隋陌成掌账睛 2086 | 伥:障 2087 | 敢:吹赶蚊感干刚回港杆故 2088 | 悔:诲会梅回毁侮 2089 | 焋:装 2090 | 唐:棠庸情蕾屈塔厝活堂虐圃碳淌浩糖汤潭谭精湾 2091 | 素:萘系寰琐萦袁诉苏责案速肃衰轰票亲豪索彗鬓 2092 | 蓥:整奏银 2093 | 磡:瞄勘 2094 | 瞄:晰赚诺苗磡秒藏瞒躏嫩嫌酿赋 2095 | 铂:角箔脖镇搏钜馆博架 2096 | 蝴:绑蹦 2097 | 蹦:蝴绷翻糊胁崩嗽影勒勤壤 2098 | 崇:寮睾罘蚩亲豪亭祟莫 2099 | 莞:玩烧兑竟 2100 | 岘:现规蚬 2101 | 搏:薄波铂脖嘻溥博淳 2102 | 烙:路络 2103 | 绷:缙蹦硼 2104 | 蔷:强寄普替督 2105 | 躁:噪愤燥糟杂 2106 | 吞:屯吾突香岙 2107 | 萘:奉素豢荼茅泰蒙条类 2108 | 缔:绵篪啼懵帝嗝 2109 | 绵:缔绌席 2110 | 谛:蹄谦 2111 | 予:鱼预娱矛于遇语与育欲越玉 2112 | 银:吟荧迎寅引钿因猥浪赢垠营淫已一泪铜音怡镉饮颖隐影嬴硬英移锚亿鹰阴蓥运 2113 | 鼻:真冒雇皇扈彼逼比皮熹笔 2114 | 委:妥微味威卫猥纬围苇伟耍未萎违妾为位 2115 | 妥:安土徒炭鸵受托委 2116 | 羊:章沿养洋氧兰辛阳杨扬 2117 | 挚:致治志炽彗喹摰 2118 | 炽:织尺持帜煤挚 2119 | 雾:五养巫萼菖雷物 2120 | 老:考牢捞佬腊劳若辣咾酪 2121 | 社:仕审设涉事时舍射性摄 2122 | 仕:事社杜 2123 | 蜃:赝蓬壤渗疫叠短搔春海摩香餐 2124 | 章:音羊覃草眉享寨菖涨鄄帝张苣 2125 | 辈:湟北崔被背倍 2126 | 俑:踊桶傅 2127 | 迄:陉起齐其期讫 2128 | 讫:迄 2129 | 噩:题蟹蕞翼恶黑 2130 | 镶:解接模察相镙赛争铁 2131 | 严:沿衍言咽杨秧延泽验盐研眼情演颜闫样艳深产彦晏 2132 | 诵:涌桶骗确送 2133 | 拢:我犹龙 2134 | 陷:线格隆隔现险隐 2135 | 阁:阎格葛搁歌隔闺闾 2136 | 阎:眼阅间搁阐阀延彦炎阁闫 2137 | 权:诠汊全枚劝拳券泉圈馆仅 2138 | 傈:裸保 2139 | 异:冒房议焊益伊以衣乙疑旱一抑溢意肆毅椅 2140 | 焊:犀憾异费得喊 2141 | 太:大汰胎态台钛他泰抬它 2142 | 晴:情畴青糟清鼎嗜嘎睛精壤辖 2143 | 竣:军峻 2144 | 夹:买央失价浃佳芜嘉夫新捷加吏决家头条 2145 | 来:拉睐莱开未赖累 2146 | 缺:取确欠块峡却快诀 2147 | 滩:贪潞谈坛碳潭汉濉 2148 | 双:叹霜 2149 | 沾:扎站战蟑钻惩 2150 | 器:漆起其猖契七且籍嚣启据琦汽弃棋企黜卡气切齐期鄙奇 2151 | 曲:区渠取去屈娶趣蚀袖 2152 | 颗:铈科可棵颢克 2153 | 粒:愉理例豇力利丽里 2154 | 蟆:续 2155 | 潢:满还演痪辉黄 2156 | 慰:危删感藏恩未晨尉轩为 2157 | 尉:卫慰 2158 | 饭:翻皈帆饮犯放坂发返畈番范法分馆反贩方乏 2159 | 饮:音吹引钦银软恢颖迎影隐意饭 2160 | 衡:生阗往衙横恒孀 2161 | 衙:衡裔 2162 | 谘:悴诏昭箔滔资谐馅 2163 | 熙:系些希照阚羲西黑 2164 | 帕:盼幅爬阳怕帽 2165 | 堵:度绪睹毒猪读独鳍嗜肚都塔诸 2166 | 眷:卷群祥替誉 2167 | 祥:项象翔栏相详箱想享向眷誉香汴样 2168 | 诺:诣努若糯瞄懦怒惰诸 2169 | 铈:钸颗 2170 | 惕:锡剔悌 2171 | 剔:别惕提 2172 | 举:学剧取去军塞菊觉句辛居绝罕与聚据巨局 2173 | 跳:翘挑眺洮趴条 2174 | 掘:倔扼缅据绝局 2175 | 哼:停厚亨 2176 | 沉:冗沆沈成晨臣陈 2177 | 峄:峰降 2178 | 臼:音猎白若普右扫 2179 | 牒:碟 2180 | 碟:叠牒 2181 | 喹:孳些挚笙 2182 | 霸:朝半谓爸蛋暴鄄疑鄙吧把罢摆巴霜饱八 2183 | 鄙:廉罪最稣彼露赢比爵番霸高器都 2184 | 饰:势试视沛怖士示事食帅施十市是 2185 | 伺:司行四何洞 2186 | 昇:升 2187 | 撞:赚搔懵担壮转装瑾瞳惰暄愕擂谨潼湮蚩状踵湟餐幢 2188 | 疤:艳范吧绝八 2189 | 钟:忠衷重终种中锺 2190 | 赘:费赞螯资 2191 | 婕:洁疑杰 2192 | 卵:叩 2193 | 驹:居 2194 | 唤:患碘幻换焕膜晚 2195 | 膜:瞩眼媒模墨磨摩唤漠嗅 2196 | 汁:只治志芝计之至针 2197 | 造:追炬灶早噪逞逢燥照迅告遭肇超适找 2198 | 寓:禹裕亩预宫于具高与欲噶闾哥 2199 | 晦:讳梅喉 2200 | 颅:顾预 2201 | 纳:呐那钠哪南拿奈 2202 | 呐:纳侧 2203 | 恐:伽皿悾巩蛳驷孔心趴岫空澈 2204 | 屏:瓶平凭评品频苹聘 2205 | 夷:趸移责灵契疑吏一 2206 | 著:主率觉者注住筑找 2207 | 焯:算神掉伸卓 2208 | 祭:寮寄借界挤察记条 2209 | 馆:嘱罐管倌官权唁恒帼观铂饭广关 2210 | 泸:汽护 2211 | 苷:臂登菲节 2212 | 癫:颐巅痘河 2213 | 凋:减调须涸 2214 | 腿:推琅龈艮退施 2215 | 羞:靖修奉冕盲秦奏爱荒案麦休着赛差 2216 | 悚:球课 2217 | 徙:徒 2218 | 炜:韩玮味为维佛伟 2219 | 洞:伺东栋同涸动恫清冻湄铜词 2220 | 武:午五无舞戎屋吴践试伍务式 2221 | 晗:瀚汉涵寒 2222 | 诙:认谈恢 2223 | 抽:油泊拍筹妞拙袖 2224 | 暇:承娱最胴噪瞻瑕服喉假遐呎 2225 | 盾:靖顿情活请庙啻精插 2226 | 男:难舅勇楠日那南拿鳕哪 2227 | 踏:搭套沓遢蹋他她渣塌塔 2228 | 蹋:踏 2229 | 献:线县限掀现潮谳狱 2230 | 俚:俾理保 2231 | 泺:烁练 2232 | 捏:理罪择挹斐接想费擢揆提摆湟押 2233 | 全:群蜷权金犬劝拳券泉圈空仝颧 2234 | 荽:类 2235 | 谜:继谴米迷 2236 | 丢:去妻熹层流舌 2237 | 忽:户豁葫呼乎物愿 2238 | 临:领理林苗拎麟琳淋灵啼玲里零邻离令 2239 | 平:併瓶拼乒凭评屏羽品频苹坪旱聘便贫萍 2240 | 歪:壹外否至 2241 | 礼:澧哩理札麟历龄例李力丽立里离裡锂 2242 | 彤:同童瞳桐痛影通铜形 2243 | 能:旨难然昵熊嫩脂诣 2244 | 募:母姆慕木墓拇目苜蔚蓦幕寡熹姥莫 2245 | 溴:漠澳 2246 | 孔:札恐空乳 2247 | 劫:劲解劭极击洁新杰 2248 | 昔:音腊管当希营哲者新茸誉措誓西 2249 | 皈:板扳饭贩阪 2250 | 奇:寄起其大可七且琴弃器习棋企骑欺气琪啬齐期苟绮 2251 | 惯:贯罐管愤望灌懦广关 2252 | 敝:澈敞 2253 | 遨:翱邀 2254 | 杉:山珊衫 2255 | 叽:绩巩击机 2256 | 洪:宏虹鸿哄红喋淇共 2257 | 绫:缓续 2258 | 右:优若臼有悠石又在 2259 | 茅:萘芽矛毛亲猫 2260 | 矛:予柔茅毛 2261 | 限:瞩线县象先纤下献现相宪箱阳像贤险腺羡帽 2262 | 戈:格歌割隔咯哥 2263 | 澎:滢影 2264 | 床:赚洙沫船深传厌闯创 2265 | 刷:剧割届剐耍 2266 | 优:由仇悠有幽哟国又忧右尤 2267 | 裤:酷晖穀跨库苦袖 2268 | 狞:将 2269 | 骗:瞩片偏踪驱遍诵 2270 | 六:弋榴日溜柳示路李亲广入交留流八刘 2271 | 俞:鱼于馀余与愈 2272 | 码:满马吗玛 2273 | 韶:翻少部辩毅 2274 | 庭:蘑停婷屉听匿匾腔庵廷 2275 | 匾:最庭更逼愿值 2276 | 姜:将爱肩江降苦蒋健 2277 | 瘴:胀 2278 | 瞒:满啸辆瞄喘嫌蛮蹉 2279 | 贸:冒员茂猫留迢帽贫 2280 | 留:榴贸瘤柳熘馏六流刘 2281 | 延:焉眼然阎沿艳岩研演衍颜严燕诞言彦炎杨验闫 2282 | 艳:眼演移嫣泡燕雁焱言豫延严彦妍验疤 2283 | 窘:害胃盲寒窖 2284 | 抛:胁摊泡跑 2285 | 橡:项相箱像憬嘈 2286 | 芦:声鲁产苣陆 2287 | 冉:染丹然燃 2288 | 咛:修粹宁 2289 | 凄:凌其接妻七扇搜 2290 | 辕:输员然兼擎懑辨圆运 2291 | 忒:推特会 2292 | 蛎:辆 2293 | 歹:源油酒大浪法注滋带 2294 | 甘:白曰廿干莱井苜计杆 2295 | 郝:邡赫哈邢好濠 2296 | 邡:郝郊 2297 | 涸:很泊相洞泪凋淘 2298 | 斤:近经金紧今津仅精己 2299 | 亚:芽鸦呀要牙颜压焰娅咬哑雅证押阿彦 2300 | 惋:愤 2301 | 摇:播擅搬遥淫谣 2302 | 淫:援引赢银摇迎一影溪渥 2303 | 萨:散牺三塞胪薛卅撒 2304 | 薛:学薜藤酐萨 2305 | 叻:勒 2306 | 骂:胃满嘛马麻慢笃妈吗帽驾卖 2307 | 覃:单章早军草堂享靠罩谭查潭卓 2308 | 恫:洞迥惘侗 2309 | 侗:很伊个恫得俱 2310 | 丑:投五丑愁 2311 | 亮:辆量凛了晾芫壳两熹凉靓完莫 2312 | 拱:供工德携探弓 2313 | 假:较佃嘉懵加僻甲儒懦佣架解价炸候佳暇嫁见宙倾钾贾娇家儡 2314 | 陡:抖 2315 | 闯:床闻画河创间 2316 | 矶:矾 2317 | 颢:翻额题颗顾颖新颞 2318 | 绘:汇给会 2319 | 歉:吹欠前撤颛羡 2320 | 颛:积散歉觐赖 2321 | 乏:发泛伐法阀之凡饭筏 2322 | 详:洋翔相享想祥 2323 | 湄:漏晶眉镅楣涓洞 2324 | 嗝:骤幅橱榻辐橘鼎缔哥 2325 | 噬:食愤时失 2326 | 惨:修残恰参怡渗餐 2327 | 恰:怡惨冶卡给拾 2328 | 埋:买唾坪烛帼锂 2329 | 裳:装蒙党隶 2330 | 拷:转考渚 2331 | 块:脍磈贵跨决快缺抉 2332 | 珂:呵科河 2333 | 蚤:名备 2334 | 芽:茱宰寺军卑亚牙穿茅等第蒙 2335 | 逾:预于馀与遭途 2336 | 饽:德 2337 | 蓁:源单汗活荣案麦泰 2338 | 驿:意一 2339 | 盒:和合赫河拿何 2340 | 谷:估爸浴骨古股容果梏 2341 | 鞭:边硬 2342 | 硬:梗引英哽因印更应鞭银营影阴 2343 | 橙:陈榴称成呈 2344 | 凑:奏读 2345 | 癈:废费 2346 | 泽:沣涪择责铎严锋译圣浮则 2347 | 惜:错吸喜借信伊腊措息习 2348 | 炭:妥棘疫叹碳岌 2349 | 碳:做缴滩磋炭叹琳烫欺辣唐激撇嫩探瓣它歛 2350 | 俏:悄值 2351 | 悄:指情敲撑挡稍俏 2352 | 勐:勒勤 2353 | 萎:荨单奏妻菖麦菱赛娄费霆泰彗桑委菩女为类 2354 | 松:宋公嵩送 2355 | 峨:愤俄啸域 2356 | 储:睹除处厨睛出 2357 | 喷:顺愤捧啧 2358 | 茬:若军 2359 | 杯:碑呗林怀北备背被郴倍 2360 | 怀:林华杯化回淮坏 2361 | 暑:束数苏署 2362 | 井:劲境经竟紧景浸并进菲警甘锦仅 2363 | 挣:拯静征净正证 2364 | 郧:策 2365 | 鲈:鲸 2366 | 夔:费 2367 | 茶:巢柴察阐杰黎荼产查差 2368 | 缉:级唱硐绢逞眉机看激铜涓 2369 | 四:丝伺司死斯巳寺撕思私嗣厮史似西肆 2370 | 撰:转擅腥专懵选愣 2371 | 蓉:率荣黎泰容榕融 2372 | 渐:减见浙兼剑奸斩践件建键 2373 | 芯:信感新行恶心性 2374 | 舅:冒勇救就圃男身 2375 | 炅:兵泉呆 2376 | 瀛:赢 2377 | 苘:薄商简蓖藏荷肯背幕 2378 | 锋:封丰逢枫峰怖挂芬风髂泽铮锆 2379 | 枫:冯丰砜机锋 2380 | 恶:惑噩德二芯腻 2381 | 祛:去袪 2382 | 黜:除默黝吨吧器 2383 | 贩:皈犯梵叛泛范反饭 2384 | 煦:点热须旭昫 2385 | 姨:媒已逸一嫌煤意 2386 | 畀:界 2387 | 编:循边偏便孀缩 2388 | 您:你宁李拰隙 2389 | 恽:挥样 2390 | 笺:第 2391 | 凉:棕惊亮掠梁两良琼谅湸 2392 | 菱:芙爱要麦零萎蹇 2393 | 睢:礁唯遂瞧碓 2394 | 係:系是心习 2395 | 纠:赳久集叫 2396 | 胥:胃精 2397 | 潭:滩摊演覃唐谭 2398 | 鲜:线骥仙先群纤苏现显 2399 | 苏:暑诉素酥随宿速办孙缩鲜 2400 | 踌:筹 2401 | 野:也业妤爷纾夜膨 2402 | 鸦:鸫讶押亚牙丫雅鸭鸣 2403 | 逸:亦义姨选遍亿一意毅椅 2404 | 隔:格葛个福戈各歌隅陷阁 2405 | 哭:契枯苦括 2406 | 乾:安尴 2407 | 鸡:急击呜记圾及仅唱肌睫即今济际基激集畿级积继挤机季家几鸣 2408 | 瑾:景撞锦 2409 | 蝎:竭嫣娼 2410 | 扭:油投拉旧祖把坦提招摄 2411 | 棵:果柯颗课 2412 | 惮:膳弹殚 2413 | 坪:埋乒平聘萍 2414 | 叠:碟冒垒迭责蜃麦登琶熹蝶彗 2415 | 县:线限先逞下现献屋霆亘层羡昙 2416 | 墟:嘘埔堀 2417 | 嘘:吁喔墟 2418 | 凸:脱图突土秃 2419 | 片:骗偏篇丬 2420 | 丛:欉业 2421 | 悼:掉盗淖到 2422 | 酶:动没 2423 | 恙:羔样薏 2424 | 羔:志恙高 2425 | 敏:鳄米密敌民繁明蜜珉名铭 2426 | 罔:闰阔闺惘闾 2427 | 馅:线格谘现络绝 2428 | 玮:伪为唯围炜伟 2429 | 恋:连棘量脸顿链联峦炼练 2430 | 辞:醉辩辨此慈词 2431 | 隍:速键健隆 2432 | 汀:行打 2433 | 耙:和籍箱 2434 | 蒯:承剿闷湔测热脚他劝胸放 2435 | 哆:移多 2436 | 蔚:歛诗为款未募肆幕暨哥伟位 2437 | 棒:博半板榜诗办磅邦俸班帮 2438 | 俸:丰棒 2439 | 霾:率雇题趣累紧 2440 | 廷:停婷庭建迳 2441 | 荐:进监剑春件建健淳 2442 | 捷:梗连建解洁槎阶厘接节杰挂费皆提夹湟摄技 2443 | 脱:拖就凸托拓脲 2444 | 睁:静征正晚铮 2445 | 灌:贯霍搀崖惯渚湮疆轩湟渭观 2446 | 伞:率沙闪陝 2447 | 陝:伞 2448 | 虚:虔许蓄痘序瞌须削需续显徐逊赓 2449 | 铭:明敏茗名鸣 2450 | 酰:先 2451 | 胺:按安胶 2452 | 挡:肖梢当蛋档悄 2453 | 耐:硐福那内嗣丽谢酮醇奈 2454 | 抉:块谈 2455 | 铎:度愕泽经 2456 | 序:虚停学虐存屋迅训麾须旭续需绪岸痊 2457 | 惊:棉棕惊经景金掠恢进凉爆今精慌 2458 | 倌:植馆棺 2459 | 俱:慎剧具聚侗惧 2460 | 荡:芫蒿当盪档汤 2461 | 盪:荡 2462 | 矸:研 2463 | 儒:入席售偶假债如 2464 | 匙:惑题 2465 | 党:单当蛋裳兄常淇档 2466 | 粮:量幅浪粕良两帽梁喂联靓蝙 2467 | 蝙:瞩访粮 2468 | 池:持世赤磁地她弛吃迟 2469 | 钺:越 2470 | 潮:朝翻巢炒献前湖嘲超差淘 2471 | 梨:林例裂李立离弈 2472 | 裂:理梨力璃列 2473 | 眺:姚桃跳 2474 | 悢:恨 2475 | 柏:白百捐相泊私植旧阳棺把怕伯 2476 | 桩:庄装帆柱械抵旺样 2477 | 萸:英莫 2478 | 觐:现敬颛颚熹勤 2479 | 贴:帖梯赚别始替体铁赈提 2480 | 磊:皋希累豪桑雷裹蕾类 2481 | 浆:酱将泉 2482 | 郗:都 2483 | 佰:须百值 2484 | 掠:惊略琼凉扩 2485 | 罩:唱帘置覃眉拿需赵渣 2486 | 咽:烟严彦姻厌呎 2487 | 村:寸付存 2488 | 含:韩邯寒占宫汗函舍涵喊 2489 | 邬:吴 2490 | 糕:奥诰嘿高 2491 | 嘿:黑糕 2492 | 兼:赚渠秉辕渐莆剪坚加煎亲建黄僵间 2493 | 羁:朝韩挤祠嘻集曼 2494 | 鹿:境廉浅民咸厝洛路海浦陆湾 2495 | 迂:赶讧迁走与逮建 2496 | 粉:讽盼份分扮吩 2497 | 守:受首灾瘦呈数手寸 2498 | 焰:唱墙宴亚鲳 2499 | 炮:跑传泡胞灼咆 2500 | 咆:鲍绝炮 2501 | 桌:贞祟皂逼寅螟座卓 2502 | 瞌:虚嗑境科赞曦 2503 | 译:印义亿一浮痒泽释 2504 | 谒:满锅祸 2505 | 赓:虚质雇摩 2506 | 危:微慰威唯围范维氘债为 2507 | 谴:遐逞前谜讪遭遁遣睛适 2508 | 考:老砦烤靠菩拷 2509 | 烤:考赌靠 2510 | 谭:算谈覃坛唐探潭 2511 | 皎:较饺校佼敉咬交 2512 | 媛:源员娱袁远渊元院原暧圆暖愿 2513 | 忠:患仲钟熏重终中众 2514 | 猜:才蔡德菜债 2515 | 吓:夏下盱肝 2516 | 箱:乡项商稻限橡耦翔箔相想像厢向祥香耙趋 2517 | 乡:项象现相想箱像向香瑯 2518 | 窝:锅我 2519 | 锅:谒过咕窝国 2520 | 折:摘择蛰拆哲者这祈忻沂 2521 | 哉:戴截栽裁载在 2522 | 帽:唱冒貌情帕瑁限喀辑媒贸相照毛骂烬猫粮根屈 2523 | 卷:倦捐劵俊巷娟眷券弮 2524 | 匣:愿厘便瘦霞屈 2525 | 缴:叫价焦徵碳脚缚教交角绸 2526 | 徵:微缴截争徽 2527 | 隶:贡力康裳录 2528 | 谐:谘协偕谢 2529 | 汨:知泊范把坦扣 2530 | 娃:哇妊蛙瓦完畦 2531 | 完:元网瓦万宛望出芜弯湾由王亮九晚玩娃兀芫帼挽 2532 | 觊:鲫基 2533 | 觎:鱼于 2534 | 仰:伽养佃伯抑体杨 2535 | 鏖:退凰崖 2536 | 吐:拖涉图肚土 2537 | 饲:丝同思圃得词 2538 | 瞩:唱眼限曙瞻骗晶踞蠕辗胍跟注服膜蝙 2539 | 啻:雪茴琶雷是盾 2540 | 茜:蔬费赛倩萤措蒏黄苦 2541 | 峇:寄岩苔沓誉巴杳 2542 | 弭:弼强瀰胴明驷洱弧饵 2543 | 弼:弭哥 2544 | 俘:存伴 2545 | 芸:纭云 2546 | 云:匀于遇蕴耘郁语与芸瑜玉陨运 2547 | 症:政阵征整镇郑证针 2548 | 针:症真贞珍钎正汁争整这计蒸证 2549 | 鹉:无务鹊 2550 | 鹊:雀鹉 2551 | 昭:朝喀谘照绍艇招 2552 | 霆:霍县停冕婷斐具妻宴麦壅龚疆玺票囊萎曼 2553 | 镉:辆银革疑镇锦镛 2554 | 麻:雇嘛痲骂睡厢妈马么 2555 | 皖:说 2556 | 侄:制之 2557 | 扑:仆普朴 2558 | 聪:从总税 2559 | 挟:快侠鞋 2560 | 扳:版皈半板 2561 | 媒:没摸模梅眉姨每霉美嫔煤膜帽 2562 | 嫔:媒 2563 | 羡:项线县限歉现豪莫 2564 | 怯:却 2565 | 锐:瑞说睿 2566 | 怡:饴拚恰以惨银疑已一检医贻意仪给毅 2567 | 佬:崂老倦 2568 | 龄:林拎豁鳞淋灵陵玲礼零铃 2569 | 豁:忽龄多番 2570 | 遽:追蔼返居踵遐 2571 | 讲:将奖简构降肿诀蒋 2572 | 龚:贲葬宫逞工功霆共 2573 | 洵:询梅拘渔 2574 | 廓:承感 2575 | 翼:谊巽义莆雷噩扈衣菖登瞳一彗艺娱以仪亦壹亿柔冀翌 2576 | 鑫:歆醒欣新行兴姓心星 2577 | 梭:凌桅俊唆浚陵榷楷榕 2578 | 俊:卷峻军骏梭隽君均俟 2579 | 寡:塞暴寨挂菖掼募幕蒙莫 2580 | 嘻:希烯属博糖喀穆欣奚某鳟露嬉停禧谨洗搏袭锡蕾羁 2581 | 皓:修酷号浩好 2582 | 惫:被意备 2583 | 昀:筠购 2584 | 攀:霍睿萼潘摹 2585 | 霍:倡冒渲或框匡获塞看崔霆雷串灌货僵攀 2586 | 企:琪旗起齐漆其器期契七奇崎琴气且启弃 2587 | 亏:匮污最会魁奎跨弓 2588 | 孳:喹擎等紧 2589 | 忆:艺意亿一 2590 | 鎗:枪 2591 | 硕:顿树术说数 2592 | 眩:滋 2593 | 垅:我 2594 | 绚:炫 2595 | 罕:空举 2596 | 纹:文数致鲛 2597 | 疟:藉庐镳菲堆辩 2598 | 簧:簿领赞痪蹩第策簇 2599 | 页:额领业叶夜古 2600 | 辩:韶蕲变辫疟辣辨麸便办辞 2601 | 脾:皮腥碎 2602 | 皮:披波匹批脾鼻 2603 | 芹:养并蕉菎饼岸勤 2604 | 磁:慈池此词 2605 | 涵:韩寒汗函晗撼含喊 2606 | 浓:农 2607 | 轩:宣转律慰腾赚滕瑄颜馑特萱暨灌 2608 | 旌:法族 2609 | 妙:庙秒谬 2610 | 秒:吵少沙妙苗瞄淼渺庙 2611 | 幻:还化换焕唤花 2612 | 粕:和粮 2613 | 嚣:葬校销睛器 2614 | 累:了磊雷索勒肋系樏来泪霾幄紧溟扇祟类乐哩萦蕾 2615 | 鸣:鸦命会明鸡名吗铭 2616 | 祸:谒褫或捐喝祷渴破货 2617 | 慈:磁次此辞词 2618 | 逃:陶兆涛挑淘讨桃 2619 | 虞:喧崖厝虐屋与莫 2620 | 虐:蘑屠信虞霹匿序唐遭痔 2621 | 混:漏棍琵屁涠昆互婚胁滢虎 2622 | 局:周知举剧闾惧句距菊具觉居决高据渴绝彗掘 2623 | 戚:减起咸感七激诫械气 2624 | 葬:綦蠹嚣嶂龚漳羿整璋赏蒜 2625 | 嶂:葬逮炼爆 2626 | 泛:犯范芝氾反贩方乏 2627 | 娜:邯挪硼唧那棚邮哪 2628 | 锭:疑定集 2629 | 液:依业烨叶夜 2630 | 巧:田拐桥 2631 | 摧:描催谁扣揣楷 2632 | 催:雇促摧崔脆 2633 | 诈:眨炸赵照 2634 | 煤:没媒梅眉姨每美炽莓谋 2635 | 倩:茜信千 2636 | 濠:郝好朦豪 2637 | 盅:盘孟衷中 2638 | 町:灯竹盯间 2639 | 兜:兑痘 2640 | 秋:球求蚯丘休伙瞅愁邱 2641 | 妓:岐继妹咬计 2642 | 损:撮生员现溃换慢操顺陨寅 2643 | 殚:惮 2644 | 欠:歉千签前软嵌潜钱久缺 2645 | 啊:安奥爱案阿 2646 | 阿:安啊奥亚荷哎 2647 | 鑽:妆赚 2648 | 酬:刮仇筹训刚 2649 | 仇:优酬九筹执 2650 | 嫂:艘嫚提染扫驶 2651 | 眙:睹脸胎暗验呛晤 2652 | 灵:领凌林竞夷岭龄责临更琳寅录玲零夏令 2653 | 口:善和格宫吉叩告扣何吃 2654 | 螺:蝉裸路漯罗 2655 | 蝉:螺蚊婵 2656 | 酪:胳老醋 2657 | 汴:邝祥计 2658 | 鲛:交骄致纹 2659 | 脍:块烩 2660 | 屎:深森课保使尿 2661 | 渝:愉鱼雨馀余语与翰玉 2662 | 尹:英以应营弄一票隐阴 2663 | 谎:还皇环荒换黄谅慌 2664 | 荒:梵谎壳疏黄羞慌 2665 | 凭:瓶平屏评品 2666 | 迈:近买访边麦马逅卖 2667 | 屑:雇承削卸愿 2668 | 削:虚歇须屑判 2669 | 鞋:进靼挟协斜写血 2670 | 葱:忍充海总 2671 | 栋:董椅东动冻洞 2672 | 椅:柚以栋异已易逸一阔倚 2673 | 墨:筐喧喔哩寞塞逞模宴疆抹摩泰串遐膜蹇莫 2674 | 宴:筵室墓墨菖畏焰霆耍妄呈宦宰莫 2675 | 繫:习 2676 | 戎:载荣武 2677 | 召:朝兆吕照着赵石招找 2678 | 茵:莹总因阴 2679 | 均:屿钧军俊具居君据 2680 | 驱:渠取去骗躯讴趋抠 2681 | 讴:驱 2682 | 迥:范恫组回淘 2683 | 靓:翻辆量亮粮睛谅 2684 | 婧:靖静金晋婚菁第辖 2685 | 补:部不布步卜仆捕 2686 | 洗:吸喜系析奚先希细席新嘻习西袭冼媳写血 2687 | 鼎:定丁唰顶嗝晴 2688 | 菪:爱 2689 | 阔:稠周椅罔偶调绸 2690 | 羸:赢雷 2691 | 售:收怠诣唱信寿授受首铸堡瘦儒伟手省 2692 | 邢:绑郝心星都形 2693 | 潼:统同童冷桐盘通撞铜 2694 | 钿:镳铀银 2695 | 疾:级积急即机进吉几疚计痿及庚技 2696 | 软:吹饮欠钦阮款扩 2697 | 湘:项相涠像香 2698 | 沼:沙沿拓潜招 2699 | 僕:朴 2700 | 瓶:胭拖平凭屏品配聘 2701 | 呛:枪舱眙 2702 | 龋:蹒培端 2703 | 庵:庭播鹰魔 2704 | 湿:师失温实时识显十石适式 2705 | 陨:损院云 2706 | 给:怡恰绘昝合个哈洽革啥结 2707 | 荚:加芙英卖 2708 | 灰:宏谈会荻恢次辉挥徽 2709 | 南:难纳楠那男两拿甫 2710 | 念:年碾娘 2711 | 爸:伴芭琶吧霸把容巴谷八报 2712 | 绑:蝴榜郸坂膀焖嘟锢邢掷愤邦锏郫 2713 | 郸:绑 2714 | 轮:仑伦论沦 2715 | 沦:仑伦轮沁 2716 | 岔:差贫插 2717 | 肪:防满房胁 2718 | 匹:远皮屁 2719 | 寮:煊了崇宙亩察祭睫熹寅 2720 | 敛:联数领 2721 | 裔:奋脊商墙焉靥衙一高查 2722 | 碓:堆睢 2723 | 樊:翻凡帆繁返范反方禁 2724 | 缅:面蝈帼掘 2725 | 钵:崔体 2726 | 肌:积机基季鸡凯 2727 | 炉:卢噜露落路壶虑 2728 | 栩:翻诩植椰 2729 | 诩:翊栩 2730 | 琳:林卯麟唰临啉蛳碳胁灵霖玲里揪令附 2731 | 枣:零超 2732 | 腻:逆恶 2733 | 逆:呢你腻 2734 | 湍:端潘渴揣团 2735 | 探:谈摊叹拱深碳他拣谭扮它 2736 | 攘:震懵壤 2737 | 润:闰画涧圃消论 2738 | 灾:火守亩在 2739 | 麟:磷林临琳昨愤礼鄢蛛 2740 | 荼:萘茶 2741 | 蜘:制之支蚑 2742 | 蚑:蜘 2743 | 柄:兵桥饼 2744 | 揄:语 2745 | 崎:起齐歧其企骑愤埼惆倚睛脯峒 2746 | 糖:谈堂塘唐唁嘻趟洮嘱粗汤 2747 | 蕾:眉莆菖磊嘻唐雷熹囊累彗 2748 | 惠:贿甫会汇蒽憩嘎痘暮嗉辉回慧湟意蕙忌 2749 | 询:洵闾旬徐寻讯巡词间 2750 | 粑:巴八 2751 | 嫉:季 2752 | 冈:刚风岗 2753 | 显:虚线湿先现相想铣嫌险贤弦响壶鲜 2754 | 嬷:吗妈 2755 | 袋:亵大带代呆 2756 | 绌:细咄拙绵 2757 | 陶:桃他掏淘她讨蝈逃 2758 | 蝈:陶缅国坞 2759 | 婆:遐破坡 2760 | 镳:解钿疟腊标 2761 | 宁:甯皇窄您丁于呈凝咛 2762 | 蛇:沱佘舌 2763 | 酸:蒜酝 2764 | 酝:郁酸 2765 | 孀:倾姗霜衡编嫌爆懈懦 2766 | 蚕:香季蠢餐 2767 | 翌:望翼一 2768 | 孤:呱姑胍班故 2769 | 壶:签炉显 2770 | 榔:狼妞 2771 | 狼:榔郎蓝痕朗 2772 | 咬:收妓舀要谣皎亚 2773 | 妆:庄转装鑽 2774 | 铵:年焦 2775 | 偷:愉投喻佃肘头 2776 | 摄:扭硐设振腥涉拐捷社桐晨僵射展是 2777 | 颌:领 2778 | 焣:聚 2779 | 舄:胃焉思喝禺 2780 | 绳:声省 2781 | 苴:其苜茸苣 2782 | 容:答然睿爸荣龙蓉溶谷榕融 2783 | 霜:藉双露租碧籍霸雅孀 2784 | 矇:懵 2785 | 隘:院 2786 | 奸:见渐监好键间 2787 | 拽:抓挽找 2788 | 峙:炼辉峰哮 2789 | 翁:文吻 2790 | 埭:壤 2791 | 荥:束象泉 2792 | 拳:菅圈全权萼菩券泉彗蒜 2793 | 苦:徒酷姜若置茜裤苫营菖咕菁琶芭彗库哭控蒜 2794 | 袍:泡跑 2795 | 敉:敞枚皎汶颊 2796 | 酊:酌班酵 2797 | 牺:吸义细横洒萨西 2798 | 拾:输恰实冶世洽台事抬时检十市是视 2799 | 涎:挺逛 2800 | 遁:谴通 2801 | 锏:剑绑铜 2802 | 污:亏宕无五吾后焉舞屋挥吴误侮物厂 2803 | 賸:胜 2804 | 雄:胸熊谁淮准 2805 | 谁:堆淮水摧睡雅雄准 2806 | 扫:曰日节拍臼嫂 2807 | 伏:袱扶福幅夫副佚伙状服弗妇父复负 2808 | 飓:喝飕瞧暄 2809 | 汶:没致戊汊文演敉庾哎牧汉 2810 | 骇:还该 2811 | 傲:奥瞰贼澳 2812 | 秀:修嗅秃休季绣袖 2813 | 盗:悼岛道刀靥大倒盎到 2814 | 昼:望责餐 2815 | 祷:涛大祸到痔 2816 | 私:师积失司柚斯柏撕思籼秘弘市四 2817 | 爬:帕跑发怕趴盘 2818 | 判:板叛莎削办 2819 | 麸:舞魅籍辩摰 2820 | 肿:讲拼种晤 2821 | 伙:或谈秋获狄活火伏货 2822 | 击:借急筋接加记绩及金劫鸡即寂既近叽际基进激集主级积迹挤唧吉机杰季需计几 2823 | 授:收援寿售浸懵受首兽又 2824 | 辗:瞩辐 2825 | 摹:率某葛模掌攀 2826 | 咨:登苔懵资 2827 | 膳:播廉黛届惮携摩癌 2828 | 厮:四撕 2829 | 撕:晰球斯思私厮四 2830 | 泌:秘必 2831 | 贤:线限娴先肾嫌显蹂 2832 | 熟:淑孰述书搜胍热术数塾憝属叔手 2833 | 淑:叔濒书数熟梳岫舒 2834 | 畴:睛榜晴涛 2835 | 婷:停庭听短挺综蜂霆亭廷 2836 | 朋:输胴鹏旁明职风服丽碰捧棚 2837 | 胴:眼瞻朋暗弭暇响 2838 | 灼:逐炮卓 2839 | 蚊:蚁蝉问文敢 2840 | 蚁:引致以蚊乙已一艺 2841 | 涉:沙设吐步社舍射慑摄 2842 | 硫:流砥 2843 | 撸:撙路籍 2844 | 浔:寻将得漫 2845 | 煊:寮渔牵穆海 2846 | 穆:喧雇煊暄疃移木暮嘻目秽押砷 2847 | 萝:梦劳翠要洛整罗 2848 | 倍:侪音啬借陪杯贝卑辈傍北备被 2849 | 谣:遥要摇咬瑶 2850 | 綦:葬季其泰 2851 | 匆:冲 2852 | 凝:拟宁溟籽蒲漠 2853 | 徊:很组 2854 | 训:许酬删序酗需续顺讯洲 2855 | 删:慰伤别添山恩刑训悠杰 2856 | 瓷:此密 2857 | 番:翻啬蜀豁瘩繁烦鳌莆潘鄙琶饭方 2858 | 阈:海前 2859 | 铳:统 2860 | 堤:坩蒂费地第 2861 | 绮:岐奇练 2862 | 谦:赚千谈签前铅钱涝谛 2863 | 色:瑟设 2864 | 瘦:守收疫售疲匣受兽手 2865 | 蜕:说 2866 | 擒:搐情漕榆漓 2867 | 轴:输周咒肘妞洲 2868 | 坞:追唱五鸿逞蚂屋蝈 2869 | 炙:置灸 2870 | 灸:九炙 2871 | 狙:组猩泪胡 2872 | 怠:售带忿息 2873 | 湖:户护呼潮沪互乎胡虎 2874 | 估:佶顾郭过股菇固国古谷 2875 | 伐:罚发伎法载货找乏 2876 | 俪:做理厩厢利俯立值 2877 | 伎:枝技伐剂 2878 | 牙:乐芽鸦汗要亚雅 2879 | 舷:兹滋 2880 | 帅:师衰饰 2881 | 迭:选叠跌 2882 | 讥:轨机执继 2883 | 捉:逐琢提抓拙 2884 | 懈:解檞愤籍嫩孀 2885 | 蹴:促 2886 | 陛:些必坚 2887 | 粥:周 2888 | 沓:踏杳峇 2889 | 摰:挚麸遛 2890 | 偕:衢携谐 2891 | 团:闭困湍 2892 | 菀:竟竞 2893 | 岌:炭 2894 | 瘟:短温问 2895 | 哨:少稍躺峭 2896 | 阵:症真陈政振震陌争正镇这郑降证 2897 | 刁:掉叼才问 2898 | 吊:掉帛常棉调 2899 | 冰:宾并病饼滨兵丙斌 2900 | 躏:骊逼遢瞄踊嫌立蹈 2901 | 迦:加嘉边越 2902 | 瘁:痒碎粹 2903 | 碎:醉髓礁虽淬岁萼瘁粹脾 2904 | 碲:韩 2905 | 埕:星里 2906 | 莓:没煤酷 2907 | 冼:洗 2908 | 庆:寝扶钦青轻亲琴决清勤虎 2909 | 革:堇镉格荸各菖茧苜醴给 2910 | 悯:钢 2911 | 椰:挪叶棚邮栩 2912 | 猖:唱猎器猬甜 2913 | 橥:渠 2914 | 渎:演赎卖 2915 | 傅:博富庸夫俯赋俑妇付父复 2916 | 氰:青冒氢 2917 | 盐:研眼演岩衍严言闫 2918 | 竖:述书娶束数 2919 | 戾:捩庚 2920 | 赎:睛渎啧 2921 | 馒:满 2922 | 参:残惨赞矢掺舱仓佘蔘苍餐 2923 | 蔘:参 2924 | 嗽:瞰受瞅蹦脯 2925 | 狱:雨获岳献浴遇域育猫肽赋 2926 | 鸯:军 2927 | 蹶:獗决 2928 | 踢:梯蹄喝提踞 2929 | 蔻:悲题志 2930 | 侧:呐厕测唰次喇册嘲则策 2931 | 愣:榜撰傍俾谤保 2932 | 蜇:蛰誓 2933 | 迎:引因饮淫赢应营银颖萤莹 2934 | 噪:吵澡桑操嵊造嗓躁暇嘈 2935 | 嘈:吵橡噜噪概 2936 | 操:劈摸澡揉噪腥帼褐损 2937 | 肢:指只知致跛支股肤之至姿 2938 | 迟:只尺池赤持退吃驰 2939 | 赤:翅池叔迟蒜 2940 | 劈:罪批操导撇 2941 | 胭:瓶脑和 2942 | 姓:幸信鑫型行兴杏妞心性形 2943 | 诸:主诺谨堂猪者注祝讳筑住嗜之铐朱堵诣 2944 | 鄢:事麟翻 2945 | 泄:泻协写西 2946 | 椭:梅啪 2947 | 啪:椭做 2948 | 幢:愕撞样 2949 | 杵:杆 2950 | 亵:衷表袋胁谢斜 2951 | 么:公闷门麻枚美幺 2952 | 锡:吸系钖蜥惕希喝嘻西曦 2953 | 柙:押 2954 | 绪:锗序旭徐堵 2955 | 衍:演街严延盐 2956 | 坠:追壁堕蜜燮 2957 | 堕:喧坠隋惰 2958 | 胸:凶熊滫蒯雄 2959 | 滫:胸 2960 | 垦:恳喔昱雇屡冒逞肯扇 2961 | 恳:肯垦息 2962 | 刮:制呱酬剐括挂剩关 2963 | 焘:嘉暴涛 2964 | 嫩:娣濑嬾螨唰能们碳愤喇瞄激澍懈 2965 | 髓:碎骶随赖睛 2966 | 盯:定顶叮町 2967 | 桎:智知治 2968 | 碱:减械 2969 | 翔:象相详想享箱祥香响 2970 | 扔:认任人赖仍 2971 | 谍:谟馍喋谋慌 2972 | 滞:滑知濑谨腊止怖潦嫌潜带执之撒 2973 | 违:微为卫猥委围速维未遭圭逮伟 2974 | 孪:李 2975 | 埃:诶摸爱挨艾唉 2976 | 唉:埃哎 2977 | 慕:宸木嘉豪恭目苜募熹幕蒙 2978 | 砥:硫抵 2979 | 乳:轧孔如入 2980 | 郭:估顾过叩果古国邓 2981 | 谢:亵耐系蟹涮戏卸唰对兴械谐协斜写 2982 | 耶:也夜都叶 2983 | 掏:陶涛套揭萄拘桃 2984 | 蕙:惠会忘德意 2985 | 梗:硬哽模枚捷便挽 2986 | 喇:侧刺唰嫩脲闸 2987 | 儡:假像保 2988 | 纤:线限掀鲜 2989 | 箫:宵第策销 2990 | 诊:真政珍正整证疹 2991 | 侮:诲污构屋悔乌 2992 | 稔:稳鲶捻 2993 | 蓼:象 2994 | 挑:讨桃洮跳调条逃 2995 | 洮:挑姚跳糖桃 2996 | 痂:协 2997 | 咕:站姑股锅苦 2998 | 噜:鲁鳢瞻赠籍炉嘈 2999 | 拂:沸佛锦 3000 | 锦:经景帛佛仅懦瑾席金荆井锶即近镉竞进巾集紧级濡镍计拂 3001 | 填:喧埔田天票坝甜 3002 | 饕:警誓淘 3003 | 帐:帖站涨战降账怅 3004 | 帖:格贴体铁帐 3005 | 篦:蓖 3006 | 蓖:酷苗菎苘瞎篦 3007 | 汞:工巩 3008 | 筑:硐助巩箔祝住琉驻著笛毓诸 3009 | 琉:窥筑疏 3010 | 聘:硐瓶平屏品屁苹坪瞎睛 3011 | 饯:铁线钱 3012 | 肠:倡长场常 3013 | 猪:主猎助逐珠渚猛注住驻朱堵诸 3014 | 亥:害海 3015 | 赫:和郝喝标茄鹤盒禁 3016 | 桓:还环洹植博卓 3017 | 阅:约阎月悦与 3018 | 掩:眼推俺持奄言 3019 | 奄:奋梵掩 3020 | 逮:醒大速嶂迂带代圭违打 3021 | 佶:结估信杰 3022 | 芬:峰锋芳分 3023 | 嘛:貌马麻骂妈吗玛 3024 | 脏:赞赃胍胜班旺 3025 | 燃:猷然烨赐冉恢渺 3026 | 靛:电赢 3027 | 拨:播披啵波拔剥伯泼 3028 | 宕:岩污档 3029 | 耖:吵 3030 | 什:声审沈时怎件身 3031 | 唇:奉愿感辱落纯出屈 3032 | 濑:滞嫩 3033 | 硝:小销躺稍碍 3034 | 牧:母姆木沐目幕汶数 3035 | 艘:腰哩醴嫂 3036 | 屈:曲去匣屁唇囝唐扁属帽准区 3037 | 毁:会殴回坏悔 3038 | 窖:客喀饺脚窘教交叫 3039 | 殷:因尽应殁一阴姻殿 3040 | 赁:赀美贷 3041 | 醒:腥性鑫型请酐龌行醌星逮睛形 3042 | 狮:师视施石是式 3043 | 肺:废非朊睡费 3044 | 羽:裕宇平语与欲 3045 | 瞭:了 3046 | 咤:耗 3047 | 笼:隆龙策聋宠 3048 | 钉:丁定顶钌 3049 | 垸:玩 3050 | 频:乒平屏评疲品烦濒苹颊萍 3051 | 呻:神冲种伸 3052 | 屉:冠庭净屣展 3053 | 尬:盖 3054 | 蛀:驻助 3055 | 鬼:轨桂瑰硅贵 3056 | 姊:姐 3057 | 犊:续独 3058 | 岐:妓齐歧敲鼓绮 3059 | 钦:饮庆软卿清 3060 | 腹:腑腰福辐服鹰瞳赴妇付父复 3061 | 徽:灰会徵辉回挥慧 3062 | 沃:我厌 3063 | 厌:床沃氏燕言咽压验 3064 | 婴:音英因罂贝应樱望 3065 | 湮:建理潘速漫浬灌撞 3066 | 揍:走擦装 3067 | 梳:淑输树书疏舒 3068 | 祀:配 3069 | 篝:装舞 3070 | 俳:排诽 3071 | 躲:哚骰多霹躬 3072 | 哚:躲 3073 | 奉:萘堇缝信封荸暴唇菩凤蓦分羞蒜 3074 | 愎:复 3075 | 驰:师吃持迟 3076 | 瘫:庸摊席雁他她塌雍 3077 | 桃:陶套挑眺掏洮讨逃淘 3078 | 缡:噶螭缙 3079 | 缙:绷缡绍缓 3080 | 菠:涯领 3081 | 列:烈例裂力丽立咧里捩 3082 | 辑:级撮纪鲁极急际吉娟辐铜集几绩及帽技 3083 | 胍:瞩点孤照杰熟脏 3084 | 妖:然谈药腰要尧妹杳 3085 | 尧:妖挠要浇瑶烧 3086 | 窜:帘蹿审单察眉常瞎荤 3087 | 涧:件润溅 3088 | 栈:占瞻站我战展 3089 | 乖:拐怪乘 3090 | 呋:铁味 3091 | 稼:加 3092 | 榕:梭蓉荣容 3093 | 谅:量谎琼凉靓 3094 | 粲:聚 3095 | 闭:币逼壁闲弊毕团 3096 | 赈:赋贴 3097 | 迅:过序旭造叙讯 3098 | 跛:跋肢波 3099 | 璜:境皇环京横亲录紧壤 3100 | 鱿:由 3101 | 衫:上伤山杉 3102 | 矿:旷款狂扩况宽 3103 | 旷:矿 3104 | 啸:峨倾厢瞒岫忧喃 3105 | 岫:淑啸岖最总恐烛 3106 | 砷:林神确穆碑孙 3107 | 吒:托 3108 | 俐:立 3109 | 绥:终馁遂缓 3110 | 斑:办班般搬 3111 | 殃:央 3112 | 愫:意 3113 | 嚐:尝 3114 | 脲:腥脱喇服陈 3115 | 萄:商荀葡有掏 3116 | 蝗:擎湟塑健 3117 | 昨:做坐咋作麟走祖佐左 3118 | 捣:揭倒灞 3119 | 玟:改琼政 3120 | 绰:错出 3121 | 棱:陵校凌 3122 | 鸭:鹏鸦押呀 3123 | 藤:腊曝薛滕 3124 | 滕:轩腾藤 3125 | 瞻:瞩栈噜胴睛暇脯 3126 | 蔼:霭遽渴 3127 | 霭:蔼菖 3128 | 痲:麻 3129 | 畦:娃鲑维蛙互健 3130 | 邵:郡少绍卲 3131 | 杖:仗长涨 3132 | 慵:镇情懵 3133 | 嚏:使宦替 3134 | 浊:压独 3135 | 屹:曳一毅 3136 | 漱:激 3137 | 璇:选萱瑄撤 3138 | 匮:亏僵 3139 | 鹫:璧救镒 3140 | 剌:刺剥辣 3141 | 轧:转压乳 3142 | 螭:缡璃 3143 | 孕:韵蕴晕运 3144 | 忿:忍怠 3145 | 卉:开步并会 3146 | 舰:建呗减 3147 | 玥:鱼月育玉 3148 | 囹:母 3149 | 躬:供躲射 3150 | 欓:档 3151 | 米:采饼弥密民咪谜莱敏秘蜜术眯迷类 3152 | 贝:呗珼员贡责被婴倍 3153 | 钥:朝药要 3154 | 赌:度睹毒烤暗独读都赋 3155 | 捂:播午搭五吾接屋误 3156 | 蠢:虱黎蚕熹 3157 | 爷:也冶野业 3158 | 鹬:鸪鹃黯 3159 | 黯:眉暗鹬 3160 | 癖:嘱瘾 3161 | 鳄:尸腭敏钨第 3162 | 账:站障涨掌帐张战 3163 | 旖:游蔬族竭 3164 | 瀑:普曝爆 3165 | 圾:吸垃坡鸡视几 3166 | 卿:唧钦青脚热亲清 3167 | 唧:急击娜啡卿集技 3168 | 毛:焉冒矛马茅猫韦帽 3169 | 逗:真过 3170 | 漪:一 3171 | 吨:度敦黜睡颚脯 3172 | 睦:盱木愿 3173 | 邮:由油游娜有尤椰 3174 | 俾:倬啤比伸傍愣俚 3175 | 倬:俾掉停伸 3176 | 峡:陕跃下岷缺霞 3177 | 姚:肴遥要眺洮瑶幺杳窑 3178 | 氏:庄诗室士事厌十市是视 3179 | 轨:鬼饥柜规讥贵 3180 | 帝:帘章蒂巾蔫地弟缔 3181 | 圜:围寰圈 3182 | 霞:虾下匣峡小复 3183 | 割:个刺戈各刷哥 3184 | 棠:策唐 3185 | 蛙:娃挖畦维 3186 | 磈:块 3187 | 溪:系蹊禧些淫希悉膝漯西曦 3188 | 漯:潻螺溪 3189 | 疚:疾 3190 | 倾:啸忏做情假青轻愤倏清啧顺孀唛 3191 | 唛:倾 3192 | 哮:睹孝峙酵 3193 | 睹:度读储眙赌堵哮 3194 | 赦:叙激放规 3195 | 诀:讲觉缺决 3196 | 灏:颂激薇藏 3197 | 黎:藜蔡厘稚萼豇蠢李霏丽力里蓉离茶寥 3198 | 挪:趣哪娜椰 3199 | 娄:董数楼萎 3200 | 泳:涌勇用永拥甬 3201 | 恭:慕共 3202 | 磋:碳砝 3203 | 砝:磋 3204 | 苟:荷有奇苛狗 3205 | 腑:腹 3206 | 藜:索黎 3207 | 铉:铁玄该 3208 | 舂:春 3209 | 跃:约踩月悦峡越耀与旺蹂 3210 | 咏:勇永 3211 | 琪:祺硐蹊棋栖齐其企谟妻骑七奇气淇琦祁 3212 | 捎:少捐 3213 | 阶:截街接基捷结姐皆楷 3214 | 拯:挣 3215 | 宠:冲笼 3216 | 栖:琪硒棋洒 3217 | 辄:唰 3218 | 畿:鸡几 3219 | 钰:玉雨育郁 3220 | 惧:棋慎具帜瞿惆俱巨局 3221 | 瞿:群惧 3222 | 廿:甘 3223 | 蹊:琪骥露践溪西黑 3224 | 曙:瞩睛叔署 3225 | 躯:驱 3226 | 粹:碎卒籽萃瘁咛掖 3227 | 卒:组粹 3228 | 杂:躁木砸斩载染奈 3229 | 疃:穆壤辖 3230 | 宪:线限先旯现突芜究 3231 | 骚:遥驻强搔 3232 | 凡:翻访樊发繁法防反房乏 3233 | 兆:赵照着北肇召逃 3234 | 赵:朝兆诈钊罩照着肇招召 3235 | 楼:漏娄喽镂懂搂 3236 | 喽:楼续 3237 | 茼:商鲁简肯禽幕 3238 | 屡:廖垦雇吕旅铝摩绿 3239 | 诞:大但延艇丹 3240 | 莘:辛 3241 | 佑:又有信倦 3242 | 垒:叠了垄雷 3243 | 荷:和合河苟苘何核阿 3244 | 仓:残苍参舱 3245 | 猛:萌梦锰猪懵们适蒙 3246 | 憝:熟 3247 | 丐:盖 3248 | 稀:吸系浠希细悉西息 3249 | 馨:声信宫逞新星彗心藿 3250 | 撘:搭答 3251 | 氢:氧青看亲清氰 3252 | 硐:琪耐缉蛋巩丽聘筑碉讯摄碍驾 3253 | 嬗:短 3254 | 酷:莴奚茎裤蓖苦莓皓库醋篇 3255 | 醋:促酷酪 3256 | 倚:以骑一崎椅 3257 | 磅:棒半膀碚 3258 | 奈:纳耐杂 3259 | 孚:符夫荸浮 3260 | 仑:沦伦轮 3261 | 稿:稻搞告唁高桥 3262 | 刍:当急 3263 | 曝:铺普膨藤遢喂睛塌瀑堀 3264 | 厨:除楚处橱哥触储出肆 3265 | 橱:旗摒圃厨嗝拥概 3266 | 榆:擒语馀 3267 | 镀:踱度领瞎 3268 | 寨:荤唱屠章塞霹基疆薯霖寡寥债鬓 3269 | 霖:凌林岭琳暴寨赛需 3270 | 疽:洹疸痫 3271 | 汇:贿惠绘会恢肛回挥 3272 | 瑟:踵色霹泰 3273 | 垠:艰根银 3274 | 贬:边眨扁变 3275 | 圳:正振镇 3276 | 浠:稀样 3277 | 孝:笑寺晓下荸校享小教哮 3278 | 披:玻纰波彼屁拔皮批拨被抵 3279 | 螟:粟票桌 3280 | 婐:我 3281 | 巢:贯窠炒栗潮鄞甾抄超茶鬓 3282 | 篇:片酷席遍扁箴笛麓 3283 | 蟑:沾 3284 | 匕:儿它心 3285 | 饼:芹米柄冰并兵丙炳 3286 | 嗤:瞳喘 3287 | 薏:慧恙洛 3288 | 柔:揉矛逼翼豪囊 3289 | 窟:溜福甚震扁癌 3290 | 蚩:郢崇痘虫圭撞惹 3291 | 郢:事郅蚩肇 3292 | 愚:患娱于遇思与雷 3293 | 陵:领凌陕林龄梭玲零邻棱 3294 | 戛:亘 3295 | 俟:俊侯 3296 | 稣:鄙 3297 | 禄:率律路康碌录 3298 | 傀:瑰保 3299 | 讚:赞 3300 | 宿:俗军苏塑像速住数所缩 3301 | 邰:都部 3302 | 珍:贞真诊慎正震镇郑针 3303 | 哑:雅压亚 3304 | 禧:褵撙福细嘻撼檐清稽溪詹 3305 | 梓:锌子样 3306 | 赀:赁紫 3307 | 荫:音萌因阴睛 3308 | 顽:玩晚河 3309 | 砻:袭 3310 | 崴:戴葳端痘康 3311 | 嫖:德源舞爆 3312 | 祁:其琪骑齐 3313 | 瑰:鬼哽魄踝桂屁规槐傀贵 3314 | 踝:猾霹瑰琛胛策 3315 | 蔺:商 3316 | 啥:杀煞砂瞎给 3317 | 禽:莴情秦蒿篱茼清瞎离 3318 | 恤:温检讯协血 3319 | 悲:蔻非卑菲北备背顺被 3320 | 虎:户护湖庆乎混胡烧庚 3321 | 骄:鲛娇交桥轿 3322 | 桥:巧骄侨稿柄敲乔卡杨硚恬 3323 | 揪:救琳就椒 3324 | 虏:房 3325 | 晔:哗夜叶业 3326 | 饱:包跑宝鲍保吧霸绝堡报 3327 | 孢:枪福包泡 3328 | 稗:裨 3329 | 脆:翠跪萃催惰 3330 | 佯:伴样 3331 | 舥:吧 3332 | 柠:将崔 3333 | 栽:戕裁哉藏 3334 | 豢:秦萘 3335 | 窥:琉盔痘 3336 | 盔:窥 3337 | 夕:吸信希多岁曦 3338 | 剑:见将键间渐鉴毽锏件建健荐 3339 | 轶:铁 3340 | 鲨:娑暄类 3341 | 鲳:焰 3342 | 蚂:妈马坞 3343 | 替:蔷梯嚏题巷赞铁警眷潜体提贴媞彗 3344 | 寝:侵庆请启曼 3345 | 灯:当登町等邓 3346 | 媾:嫣购 3347 | 洱:弭尔 3348 | 绀:维 3349 | 歇:些削息 3350 | 囝:菌鼠围黑屈 3351 | 棚:硼鹏朋娜彭愤椰 3352 | 妮:你尼昵坭呢倪 3353 | 靥:播盗潘裔 3354 | 闷:么门蒯们 3355 | 卑:芽宙被悲倍 3356 | 悻:辛 3357 | 稻:稿滔箱导到稍韬 3358 | 酐:薛醒 3359 | 敲:岐豉撬咸鼓悄桥 3360 | 豉:敲 3361 | 逊:虚旬 3362 | 栅:硼 3363 | 淆:涓清看 3364 | 邯:郡含娜韩 3365 | 酌:的前酊 3366 | 胧:戕俄眬 3367 | 鸟:岛唱乌弓马尿 3368 | 斿:放 3369 | 奘:庄类 3370 | 魄:魏瑰破 3371 | 蓓:落有被 3372 | 庶:康数肝 3373 | 痍:庚 3374 | 汱:泣 3375 | 铤:挺 3376 | 逻:裸罗提 3377 | 祠:鲁爵得君羁 3378 | 讶:鸦呀 3379 | 踵:薄瑟厘趣穗撞遽 3380 | 乞:其七期起 3381 | 刑:别删型行新兴心讯形 3382 | 沧:枪苍抢 3383 | 渔:禹鱼洵雨预涌沛煊于馀与浦趋 3384 | 葸:息 3385 | 插:循叉捅括描厢刹差盾岔 3386 | 烨:业液哗燃夜 3387 | 砾:丽研铄 3388 | 蔑:袭德提 3389 | 煮:主助逐注熹朱 3390 | 貌:冒嘛妈吗帽 3391 | 餍:魇僵 3392 | 钊:朝着赵 3393 | 跷:晓窍携 3394 | 耹:聆 3395 | 渺:燃秒 3396 | 徨:惶 3397 | 醴:避艘革堡 3398 | 峻:凌军俊岷唆竣晙 3399 | 彷:妨 3400 | 苇:事委韦蒂 3401 | 骼:略 3402 | 涕:梯廉 3403 | 棺:擅倌眉柏关 3404 | 弧:糊弘张弭班 3405 | 睐:崃味来 3406 | 仝:全空 3407 | 梵:焚犯芫荒奄贩淹 3408 | 隐:音引以伊饮应银尹瘾隋影陷意稳 3409 | 娉:想蝶 3410 | 臻:真贞正桢证 3411 | 钛:汰太然泰 3412 | 冯:奋讽封缝逢枫峰风分马玛 3413 | 诬:无误 3414 | 芫:梵完荡亮 3415 | 檀:冒埔谈暂模槽植僵 3416 | 铺:曝普谱销辅蒲镇浦甬 3417 | 庇:臂疵 3418 | 肃:素萧息诉 3419 | 胞:鲍包炮 3420 | 搔:骚接撞蜃 3421 | 彬:滨斌比 3422 | 淇:琪洪党齐 3423 | 娇:较骄角焦假翘加愤椒家交浇轿叫 3424 | 蓬:率堇苗鹏莲蜃彭逵捧迢滢 3425 | 楣:每眉湄 3426 | 婊:表俵辖 3427 | 惘:伊顷恫网罔 3428 | 巾:经金机帝锦 3429 | 椪:碰 3430 | 牟:抹谋某末 3431 | 抹:檬摸模墨楝牟 3432 | 铄:烁砾 3433 | 烁:泺铄 3434 | 饺:较校觉皎窖 3435 | 泱:决 3436 | 闪:山伞上囚 3437 | 疴:菏 3438 | 菏:箝疴商拜 3439 | 陉:迄 3440 | 塘:搪躺糖堀 3441 | 帆:翻桩樊饭 3442 | 煌:湟黄皇爆 3443 | 滇:电旗 3444 | 裙:崔娼群 3445 | 拣:球捡简琼探件 3446 | 熬:鳌拗然 3447 | 沛:饰渔柿怖佩 3448 | 嗑:磕瞌科 3449 | 媳:袭携戏洗 3450 | 炯:和 3451 | 坻:抵地诋 3452 | 厄:范感 3453 | 簇:簧 3454 | 纮:练 3455 | 哲:折皙苗蛰者昔喆 3456 | 狸:力猩独 3457 | 嗒:搭塔 3458 | 浇:交娇尧 3459 | 封:冯射奉丰峰蜂份锋风汾凤分圭 3460 | 唑:挫 3461 | 踊:涌请瑕躏璃俑 3462 | 扦:持 3463 | 渊:蜊源媛原圆洲 3464 | 贺:和鹤 3465 | 邱:楸秋丘 3466 | 紫:赀子自祟 3467 | 勃:动幼博伯 3468 | 幼:勃有纫又 3469 | 嗣:四耐 3470 | 阮:软朊 3471 | 妾:委接轻 3472 | 摒:据握橱潺 3473 | 锺:钟中 3474 | 侨:乔简桥 3475 | 隋:将贿障堕腐照隐降捧甫蔗 3476 | 砖:转传专 3477 | 緻:致 3478 | 挂:冠佳刮桂洼捷锋寡卦观关 3479 | 郫:绑 3480 | 哗:滑华晔烨花 3481 | 坑:吭抗 3482 | 抗:伉坑看炕康扰 3483 | 漆:起其企期七器 3484 | 柿:沛林神掉是 3485 | 凤:奉封缝峰份风 3486 | 午:五无舞悟乌干捂晚务武 3487 | 毽:剑 3488 | 闹:恼 3489 | 诲:悔侮 3490 | 臀:胃磬雪 3491 | 喋:洪课谍 3492 | 茉:茱荣莱亲谋莫 3493 | 茱:茉芙芽 3494 | 篱:禽 3495 | 镕:锴溶 3496 | 栏:拦忏览兰篮蓝祥烂 3497 | 祕:秘 3498 | 伢:呀 3499 | 疯:丰逢峰份风庙分 3500 | 铲:缠长产掺 3501 | 颖:音英因盈饮应银瘾莹迎影颢颍 3502 | 颇:破颉赖颠 3503 | 靶:笔吧 3504 | 瘠:级瘩懵 3505 | 绯:啡 3506 | 啡:唧腓瞰胁绯 3507 | 悍:捍忏哈 3508 | 檯:台 3509 | 咐:富付附 3510 | 帑:蹈 3511 | 芒:茫 3512 | 茫:芒 3513 | 俩:满辆脸经两 3514 | 饿:俄续 3515 | 堀:曝墟塘绝崛 3516 | 鹏:蓬腊朋盆彭鹤碰捧棚鸭脯 3517 | 狄:获伙 3518 | 轿:骄娇脚辐斩教交架叫 3519 | 冻:东栋动炼懂洞 3520 | 竿:镂赶杆 3521 | 烫:碳汤 3522 | 汤:钖堂烫唐趟场扬荡糖 3523 | 獒:类 3524 | 啵:播做拨波 3525 | 浑:辉押挥拜 3526 | 攥:钻 3527 | 钻:攥沾 3528 | 辙:钴澈者 3529 | 撼:球禧感扼航涵嬉 3530 | 棉:免惊吊席梅想勉面 3531 | 夸:快营跨誉查 3532 | 簿:薄然部不筐簧 3533 | 滴:谙低摘痫潘地清第嘀 3534 | 痫:访疽搞痢瘤痛滴澳 3535 | 禹:鱼雨渔寓偶离 3536 | 桂:龟鬼柜跪挂瑰贵杆 3537 | 沣:泽风洋 3538 | 莎:沙步山珊傻判 3539 | 傻:莎 3540 | 腾:轩疼滕 3541 | 疼:腾 3542 | 妍:沿艳岩嫣燕颜言验 3543 | 恩:安慰蒽删圈 3544 | 珠:味逐猪住琦朱 3545 | 宾:宣必冰并滨兵宜寅宗 3546 | 皱:绉 3547 | 绉:皱 3548 | 砍:坎看 3549 | 汹:凶 3550 | 凶:汹胸熊函 3551 | 喒:咱 3552 | 钽:坦曼 3553 | 楝:抹球 3554 | 旭:许冠序迅讯续绪徐煦 3555 | 瘩:大瘠达番 3556 | 晰:皙瞄细撕 3557 | 燥:造躁爆 3558 | 眶:里 3559 | 滨:膑演宾冰并彬病兵斌 3560 | 蟹:瞎璧噩谢 3561 | 侪:挤倍济 3562 | 腮:腭既 3563 | 玑:巩 3564 | 丕:述 3565 | 浴:裕预漕域与欲狱谷 3566 | 剐:刮管前副刷观 3567 | 弗:扶福夫服弟佛伏 3568 | 钖:锡汤 3569 | 骥:骤骠蹊礁弊鲜 3570 | 骠:骥嚎漂膘 3571 | 搂:择楼 3572 | 怔:征 3573 | 亨:很率系宇室京享存旱唁恒哼亭卓 3574 | 钾:假甲 3575 | 扩:拉矿掠软括果库 3576 | 仗:长仅张战丈杖 3577 | 屿:均崛诣 3578 | 咾:老 3579 | 抠:驱 3580 | 耿:歌更哽以 3581 | 瑜:鱼雨宇喻于馀语与育云愈诣 3582 | 藻:演溟蜻洋 3583 | 刹:霎杀插 3584 | 恍:还慌 3585 | 递:遢低地 3586 | 掂:据韩 3587 | 莅:利 3588 | 瓣:碳辨半 3589 | 幽:些优 3590 | 鲅:然 3591 | 疸:疽 3592 | 辣:啦老碳剌辩婶 3593 | 啦:拉辣 3594 | 殒:鱼赖殖 3595 | 亟:警急 3596 | 鲔:钨蜡 3597 | 钨:泻鲔鳄衢 3598 | 拎:另龄临领 3599 | 棘:浈极炭甚恋集及 3600 | 熊:贰能凶兄胸雄 3601 | 娩:跪眠娥 3602 | 拓:柘拖沼陀脱托突土 3603 | 柘:拓 3604 | 髂:锋移 3605 | 甥:沈省 3606 | 懒:愤拦赖 3607 | 葳:崴藏 3608 | 舍:会设涉校社射含 3609 | 腕:婉朊万望玩碗 3610 | 朊:肺腕阮肮抵 3611 | 镛:嘱镉 3612 | 岸:芹安按洋厅厝案序屋津淳 3613 | 礁:骥碎稚睢谯椎 3614 | 拭:甚 3615 | 瘤:痫留擦流晤 3616 | 罂:婴阴 3617 | 雹:氧肴室雷堡 3618 | 弋:六代 3619 | 坤:昆神婶锟 3620 | 猷:燃 3621 | 铮:征锋峥钜睁 3622 | 睫:寮疑鸡艇 3623 | 创:怆床窗装闯 3624 | 氮:大但淡丹 3625 | 叔:淑输俗曙蜀树赤救书姝熟术黍说数仅餐 3626 | 茨:次此渍荧 3627 | 攫:逵擅 3628 | 逵:季攫蓬 3629 | 伫:贮 3630 | 贮:伫 3631 | 鉴:见减戒签荃坚监剑件建健间 3632 | 额:页愤颉颢而娥 3633 | 颉:额颇 3634 | 雳:黑解舞 3635 | 悾:恐 3636 | 霉:没媒梅菖疆美驾 3637 | 蜿:婉 3638 | 婉:往腕跪蜿网琬玩晚 3639 | 淤:豫与瘀 3640 | 蕈:荤 3641 | 摘:捅折责滴 3642 | 仞:刃 3643 | 彪:标飙 3644 | 萍:声乒平谨汗频苹擎坪弃贫 3645 | 莽:薪漭 3646 | 弥:米 3647 | 蒋:讲将莆姜 3648 | 睽:暌揆 3649 | 暌:睽股 3650 | 瞅:嗽秋筹 3651 | 耽:眈 3652 | 眈:肛耽 3653 | 沮:洹拒 3654 | 氯:绿京氨 3655 | 咙:诚 3656 | 鸠:鸿 3657 | 戊:汶汉感漫 3658 | 挖:蛙哇瓦疙 3659 | 甾:巢 3660 | 秧:严秩税 3661 | 曜:睛罪型 3662 | 瞬:顺膦懵 3663 | 膦:瞬 3664 | 跪:跆婉桂娩脆贵 3665 | 晤:喀唔吕嘉瘤铸语眙肿踹帮胖脯 3666 | 赠:赔噜增暗谲憎 3667 | 哇:娃挖瓦 3668 | 枉:柱网汪 3669 | 闸:喇展扎阐 3670 | 萧:重希下潇小销消肃壳校夏 3671 | 硷:脸金睑 3672 | 蒏:茜 3673 | 绣:统袖秀 3674 | 刨:跑 3675 | 峭:峰哨 3676 | 鹳:飘 3677 | 窗:串囡创茴 3678 | 囡:窗 3679 | 沪:户护呼湖互乎院驴胡洲 3680 | 弛:池弘拖施 3681 | 掽:碰 3682 | 弘:弧弛红私 3683 | 葡:疆萄荀 3684 | 嘲:侧炒潮愤查超 3685 | 瑄:喧宣轩萱璇 3686 | 穷:分劳究竻 3687 | 麂:费赛 3688 | 阪:坂吸皈 3689 | 菁:婧菖着菩琶熹苦精 3690 | 怢:快 3691 | 膀:绑板磅 3692 | 併:平 3693 | 瞪:艇 3694 | 姝:叔妹书 3695 | 哈:韩害悍郝好汉给塔 3696 | 庾:演汶换与 3697 | 诶:挨埃 3698 | 塾:数熟 3699 | 陀:达托拓舵 3700 | 诘:洁请 3701 | 韧:奶树刃物帮叨 3702 | 慑:涉威健爆 3703 | 谏:建 3704 | 襄:寰裴像票豪筐匡 3705 | 纭:芸 3706 | 脉:卖味麦 3707 | 岳:狱月悦越 3708 | 蝶:叠娉妞 3709 | 邓:邛郭灯等 3710 | 氟:服氧 3711 | 氧:钪养羊雹宫阳氢氟样 3712 | 蜚:茧塞贾 3713 | 谙:按滴请 3714 | 掀:线仙纤先献 3715 | 焖:绑烟们 3716 | 锯:据句拒具 3717 | 吱:质玻 3718 | 讽:诚粉冯 3719 | 隻:直 3720 | 岂:其起启 3721 | 壅:蕴霆墅帘 3722 | 伉:杭佤抗 3723 | 骊:输理幅疆李躏离锂 3724 | 甯:宁 3725 | 蕉:较芹洋家熹交 3726 | 酋:奠酉首尊省 3727 | 赝:蜃膺 3728 | 盈:音引赢营颖应莹阴 3729 | 袱:伏福负 3730 | 缝:冯奉逞峰凤风分 3731 | 隙:喜系除您细息 3732 | 韾:音 3733 | 剥:玻泊剩剌拨 3734 | 穴:许尔雪学 3735 | 咳:可课壳 3736 | 惺:理 3737 | 泾:静京晶轻径今 3738 | 归:龟们规跨贵 3739 | 匪:费非肥飞 3740 | 役:投义一以 3741 | 幌:黄 3742 | 遑:逞 3743 | 瑚:糊狐珊 3744 | 肴:姚春雹 3745 | 铬:个歌各 3746 | 俗:裕宿速时索叔 3747 | 渗:廖惨深蜃胜 3748 | 腭:鳄腮酵携得嘴 3749 | 丈:仗艾涨占 3750 | 彦:阎艳亚燕严言产延咽 3751 | 葫:忽 3752 | 鄄:垂章露塑事霸墅 3753 | 尴:刚杠乾 3754 | 杠:刚尴干港 3755 | 铰:较校 3756 | 驷:弭恐 3757 | 窨:樱 3758 | 樱:窨引因应婴 3759 | 辽:廖潦运 3760 | 孰:输熟 3761 | 酗:训 3762 | 饥:季轨极基 3763 | 兄:竞兑熊党况 3764 | 凰:厦鏖黄 3765 | 闆:百 3766 | 炖:牌蹲顿扥 3767 | 恣:滋怒 3768 | 殿:电奠鼬店骰激殷 3769 | 铢:铁 3770 | 淖:草掉悼 3771 | 孩:还该海 3772 | 噎:瞳 3773 | 稽:菅禧姬移憎 3774 | 芝:只知泛支荣汁之至直 3775 | 乒:拼平评品频坪兵萍 3776 | 忏:情栏悍倾杆 3777 | 宸:慕浪痕豪蒙 3778 | 胫:径颈静 3779 | 雚:欢 3780 | 畹:访 3781 | 诒:治始 3782 | 竻:穷 3783 | 剂:济紧机伎季计几 3784 | 铆:锚 3785 | 橘:糯懵嗝懦嚼 3786 | 帘:廉奎窜希窃罩壅帝联带 3787 | 朕:镇 3788 | 笙:声生申喹镂身 3789 | 珥:耳球 3790 | 惦:电忧 3791 | 臭:昊逞筹寅莫 3792 | 釆:采 3793 | 胆:单但胪憺阳腱胛 3794 | 瞧:翘睢乔煞飓 3795 | 掮:捐 3796 | 矣:艺条已 3797 | 瓢:飘 3798 | 蜢:锰 3799 | 锰:猛萌蒙蜢 3800 | 複:符 3801 | 箭:建减前见 3802 | 罚:宙犯发返伐靠法 3803 | 膝:细悉胯溪西 3804 | 摸:媒抹携磨操摩埃 3805 | 死:四似思斯 3806 | 籼:私 3807 | 炔:烧 3808 | 缚:缠缴练 3809 | 泷:忧龙我载扰找 3810 | 穹:脊专笃誉弯 3811 | 蠕:瞩暴瘾嘱懦 3812 | 函:涵含凶 3813 | 闲:线娴衔咸闭嫌险 3814 | 渀:奔 3815 | 奔:泵本舜夯渀崩鹭 3816 | 批:劈披拼啤疲品皮辟吡扰砒枇 3817 | 痕:宸很庸合疫肩狼 3818 | 僻:假俯 3819 | 檬:抹盟挥 3820 | 泮:产 3821 | 茁:增拙 3822 | 筏:发乏 3823 | 荠:养 3824 | 颠:店点颇 3825 | 圩:伟 3826 | 址:旨只致治质职支至 3827 | 尺:迟吃炽尽 3828 | 抄:超炒巢 3829 | 臆:瞳膈 3830 | 怳:况 3831 | 跨:亏唔裤趵块夸归款垮快况 3832 | 哦:喔殴欧俄 3833 | 嚼:交角橘 3834 | 泅:钢 3835 | 铐:锗诸 3836 | 锗:错绪铐 3837 | 玺:吸喜睿霆袭习 3838 | 殴:哦欧段毁 3839 | 仆:普扑朴补 3840 | 擢:握捏搓 3841 | 獗:颊蹶 3842 | 扎:炸沾展匝渣扰闸 3843 | 匝:扎 3844 | 垮:款跨宽 3845 | 钗:叙 3846 | 眨:咋贬诈 3847 | 铃:零龄林淋 3848 | 柴:拆茶 3849 | 雍:拥用瘫 3850 | 憩:戏惠思 3851 | 啉:琳 3852 | 糯:诺橘渴 3853 | 膏:告言冒高 3854 | 卧:握我 3855 | 坎:砍吹看 3856 | 搬:半斑摇吧扮办班帮般 3857 | 吭:坑航 3858 | 殊:残然絑书术妹 3859 | 苖:苗 3860 | 毂:致毅榖 3861 | 犀:冒题焊霹屋圃摩 3862 | 籽:子粹凝释字 3863 | 唾:睡埋堡 3864 | 胶:较依焦狡駮交角胺 3865 | 懊:愤噢 3866 | 喉:暇晦猴候 3867 | 禺:舄离与馀 3868 | 帧:贞做收 3869 | 寇:志提 3870 | 飕:飓 3871 | 秆:拦程杆 3872 | 妹:妓媚妖昧梅枚姝每殊美嫁娥 3873 | 缠:织细铲产缚 3874 | 贱:见降件建健 3875 | 宛:网晚姐玩完 3876 | 瓜:褂呱爪 3877 | 呱:孤刮沽瓜 3878 | 埔:檀喃哺墟植填浦瑞墒 3879 | 轼:转 3880 | 囿:围圃 3881 | 斥:吃持 3882 | 殖:殂渲殒眉磕猫硒至值 3883 | 吡:批毗 3884 | 玻:披魏坡剥吱破 3885 | 磕:嗑柯殖 3886 | 挹:扈掴渲捏 3887 | 倦:佬佑卷 3888 | 绞:交较脚家 3889 | 鹅:第鸸 3890 | 鸸:鹅 3891 | 篑:蒉 3892 | 蒉:篑 3893 | 垫:店点电 3894 | 涮:制佩漏谢 3895 | 贻:婚贿遗怡 3896 | 腈:满撮磨痛甫 3897 | 毖:毙 3898 | 毙:毖毕皆烧肆 3899 | 龟:规桂鲑归 3900 | 畔:衅胖 3901 | 胖:畔晤 3902 | 诫:戒诚械戚 3903 | 尿:鸟京屎 3904 | 馔:穿 3905 | 笨:答本笔 3906 | 弊:必骥闭整臂 3907 | 蹼:膛 3908 | 膛:蹼 3909 | 箝:菏箔箍 3910 | 憺:胆 3911 | 澍:海澈嫩 3912 | 刊:到看 3913 | 酿:瞄 3914 | 乔:侨养瞧香桥 3915 | 澧:礼 3916 | 葵:蒐率癸类 3917 | 阙:确趋 3918 | 阐:闸阎茶 3919 | 聋:查龙笼 3920 | 桅:梭 3921 | 侈:移 3922 | 昫:煦 3923 | 沥:游历力丽枥 3924 | 桡:榜挠 3925 | 揩:楷提 3926 | 颧:全煎致 3927 | 藁:京搞英案 3928 | 吩:丰粉盼验 3929 | 罢:把霸吧办八报 3930 | 谀:于 3931 | 彝:一鬓 3932 | 呎:暇眼咽峒 3933 | 媞:替 3934 | 浬:湮 3935 | 唠:劳耀 3936 | 旻:昱 3937 | 珀:旧积功扣 3938 | 揆:捏睽 3939 | 週:周 3940 | 衅:戏畔 3941 | 纂:篡熹 3942 | 篡:纂莫 3943 | 葭:轰票謢蕞 3944 | 撇:碳劈撤撒 3945 | 睇:佛 3946 | 勾:沟约狗构 3947 | 穀:裤 3948 | 拦:栏篮兰懒秆 3949 | 宽:框竞琵矿责款苋垮 3950 | 氾:泛 3951 | 滚:衮棍 3952 | 棍:滚困顾混懦 3953 | 茄:伽旗起赫窃旅 3954 | 棕:凉惊宗 3955 | 阚:康熙看 3956 | 腐:富福夫隋孵扁肤父 3957 | 伽:微偏小恐他仰茄 3958 | 塬:元 3959 | 鼬:油警殿 3960 | 典:乓点电靼 3961 | 允:与运 3962 | 湛:甚怎战占 3963 | 亢:康 3964 | 芷:质只脂 3965 | 璀:翠水 3966 | 丬:片 3967 | 惴:揣 3968 | 娶:曲渠去竖耍 3969 | 侥:德挠绕烧叫 3970 | 芎:茎蔓 3971 | 羿:葬一弈 3972 | 淨:竞 3973 | 挨:换埃诶爱 3974 | 斋:桑焉商备 3975 | 娟:卷捐辑娲婚 3976 | 鸪:帮鹃鹬 3977 | 辟:批擘群 3978 | 梯:题踢悌替贴体涕 3979 | 璋:算张葬 3980 | 岿:靖竭 3981 | 飒:巩飙 3982 | 椎:雅礁惟 3983 | 摀:据 3984 | 燧:隧 3985 | 痊:序 3986 | 钪:氧 3987 | 讪:普谴流上 3988 | 胯:快膝验 3989 | 颚:觐吨 3990 | 残:线参惨浅殊仓餐 3991 | 墒:境埔 3992 | 凯:恺肌蛳开铠楷 3993 | 蛳:恐凯琳 3994 | 堑:警笔誓 3995 | 崆:控 3996 | 郴:热杯 3997 | 龌:愤龃醒 3998 | 恃:侍诗 3999 | 枢:呕柩书 4000 | 氘:氛危 4001 | 潇:晓萧销肖 4002 | 匿:庭虐遭祢暨匡 4003 | 殁:殷股 4004 | 澡:噪操染早 4005 | 煞:厦杀然瞧啥 4006 | 缰:疆将 4007 | 镅:湄 4008 | 吋:时 4009 | 嘱:蠕癖酮据馆糖镛 4010 | 娘:婶念 4011 | 泼:波坡拔拨破 4012 | 慷:康糠候 4013 | 泥:你尼倪呢 4014 | 岭:领灵冷霖玲 4015 | 冷:潼岭 4016 | 峪:密于与宇 4017 | 颍:影营颖 4018 | 寸:守村过存导忖讨 4019 | 雕:骷叼 4020 | 叼:刁雕 4021 | 泯:明麦 4022 | 坭:妮 4023 | 珉:敏名 4024 | 躺:塘淌哨硝 4025 | 淌:唐躺 4026 | 棼:奋 4027 | 姬:稽 4028 | 撩:料缭擦 4029 | 窍:跷弃笃 4030 | 杭:伉航 4031 | 肾:声盛叹瞳圣贤 4032 | 峒:唱响崎喊呎 4033 | 驴:沪织旅 4034 | 牛:件半 4035 | 亡:盲王三忘网晚 4036 | 贿:惠会汇隋荟雌贻 4037 | 肛:眈汇港 4038 | 钎:针 4039 | 纰:披 4040 | 鑑:键 4041 | 羌:芜兑 4042 | 囉:络 4043 | 嗓:噪 4044 | 脐:其济 4045 | 忱:成忧 4046 | 幺:鹞姚要么 4047 | 榭:唰 4048 | 璘:邻 4049 | 採:睬 4050 | 孙:汕苏灿砷 4051 | 槌:搥垂锤 4052 | 骰:躲殿 4053 | 裴:裘珮装赔陪逞斐襄崔配祟 4054 | 匀:运云 4055 | 尘:城成诚承 4056 | 趵:跨 4057 | 琦:琪旗其期珠麒七器 4058 | 潺:摒涯 4059 | 遥:暹遗谣骚摇登姚 4060 | 暹:遥 4061 | 瓦:娃哇职挖万完 4062 | 桢:臻赖 4063 | 珼:贝 4064 | 潦:滞疗辽滢 4065 | 寐:睬 4066 | 廖:渗屡辽聊 4067 | 枷:家 4068 | 禀:京亩 4069 | 嚮:响 4070 | 雌:次贿愤 4071 | 沌:纯 4072 | 薰:点黄堇雇 4073 | 乙:蚁以异已一艺 4074 | 嘎:腰惠晴高 4075 | 贪:滩员谈他她 4076 | 娣:嫩 4077 | 蓠:蒿 4078 | 柩:呕枢惬帼 4079 | 惬:且柩 4080 | 骶:髓 4081 | 殭:僵 4082 | 疙:挖各 4083 | 竺:朱住 4084 | 猴:喉 4085 | 缭:撩 4086 | 蹒:龋 4087 | 膨:蓄曝野暧 4088 | 捧:蓬鹏朋隋挥碰喷痔 4089 | 碘:唤点映 4090 | 颁:顷办般顺 4091 | 麓:蕊路箎睛篇 4092 | 匡:霍框襄匿颤 4093 | 厩:俪既 4094 | 僳:保 4095 | 麵:面 4096 | 愁:丑秋 4097 | 昵:能妮 4098 | 荟:慧贿会 4099 | 氓:斌 4100 | 颓:推飙 4101 | 庐:德疟 4102 | 溟:衷藻累凝 4103 | 曆:厉 4104 | 懑:赭辕 4105 | 赭:懑提 4106 | 踩:才跃财菜睬 4107 | 栾:奕染 4108 | 祢:匿称 4109 | 硚:桥 4110 | 鄞:巢 4111 | 耘:云 4112 | 枺:袜 4113 | 胛:踝胆 4114 | 嗉:惠缘 4115 | 伍:五唔旧佤吴务武 4116 | 畊:耕 4117 | 耕:畊跟根 4118 | 嘶:斯 4119 | 湔:渤蒯 4120 | 噙:漓 4121 | 醌:醯讯瑕醒 4122 | 肤:肢腐复 4123 | 喵:概当横 4124 | 杞:槽精记 4125 | 崛:倔屿岷绝堀 4126 | 倔:决绝崛掘 4127 | 内:芮耐钓 4128 | 瘀:淤 4129 | 帛:吊昂常锦 4130 | 烩:脍 4131 | 邑:互毒 4132 | 岖:呕妪岫区 4133 | 戕:栽戒胧 4134 | 挛:李 4135 | 砌:契切 4136 | 翰:朝瀚喻渝汉 4137 | 脖:铂搏 4138 | 訾:望警督餐 4139 | 锥:追 4140 | 骈:赚 4141 | 赂:路略赔 4142 | 舔:恬 4143 | 婀:烟 4144 | 铡:彻展钏以 4145 | 蛟:较角 4146 | 鲮:零 4147 | 渟:淳 4148 | 滤:溥率旅 4149 | 幄:景累餐 4150 | 捆:掴姻理困 4151 | 砒:础批 4152 | 洼:挂 4153 | 锻:解缎段断俄 4154 | 烹:忘熹 4155 | 锾:援 4156 | 蕞:噩葭 4157 | 煽:搧愿扇煸 4158 | 鹃:鸪鹬 4159 | 阀:发阎乏 4160 | 窃:帘切茄 4161 | 悌:梯忧惕 4162 | 郅:郢 4163 | 狩:将猩首 4164 | 锣:罗 4165 | 帷:惟 4166 | 猎:借猖猪例臼力 4167 | 鄱:翻 4168 | 搓:接擢蹉 4169 | 绾:组维 4170 | 镑:邦痨漕 4171 | 狡:脚胶教 4172 | 黠:虾 4173 | 骏:俊君 4174 | 剃:提 4175 | 魁:亏魉妞 4176 | 魉:魁艇 4177 | 搅:脚加撑 4178 | 嘀:滴 4179 | 馍:谍 4180 | 怼:队对 4181 | 蚀:实史视曲 4182 | 赃:脏 4183 | 洙:床朱株 4184 | 磷:麟凌蔬林 4185 | 雁:瘫研艳燕砚 4186 | 歼:监汗间 4187 | 懿:衣仪一 4188 | 忻:折析 4189 | 兢:就晶精藏 4190 | 裘:袭裴寅 4191 | 粱:梁 4192 | 婺:五无 4193 | 濒:淑溃频涝滢 4194 | 汰:太源钛 4195 | 弮:卷 4196 | 偃:保 4197 | 舫:航 4198 | 啜:掇唔 4199 | 琊:型 4200 | 坟:枚设 4201 | 佤:伍伉执 4202 | 涞:球 4203 | 婿:婚许厝嫣 4204 | 搽:球 4205 | 妊:娃任 4206 | 娠:申 4207 | 黝:黜 4208 | 豌:魏弯 4209 | 榴:六留橙 4210 | 曦:希欣瞌昕溪夕锡 4211 | 肥:废非菲吧把飞匪 4212 | 柒:类 4213 | 歛:贯蔚碳欺 4214 | 颐:益顾癫 4215 | 裸:逻螺罗傈 4216 | 钠:纳做那 4217 | 鹤:鹏赫和贺 4218 | 栓:检 4219 | 荃:鉴 4220 | 奂:焕 4221 | 珮:裴配 4222 | 遴:圭透 4223 | 癸:葵 4224 | 託:托 4225 | 佝:果 4226 | 倪:拟你妮霓呢泥 4227 | 赴:富覆副孵服腹妇付父复负 4228 | 蜷:全 4229 | 俇:狂 4230 | 龠:乐 4231 | 芭:百爸巴苦八 4232 | 筱:晓 4233 | 嵌:欠前 4234 | 熠:意义 4235 | 醉:碎辞罪最 4236 | 唆:梭峻 4237 | 舱:呛仓参 4238 | 狐:瑚护会获活火 4239 | 湸:凉 4240 | 咄:绌 4241 | 蹉:瞒搓 4242 | 瑛:换英因 4243 | 斓:烂 4244 | 獐:猩 4245 | 娲:娟 4246 | 枸:拘 4247 | 缎:锻 4248 | 偑:佩 4249 | 剉:挫 4250 | 赳:纠赶 4251 | 啮:辆 4252 | 啾:纵 4253 | 尪:逛 4254 | 饵:弭尔 4255 | 嚓:擦 4256 | 巍:魏第薇维 4257 | 蜓:妞 4258 | 沱:驼蛇 4259 | 觅:民密 4260 | 珜:杨洋 4261 | 澹:满詹 4262 | 菊:柬举鞠聚第局 4263 | 晙:峻 4264 | 瓩:旺 4265 | 锴:镕 4266 | 憾:愤焊 4267 | 沅:玩元 4268 | 锟:坤 4269 | 腺:限嫌 4270 | 绸:阔缴 4271 | 盏:展 4272 | 恕:怒 4273 | 庞:旁 4274 | 呜:鸡乌 4275 | 疡:阳殇 4276 | 褂:瓜 4277 | 唬:哽 4278 | 掺:参铲 4279 | 呵:珂和河 4280 | 熄:息 4281 | 涡:涛 4282 | 猬:微猖须未 4283 | 帜:只炽惧 4284 | 憨:汉 4285 | 谌:成甚陈 4286 | 硒:晒栖破殖磺 4287 | 勋:鼓 4288 | 痒:瘁肆译 4289 | 臬:阜 4290 | 朽:药 4291 | 卞:便 4292 | 褐:喝操 4293 | 汝:如茹 4294 | 虔:虚前凌潜 4295 | 苋:宽 4296 | 堰:燕甚验 4297 | 巡:寻询旬 4298 | 剋:克 4299 | 锆:锋 4300 | 烊:杨 4301 | 镒:鹫 4302 | 纺:访纫仿鲸房 4303 | 敖:敕表敷激整骜数 4304 | 坩:堤些 4305 | 铣:显 4306 | 荧:萤茨银 4307 | 摊:瘫谈毯胁他揽探她潭抛 4308 | 孵:赴府腐 4309 | 敷:福激勤付敖负 4310 | 椒:娇焦热教揪甲 4311 | 浏:树沙刘 4312 | 吠:肽然默 4313 | 腩:牌佛 4314 | 灶:造遭 4315 | 猝:促 4316 | 龃:龌 4317 | 闵:名 4318 | 篪:缔箴 4319 | 箴:篪篇 4320 | 耸:苜苣 4321 | 掖:粹业 4322 | 蘑:庭模虐 4323 | 藐:蕴蔬缈 4324 | 诼:涿 4325 | 涿:诼 4326 | 琰:研 4327 | 筝:衔镇 4328 | 樏:累 4329 | 纫:动纺幼练 4330 | 嗅:膜秀噢 4331 | 甄:郑真征侦 4332 | 佪:回 4333 | 椿:春 4334 | 痢:痫立 4335 | 丘:邱求秋 4336 | 糗:球 4337 | 崩:蹦奔 4338 | 埠:步 4339 | 菎:芹蓖 4340 | 斧:釜付 4341 | 旯:宪 4342 | 琛:踝深丞 4343 | 嫚:妇娼瞳慢嬉嫂曼 4344 | 跖:距踪 4345 | 僚:愤慎漂 4346 | 鸽:哥各 4347 | 袪:祛 4348 | 邸:郎 4349 | 痪:簧潢 4350 | 姑:孤沽咕菇 4351 | 肽:狱梦脂吠 4352 | 肮:航就朊 4353 | 泗:酒 4354 | 沁:沦 4355 | 锤:槌吹 4356 | 崂:佬耀 4357 | 掼:攒寡 4358 | 攒:掼咱 4359 | 胰:愤衣 4360 | 麒:琦骑 4361 | 梧:糟五吴 4362 | 衢:偕钨 4363 | 盎:盗蛊 4364 | 琢:球捉 4365 | 莹:盖茵盈佳颖萤迎影圭滢 4366 | 樽:摔懵 4367 | 伶:件玲 4368 | 闺:规阁阖罔 4369 | 磬:臀 4370 | 丞:成琛程 4371 | 贼:做诚傲 4372 | 跌:第低迭践 4373 | 锌:梓兴心新 4374 | 螂:协 4375 | 燮:些坠 4376 | 嗖:搜 4377 | 虱:事载戴蠢 4378 | 蛐:取 4379 | 阖:闾闺 4380 | 璟:静 4381 | 谯:礁焦 4382 | 饴:怡 4383 | 蛛:侏柱麟 4384 | 蜡:鲔蜻 4385 | 嬾:嫩 4386 | 苓:零 4387 | 蔬:旖磷茜莱说疏藐 4388 | 蜂:封婷丰逢妤峰 4389 | 浚:梭 4390 | 抚:疣福覆拥付 4391 | 瀚:汉晗翰 4392 | 曳:屹 4393 | 粘:精 4394 | 痱:废 4395 | 缈:藐 4396 | 腓:微啡 4397 | 芋:于育 4398 | 讧:迂 4399 | 梏:谷 4400 | 蚬:岘险 4401 | 钳:键 4402 | 剿:交刽蒯 4403 | 沭:休 4404 | 疹:诊者 4405 | 嬛:环还缳 4406 | 缳:嬛 4407 | 虬:热 4408 | 钙:盖该 4409 | 蝇:渑 4410 | 渑:蝇 4411 | 册:侧策测 4412 | 搁:括阁阎 4413 | 槟:槿喧渲并 4414 | 啼:缔临 4415 | 穗:踵岁 4416 | 谤:榜谨旁滂愣 4417 | 坛:谭滩堂谈 4418 | 驼:沱鸵 4419 | 羇:疆 4420 | 嘞:雷泪类 4421 | 鳌:堇鹜熬番类 4422 | 撬:橇敲 4423 | 泞:津 4424 | 闩:曰 4425 | 否:歪 4426 | 蹂:贤跃 4427 | 瑶:谣姚尧帮蹈窑 4428 | 凛:亮 4429 | 怨:源员愿 4430 | 岱:啃贷 4431 | 啃:可岱 4432 | 癜:电舞 4433 | 铝:屡 4434 | 矜:精经 4435 | 笫:第 4436 | 绶:缓 4437 | 愠:温 4438 | 憧:瞳懂恒 4439 | 檐:禧 4440 | 钌:钉 4441 | 俵:婊 4442 | 缜:绩 4443 | 谩:遢慢 4444 | 薜:薛 4445 | 忖:寸 4446 | 碉:硐碍 4447 | 螫:螯 4448 | 灞:潘捣 4449 | 婓:斐 4450 | 佚:铁伏 4451 | 哌:承 4452 | 卡:桥恰前上翘未掐器 4453 | 踱:镀 4454 | 槎:捷 4455 | 浃:夹 4456 | 樨:择 4457 | 蹿:窜 4458 | 丧:表 4459 | 舜:奔样 4460 | 砬:验 4461 | 舀:咬 4462 | 釉:有 4463 | 箍:箝 4464 | 凿:堂 4465 | 阗:衡 4466 | 戮:录 4467 | 苫:苦菖 4468 | 絑:殊 4469 | 谲:赠 4470 | 倘:错尚德堂徜 4471 | 徜:倘 4472 | 腱:胆 4473 | 株:洙 4474 | 侠:挟 4475 | 谬:妙 4476 | 榻:唱镭塌嗝 4477 | 靳:京劲 4478 | 仟:杆 4479 | 尻:房 4480 | 诌:邹 4481 | 娅:亚 4482 | 煜:短玉 4483 | 缮:善 4484 | 鲫:寄纪觊基即 4485 | 砦:考 4486 | 晟:胜展生圣 4487 | 褵:漓禧 4488 | 襟:睛 4489 | 巫:吾雾吴 4490 | 踞:瞩居疑踢 4491 | 蕲:其薪辩新 4492 | 讼:送 4493 | 爽:谈爆 4494 | 氦:轰 4495 | 镂:竿楼笙 4496 | 祉:祖 4497 | 璨:灿 4498 | 灿:璨孙 4499 | 揽:浪摊 4500 | 娥:娩妹额 4501 | 迳:逢经廷 4502 | 钩:沟构钓 4503 | 嵎:隅 4504 | 斡:朝 4505 | 玳:戴 4506 | 瑁:帽 4507 | 朐:伪测执 4508 | 颂:宋灏顶 4509 | 榷:梭推 4510 | 馗:范 4511 | 囟:囱 4512 | 囱:囟 4513 | 坝:把填 4514 | 岷:峡崛峻 4515 | 卯:琳 4516 | 锹:然 4517 | 釜:斧 4518 | 漩:炫游湾涯 4519 | 汐:将沙新 4520 | 璎:英 4521 | 羲:熙 4522 | 糊:弧瑚蹦胡 4523 | 弈:梨羿一伊 4524 | 蜻:藻蜡 4525 | 兮:希 4526 | 窑:奋姚登瑶 4527 | 鸫:鸦 4528 | 駮:胶 4529 | 瀰:弭 4530 | 匠:降 4531 | 疣:沈抚 4532 | 眯:米迷 4533 | 喆:哲者 4534 | 慓:漂 4535 | 螃:释 4536 | 汾:扮封 4537 | 捥:扰 4538 | 熘:留 4539 | 搀:灌 4540 | 馏:留 4541 | 荔:利立 4542 | 卦:挂 4543 | 憔:携 4544 | 锷:笃 4545 | 怜:联检 4546 | 龈:腿烛 4547 | 巿:市 4548 | 髁:映 4549 | 恿:膘 4550 | 跆:靖跪 4551 | 莤:菖 4552 | 泵:象奔 4553 | 烯:西嘻 4554 | 峦:恋 4555 | 窠:巢 4556 | 冗:沉究 4557 | 拇:掴募 4558 | 耷:大打达 4559 | 矗:处 4560 | 饬:伤 4561 | 媚:魅妹 4562 | 腚:定 4563 | 黏:年 4564 | 诠:权 4565 | 皋:磊蒙高 4566 | 泓:宏红 4567 | 酵:较腭哮酊 4568 | 溺:弱霹 4569 | 拗:熬 4570 | 憋:悠 4571 | 歆:欣鑫 4572 | 鹜:琶鳌 4573 | 掇:啜多辍 4574 | 鞠:菊 4575 | 祺:七琪 4576 | 黟:得一影 4577 | 耦:翻箱 4578 | 嵊:噪 4579 | 缂:客 4580 | 哒:搭打 4581 | 魅:每媚美麸 4582 | 徘:排 4583 | 槿:槟暄 4584 | 蔗:这隋 4585 | 篹:算 4586 | 祡:祟 4587 | 逄:逢 4588 | 噘:觉 4589 | 拄:主住 4590 | 蜒:艇颜 4591 | 戡:截 4592 | 辍:赖掇 4593 | 碾:喂年念 4594 | 镍:镇锦 4595 | 鞍:安俺 4596 | 俺:按鞍掩 4597 | 浣:房 4598 | 珺:军 4599 | 韵:孕运 4600 | 畸:激睛 4601 | 纱:沙杀 4602 | 揉:柔操类 4603 | 钣:把 4604 | 骁:肖小消 4605 | 谄:滔 4606 | 冢:蒙家豪 4607 | 褚:楚 4608 | 瓮:突 4609 | 粳:更驶 4610 | 嫦:撑 4611 | 篷:筐迢 4612 | 冤:远原员 4613 | 凳:瞳冀赏莫 4614 | 楸:邱 4615 | 鲆:再 4616 | 俨:演伦 4617 | 馁:绥 4618 | 埼:崎 4619 | 爪:瓜 4620 | 骷:路雕 4621 | 膈:臆 4622 | 龛:贫 4623 | 衬:称 4624 | 婵:蝉产 4625 | 翩:愤赢偏 4626 | 烛:岫埋龈 4627 | 狒:飞 4628 | 榨:札着炸 4629 | 椁:淳 4630 | 绒:荣 4631 | 偬:种 4632 | 妃:纪 4633 | 碣:喝 4634 | 芊:丰千 4635 | 勺:少 4636 | 氨:氯安 4637 | 鳞:龄 4638 | 徉:洋 4639 | 嬴:银 4640 | 焚:梵 4641 | 沐:牧母怵 4642 | 鲶:稔 4643 | 疝:庙 4644 | 粪:分 4645 | 玷:砧 4646 | 砧:玷 4647 | 涟:游 4648 | 馑:轩金 4649 | 骐:联哄 4650 | 蒗:漠 4651 | 箎:麓 4652 | 锶:锦 4653 | 骝:疆 4654 | 猕:捌 4655 | 捌:猕 4656 | 辫:辩 4657 | 哟:友有优 4658 | 茭:类 4659 | 漾:淡 4660 | 枇:批 4661 | 贰:熊 4662 | 蜥:锡蟀 4663 | 蜴:易 4664 | 嗨:海 4665 | 鹭:路短奔 4666 | 榈:闾 4667 | 翟:戳宅 4668 | 偈:级 4669 | 粗:促糖 4670 | 稠:阔 4671 | 偺:咱 4672 | 拮:结持节 4673 | 蹬:登 4674 | 敕:敖 4675 | 卲:邵 4676 | 钴:辙 4677 | 艋:蒙 4678 | 褒:包 4679 | 闳:红 4680 | 灠:濡 4681 | 枭:案 4682 | 鹞:幺 4683 | 煸:煽 4684 | 宓:蜜 4685 | 杼:抒 4686 | 骜:敖骛瞥 4687 | 髦:密 4688 | 蜀:叔番 4689 | 丸:晚 4690 | 扛:拉康 4691 | 槐:淮瑰 4692 | 怆:创 4693 | 姥:募 4694 | 憷:处 4695 | 涅:强是耀 4696 | 邝:汴 4697 | 捺:那 4698 | 鳢:噜 4699 | 焙:被 4700 | 椥:柳 4701 | 篆:条 4702 | 枳:棋 4703 | 韫:最 4704 | 雏:畜出维 4705 | 娑:鲨 4706 | 砜:枫 4707 | 齍:疆 4708 | 罅:罐 4709 | 诽:俳 4710 | 樟:葆样 4711 | 骆:罗 4712 | 诏:谘语绍 4713 | 眅:版畈 4714 | 黍:叔泰 4715 | 呤:聆 4716 | 栀:振之枝 4717 | 岚:兰 4718 | 挠:侥尧桡 4719 | 沆:沉 4720 | 筠:昀 4721 | 皑:暗 4722 | 阋:闾 4723 | 矩:巨 4724 | 羚:邻林 4725 | 戳:翟初 4726 | 衮:滚 4727 | 螨:嫩 4728 | 垢:购 4729 | 箩:梦 4730 | 蹭:层 4731 | 沫:床 4732 | 岙:香吞 4733 | 菽:萩薮 4734 | 豚:经 4735 | 屯:吞 4736 | 汕:孙 4737 | 嘟:绑都独 4738 | 豇:粒黎 4739 | 砺:利 4740 | 栎:丽 4741 | 舸:歌 4742 | 玖:九 4743 | 柢:低 4744 | 霎:刹 4745 | 哄:洪轰骐 4746 | 楔:锲 4747 | 秸:界蒂 4748 | 羹:更 4749 | 磐:盘 4750 | 沸:拂 4751 | 铠:凯 4752 | 旬:询续讯逊巡 4753 | 碚:磅 4754 | 萩:菽 4755 | 漥:滢 4756 | 淹:梵 4757 | 掸:掉撑 4758 | 懋:猫 4759 | 蜊:力渊里离 4760 | 潞:滩 4761 | 捻:稔 4762 | 鳍:其旗堵 4763 | 诋:坻 4764 | 滁:出 4765 | 妪:岖 4766 | 拰:您 4767 | 酚:盼 4768 | 翅:赤 4769 | 搥:槌 4770 | 鬃:总 4771 | 嚅:如 4772 | 骛:骜 4773 | 慨:既 4774 | 聿:当洋 4775 | 钞:超 4776 | 耆:嗜 4777 | 鬣:熹 4778 | 晾:梁亮 4779 | 胤:一 4780 | 恺:凯 4781 | 纣:约 4782 | 陂:被 4783 | 謢:葭 4784 | 饶:绕 4785 | 糠:慷 4786 | 劵:卷 4787 | 靑:青 4788 | 炷:柱 4789 | 倏:愤倾 4790 | 檄:袭 4791 | 鹦:应因拜 4792 | 淼:苗秒 4793 | 檞:懈 4794 | 桁:希 4795 | 钏:铡 4796 | 舵:多陀 4797 | 硅:鬼 4798 | 翊:诩 4799 | 笈:籍 4800 | 苑:院 4801 | 骋:程 4802 | 咒:究轴 4803 | 纛:熹 4804 | 胚:培 4805 | 醯:醌 4806 | 蹲:炖 4807 | 酥:苏 4808 | 扥:炖 4809 | 鸵:妥驼 4810 | 悖:撑 4811 | 殇:疡 4812 | 镙:镶 4813 | 铩:铼 4814 | 铼:铩 4815 | 昶:永 4816 | 啶:定 4817 | 楢:桶 4818 | 吝:林 4819 | 熔:荣 4820 | 屣:屉 4821 | 拚:怡 4822 | 圻:斩 4823 | 侏:蛛 4824 | 蛆:去 4825 | 粽:总 4826 | 夯:奔 4827 | 讦:评汗 4828 | 挝:健 4829 | 爹:多 4830 | 壕:好啧 4831 | 谳:献 4832 | 孑:子 4833 | 溏:渡 4834 | 邃:遐 4835 | 麝:设 4836 | 劭:劫 4837 | 抿:名 4838 | 跄:抢 4839 | 拧:标 4840 | 柑:甜 4841 | 瞥:骜 4842 | 媲:琨 4843 | 琨:媲 4844 | 阱:径 4845 | 獭:该 4846 | 陃:炳 4847 | 镖:标 4848 | 淬:碎 4849 | 筵:宴 4850 | 镭:榻 4851 | 抟:持 4852 | 孱:屋 4853 | 蹩:簧 4854 | 膑:滨 4855 | 卅:萨 4856 | 吟:银 4857 | 坍:他 4858 | 梠:圈 4859 | 嗬:和 4860 | 苄:奎 4861 | 浉:石 4862 | 斟:锚 4863 | 漭:莽 4864 | 冽:例 4865 | 嗦:索缩 4866 | 褫:祸 4867 | 甪:用 4868 | 籓:箐 4869 | 匦:圃 4870 | 呷:虾 4871 | 搧:煽 4872 | 鳟:嘻 4873 | 卬:印 4874 | 鳀:鲲 4875 | 鲲:鳀 4876 | 杈:差 4877 | 潻:漯 4878 | 炊:垂 4879 | 蠹:葬 4880 | 怵:沐 4881 | 嵋:眉 4882 | 巅:癫 4883 | 戌:需 4884 | 碇:淀 4885 | 殂:殖 4886 | 桦:华 4887 | 螈:幅 4888 | 戽:扉 4889 | 扉:戽 4890 | 喙:瞎 4891 | 笠:利 4892 | 骞:琴 4893 | 驯:徐 4894 | 垡:堡 4895 | 徇:得 4896 | 眬:胧 4897 | 晃:寅 4898 | 猾:踝 4899 | 裆:档 4900 | 悴:谘 4901 | 糸:系 4902 | 蟀:蜥 4903 | 崃:睐 4904 | 鬟:景 4905 | 甙:试 4906 | 蚯:秋 4907 | 毯:摊 4908 | 榖:毂 4909 | 颞:颢 4910 | 刽:剿 4911 | 馥:付 4912 | 镁:美 4913 | 铛:销 4914 | 枥:沥 4915 | 鼐:熹 4916 | 噌:唱 4917 | 炕:抗 4918 | 绽:站 4919 | 珑:龙 4920 | 黔:默 4921 | 烬:帽 4922 | 铟:组 4923 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | python -u main.py --config config/bert_phonics_dictionary_strokes.yaml -------------------------------------------------------------------------------- /test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | name="test13" 4 | output_dir=output/$name 5 | checkpoint=$name.pkl 6 | 7 | mkdir -p $output_dir 8 | 9 | python -u main.py --config config/$name.yaml --checkpoint $checkpoint --variables meta.mode=test,output.directory=$output_dir -------------------------------------------------------------------------------- /utils/__pycache__/_global.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekjuruo/LEAD/656994dfaaf20ed18a40b7600e12872122d056d9/utils/__pycache__/_global.cpython-39.pyc -------------------------------------------------------------------------------- /utils/__pycache__/config_parser.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekjuruo/LEAD/656994dfaaf20ed18a40b7600e12872122d056d9/utils/__pycache__/config_parser.cpython-39.pyc -------------------------------------------------------------------------------- /utils/_global.py: -------------------------------------------------------------------------------- 1 | import torch 2 | 3 | class _global: 4 | config = None 5 | config_file = None 6 | device = "cuda:0" if torch.cuda.is_available() else "cpu" 7 | get_class = lambda attr, name: getattr(__import__("{}.{}".format(attr, name), fromlist=["dummy"]), name) 8 | get_instance = lambda attr, _name, *args, **kwargs: getattr(__import__("{}.{}".format(attr, _name), fromlist=["dummy"]), _name)(*args, **kwargs) 9 | temp_vars = {} -------------------------------------------------------------------------------- /utils/config_parser.py: -------------------------------------------------------------------------------- 1 | import yaml 2 | 3 | class Config: 4 | def __init__(self, file): 5 | self.configs = {} 6 | self.file = file 7 | if file is not None: 8 | self.read(file) 9 | 10 | def get(self, *args, default=None): 11 | config = self.configs[self.file] 12 | while 1: 13 | try: 14 | return self._loop_call(config, "__getitem__", args) 15 | except Exception as e1: 16 | try: 17 | fallback = config["meta"]["fallback"] 18 | if fallback not in self.configs: 19 | self.read(fallback) 20 | config = self.configs[fallback] 21 | except Exception as e2: 22 | if default is None: 23 | print(f"KeyError: {args}") 24 | raise e2 25 | return default 26 | 27 | def set(self, *args): 28 | object = self.configs[self.file] 29 | for arg in args[:-2]: 30 | if arg not in object: 31 | object[arg] = {} 32 | object = object[arg] 33 | object[args[-2]] = args[-1] 34 | 35 | def __getitem__(self, item): 36 | return self.get(item) 37 | 38 | def __setitem__(self, key, value): 39 | self.configs[self.file].__setitem__(key, value) 40 | 41 | def _loop_call(self, object, func_name, params_list): 42 | next_object = getattr(object, func_name)(params_list[0]) 43 | return self._loop_call(next_object, func_name, params_list[1:]) if len(params_list) > 1 else next_object 44 | 45 | 46 | def read(self, config_file): 47 | content = open(config_file, "r", encoding="utf-8").read() 48 | self.configs[config_file] = yaml.load(content, yaml.FullLoader) --------------------------------------------------------------------------------