Repository: Wangpeiyi9979/IE-Bert-CNN Branch: master Commit: be8942cac1f9 Files: 33 Total size: 258.6 KB Directory structure: gitextract_hyg6huh5/ ├── .gitattributes ├── README.md ├── analysis_result.ipynb ├── bert-base-chinese/ │ ├── .ipynb_checkpoints/ │ │ └── get_unk_word-checkpoint.ipynb │ └── vocab.txt ├── config.py ├── data/ │ ├── Data.py │ ├── __init__.py │ └── small/ │ ├── json_data/ │ │ ├── .ipynb_checkpoints/ │ │ │ └── tag2id_id2tag-checkpoint.ipynb │ │ ├── id2r.json │ │ ├── id2tag.json │ │ ├── id2type.json │ │ ├── r2id.json │ │ ├── tag2id.json │ │ ├── type2id.json │ │ └── type2types.json │ └── origin_data/ │ ├── all_50_schemas_new │ ├── all_50_schemas_old │ ├── 切词测试.ipynb │ └── 统计实体类别数目.ipynb ├── helpData.py ├── main.py ├── metrics.py ├── models/ │ ├── BERT_CNN_CRF.py │ ├── BERT_MUL_CNN.py │ ├── BasicModule.py │ └── __init__.py ├── modules/ │ ├── Attention层实现方式.pptx │ ├── __init__.py │ ├── attenter.py │ ├── embedder.py │ └── encoder.py └── utils.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ *.ipynb linguist-language=python; ================================================ FILE: README.md ================================================ # 项目目录 ``` |—— models # 存放模型目录 存放网页相关前端配置 |—— modules # 存放自己封装的encoder |—— out |—— bert-base-chinese |—— |—— bert-base-chinese.tar.gz # bert预训练参数 |—— |—— vocab.txt # bert词典库 |—— data # 存放数据 |—— |—— Data.py |—— |—— small #自己合并了实体类型的数据 |—— |——|—— json_data |—— |——|—— npy_data |—— |——|——|——train |—— |——|——|——dev |—— |——|——|——test1 |—— |——|——|——test2 |—— |——|—— origin_data # 存放原始数据 |—— analysis_result.ipynb # 用来分析错误结果 |—— checkpoints # 存放训练模型参数 |—— config.py |—— helpData.py # 数据预处理函数 |—— mian.py # 主函数 |—— metrics.py # 测评函数 |—— README.md ``` # 项目环境(主要环境) - Ubuntu 16.04 - Pytorch 1.x - Python 3.x # 运行方式 - 克隆项目 ``` git clone https://github.com/Wangpeiyi9979/IE-Bert-CNN.git ``` - 准备数据 - 在这里[下载](https://pan.baidu.com/s/1DG1aVcDzbKG3ubkj8Q8nHQ)数据,提取码`59fg`。 - 解压数据,放在`data/small/origin_data/`文件夹下 - 准备Bert预训练模型 - 在这里[下载](https://pan.baidu.com/s/1EGkPB628ewXJhqqgrHBfDw), 提取码`uolz`。将下载后的压缩文件放在`bert-base-chinese`文件夹下 - 在data/small/目录下按项目结构中所示创建所需目录 - 回到主目录,执行 ``` python helpData.py ``` - 开始训练 ``` python main train ``` - 预测 - 将config.py中的`ckpt_path`更改为训练后的模型地址. 执行: ``` python main tofile --case=1 ``` 预测结果存放在`out`文件夹下. - 结果: f1:0.81(线上结果),线下约在0.76的样子。 ================================================ FILE: analysis_result.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Better speed can be achieved with apex installed from https://www.github.com/nvidia/apex.\n" ] } ], "source": [ "import json\n", "golden_path = './data/small/origin_data/dev_data.json'\n", "predict_path = './out/pred_out'\n", "from config import opt\n", "from helpData import load_data\n", "from metrics import classification_report\n", "from pytorch_pretrained_bert import BertTokenizer" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def get_positions(data_list, map_str):\n", " \"\"\"\n", " 返回实体在单词列表中的位置\n", " sample:\n", " >> input: ['球','星','姚','明', ...., ], '姚明'\n", " >> return: (2, 3)\n", " \"\"\"\n", " map_str = map_str.strip().replace(' ', '$')\n", " map_str = tokenizer_n.tokenize(map_str)\n", " map_str = [i.replace('#', '') for i in map_str]\n", " map_str = ''.join(map_str)\n", " data_list = [i.replace('#', '') for i in data_list]\n", " # 如果只由一个词组成\n", " for word in data_list:\n", " if map_str.lower() in word.lower():\n", " start_id = end_id = data_list.index(word)\n", " return start_id, end_id\n", "\n", " start_id = -1\n", " end_id = -1\n", " for idx, word in enumerate(data_list):\n", " if start_id != - 1 and end_id != -1:\n", " return start_id, end_id\n", " if map_str.startswith(word):\n", " start_id = end_id = idx\n", " while end_id+1 < len(data_list) and data_list[end_id+1] in map_str:\n", " if \"\".join(data_list[start_id:end_id+2]) == map_str:\n", " # print(\"\".join(data_list[start_id:end_id+3]))\n", " return start_id, end_id+1\n", " end_id += 1\n", " find_str = \"\"\n", " for idx in range(start_id, end_id+1):\n", " find_str = find_str + data_list[idx]\n", " if find_str != map_str:\n", " pre_extend = (data_list[start_id-1] if start_id > 0 else \"\") + find_str\n", " last_extend = find_str + (data_list[end_id+1] if end_id < len(data_list)-1 else \"\")\n", " pre_last_extend = (data_list[start_id-1] if start_id > 0 else \"\")+ find_str + (data_list[end_id+1] if end_id < len(data_list)-1 else \"\")\n", " if map_str in pre_extend:\n", " start_id -= 1\n", " elif map_str in last_extend:\n", " end_id += 1\n", " elif map_str in pre_last_extend:\n", " start_id -= 1\n", " end_id += 1\n", " else:\n", " start_id = -1\n", " end_id = -1\n", " if start_id != -1 and end_id != -1:\n", " return start_id, end_id\n", " for idx, word in enumerate(data_list[:-1]):\n", " if map_str in (word+data_list[idx+1]):\n", " return idx,idx+1\n", " # print(\"word_list{} map_str {} loss\".format(data_list, map_str))\n", " return start_id, end_id" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def load_data(path):\n", " '''\n", " 加载数据,返回json数组.\n", " '''\n", " data = []\n", " data_lines = open(path, encoding='utf-8').readlines()\n", " for line in data_lines:\n", " data.append(json.loads(line))\n", " return data\n", "predict_data = load_data(predict_path)\n", "golden_data = load_data(golden_path)[:len(predict_data)]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def get_relation_num(datas):\n", " r2num = {}\n", " for data in datas:\n", " spo_lists = data['spo_list']\n", " for spo in spo_lists:\n", " r = spo['predicate']\n", " if not r in r2num.keys():\n", " r2num[r] = 1\n", " else:\n", " r2num[r] += 1\n", " return sorted(r2num.items(), key=lambda d:d[0])\n", " return r2num" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def get_text2spo(datas):\n", " text2spo = {}\n", " for data in datas:\n", " text2spo[data['text']] = data['spo_list']\n", " return text2spo" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def get_right_relaiton_num(golden_data, predict_data):\n", " golden_data = get_text2spo(golden_data)\n", " predict_data = get_text2spo(predict_data)\n", " print(len(golden_data))\n", " rightr2num = {}\n", " for text in golden_data.keys():\n", " true_spos = golden_data[text]\n", " pred_spos = predict_data.get(text, [])\n", " all_true_predict = [predict['predicate'] for predict in true_spos]\n", " for pred in pred_spos:\n", " if pred['predicate'] in all_true_predict:\n", " if not pred['predicate'] in rightr2num.keys():\n", " rightr2num[pred['predicate']] = 1\n", " else:\n", " rightr2num[pred['predicate']] += 1\n", " return sorted(rightr2num.items(), key=lambda d:d[0])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "21629\n" ] } ], "source": [ "right_rnum = get_right_relaiton_num(golden_data, predict_data)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gloden relation num: [('丈夫', 680), ('上映时间', 463), ('专业代码', 3), ('主持人', 208), ('主演', 7411), ('主角', 39), ('人口数量', 45), ('作曲', 1123), ('作者', 4390), ('作词', 1119), ('修业年限', 2), ('出品公司', 851), ('出版社', 2270), ('出生地', 2370), ('出生日期', 2894), ('创始人', 81), ('制片人', 144), ('占地面积', 61), ('号', 197), ('嘉宾', 171), ('国籍', 1654), ('妻子', 680), ('字', 339), ('官方语言', 15), ('导演', 2697), ('总部地点', 310), ('成立日期', 1606), ('所在城市', 77), ('所属专辑', 1287), ('改编自', 71), ('朝代', 419), ('歌手', 3085), ('母亲', 425), ('毕业院校', 1433), ('民族', 1436), ('气候', 102), ('注册资本', 63), ('海拔', 43), ('父亲', 609), ('目', 1271), ('祖籍', 181), ('简称', 138), ('编剧', 866), ('董事长', 50), ('身高', 392), ('连载网站', 1657), ('邮政编码', 4), ('面积', 79), ('首都', 47)] \n", "\n", "predict relation num: [('丈夫', 942), ('上映时间', 378), ('专业代码', 1), ('主持人', 209), ('主演', 9253), ('主角', 30), ('人口数量', 49), ('作曲', 936), ('作者', 4737), ('作词', 1021), ('修业年限', 1), ('出品公司', 966), ('出版社', 2463), ('出生地', 2460), ('出生日期', 3079), ('创始人', 90), ('制片人', 167), ('占地面积', 65), ('号', 260), ('嘉宾', 284), ('国籍', 1783), ('妻子', 940), ('字', 415), ('官方语言', 14), ('导演', 2947), ('总部地点', 204), ('成立日期', 1651), ('所在城市', 81), ('所属专辑', 1396), ('改编自', 134), ('朝代', 479), ('歌手', 3257), ('母亲', 612), ('毕业院校', 1579), ('民族', 1532), ('气候', 103), ('注册资本', 78), ('海拔', 47), ('父亲', 875), ('目', 1137), ('祖籍', 212), ('简称', 127), ('编剧', 830), ('董事长', 58), ('身高', 426), ('连载网站', 1769), ('邮政编码', 4), ('面积', 84), ('首都', 48)] \n", "\n", "predict right num [('丈夫', 745), ('上映时间', 274), ('专业代码', 1), ('主持人', 200), ('主演', 8651), ('主角', 19), ('人口数量', 43), ('作曲', 812), ('作者', 4363), ('作词', 931), ('修业年限', 1), ('出品公司', 755), ('出版社', 2296), ('出生地', 2191), ('出生日期', 2865), ('创始人', 63), ('制片人', 110), ('占地面积', 54), ('号', 195), ('嘉宾', 198), ('国籍', 1258), ('妻子', 740), ('字', 314), ('官方语言', 14), ('导演', 2784), ('总部地点', 157), ('成立日期', 1577), ('所在城市', 70), ('所属专辑', 1262), ('改编自', 120), ('朝代', 403), ('歌手', 2987), ('母亲', 482), ('毕业院校', 1343), ('民族', 1352), ('气候', 101), ('注册资本', 49), ('海拔', 45), ('父亲', 664), ('目', 1137), ('祖籍', 163), ('简称', 112), ('编剧', 697), ('董事长', 41), ('身高', 386), ('连载网站', 1623), ('邮政编码', 4), ('面积', 73), ('首都', 44)]\n" ] } ], "source": [ "golden_rnum = get_relation_num(golden_data)\n", "predict_rnum = get_relation_num(predict_data)\n", "print(\"gloden relation num: {} \\n\".format(golden_rnum))\n", "print(\"predict relation num: {} \\n\".format(predict_rnum))\n", "print(\"predict right num {}\".format(right_rnum))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def get_case_ans(golden_data, predict_data):\n", " predict_data = get_text2spo(predict_data)\n", " golden_data = get_text2spo(golden_data)\n", " case = {}\n", " for text in golden_data.keys():\n", " true_spos = golden_data[text]\n", " for true in true_spos:\n", " true['object_type'], true['subject_type'] = None, None\n", " true['object'], true['subject'] = true['object'].lower(), true['subject'].lower()\n", " \n", " pred_spos = predict_data.get(text, [])\n", " for pred in pred_spos:\n", " pred['object_type'], pred['subject_type'] = None, None\n", " unit = {'right':[], \"loss\":[], 'wrong':[]}\n", " for true in true_spos:\n", " if not true in pred_spos:\n", " unit['loss'].append(true)\n", " if true in pred_spos:\n", " unit['right'].append(true)\n", " for pred in pred_spos:\n", " if not pred in true_spos:\n", " unit['wrong'].append(pred)\n", " if len(unit['loss']) == 0 and len(unit['wrong']) == 0:\n", " continue\n", " case[text] = unit\n", " return case" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "case = get_case_ans(golden_data, predict_data)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "tokenizer_n = BertTokenizer.from_pretrained(opt.bert_vocab_unk, do_lower_case=True)\n", "tokenizer_o = BertTokenizer.from_pretrained(opt.bert_vocab_dir, do_lower_case=True)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "wrong_case = []\n", "for k in case.keys():\n", " c = case[k]\n", " if len(c['loss']) != 0 or len(c['wrong']) != 0:\n", " wrong_case.append((k, c))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('《别让我再见到你》是1999年陈洁仪演唱的一首歌曲,所属专辑是《炫耀》',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '陈洁仪',\n", " 'subject': '别让我再见到你'},\n", " {'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '炫耀',\n", " 'subject': '别让我再见到你'}],\n", " 'loss': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '陈洁仪',\n", " 'subject': '炫耀'}],\n", " 'wrong': []}),\n", " ('长城汽车是长城汽车股份有限公司的简称,长城汽车的前身是长城工业公司,是一家集体所有制企业,成立于1984年,公司总部位于河北省保定市',\n", " {'right': [{'predicate': '成立日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1984年',\n", " 'subject': '长城汽车'}],\n", " 'loss': [{'predicate': '总部地点',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '保定市',\n", " 'subject': '长城汽车'}],\n", " 'wrong': [{'object': '河北省保定市',\n", " 'subject': '长城汽车',\n", " 'predicate': '总部地点',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《节能省地型住宅和公共建筑标准规范汇编(上下)》是2005年中国建筑工业出版社出版的图书,作者是建设部标准定额研究所',\n", " {'right': [],\n", " 'loss': [{'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国建筑工业',\n", " 'subject': '节能省地型住宅和公共建筑标准规范汇编(上下)'},\n", " {'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '建设部标准定额研',\n", " 'subject': '节能省地型住宅和公共建筑标准规范汇编(上下)'}],\n", " 'wrong': [{'object': '中国建筑工业出版社',\n", " 'subject': '节能省地型住宅和公共建筑标准规范汇编(上下)',\n", " 'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '建设部标准定额研究所',\n", " 'subject': '节能省地型住宅和公共建筑标准规范汇编(上下)',\n", " 'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('弗朗西斯科·布鲁,男,1885-04-12出生在马德里(西班牙),场上位置教练',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '马德里',\n", " 'subject': '弗朗西斯科·布鲁'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1885-04-12',\n", " 'subject': '弗朗西斯科·布鲁'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '西班牙',\n", " 'subject': '弗朗西斯科·布鲁',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('元朝开国皇帝、皇后厚待南宋末代皇室的故事,和西晋末年刘聪以“青衣侑酒”、“洗爵张盖”侮辱西晋怀、愍二帝形成很大反差',\n", " {'right': [{'predicate': '朝代',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '西晋',\n", " 'subject': '刘聪'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '南宋',\n", " 'subject': '刘聪',\n", " 'predicate': '朝代',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《妊娠分娩育养》是2009年电脑报电子音像出版社出版的图书,作者是中国早教网专家组',\n", " {'right': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国早教网专家组',\n", " 'subject': '妊娠分娩育养'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '电脑报电子音像出版社',\n", " 'subject': '妊娠分娩育养',\n", " 'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('覃华军,男,1971年6月出生,壮族,籍贯广西河池,出生地广西河池,1999年7月加入中国共产党,1991年7月参加工作,中央党校在职大学学历',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '广西河池',\n", " 'subject': '覃华军'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1971年6月',\n", " 'subject': '覃华军'},\n", " {'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '壮族',\n", " 'subject': '覃华军'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '中国',\n", " 'subject': '覃华军',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('邱型柏同志生于1953年12月,河南新县人,汉族,1969年12月参军,1971年12月加入中国共产党',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '河南新县',\n", " 'subject': '邱型柏'},\n", " {'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国',\n", " 'subject': '邱型柏'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1953年12月',\n", " 'subject': '邱型柏'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '汉族',\n", " 'subject': '邱型柏',\n", " 'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('9气候市中区属中亚热带湿润季风气候区',\n", " {'right': [],\n", " 'loss': [{'predicate': '气候',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中亚热带湿润季风气候',\n", " 'subject': '市中区'}],\n", " 'wrong': [{'object': '亚热带湿润季风气候',\n", " 'subject': '市中区',\n", " 'predicate': '气候',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('白尾鸏太平洋亚种是一种鸏属,鸏科,鹈形目动物,主要分布在西太平洋',\n", " {'right': [],\n", " 'loss': [{'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '鹈形目',\n", " 'subject': '白尾鸏太平洋亚种'}],\n", " 'wrong': [{'object': '鹈形目',\n", " 'subject': '白尾[UNK]太平洋亚种',\n", " 'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('随后在朱丹,何晟铭主演的《爱的妇产科》里扮演怀孕少女邓晓雨在于正版《神雕侠侣》里扮演绝情谷侍女柔儿真正令菅纫姿成名是跟钟汉良,唐嫣主演电视剧《何以笙箫默》,她在戏里扮演单恋哥哥何以琛的何以玫,凭借精湛的演技,她将何以玫两种不同情绪演绎的淋漓尽致,获得万千网友点赞,而她的人气也急速上升',\n", " {'right': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '唐嫣',\n", " 'subject': '何以笙箫默'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '钟汉良',\n", " 'subject': '何以笙箫默'}],\n", " 'loss': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '何晟铭',\n", " 'subject': '爱的妇产科'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '朱丹',\n", " 'subject': '爱的妇产科'}],\n", " 'wrong': [{'object': '朱丹',\n", " 'subject': '爱的',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '朱丹',\n", " 'subject': '神雕侠侣',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '朱丹',\n", " 'subject': '何以笙箫默',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '何晟铭',\n", " 'subject': '爱的',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '何晟铭',\n", " 'subject': '何以笙箫默',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '钟汉良',\n", " 'subject': '爱的',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '钟汉良',\n", " 'subject': '神雕侠侣',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '唐嫣',\n", " 'subject': '爱的',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '唐嫣',\n", " 'subject': '神雕侠侣',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《并行端口技术》是2005年国防工业出版社出版的图书,作者是李肇庆、韩涛',\n", " {'right': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '李肇庆',\n", " 'subject': '并行端口技术'},\n", " {'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '国防工业出版社',\n", " 'subject': '并行端口技术'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '韩涛',\n", " 'subject': '并行端口技术',\n", " 'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('姓\\u3000名:孙屹 性\\u3000别:男 民\\u3000族:汉族 籍\\u3000贯:山东荷泽 出生年月:1883年 牺牲日期:1913年',\n", " {'right': [{'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汉族',\n", " 'subject': '孙屹'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '山东荷泽',\n", " 'subject': '孙屹',\n", " 'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '1883年',\n", " 'subject': '孙屹',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('石勒(274年―333年8月17日),字世龙,初名石勹背,小字匐勒,羯族,上党武乡(今山西榆社)人',\n", " {'right': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '274年',\n", " 'subject': '石勒'},\n", " {'predicate': '字',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '世龙',\n", " 'subject': '石勒'},\n", " {'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '羯族',\n", " 'subject': '石勒'},\n", " {'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '上党武乡',\n", " 'subject': '石勒'}],\n", " 'loss': [{'predicate': '字',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '匐勒',\n", " 'subject': '石勒'}],\n", " 'wrong': []}),\n", " ('《人迹和自然》主要收录了赵丽宏1游历祖国山川时的感悟文字',\n", " {'right': [],\n", " 'loss': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '赵丽宏',\n", " 'subject': '人迹和自然'}],\n", " 'wrong': [{'object': '赵丽宏',\n", " 'subject': '人迹和自然',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('该剧由Minnie Driver主演,故事发生在一艘前往北冰洋进行考察的深海潜艇(俄耳甫斯号)上',\n", " {'right': [],\n", " 'loss': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': 'driver',\n", " 'subject': '深海'}],\n", " 'wrong': [{'object': 'minnie',\n", " 'subject': '俄耳甫斯号',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': 'driver',\n", " 'subject': '俄耳甫斯号',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('创作背景六哲与袁惜君合唱的《一半的一半》,讲述了大都市中人们共同困扰的问题, 快节奏的生活中,两个人在一起,都很想知道自己在对方心里的位置是多少',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '六哲',\n", " 'subject': '一半的一半'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '袁惜君',\n", " 'subject': '一半的一半',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《爱情旅程》是阿沁、陈淑秋作词,阿沁作曲,张韶涵演唱的歌曲,收录在张韶涵2006年发行的专辑《潘朵拉》中',\n", " {'right': [{'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '潘朵拉',\n", " 'subject': '爱情旅程'},\n", " {'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '张韶涵',\n", " 'subject': '爱情旅程'},\n", " {'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '阿沁',\n", " 'subject': '爱情旅程'},\n", " {'predicate': '作词',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '陈淑秋',\n", " 'subject': '爱情旅程'}],\n", " 'loss': [{'predicate': '作词',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '阿沁',\n", " 'subject': '爱情旅程'}],\n", " 'wrong': []}),\n", " ('贝纳蒂亚出生于1987年4月17日,司职中后卫,身高1米89,他出身法国著名的克莱枫丹训练营,2010年7月登陆意甲加盟乌迪内斯,效力3年联赛出场80次打进6球,2013年7月他以1350万欧元的转会费加盟罗马',\n", " {'right': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1987年4月17日',\n", " 'subject': '贝纳蒂亚'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '1米89',\n", " 'subject': '贝纳蒂亚',\n", " 'predicate': '身高',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《天无极》是天澹星稀创作的网络小说,发表于起点网',\n", " {'right': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '天澹星稀',\n", " 'subject': '天无极'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '起点网',\n", " 'subject': '天无极',\n", " 'predicate': '连载网站',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('常勇钢,别署赏兰斋主· 1957年生于河北大名中国书法家协会全国第二届草书艺术大展组委会委员中国楹联学会会员河北省美术家协会常务理事',\n", " {'right': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1957年',\n", " 'subject': '常勇钢'},\n", " {'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '河北大名',\n", " 'subject': '常勇钢'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '中国',\n", " 'subject': '常勇钢',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " (\"兰博基尼 \\u3000\\u3000兰博基尼是全球顶级跑车制造商及欧洲奢侈品标志之一,公司坐落于意大利圣亚加塔·波隆尼(Sant'Agata Bolognese),由费鲁吉欧·兰博基尼在1963年创立\",\n", " {'right': [{'predicate': '创始人',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '费鲁吉欧·兰博基尼',\n", " 'subject': '兰博基尼'},\n", " {'predicate': '成立日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1963年',\n", " 'subject': '兰博基尼'}],\n", " 'loss': [{'predicate': '成立日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1963',\n", " 'subject': '兰博基尼'}],\n", " 'wrong': [{'object': '意大利圣亚加塔·',\n", " 'subject': '兰博基尼',\n", " 'predicate': '总部地点',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '意大利圣亚加塔·',\n", " 'subject': '隆尼',\n", " 'predicate': '总部地点',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '隆尼',\n", " 'subject': '兰博基尼',\n", " 'predicate': '总部地点',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('个人简介陆初觉(1890—1945),名志棠,字松生,号初觉,嘉兴人',\n", " {'right': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1890',\n", " 'subject': '陆初觉'},\n", " {'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '嘉兴',\n", " 'subject': '陆初觉'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '松生',\n", " 'subject': '陆初觉',\n", " 'predicate': '字',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('通吃网即原西南食品城网,创立于2009年6月,于2010年3月正式更名为通吃网',\n", " {'right': [],\n", " 'loss': [{'predicate': '成立日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '于2009年6月',\n", " 'subject': '通吃网'}],\n", " 'wrong': [{'object': '2009年6月',\n", " 'subject': '通吃网',\n", " 'predicate': '成立日期',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('2011年8月13日,《变形金刚3》在中国电影市场上映第24天,影片票房突破10亿元关口,成为中国大陆继《阿凡达》之后第二部跨入10亿元俱乐部的进口片',\n", " {'right': [],\n", " 'loss': [{'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '2011年',\n", " 'subject': '变形金刚3'}],\n", " 'wrong': [{'object': '2011年8月13日',\n", " 'subject': '变形金刚3',\n", " 'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('比如《你潇洒我漂亮》,这首歌的原唱是一位马来西亚歌手成凤,不过成凤没有唱红,是韩宝仪把这首歌在大陆唱的爆红,韩宝仪之后大陆歌星还有20多个翻唱版本',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '成凤',\n", " 'subject': '你潇洒我漂亮'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '韩宝仪',\n", " 'subject': '你潇洒我漂亮',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('王新朝喜,原名王岑静,25岁(2013年),女篮队员,身高达到1.89米,2003年赴日本留学,并于2013年8月加入日本籍1,2013年10月9日,在东亚运动会女篮首日比赛中,日本女篮中锋王新朝喜在首节登场,她不是别人,正是出生于天津的原中国籍选手王岑静',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '天津',\n", " 'subject': '王新朝喜'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '1.89米',\n", " 'subject': '王新朝喜',\n", " 'predicate': '身高',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '1.89米',\n", " 'subject': '王岑静',\n", " 'predicate': '身高',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '天津',\n", " 'subject': '王岑静',\n", " 'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '中国',\n", " 'subject': '王新朝喜',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '中国',\n", " 'subject': '王岑静',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('影片《一个购物狂的自白》由P·J·霍根执导影片,根据英国畅销书作家索菲·金塞拉的“购物狂”系列改编而成',\n", " {'right': [{'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': 'p·j·霍根',\n", " 'subject': '一个购物狂的自白'}],\n", " 'loss': [{'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '英国',\n", " 'subject': '金塞拉'}],\n", " 'wrong': []}),\n", " ('Justin Zhou,中文名周城宇,国际珠宝鉴定师,FANCYCD大中华区总经理、品牌合伙人,毕业于英国顶尖大学--伦敦大学政治经济商学院',\n", " {'right': [{'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '伦敦大学',\n", " 'subject': '周城宇'}],\n", " 'loss': [{'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '伦敦大学',\n", " 'subject': 'justin zhou'}],\n", " 'wrong': [{'object': '伦敦大学',\n", " 'subject': 'justin ',\n", " 'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '伦敦大学',\n", " 'subject': 'ou',\n", " 'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('灵希,真名全颖,生日:1月29日,水瓶座,血型:A型,厦门大学经济学学士,上海,从事财务会计工作,2006年开始从事小说创作,写作风格多变,自2010年开始全面创作转型,青春文以《伊甸园》为代表,武侠言情以《绯雨倾城》为代表,民国文以民国军阀三部曲,《倾城之恋》、《玉簟秋》、《芙蓉锦》为代表',\n", " {'right': [{'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '厦门大学',\n", " 'subject': '灵希'}],\n", " 'loss': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '灵希',\n", " 'subject': '玉簟秋'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1月29日',\n", " 'subject': '灵希'},\n", " {'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '灵希',\n", " 'subject': '绯雨倾城'}],\n", " 'wrong': [{'object': '灵希',\n", " 'subject': '绯',\n", " 'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '月29日',\n", " 'subject': '灵希',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('李海,男,1983年毕业于北京航空学院制造工程系航空制造工程专业,获工学学士学位,2002年毕业于中欧国际工商学院,获工商管理硕士学位',\n", " {'right': [{'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '北京航空学院',\n", " 'subject': '李海'}],\n", " 'loss': [{'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中欧国际工商学院',\n", " 'subject': '李海'}],\n", " 'wrong': []}),\n", " ('《北平无战事》改编自刘和平同名小说,该剧由孔笙、李雪导演,刘和平编剧,刘烨、陈宝国等人主演',\n", " {'right': [{'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '李雪',\n", " 'subject': '北平无战事'},\n", " {'predicate': '编剧',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '刘和平',\n", " 'subject': '北平无战事'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '刘烨',\n", " 'subject': '北平无战事'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '陈宝国',\n", " 'subject': '北平无战事'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '孔笙',\n", " 'subject': '北平无战事',\n", " 'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('武汉中人检测技术有限公司是2013年成立的一家环境检测公司,公司位于湖北武汉市彭刘杨路天合大厦6楼',\n", " {'right': [{'predicate': '成立日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '2013年',\n", " 'subject': '武汉中人检测技术有限公司'}],\n", " 'loss': [{'predicate': '总部地点',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '武汉',\n", " 'subject': '武汉中人检测技术有限公司'}],\n", " 'wrong': []}),\n", " ('人物生平黄松(1887~1982年),女,字渔仙,闺名安治,婚后从夫姓黎,署名黎黄松,晚年自号温陵老人,泉州东街元妙观口人,清光绪十三年(1887年)九月生',\n", " {'right': [],\n", " 'loss': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1887年',\n", " 'subject': '黄松'}],\n", " 'wrong': [{'object': '1887',\n", " 'subject': '黄松',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '温陵老人',\n", " 'subject': '黄松',\n", " 'predicate': '号',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '泉',\n", " 'subject': '黄松',\n", " 'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '1887',\n", " 'subject': '黄松',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('丁业现,男,汉族,1960年10月生,山东阳谷人,1990年8月加入中国共产党,1978年1月参加工作,博士研究生学历,高级工程师',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '山东阳谷',\n", " 'subject': '丁业现'},\n", " {'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汉族',\n", " 'subject': '丁业现'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1960年10月',\n", " 'subject': '丁业现'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '中国',\n", " 'subject': '丁业现',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('裂唇鱼(Labroides dimidiatus)又称医生鱼,飘飘,为鲈形目,隆头鱼科,裂唇鱼属一种热带地区近岸珊瑚礁海域生活的鱼类',\n", " {'right': [{'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '鲈形目',\n", " 'subject': '裂唇鱼'}],\n", " 'loss': [{'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '鲈形目',\n", " 'subject': '飘飘'}],\n", " 'wrong': [{'object': '鲈形目',\n", " 'subject': '鱼',\n", " 'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('李湘肥的流油,肚子圆鼓鼓王诗龄要当姐姐了吗,胖成俩个郑爽了',\n", " {'right': [{'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '李湘',\n", " 'subject': '王诗龄'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '李湘',\n", " 'subject': '爽',\n", " 'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '王诗龄',\n", " 'subject': '爽',\n", " 'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '爽',\n", " 'subject': '王诗龄',\n", " 'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('姓 名:邓清 性 别:女民 族:汉族籍 贯:河北大城出生年月:1920年',\n", " {'right': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1920年',\n", " 'subject': '邓清'},\n", " {'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汉族',\n", " 'subject': '邓清'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '河北',\n", " 'subject': '邓清',\n", " 'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '城',\n", " 'subject': '邓清',\n", " 'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('2003年作品赴法国参加“中法文化交流:锦绣江苏——中国工艺美术精品展”,同年在扬州成功举办“方学斌金属工艺展”,',\n", " {'right': [],\n", " 'loss': [{'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国',\n", " 'subject': '方学斌'}],\n", " 'wrong': [{'object': '国',\n", " 'subject': '方学斌',\n", " 'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('赖启卓:英文名Lai Kai Cheuk,中国人,汉族,出生于1977年7月5日中国香港,身高183CM,体重70KG',\n", " {'right': [{'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国',\n", " 'subject': '赖启卓'},\n", " {'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国香港',\n", " 'subject': '赖启卓'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1977年7月5日',\n", " 'subject': '赖启卓'},\n", " {'predicate': '身高',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '183cm',\n", " 'subject': '赖启卓'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '汉族',\n", " 'subject': '赖启卓',\n", " 'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《新鲁冰花》是由陈坤厚执导,陈至恺、周幼婷与吴浚恺主演的剧情电影',\n", " {'right': [{'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '陈坤厚',\n", " 'subject': '新鲁冰花'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '陈至恺',\n", " 'subject': '新鲁冰花',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '周幼婷',\n", " 'subject': '新鲁冰花',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '吴浚恺',\n", " 'subject': '新鲁冰花',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('履历杨栋,男,汉族,1972年5月出生,甘肃临洮人, 1995年7月参加工作,党员,1993年10月加入中国共产党,学历本科,现任珠海市斗门区国家税务局党组成员、纪检组长',\n", " {'right': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1972年5月',\n", " 'subject': '杨栋'},\n", " {'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '甘肃临洮',\n", " 'subject': '杨栋'},\n", " {'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汉族',\n", " 'subject': '杨栋'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '中',\n", " 'subject': '杨栋',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('杨丞琳出演了很多青春偶像剧,如《流星花园》、《暧昧》、《恶魔在身边》、《海派甜心》等等',\n", " {'right': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '杨丞琳',\n", " 'subject': '恶魔在身边'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '杨丞琳',\n", " 'subject': '流星花园'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '杨丞琳',\n", " 'subject': '暧昧',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '杨丞琳',\n", " 'subject': '海派甜心',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《谁偷了谁的忧伤》是晋江文学城连载的一本小说,作者是玲小旭',\n", " {'right': [{'predicate': '连载网站',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '晋江文学城',\n", " 'subject': '谁偷了谁的忧伤'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '玲小旭',\n", " 'subject': '谁偷了谁的忧伤',\n", " 'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《你是哪里人》是蒋旭执导的一部爱情喜剧片,由苗皓钧、潘阳、唐文龙、李斯羽、姚笛、张俪等领衔主演,该片于2011年5月27日在中国上映',\n", " {'right': [{'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '2011年5月27日',\n", " 'subject': '你是哪里人'},\n", " {'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '蒋旭',\n", " 'subject': '你是哪里人'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '苗皓钧',\n", " 'subject': '你是哪里人',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '潘阳',\n", " 'subject': '你是哪里人',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '唐文龙',\n", " 'subject': '你是哪里人',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '李斯羽',\n", " 'subject': '你是哪里人',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '姚笛',\n", " 'subject': '你是哪里人',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '张俪',\n", " 'subject': '你是哪里人',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《食物相宜相克2000种》是2006年吉林科技出版社出版的图书,作者是张婷娜',\n", " {'right': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '张婷娜',\n", " 'subject': '食物相宜相克2000种'}],\n", " 'loss': [{'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '吉林科技',\n", " 'subject': '食物相宜相克2000种'}],\n", " 'wrong': [{'object': '吉林科技出版社',\n", " 'subject': '食物相宜相克2000种',\n", " 'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《不独立宣言》是吴克群的音乐作品,周耀辉作曲,收录在《一个人的Tomorrow》专辑中',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '吴克群',\n", " 'subject': '不独立宣言'},\n", " {'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '一个人的tomorrow',\n", " 'subject': '不独立宣言'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '周耀辉',\n", " 'subject': '不独立宣言',\n", " 'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('基本信息威塞克斯伯爵,即爱德华王子(Prince Edward, Earl of Wessex,1964年3月10日- ),全名爱德华·安东尼·理查德·路易斯(Edward Antony Richard Louis),是英国女王伊丽莎白二世的三子',\n", " {'right': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1964年3月10日',\n", " 'subject': '爱德华王子'},\n", " {'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '伊丽莎白二世',\n", " 'subject': '爱德华王子'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '1964年3月10日',\n", " 'subject': '威塞克斯',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '英国',\n", " 'subject': '威塞克斯',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '英国',\n", " 'subject': '爱德华王子',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '英国',\n", " 'subject': '伊丽莎白二世',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '伊丽莎白二世',\n", " 'subject': '威塞克斯',\n", " 'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('列显伦生于香港的欧亚混血家庭,父列佐翰(John Litton),母罗德贞,为罗文锦爵士胞妹',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '香港',\n", " 'subject': '列显伦'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '罗德贞',\n", " 'subject': '列显伦',\n", " 'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('2.帝王业开机帝王业更名为《帝凰业》,已经正式开机了,主演阵容:王儇-章子怡 萧綦-周一围 子澹-黄恺杰(赵雅芝儿子) 宋怀恩-林家川 胡瑶-刘芸 3.今天刷了一遍刘昊然的微博 他真的没有和欧阳娜娜在一起过',\n", " {'right': [],\n", " 'loss': [{'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '赵雅芝',\n", " 'subject': '黄恺杰'}],\n", " 'wrong': [{'object': '章子怡',\n", " 'subject': '帝王业',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '黄',\n", " 'subject': '帝王业',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '赵雅芝',\n", " 'subject': '帝王业',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《大开色界》是由林若宁作词,Jerald(陈哲庐)作曲,刘美君、林海峰演唱的一首歌曲,收录于专辑《大开色界》中,发行于2008年04月11日',\n", " {'right': [{'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': 'jerald',\n", " 'subject': '大开色界'},\n", " {'predicate': '作词',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '林若宁',\n", " 'subject': '大开色界'},\n", " {'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '林海峰',\n", " 'subject': '大开色界'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '刘美君',\n", " 'subject': '大开色界',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《玩泥沙》是香港歌手关智斌演唱的粤语歌曲,收录于关智斌2006年的个人音乐专辑《寻找美惠》当中',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '关智斌',\n", " 'subject': '玩泥沙'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '寻找美惠',\n", " 'subject': '玩泥沙',\n", " 'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('赵锦堂,男,汉族,1965年2月6日出生,黑龙江哈尔滨市阿城区人,1990年9月加入中国共产党,1985年8月参加工作,大学学历,现任阿城经济开发区党工委副书记、管委会主任,主持管委会全面工作',\n", " {'right': [{'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汉族',\n", " 'subject': '赵锦堂'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1965年2月6日',\n", " 'subject': '赵锦堂'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '黑龙江哈尔滨市阿城区',\n", " 'subject': '赵锦堂',\n", " 'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '中国',\n", " 'subject': '赵锦堂',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《阳光总在风雨后》是陈佳明作词作曲,吴庆隆编曲,许美静演唱的一首歌曲,收录在专辑《都是夜归人》中',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '许美静',\n", " 'subject': '阳光总在风雨后'},\n", " {'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '都是夜归人',\n", " 'subject': '阳光总在风雨后'},\n", " {'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '陈佳明',\n", " 'subject': '阳光总在风雨后'}],\n", " 'loss': [{'predicate': '作词',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '陈佳明',\n", " 'subject': '阳光总在风雨后'}],\n", " 'wrong': []}),\n", " ('人物简介崔占玲,女,1968 年 出生',\n", " {'right': [],\n", " 'loss': [{'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1968',\n", " 'subject': '崔占玲'}],\n", " 'wrong': [{'object': '1968 年',\n", " 'subject': '崔占玲',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('中文名:伊雷什·克姆博·埃科科外文名:Ekoko国籍:民主刚果出生地:金沙萨出生日期:1988-01-08身高:178厘米体重:75公斤运动项目:足球所属运动队:雷恩足球俱乐部惯用脚:右脚',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '金沙萨',\n", " 'subject': '埃科科'},\n", " {'predicate': '身高',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '178厘米',\n", " 'subject': '埃科科'},\n", " {'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '民主刚果',\n", " 'subject': '埃科科'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1988-01-08',\n", " 'subject': '埃科科'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '民主刚果',\n", " 'subject': '博·',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '金沙萨',\n", " 'subject': '博·',\n", " 'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '1988-01-08',\n", " 'subject': '博·',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '178厘米',\n", " 'subject': '博·',\n", " 'predicate': '身高',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('(《鲁迅致许广平》)天热不能做事,打牌消遣',\n", " {'right': [{'predicate': '丈夫',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '鲁迅',\n", " 'subject': '许广平'},\n", " {'predicate': '妻子',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '许广平',\n", " 'subject': '鲁迅'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '鲁迅',\n", " 'subject': '致',\n", " 'predicate': '丈夫',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '许广平',\n", " 'subject': '致',\n", " 'predicate': '妻子',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《蓝鸿文自选集》是2007年中国人民大学出版社出版的图书,作者是蓝鸿文',\n", " {'right': [],\n", " 'loss': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '蓝鸿文',\n", " 'subject': '蓝鸿文自选集'},\n", " {'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国人民大学',\n", " 'subject': '蓝鸿文自选集'}],\n", " 'wrong': [{'object': '中国人民大学出版社',\n", " 'subject': '蓝鸿文自选集',\n", " 'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《咱们穿越吧》十位固定成员是沈腾、宋小宝、黄小蕾、海陆、于小彤、金圣柱、张涵予、杨旭文(第一季)、张卫健、杨千嬅(第二季)',\n", " {'right': [{'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '于小彤',\n", " 'subject': '咱们穿越吧'},\n", " {'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '张涵予',\n", " 'subject': '咱们穿越吧'},\n", " {'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '杨旭文',\n", " 'subject': '咱们穿越吧'},\n", " {'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '黄小蕾',\n", " 'subject': '咱们穿越吧'},\n", " {'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '宋小宝',\n", " 'subject': '咱们穿越吧'},\n", " {'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '金圣柱',\n", " 'subject': '咱们穿越吧'},\n", " {'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '海陆',\n", " 'subject': '咱们穿越吧'},\n", " {'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '沈腾',\n", " 'subject': '咱们穿越吧'},\n", " {'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '张卫健',\n", " 'subject': '咱们穿越吧'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '杨千嬅',\n", " 'subject': '咱们穿越吧',\n", " 'predicate': '嘉宾',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《上海滩》是刘德华的音乐作品,黄沾作曲,收录在《【歌单】酷我热门单曲合辑》专辑中',\n", " {'right': [{'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '黄沾',\n", " 'subject': '上海滩'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '刘德华',\n", " 'subject': '上海滩',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '【歌单】酷我热门单曲合辑',\n", " 'subject': '上海滩',\n", " 'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('孙雪兵,男,汉族,1985年3月出生,黑龙江大庆市人,中共党员,2008年7月毕业于广西工学院,本科学历,助理工程师',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '黑龙江大庆市',\n", " 'subject': '孙雪兵'},\n", " {'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汉族',\n", " 'subject': '孙雪兵'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1985年3月',\n", " 'subject': '孙雪兵'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '广西工学院',\n", " 'subject': '孙雪兵',\n", " 'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《余兴节目》是首由张宇作曲演唱,邬裕康作词的歌曲,收录于专辑《不甘寂寞》',\n", " {'right': [{'predicate': '作词',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '邬裕康',\n", " 'subject': '余兴节目'},\n", " {'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '不甘寂寞',\n", " 'subject': '余兴节目'}],\n", " 'loss': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '张宇',\n", " 'subject': '余兴节目'}],\n", " 'wrong': [{'object': '张宇',\n", " 'subject': '余兴节目',\n", " 'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('个人信息李林教授(1954- ),男,出生于江西萍乡,文学硕士',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '江西萍乡',\n", " 'subject': '李林'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '1954',\n", " 'subject': '李林',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('九肚鱼(Harpodon nehereus ),学名龙头鱼,属硬骨鱼纲、灯笼鱼目、狗母鱼科、龙头鱼属',\n", " {'right': [{'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '灯笼鱼目',\n", " 'subject': '九肚鱼'}],\n", " 'loss': [{'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '灯笼鱼目',\n", " 'subject': '龙头鱼'}],\n", " 'wrong': [{'object': '灯笼鱼目',\n", " 'subject': '狗母鱼',\n", " 'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《时候尚早》出自蓝奕邦的专辑《蓝》中的一首歌,发行于2008年7月30日',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '蓝奕邦',\n", " 'subject': '时候尚早'}],\n", " 'loss': [{'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '蓝奕邦',\n", " 'subject': '时候尚早'},\n", " {'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '《蓝》',\n", " 'subject': '时候尚早'}],\n", " 'wrong': [{'object': '蓝',\n", " 'subject': '时候尚早',\n", " 'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('彭佳慧《鹿港小镇》(原唱:罗大佑)这首歌应该算是罗大佑最早的、最深刻的政治歌曲之一',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '罗大佑',\n", " 'subject': '鹿港小镇'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '彭佳慧',\n", " 'subject': '鹿港小镇',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《王晓明心情童话绘本·爱忘事的熊爷爷》是著名童书画家兼作家王晓明先生的作品精选集,收入《蛤蟆的香格里拉》《胖萝卜生病》《河马喝咖啡》《魔法糖》《虎斑馒头》《雪夜蜗牛》《爱忘事的熊爷爷》等作品',\n", " {'right': [],\n", " 'loss': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '王晓明',\n", " 'subject': '王晓明心情童话绘本·爱忘事的熊爷爷'}],\n", " 'wrong': [{'object': '王晓明',\n", " 'subject': '爱忘事的熊爷爷',\n", " 'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('司马昭的哥哥是司马师,是司马家族的长子,一母同胞的兄弟,司马懿有九个儿子,唯独司马师和司马昭能力出众,司马懿是三国时期著名的政治家与军事家,历经曹家几代帝王,司马懿才能出众,又非常谨慎,曹操觉得这是个人才,召见时发现司马懿有“鹰眼狼顾”之像,为此非常顾忌他,但司马懿与曹丕交好,曹丕常为他说话,司马懿从此做事更加勤勉谨慎,曹操才放下心来,这两个儿子性情非常随司马懿,尤其的有大略,善隐忍,但小儿子司马昭还是不够沉稳,司马懿最喜欢的就是大儿子司马师',\n", " {'right': [{'predicate': '朝代',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '三国',\n", " 'subject': '司马昭'}],\n", " 'loss': [{'predicate': '父亲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '司马懿',\n", " 'subject': '司马昭'},\n", " {'predicate': '朝代',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '三国',\n", " 'subject': '曹丕'}],\n", " 'wrong': [{'object': '三国',\n", " 'subject': '司马师',\n", " 'predicate': '朝代',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '三国',\n", " 'subject': '司马懿',\n", " 'predicate': '朝代',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('张韶涵从《寓言》到天《欧若拉》,再到《潘朵拉》,张韶涵在亚洲歌坛独树一帜地开创出属于自己的音乐风格,她具有清亮且童真的声音、甜美且个性的外形,而在她的身上则有一种和她声音共同的特质:顽强、富有张力,充满执着',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '张韶涵',\n", " 'subject': '寓言'},\n", " {'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '张韶涵',\n", " 'subject': '欧若拉'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '张韶涵',\n", " 'subject': '潘朵拉',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《添丁发财》是2009年梁来玲、林美娜、罗温温执导电视剧,由朱厚任主演',\n", " {'right': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '朱厚任',\n", " 'subject': '添丁发财'},\n", " {'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '梁来玲',\n", " 'subject': '添丁发财'},\n", " {'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '林美娜',\n", " 'subject': '添丁发财'},\n", " {'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '罗温温',\n", " 'subject': '添丁发财'}],\n", " 'loss': [{'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '2009年',\n", " 'subject': '添丁发财'}],\n", " 'wrong': []}),\n", " ('五度在除夕登上央视春晚的周杰伦,今年他化身魔术师表演热曲《告白气球》,唱完变成泰迪熊消失在舞台上,获得网友一致好评,收视率近期出炉,根据媒体报导,周董表演的桥段在当晚央视春晚的网络收视中拿下收视冠军,超过王菲和那英合体演唱',\n", " {'right': [],\n", " 'loss': [{'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '周杰伦',\n", " 'subject': '告白气球'}],\n", " 'wrong': [{'object': '周杰伦',\n", " 'subject': '告白气球',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('最强大的佛法——一切皆空:电视剧中康熙皇帝的父亲顺治皇帝由于爱妃离世,悲痛欲绝,转修佛法',\n", " {'right': [],\n", " 'loss': [{'predicate': '父亲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '顺治',\n", " 'subject': '康熙皇帝'}],\n", " 'wrong': [{'object': '顺治皇帝',\n", " 'subject': '康熙皇帝',\n", " 'predicate': '父亲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('我们都很羡慕她和老公这么幸福,两个宝贝也这么漂亮第三位:赵千紫赵千紫,毕业于解放军艺术学院表演系,中国内地女演员',\n", " {'right': [{'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '解放军艺术学院',\n", " 'subject': '赵千紫'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '中国',\n", " 'subject': '赵千紫',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《白白的》是张韶涵的音乐作品,李焯雄作曲,收录在《第5季》专辑中',\n", " {'right': [{'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '第5季',\n", " 'subject': '白白的'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '张韶涵',\n", " 'subject': '白白的',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '李焯雄',\n", " 'subject': '白白的',\n", " 'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('而之后她也拍摄过很多的作品,但是名气也没有钱的大,而且是真正让人印象深刻的,则是在去年年底和张一山和共同出演的《柒个我》,在剧中蔡文静是当之无愧的女一号,也受到了很多的关注,在这部剧的精彩演出中,我们也看到蔡文静,近几年的演技也是非常有进展,虽然说还有些地方被人吐槽傻白甜,但是不得不说,这部翻拍自韩剧的《杀了我,治愈我》的电视剧,让蔡文静走向了新的高度',\n", " {'right': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '蔡文静',\n", " 'subject': '柒个我'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '张一山',\n", " 'subject': '柒个我'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '蔡文静',\n", " 'subject': '杀了我,治愈我',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '杀了我,治愈我',\n", " 'subject': '柒个我',\n", " 'predicate': '改编自',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《零点出击》是香港电视广播有限公司于1990年出品的25集电视连续剧,主要演员有温兆伦、杨宝玲、谢宁、蔡嘉利、胡美仪、周文桦等',\n", " {'right': [{'predicate': '出品公司',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '香港电视广播有限公司',\n", " 'subject': '零点出击'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '杨宝玲',\n", " 'subject': '零点出击'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '温兆伦',\n", " 'subject': '零点出击'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '周文桦',\n", " 'subject': '零点出击'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '蔡嘉利',\n", " 'subject': '零点出击'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '谢宁',\n", " 'subject': '零点出击'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '胡美仪',\n", " 'subject': '零点出击'}],\n", " 'loss': [{'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1990年',\n", " 'subject': '零点出击'}],\n", " 'wrong': []}),\n", " ('中国4大新生代男歌手:第一,周杰伦,凭借歌曲《青花瓷》获得第19届金曲奖最佳作曲人奖',\n", " {'right': [{'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '周杰伦',\n", " 'subject': '青花瓷'}],\n", " 'loss': [{'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '周杰伦',\n", " 'subject': '青花瓷'}],\n", " 'wrong': []}),\n", " ('《竺可桢全集第17卷》是2009年出版的图书,作者是竺可桢',\n", " {'right': [],\n", " 'loss': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '竺可桢',\n", " 'subject': '竺可桢全集第17卷'}],\n", " 'wrong': []}),\n", " ('2.阿甘正传《阿甘正传》是由罗伯特·泽米吉斯执导的电影,由汤姆·汉克斯、罗宾·怀特等人主演,于1994年7月6日在美国上映',\n", " {'right': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汤姆·汉克斯',\n", " 'subject': '阿甘正传'},\n", " {'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '罗伯特·泽米吉斯',\n", " 'subject': '阿甘正传'}],\n", " 'loss': [{'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1994年',\n", " 'subject': '阿甘正传'}],\n", " 'wrong': [{'object': '罗宾·怀特',\n", " 'subject': '阿甘正传',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '1994年7月6日',\n", " 'subject': '阿甘正传',\n", " 'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('幕后花絮2004年12月2日至2005年1月20日CCTV-8每晚10点“每日佳艺”年度特别奉献哥伦比亚电视连续剧《隐秘的激情》',\n", " {'right': [],\n", " 'loss': [{'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '2004年',\n", " 'subject': '隐秘的激情'}],\n", " 'wrong': [{'object': '2004年12月2日',\n", " 'subject': '隐秘的激情',\n", " 'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '哥伦比亚电视',\n", " 'subject': '隐秘的激情',\n", " 'predicate': '出品公司',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《铁翼雄风》,又称《翼》(Wings),是派拉蒙出品的战争爱情电影,由威廉·A·韦尔曼执导,克拉拉·鲍、查尔斯·巴德·罗杰斯等主演,于1927年在美国上映',\n", " {'right': [{'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '威廉·a·韦尔曼',\n", " 'subject': '铁翼雄风'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '查尔斯·巴德·罗杰斯',\n", " 'subject': '铁翼雄风'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '克拉拉·鲍',\n", " 'subject': '铁翼雄风'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '1927年',\n", " 'subject': '铁翼雄风',\n", " 'predicate': '上映时间',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('多鳞霞蝶鱼(Hemitaurichthys polylepis),又称银斑蝶鱼,俗名霞蝶,为辐鳍鱼纲鲈形目蝴蝶鱼科的其中一种',\n", " {'right': [{'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '鲈形目',\n", " 'subject': '银斑蝶鱼'},\n", " {'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '鲈形目',\n", " 'subject': '多鳞霞蝶鱼'}],\n", " 'loss': [{'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '鲈形目',\n", " 'subject': '蝴蝶鱼科'}],\n", " 'wrong': []}),\n", " ('同年,朱丹还与华少、左岩、沈涛共同主持了歌唱慈善互动栏目《娱乐星空》第一季之《爱唱才会赢》11',\n", " {'right': [{'predicate': '主持人',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '朱丹',\n", " 'subject': '爱唱才会赢'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '朱丹',\n", " 'subject': '娱乐星空',\n", " 'predicate': '主持人',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('当晚,古约翰根据加拿大长老会大会的授权,成立了河南省北部的第一个长老会',\n", " {'right': [],\n", " 'loss': [{'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '加拿大',\n", " 'subject': '古约翰'}],\n", " 'wrong': [{'object': '拿大',\n", " 'subject': '古约翰',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('提起香港电影《喜剧之王》《少林足球》《功夫》《长江七号》《美人鱼》,就不得不想起了一个名字:周星驰',\n", " {'right': [],\n", " 'loss': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '周星驰',\n", " 'subject': '少林足球'}],\n", " 'wrong': [{'object': '周星驰',\n", " 'subject': '喜剧之王',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《东镇女巫》是由乔治·米勒执导的恐怖、奇幻、惊悚、喜剧片,杰克·尼科尔森、苏珊·萨兰登参加演出',\n", " {'right': [{'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '乔治·米勒',\n", " 'subject': '东镇女巫'},\n", " {'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '杰克·尼科尔森',\n", " 'subject': '东镇女巫'}],\n", " 'loss': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '苏珊·萨兰登',\n", " 'subject': '东镇女巫'}],\n", " 'wrong': [{'object': '苏珊·',\n", " 'subject': '东镇女巫',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '兰登',\n", " 'subject': '东镇女巫',\n", " 'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('林月如:李忆如自出生失去母亲赵灵儿照料起,由林月如抚养',\n", " {'right': [{'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '赵灵儿',\n", " 'subject': '李忆如'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '林月如',\n", " 'subject': '李忆如',\n", " 'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '赵灵儿',\n", " 'subject': '林月如',\n", " 'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('小型锐额溞(拉丁名:Alonella exigua),属 枝角目 ,盘肠溞科,甲壳纲动物',\n", " {'right': [],\n", " 'loss': [{'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '枝角目',\n", " 'subject': '小型锐额溞'}],\n", " 'wrong': [{'object': '枝角目',\n", " 'subject': '小型锐额[UNK]',\n", " 'predicate': '目',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('美国罗门哈斯公司成立于1909年,总公司位于宾西法尼亚州的费城',\n", " {'right': [{'predicate': '成立日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1909年',\n", " 'subject': '罗门哈斯'}],\n", " 'loss': [{'predicate': '总部地点',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '宾西法尼亚州的费城',\n", " 'subject': '罗门哈斯'}],\n", " 'wrong': []}),\n", " ('刘学勃,男,汉族,1926年生,河北蠡县人,自10岁习武练功,曾拜当地著名拳师张永和为师,北京解放后调入北京工作,又拜著名武术家“花鞭”吴斌楼老师习武练功,习武60余载',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '河北蠡县',\n", " 'subject': '刘学勃'},\n", " {'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汉族',\n", " 'subject': '刘学勃'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1926年',\n", " 'subject': '刘学勃'}],\n", " 'loss': [{'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '汉族',\n", " 'subject': '张永和'}],\n", " 'wrong': []}),\n", " ('简介王赞(号木瓜子)1959年5月生于江苏扬州,1 年中国美术学院中国画系研究生毕业,获硕士学位',\n", " {'right': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '江苏扬州',\n", " 'subject': '王赞'},\n", " {'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国美术学院',\n", " 'subject': '王赞'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1959年5月',\n", " 'subject': '王赞'}],\n", " 'loss': [{'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国',\n", " 'subject': '王赞'}],\n", " 'wrong': []}),\n", " ('基本信息歌曲:情丝风缕 歌手 :杨钰莹 作词:吴颂今 作曲:韩乘光歌曲介绍《情丝几缕》是杨钰莹首张专辑《为爱祝福》里的一首歌',\n", " {'right': [],\n", " 'loss': [{'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '韩乘光',\n", " 'subject': '情丝几缕'},\n", " {'predicate': '作词',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '吴颂今',\n", " 'subject': '情丝几缕'},\n", " {'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '杨钰莹',\n", " 'subject': '情丝几缕'},\n", " {'predicate': '所属专辑',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '为爱祝福',\n", " 'subject': '情丝几缕'}],\n", " 'wrong': [{'object': '杨钰莹',\n", " 'subject': '情丝风缕',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '杨钰莹',\n", " 'subject': '为爱祝福',\n", " 'predicate': '歌手',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '吴颂今',\n", " 'subject': '情丝风缕',\n", " 'predicate': '作词',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '吴颂今',\n", " 'subject': '为爱祝福',\n", " 'predicate': '作词',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '韩乘光',\n", " 'subject': '情丝风缕',\n", " 'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '韩乘光',\n", " 'subject': '为爱祝福',\n", " 'predicate': '作曲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('欧志云 1939年1月生,广东中山人,毕业于华南工学院化机专业本科,高级工程师,曾任中国科学院广州能源研究所副处长,现已退休',\n", " {'right': [{'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '华南工学院',\n", " 'subject': '欧志云'},\n", " {'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '广东中山',\n", " 'subject': '欧志云'},\n", " {'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '1939年1月',\n", " 'subject': '欧志云'}],\n", " 'loss': [{'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国',\n", " 'subject': '欧志云'}],\n", " 'wrong': [{'object': '国',\n", " 'subject': '欧志云',\n", " 'predicate': '民族',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('总监制:陈宏 李培森内容介绍《在片场》的创作班底集结了橙天娱乐、央视数字频道及中国教育电视台等业内资深人士,每期内容框定一部电视剧,或一部电影,或一个相关的影视主题,深度揭秘片场风云',\n", " {'right': [],\n", " 'loss': [{'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国',\n", " 'subject': '陈宏'},\n", " {'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '中国',\n", " 'subject': '李培森'},\n", " {'predicate': '制片人',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '陈宏',\n", " 'subject': '在片场'}],\n", " 'wrong': []}),\n", " ('刘恺威带女儿小糯米吃开年饭 未见杨幂同行据香港媒体报道,女星杨幂和刘恺威结婚约四年,夫妇虽长期分隔异地各自吸金,依然不时合体陪女,早前刘丹曾透露杨幂农历新年会回港过节,但连日新春佳节却未见她踪影',\n", " {'right': [{'predicate': '父亲',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '刘恺威',\n", " 'subject': '小糯米'},\n", " {'predicate': '丈夫',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '刘恺威',\n", " 'subject': '杨幂'},\n", " {'predicate': '妻子',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '杨幂',\n", " 'subject': '刘恺威'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '杨幂',\n", " 'subject': '小糯米',\n", " 'predicate': '母亲',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('吴会期,字行可,号子官,明朝工部郎中',\n", " {'right': [{'predicate': '号',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '子官',\n", " 'subject': '吴会期'},\n", " {'predicate': '字',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '行可',\n", " 'subject': '吴会期'}],\n", " 'loss': [{'predicate': '朝代',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '明朝',\n", " 'subject': '吴会期'}],\n", " 'wrong': []}),\n", " ('王洪九(1906—1979),原名王士范,山东省临沂市沙沟崖村人,汉奸,先后就读于山东省立临沂中学、济南军官学校',\n", " {'right': [],\n", " 'loss': [{'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '山东省临沂市',\n", " 'subject': '王洪九'},\n", " {'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '山东省立临沂中学',\n", " 'subject': '王洪九'},\n", " {'predicate': '毕业院校',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '济南军官学校',\n", " 'subject': '王洪九'}],\n", " 'wrong': [{'object': '1906',\n", " 'subject': '王洪九',\n", " 'predicate': '出生日期',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '山东省临沂市沙沟崖村',\n", " 'subject': '王洪九',\n", " 'predicate': '出生地',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('不过拍《北京爱情故事》之前陈思诚就看过佟丽娅演的戏,他觉得佟丽娅很漂亮,演技不错',\n", " {'right': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '佟丽娅',\n", " 'subject': '北京爱情故事'}],\n", " 'loss': [],\n", " 'wrong': [{'object': '陈思诚',\n", " 'subject': '北京爱情故事',\n", " 'predicate': '导演',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('《苏州商会档案丛编第二辑》是2012年华中师范大学出版社出版的图书,作者是马敏、祖苏、肖芃',\n", " {'right': [],\n", " 'loss': [{'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '肖芃',\n", " 'subject': '苏州商会档案丛编'},\n", " {'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '华中师范大学出版社',\n", " 'subject': '苏州商会档案丛编'},\n", " {'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '马敏',\n", " 'subject': '苏州商会档案丛编'},\n", " {'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '祖苏',\n", " 'subject': '苏州商会档案丛编'}],\n", " 'wrong': [{'object': '华中师范大学出版社',\n", " 'subject': '苏州商会档案丛编第二辑',\n", " 'predicate': '出版社',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '马敏',\n", " 'subject': '苏州商会档案丛编第二辑',\n", " 'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '祖苏',\n", " 'subject': '苏州商会档案丛编第二辑',\n", " 'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '肖芃',\n", " 'subject': '苏州商会档案丛编第二辑',\n", " 'predicate': '作者',\n", " 'object_type': None,\n", " 'subject_type': None}]}),\n", " ('耳边放着由日本作曲梅林茂为2001年的电影《阴阳师》创作的神秘古老的音乐,闭眼就是狂言表演家野村万斋饰演的日本平安时代首屈一指的阴阳师安倍晴明(Abe no Seimei )那副机敏而从容、锐利而洒脱的模样——这是平昌冬奥花样滑冰项目男子单人滑赛场上最绝美的自由滑节目《晴明》(SEI MEI),它也助日本选手羽生结弦(Yuzuru Hanyu)斩获了继索契冬奥金牌之后又一次平昌冬奥花滑男单金牌',\n", " {'right': [],\n", " 'loss': [{'predicate': '主演',\n", " 'object_type': None,\n", " 'subject_type': None,\n", " 'object': '野村万斋',\n", " 'subject': '阴阳师'}],\n", " 'wrong': [{'object': '日本',\n", " 'subject': '梅林茂',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '日本',\n", " 'subject': '倍晴',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None},\n", " {'object': '日本',\n", " 'subject': '羽生结弦',\n", " 'predicate': '国籍',\n", " 'object_type': None,\n", " 'subject_type': None}]})]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wrong_case[-100:]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "text = '《下班抓紧谈恋爱》是万达影视传媒有限公司、上海强胜影视文化传媒有限公司联合出品的的都市情感剧,由万洋执导,朱雨辰、杜海涛、徐黄丽、杨淇等主演1'\n", "text = text.strip().replace(' ', '$')\n", "word_list = tokenizer_n.tokenize(text)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10, 19)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_positions(word_list, '万达影视传媒有限公司')" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['万', '达', '影', '视', '传', '媒', '有', '限', '公', '司']" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "word_list[10:20]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: bert-base-chinese/.ipynb_checkpoints/get_unk_word-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 201, "metadata": {}, "outputs": [], "source": [ "from config import baidu_data_config\n", "from helpDataBaidu import load_data\n", "from pytorch_pretrained_bert import BertTokenizer\n", "import re" ] }, { "cell_type": "code", "execution_count": 202, "metadata": {}, "outputs": [], "source": [ "opt = baidu_data_config" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "train_data = load_data(opt.train_data_dir)\n", "dev_data = load_data(opt.dev_data_dir)" ] }, { "cell_type": "code", "execution_count": 182, "metadata": {}, "outputs": [], "source": [ "tokenizer = BertTokenizer.from_pretrained('./bert-base-chinese/vocab_new.txt', do_lower_case=True)" ] }, { "cell_type": "code", "execution_count": 209, "metadata": {}, "outputs": [], "source": [ "def get_unk_origin_char_and_position(word_list, text):\n", " \"\"\"\n", " 输入: 茶树茶网蝽,Stephanitis chinensis Drake,属半翅目网蝽科冠网椿属的一种昆虫\n", " 输出:\n", " {4:'蝽', ...}表示UNK的位置和其对应字符\n", " \"\"\"\n", " res = {}\n", " # print(word_list)\n", " unk_ps = []\n", " left2word = []\n", " right2word = []\n", " leftnum = []\n", " rightnum = []\n", " for idx, word in enumerate(word_list):\n", " if word == '[UNK]':\n", " unk_ps.append(idx)\n", " leftword = ''\n", " if idx >= 2:\n", " leftword = word_list[idx-2]+word_list[idx-1]\n", " leftword = leftword.replace('[UNK]','.')\n", " leftnum.append(2)\n", " elif idx >= 1:\n", " leftword = word_list[idx-1]\n", " leftword = leftword.replace('[UNK]','.')\n", " leftnum.append(1)\n", " else:\n", " leftnum.append(0)\n", " rightword = ''\n", " if idx <= len(word_list) - 3:\n", " rightword = word_list[idx+1] + word_list[idx+2]\n", " rightword = rightword.replace('[UNK]','.')\n", " rightnum.append(2)\n", " elif idx <= len(word_list) - 2:\n", " rightword = word_list[idx+1]\n", " rightword = rightword.replace('[UNK]','.')\n", " rightnum.append(1)\n", " else:\n", " rightnum.append(0)\n", " left2word.append(leftword)\n", " right2word.append(rightword)\n", " #print(left2word)\n", " # print(right2word)\n", " for idx, p in enumerate(unk_ps):\n", " # print(left2word[idx]+'.'+right2word[idx])\n", " try:\n", " start = re.search(left2word[idx]+'.'+right2word[idx], text.lower(), flags=0).start()\n", " unk_word = text[start+leftnum[idx]]\n", " res[start + leftnum[idx]] = unk_word\n", " except:\n", " pass\n", "# print(left2word)\n", "# print(right2word)\n", "# print(left2word[idx]+'.'+right2word[idx])\n", "# print(text.lower())\n", "# print(word_list)\n", " return res\n", " " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: bert-base-chinese/vocab.txt ================================================ [PAD] [unused1] [unused2] [unused3] [unused4] [unused5] [unused6] [unused7] [unused8] [unused9] [unused10] [unused11] [unused12] [unused13] [unused14] [unused15] [unused16] [unused17] [unused18] [unused19] [unused20] [unused21] [unused22] [unused23] [unused24] [unused25] [unused26] [unused27] [unused28] [unused29] [unused30] [unused31] [unused32] [unused33] [unused34] [unused35] [unused36] [unused37] [unused38] [unused39] [unused40] [unused41] [unused42] [unused43] [unused44] [unused45] [unused46] [unused47] [unused48] [unused49] [unused50] [unused51] [unused52] [unused53] [unused54] [unused55] [unused56] [unused57] [unused58] [unused59] [unused60] [unused61] [unused62] [unused63] [unused64] [unused65] [unused66] [unused67] [unused68] [unused69] [unused70] [unused71] [unused72] [unused73] [unused74] [unused75] [unused76] [unused77] [unused78] [unused79] [unused80] [unused81] [unused82] [unused83] [unused84] [unused85] [unused86] [unused87] [unused88] [unused89] [unused90] [unused91] [unused92] [unused93] [unused94] [unused95] [unused96] [unused97] [unused98] [unused99] [UNK] [CLS] [SEP] [MASK] ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ [ \ ] ^ _ a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ £ ¤ ¥ § © « ® ° ± ² ³ µ · ¹ º » ¼ × ß æ ÷ ø đ ŋ ɔ ə ɡ ʰ ˇ ˈ ˊ ˋ ˍ ː ˙ ˚ ˢ α β γ δ ε η θ ι κ λ μ ν ο π ρ ς σ τ υ φ χ ψ ω а б в г д е ж з и к л м н о п р с т у ф х ц ч ш ы ь я і ا ب ة ت د ر س ع ل م ن ه و ي ۩ ก ง น ม ย ร อ า เ ๑ ་ ღ ᄀ ᄁ ᄂ ᄃ ᄅ ᄆ ᄇ ᄈ ᄉ ᄋ ᄌ ᄎ ᄏ ᄐ ᄑ ᄒ ᅡ ᅢ ᅣ ᅥ ᅦ ᅧ ᅨ ᅩ ᅪ ᅬ ᅭ ᅮ ᅯ ᅲ ᅳ ᅴ ᅵ ᆨ ᆫ ᆯ ᆷ ᆸ ᆺ ᆻ ᆼ ᗜ ᵃ ᵉ ᵍ ᵏ ᵐ ᵒ ᵘ ‖ „ † • ‥ ‧ ‰ ′ ″ ‹ › ※ ‿ ⁄ ⁱ ⁺ ⁿ ₁ ₂ ₃ ₄ € ℃ № ™ ⅰ ⅱ ⅲ ⅳ ⅴ ← ↑ → ↓ ↔ ↗ ↘ ⇒ ∀ − ∕ ∙ √ ∞ ∟ ∠ ∣ ∥ ∩ ∮ ∶ ∼ ∽ ≈ ≒ ≡ ≤ ≥ ≦ ≧ ≪ ≫ ⊙ ⋅ ⋈ ⋯ ⌒ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑴ ⑵ ⑶ ⑷ ⑸ ⒈ ⒉ ⒊ ⒋ ⓒ ⓔ ⓘ ─ ━ │ ┃ ┅ ┆ ┊ ┌ └ ├ ┣ ═ ║ ╚ ╞ ╠ ╭ ╮ ╯ ╰ ╱ ╳ ▂ ▃ ▅ ▇ █ ▉ ▋ ▌ ▍ ▎ ■ □ ▪ ▫ ▬ ▲ △ ▶ ► ▼ ▽ ◆ ◇ ○ ◎ ● ◕ ◠ ◢ ◤ ☀ ★ ☆ ☕ ☞ ☺ ☼ ♀ ♂ ♠ ♡ ♣ ♥ ♦ ♪ ♫ ♬ ✈ ✔ ✕ ✖ ✦ ✨ ✪ ✰ ✿ ❀ ❤ ➜ ➤ ⦿ 、 。 〃 々 〇 〈 〉 《 》 「 」 『 』 【 】 〓 〔 〕 〖 〗 〜 〝 〞 ぁ あ ぃ い う ぇ え お か き く け こ さ し す せ そ た ち っ つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も ゃ や ゅ ゆ ょ よ ら り る れ ろ わ を ん ゜ ゝ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ッ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ワ ヲ ン ヶ ・ ー ヽ ㄅ ㄆ ㄇ ㄉ ㄋ ㄌ ㄍ ㄎ ㄏ ㄒ ㄚ ㄛ ㄞ ㄟ ㄢ ㄤ ㄥ ㄧ ㄨ ㆍ ㈦ ㊣ ㎡ 㗎 一 丁 七 万 丈 三 上 下 不 与 丐 丑 专 且 丕 世 丘 丙 业 丛 东 丝 丞 丟 両 丢 两 严 並 丧 丨 个 丫 中 丰 串 临 丶 丸 丹 为 主 丼 丽 举 丿 乂 乃 久 么 义 之 乌 乍 乎 乏 乐 乒 乓 乔 乖 乗 乘 乙 乜 九 乞 也 习 乡 书 乩 买 乱 乳 乾 亀 亂 了 予 争 事 二 于 亏 云 互 五 井 亘 亙 亚 些 亜 亞 亟 亡 亢 交 亥 亦 产 亨 亩 享 京 亭 亮 亲 亳 亵 人 亿 什 仁 仃 仄 仅 仆 仇 今 介 仍 从 仏 仑 仓 仔 仕 他 仗 付 仙 仝 仞 仟 代 令 以 仨 仪 们 仮 仰 仲 件 价 任 份 仿 企 伉 伊 伍 伎 伏 伐 休 伕 众 优 伙 会 伝 伞 伟 传 伢 伤 伦 伪 伫 伯 估 伴 伶 伸 伺 似 伽 佃 但 佇 佈 位 低 住 佐 佑 体 佔 何 佗 佘 余 佚 佛 作 佝 佞 佟 你 佢 佣 佤 佥 佩 佬 佯 佰 佳 併 佶 佻 佼 使 侃 侄 來 侈 例 侍 侏 侑 侖 侗 供 依 侠 価 侣 侥 侦 侧 侨 侬 侮 侯 侵 侶 侷 便 係 促 俄 俊 俎 俏 俐 俑 俗 俘 俚 保 俞 俟 俠 信 俨 俩 俪 俬 俭 修 俯 俱 俳 俸 俺 俾 倆 倉 個 倌 倍 倏 們 倒 倔 倖 倘 候 倚 倜 借 倡 値 倦 倩 倪 倫 倬 倭 倶 债 值 倾 偃 假 偈 偉 偌 偎 偏 偕 做 停 健 側 偵 偶 偷 偻 偽 偿 傀 傅 傍 傑 傘 備 傚 傢 傣 傥 储 傩 催 傭 傲 傳 債 傷 傻 傾 僅 働 像 僑 僕 僖 僚 僥 僧 僭 僮 僱 僵 價 僻 儀 儂 億 儆 儉 儋 儒 儕 儘 償 儡 優 儲 儷 儼 儿 兀 允 元 兄 充 兆 兇 先 光 克 兌 免 児 兑 兒 兔 兖 党 兜 兢 入 內 全 兩 八 公 六 兮 兰 共 兲 关 兴 兵 其 具 典 兹 养 兼 兽 冀 内 円 冇 冈 冉 冊 册 再 冏 冒 冕 冗 写 军 农 冠 冢 冤 冥 冨 冪 冬 冯 冰 冲 决 况 冶 冷 冻 冼 冽 冾 净 凄 准 凇 凈 凉 凋 凌 凍 减 凑 凛 凜 凝 几 凡 凤 処 凪 凭 凯 凰 凱 凳 凶 凸 凹 出 击 函 凿 刀 刁 刃 分 切 刈 刊 刍 刎 刑 划 列 刘 则 刚 创 初 删 判 別 刨 利 刪 别 刮 到 制 刷 券 刹 刺 刻 刽 剁 剂 剃 則 剉 削 剋 剌 前 剎 剐 剑 剔 剖 剛 剜 剝 剣 剤 剥 剧 剩 剪 副 割 創 剷 剽 剿 劃 劇 劈 劉 劊 劍 劏 劑 力 劝 办 功 加 务 劣 动 助 努 劫 劭 励 劲 劳 労 劵 効 劾 势 勁 勃 勇 勉 勋 勐 勒 動 勖 勘 務 勛 勝 勞 募 勢 勤 勧 勳 勵 勸 勺 勻 勾 勿 匀 包 匆 匈 匍 匐 匕 化 北 匙 匝 匠 匡 匣 匪 匮 匯 匱 匹 区 医 匾 匿 區 十 千 卅 升 午 卉 半 卍 华 协 卑 卒 卓 協 单 卖 南 単 博 卜 卞 卟 占 卡 卢 卤 卦 卧 卫 卮 卯 印 危 即 却 卵 卷 卸 卻 卿 厂 厄 厅 历 厉 压 厌 厕 厘 厚 厝 原 厢 厥 厦 厨 厩 厭 厮 厲 厳 去 县 叁 参 參 又 叉 及 友 双 反 収 发 叔 取 受 变 叙 叛 叟 叠 叡 叢 口 古 句 另 叨 叩 只 叫 召 叭 叮 可 台 叱 史 右 叵 叶 号 司 叹 叻 叼 叽 吁 吃 各 吆 合 吉 吊 吋 同 名 后 吏 吐 向 吒 吓 吕 吖 吗 君 吝 吞 吟 吠 吡 否 吧 吨 吩 含 听 吭 吮 启 吱 吳 吴 吵 吶 吸 吹 吻 吼 吽 吾 呀 呂 呃 呆 呈 告 呋 呎 呐 呓 呕 呗 员 呛 呜 呢 呤 呦 周 呱 呲 味 呵 呷 呸 呻 呼 命 咀 咁 咂 咄 咆 咋 和 咎 咏 咐 咒 咔 咕 咖 咗 咘 咙 咚 咛 咣 咤 咦 咧 咨 咩 咪 咫 咬 咭 咯 咱 咲 咳 咸 咻 咽 咿 哀 品 哂 哄 哆 哇 哈 哉 哋 哌 响 哎 哏 哐 哑 哒 哔 哗 哟 員 哥 哦 哧 哨 哩 哪 哭 哮 哲 哺 哼 哽 唁 唄 唆 唇 唉 唏 唐 唑 唔 唠 唤 唧 唬 售 唯 唰 唱 唳 唷 唸 唾 啃 啄 商 啉 啊 問 啓 啕 啖 啜 啞 啟 啡 啤 啥 啦 啧 啪 啫 啬 啮 啰 啱 啲 啵 啶 啷 啸 啻 啼 啾 喀 喂 喃 善 喆 喇 喉 喊 喋 喎 喏 喔 喘 喙 喚 喜 喝 喟 喧 喪 喫 喬 單 喰 喱 喲 喳 喵 営 喷 喹 喺 喻 喽 嗅 嗆 嗇 嗎 嗑 嗒 嗓 嗔 嗖 嗚 嗜 嗝 嗟 嗡 嗣 嗤 嗦 嗨 嗪 嗬 嗯 嗰 嗲 嗳 嗶 嗷 嗽 嘀 嘅 嘆 嘈 嘉 嘌 嘍 嘎 嘔 嘖 嘗 嘘 嘚 嘛 嘜 嘞 嘟 嘢 嘣 嘤 嘧 嘩 嘭 嘮 嘯 嘰 嘱 嘲 嘴 嘶 嘸 嘹 嘻 嘿 噁 噌 噎 噓 噔 噗 噙 噜 噠 噢 噤 器 噩 噪 噬 噱 噴 噶 噸 噹 噻 噼 嚀 嚇 嚎 嚏 嚐 嚓 嚕 嚟 嚣 嚥 嚨 嚮 嚴 嚷 嚼 囂 囉 囊 囍 囑 囔 囗 囚 四 囝 回 囟 因 囡 团 団 囤 囧 囪 囫 园 困 囱 囲 図 围 囹 固 国 图 囿 圃 圄 圆 圈 國 圍 圏 園 圓 圖 團 圜 土 圣 圧 在 圩 圭 地 圳 场 圻 圾 址 坂 均 坊 坍 坎 坏 坐 坑 块 坚 坛 坝 坞 坟 坠 坡 坤 坦 坨 坪 坯 坳 坵 坷 垂 垃 垄 型 垒 垚 垛 垠 垢 垣 垦 垩 垫 垭 垮 垵 埂 埃 埋 城 埔 埕 埗 域 埠 埤 埵 執 埸 培 基 埼 堀 堂 堃 堅 堆 堇 堑 堕 堙 堡 堤 堪 堯 堰 報 場 堵 堺 堿 塊 塌 塑 塔 塗 塘 塚 塞 塢 塩 填 塬 塭 塵 塾 墀 境 墅 墉 墊 墒 墓 増 墘 墙 墜 增 墟 墨 墩 墮 墳 墻 墾 壁 壅 壆 壇 壊 壑 壓 壕 壘 壞 壟 壢 壤 壩 士 壬 壮 壯 声 売 壳 壶 壹 壺 壽 处 备 変 复 夏 夔 夕 外 夙 多 夜 够 夠 夢 夥 大 天 太 夫 夭 央 夯 失 头 夷 夸 夹 夺 夾 奂 奄 奇 奈 奉 奋 奎 奏 奐 契 奔 奕 奖 套 奘 奚 奠 奢 奥 奧 奪 奬 奮 女 奴 奶 奸 她 好 如 妃 妄 妆 妇 妈 妊 妍 妒 妓 妖 妘 妙 妝 妞 妣 妤 妥 妨 妩 妪 妮 妲 妳 妹 妻 妾 姆 姉 姊 始 姍 姐 姑 姒 姓 委 姗 姚 姜 姝 姣 姥 姦 姨 姪 姫 姬 姹 姻 姿 威 娃 娄 娅 娆 娇 娉 娑 娓 娘 娛 娜 娟 娠 娣 娥 娩 娱 娲 娴 娶 娼 婀 婁 婆 婉 婊 婕 婚 婢 婦 婧 婪 婭 婴 婵 婶 婷 婺 婿 媒 媚 媛 媞 媧 媲 媳 媽 媾 嫁 嫂 嫉 嫌 嫑 嫔 嫖 嫘 嫚 嫡 嫣 嫦 嫩 嫲 嫵 嫻 嬅 嬉 嬌 嬗 嬛 嬢 嬤 嬪 嬰 嬴 嬷 嬸 嬿 孀 孃 子 孑 孔 孕 孖 字 存 孙 孚 孛 孜 孝 孟 孢 季 孤 学 孩 孪 孫 孬 孰 孱 孳 孵 學 孺 孽 孿 宁 它 宅 宇 守 安 宋 完 宏 宓 宕 宗 官 宙 定 宛 宜 宝 实 実 宠 审 客 宣 室 宥 宦 宪 宫 宮 宰 害 宴 宵 家 宸 容 宽 宾 宿 寂 寄 寅 密 寇 富 寐 寒 寓 寛 寝 寞 察 寡 寢 寥 實 寧 寨 審 寫 寬 寮 寰 寵 寶 寸 对 寺 寻 导 対 寿 封 専 射 将 將 專 尉 尊 尋 對 導 小 少 尔 尕 尖 尘 尚 尝 尤 尧 尬 就 尴 尷 尸 尹 尺 尻 尼 尽 尾 尿 局 屁 层 屄 居 屆 屈 屉 届 屋 屌 屍 屎 屏 屐 屑 展 屜 属 屠 屡 屢 層 履 屬 屯 山 屹 屿 岀 岁 岂 岌 岐 岑 岔 岖 岗 岘 岙 岚 岛 岡 岩 岫 岬 岭 岱 岳 岷 岸 峇 峋 峒 峙 峡 峤 峥 峦 峨 峪 峭 峯 峰 峴 島 峻 峽 崁 崂 崆 崇 崎 崑 崔 崖 崗 崙 崛 崧 崩 崭 崴 崽 嵇 嵊 嵋 嵌 嵐 嵘 嵩 嵬 嵯 嶂 嶄 嶇 嶋 嶙 嶺 嶼 嶽 巅 巍 巒 巔 巖 川 州 巡 巢 工 左 巧 巨 巩 巫 差 己 已 巳 巴 巷 巻 巽 巾 巿 币 市 布 帅 帆 师 希 帐 帑 帕 帖 帘 帚 帛 帜 帝 帥 带 帧 師 席 帮 帯 帰 帳 帶 帷 常 帼 帽 幀 幂 幄 幅 幌 幔 幕 幟 幡 幢 幣 幫 干 平 年 并 幸 幹 幺 幻 幼 幽 幾 广 庁 広 庄 庆 庇 床 序 庐 库 应 底 庖 店 庙 庚 府 庞 废 庠 度 座 庫 庭 庵 庶 康 庸 庹 庾 廁 廂 廃 廈 廉 廊 廓 廖 廚 廝 廟 廠 廢 廣 廬 廳 延 廷 建 廿 开 弁 异 弃 弄 弈 弊 弋 式 弑 弒 弓 弔 引 弗 弘 弛 弟 张 弥 弦 弧 弩 弭 弯 弱 張 強 弹 强 弼 弾 彅 彆 彈 彌 彎 归 当 录 彗 彙 彝 形 彤 彥 彦 彧 彩 彪 彫 彬 彭 彰 影 彷 役 彻 彼 彿 往 征 径 待 徇 很 徉 徊 律 後 徐 徑 徒 従 徕 得 徘 徙 徜 從 徠 御 徨 復 循 徬 微 徳 徴 徵 德 徹 徼 徽 心 必 忆 忌 忍 忏 忐 忑 忒 忖 志 忘 忙 応 忠 忡 忤 忧 忪 快 忱 念 忻 忽 忿 怀 态 怂 怅 怆 怎 怏 怒 怔 怕 怖 怙 怜 思 怠 怡 急 怦 性 怨 怪 怯 怵 总 怼 恁 恃 恆 恋 恍 恐 恒 恕 恙 恚 恢 恣 恤 恥 恨 恩 恪 恫 恬 恭 息 恰 恳 恵 恶 恸 恺 恻 恼 恿 悄 悅 悉 悌 悍 悔 悖 悚 悟 悠 患 悦 您 悩 悪 悬 悯 悱 悲 悴 悵 悶 悸 悻 悼 悽 情 惆 惇 惊 惋 惑 惕 惘 惚 惜 惟 惠 惡 惦 惧 惨 惩 惫 惬 惭 惮 惯 惰 惱 想 惴 惶 惹 惺 愁 愆 愈 愉 愍 意 愕 愚 愛 愜 感 愣 愤 愧 愫 愷 愿 慄 慈 態 慌 慎 慑 慕 慘 慚 慟 慢 慣 慧 慨 慫 慮 慰 慳 慵 慶 慷 慾 憂 憊 憋 憎 憐 憑 憔 憚 憤 憧 憨 憩 憫 憬 憲 憶 憾 懂 懇 懈 應 懊 懋 懑 懒 懦 懲 懵 懶 懷 懸 懺 懼 懾 懿 戀 戈 戊 戌 戍 戎 戏 成 我 戒 戕 或 战 戚 戛 戟 戡 戦 截 戬 戮 戰 戲 戳 戴 戶 户 戸 戻 戾 房 所 扁 扇 扈 扉 手 才 扎 扑 扒 打 扔 払 托 扛 扣 扦 执 扩 扪 扫 扬 扭 扮 扯 扰 扱 扳 扶 批 扼 找 承 技 抄 抉 把 抑 抒 抓 投 抖 抗 折 抚 抛 抜 択 抟 抠 抡 抢 护 报 抨 披 抬 抱 抵 抹 押 抽 抿 拂 拄 担 拆 拇 拈 拉 拋 拌 拍 拎 拐 拒 拓 拔 拖 拗 拘 拙 拚 招 拜 拟 拡 拢 拣 拥 拦 拧 拨 择 括 拭 拮 拯 拱 拳 拴 拷 拼 拽 拾 拿 持 挂 指 挈 按 挎 挑 挖 挙 挚 挛 挝 挞 挟 挠 挡 挣 挤 挥 挨 挪 挫 振 挲 挹 挺 挽 挾 捂 捅 捆 捉 捋 捌 捍 捎 捏 捐 捕 捞 损 捡 换 捣 捧 捨 捩 据 捱 捲 捶 捷 捺 捻 掀 掂 掃 掇 授 掉 掌 掏 掐 排 掖 掘 掙 掛 掠 採 探 掣 接 控 推 掩 措 掬 掰 掲 掳 掴 掷 掸 掺 揀 揃 揄 揆 揉 揍 描 提 插 揖 揚 換 握 揣 揩 揪 揭 揮 援 揶 揸 揹 揽 搀 搁 搂 搅 損 搏 搐 搓 搔 搖 搗 搜 搞 搡 搪 搬 搭 搵 搶 携 搽 摀 摁 摄 摆 摇 摈 摊 摒 摔 摘 摞 摟 摧 摩 摯 摳 摸 摹 摺 摻 撂 撃 撅 撇 撈 撐 撑 撒 撓 撕 撚 撞 撤 撥 撩 撫 撬 播 撮 撰 撲 撵 撷 撸 撻 撼 撿 擀 擁 擂 擄 擅 擇 擊 擋 操 擎 擒 擔 擘 據 擞 擠 擡 擢 擦 擬 擰 擱 擲 擴 擷 擺 擼 擾 攀 攏 攒 攔 攘 攙 攜 攝 攞 攢 攣 攤 攥 攪 攫 攬 支 收 攸 改 攻 放 政 故 效 敌 敍 敎 敏 救 敕 敖 敗 敘 教 敛 敝 敞 敢 散 敦 敬 数 敲 整 敵 敷 數 斂 斃 文 斋 斌 斎 斐 斑 斓 斗 料 斛 斜 斟 斡 斤 斥 斧 斩 斫 斬 断 斯 新 斷 方 於 施 旁 旃 旅 旋 旌 旎 族 旖 旗 无 既 日 旦 旧 旨 早 旬 旭 旮 旱 时 旷 旺 旻 昀 昂 昆 昇 昉 昊 昌 明 昏 易 昔 昕 昙 星 映 春 昧 昨 昭 是 昱 昴 昵 昶 昼 显 晁 時 晃 晉 晋 晌 晏 晒 晓 晔 晕 晖 晗 晚 晝 晞 晟 晤 晦 晨 晩 普 景 晰 晴 晶 晷 智 晾 暂 暄 暇 暈 暉 暌 暐 暑 暖 暗 暝 暢 暧 暨 暫 暮 暱 暴 暸 暹 曄 曆 曇 曉 曖 曙 曜 曝 曠 曦 曬 曰 曲 曳 更 書 曹 曼 曾 替 最 會 月 有 朋 服 朐 朔 朕 朗 望 朝 期 朦 朧 木 未 末 本 札 朮 术 朱 朴 朵 机 朽 杀 杂 权 杆 杈 杉 李 杏 材 村 杓 杖 杜 杞 束 杠 条 来 杨 杭 杯 杰 東 杳 杵 杷 杼 松 板 极 构 枇 枉 枋 析 枕 林 枚 果 枝 枢 枣 枪 枫 枭 枯 枰 枱 枳 架 枷 枸 柄 柏 某 柑 柒 染 柔 柘 柚 柜 柞 柠 柢 查 柩 柬 柯 柱 柳 柴 柵 査 柿 栀 栃 栄 栅 标 栈 栉 栋 栎 栏 树 栓 栖 栗 校 栩 株 样 核 根 格 栽 栾 桀 桁 桂 桃 桅 框 案 桉 桌 桎 桐 桑 桓 桔 桜 桠 桡 桢 档 桥 桦 桧 桨 桩 桶 桿 梁 梅 梆 梏 梓 梗 條 梟 梢 梦 梧 梨 梭 梯 械 梳 梵 梶 检 棂 棄 棉 棋 棍 棒 棕 棗 棘 棚 棟 棠 棣 棧 森 棱 棲 棵 棹 棺 椁 椅 椋 植 椎 椒 検 椪 椭 椰 椹 椽 椿 楂 楊 楓 楔 楚 楝 楞 楠 楣 楨 楫 業 楮 極 楷 楸 楹 楼 楽 概 榄 榆 榈 榉 榔 榕 榖 榛 榜 榨 榫 榭 榮 榱 榴 榷 榻 槁 槃 構 槌 槍 槎 槐 槓 様 槛 槟 槤 槭 槲 槳 槻 槽 槿 樁 樂 樊 樑 樓 標 樞 樟 模 樣 権 横 樫 樯 樱 樵 樸 樹 樺 樽 樾 橄 橇 橋 橐 橘 橙 機 橡 橢 橫 橱 橹 橼 檀 檄 檎 檐 檔 檗 檜 檢 檬 檯 檳 檸 檻 櫃 櫚 櫛 櫥 櫸 櫻 欄 權 欒 欖 欠 次 欢 欣 欧 欲 欸 欺 欽 款 歆 歇 歉 歌 歎 歐 歓 歙 歛 歡 止 正 此 步 武 歧 歩 歪 歯 歲 歳 歴 歷 歸 歹 死 歼 殁 殃 殆 殇 殉 殊 残 殒 殓 殖 殘 殞 殡 殤 殭 殯 殲 殴 段 殷 殺 殼 殿 毀 毁 毂 毅 毆 毋 母 毎 每 毒 毓 比 毕 毗 毘 毙 毛 毡 毫 毯 毽 氈 氏 氐 民 氓 气 氖 気 氙 氛 氟 氡 氢 氣 氤 氦 氧 氨 氪 氫 氮 氯 氰 氲 水 氷 永 氹 氾 汀 汁 求 汆 汇 汉 汎 汐 汕 汗 汙 汛 汝 汞 江 池 污 汤 汨 汩 汪 汰 汲 汴 汶 汹 決 汽 汾 沁 沂 沃 沅 沈 沉 沌 沏 沐 沒 沓 沖 沙 沛 沟 没 沢 沣 沥 沦 沧 沪 沫 沭 沮 沱 河 沸 油 治 沼 沽 沾 沿 況 泄 泉 泊 泌 泓 法 泗 泛 泞 泠 泡 波 泣 泥 注 泪 泫 泮 泯 泰 泱 泳 泵 泷 泸 泻 泼 泽 泾 洁 洄 洋 洒 洗 洙 洛 洞 津 洩 洪 洮 洱 洲 洵 洶 洸 洹 活 洼 洽 派 流 浃 浄 浅 浆 浇 浊 测 济 浏 浑 浒 浓 浔 浙 浚 浜 浣 浦 浩 浪 浬 浮 浯 浴 海 浸 涂 涅 涇 消 涉 涌 涎 涓 涔 涕 涙 涛 涝 涞 涟 涠 涡 涣 涤 润 涧 涨 涩 涪 涮 涯 液 涵 涸 涼 涿 淀 淄 淅 淆 淇 淋 淌 淑 淒 淖 淘 淙 淚 淞 淡 淤 淦 淨 淩 淪 淫 淬 淮 深 淳 淵 混 淹 淺 添 淼 清 済 渉 渊 渋 渍 渎 渐 渔 渗 渙 渚 減 渝 渠 渡 渣 渤 渥 渦 温 測 渭 港 渲 渴 游 渺 渾 湃 湄 湊 湍 湖 湘 湛 湟 湧 湫 湮 湯 湳 湾 湿 満 溃 溅 溉 溏 源 準 溜 溝 溟 溢 溥 溧 溪 溫 溯 溱 溴 溶 溺 溼 滁 滂 滄 滅 滇 滋 滌 滑 滓 滔 滕 滙 滚 滝 滞 滟 满 滢 滤 滥 滦 滨 滩 滬 滯 滲 滴 滷 滸 滾 滿 漁 漂 漆 漉 漏 漓 演 漕 漠 漢 漣 漩 漪 漫 漬 漯 漱 漲 漳 漸 漾 漿 潆 潇 潋 潍 潑 潔 潘 潛 潜 潞 潟 潢 潤 潦 潧 潭 潮 潰 潴 潸 潺 潼 澀 澄 澆 澈 澍 澎 澗 澜 澡 澤 澧 澱 澳 澹 激 濁 濂 濃 濑 濒 濕 濘 濛 濟 濠 濡 濤 濫 濬 濮 濯 濱 濺 濾 瀅 瀆 瀉 瀋 瀏 瀑 瀕 瀘 瀚 瀛 瀝 瀞 瀟 瀧 瀨 瀬 瀰 瀾 灌 灏 灑 灘 灝 灞 灣 火 灬 灭 灯 灰 灵 灶 灸 灼 災 灾 灿 炀 炁 炅 炉 炊 炎 炒 炔 炕 炖 炙 炜 炫 炬 炭 炮 炯 炳 炷 炸 点 為 炼 炽 烁 烂 烃 烈 烊 烏 烘 烙 烛 烟 烤 烦 烧 烨 烩 烫 烬 热 烯 烷 烹 烽 焉 焊 焕 焖 焗 焘 焙 焚 焜 無 焦 焯 焰 焱 然 焼 煅 煉 煊 煌 煎 煒 煖 煙 煜 煞 煤 煥 煦 照 煨 煩 煮 煲 煸 煽 熄 熊 熏 熒 熔 熙 熟 熠 熨 熬 熱 熵 熹 熾 燁 燃 燄 燈 燉 燊 燎 燒 燔 燕 燙 燜 營 燥 燦 燧 燭 燮 燴 燻 燼 燿 爆 爍 爐 爛 爪 爬 爭 爰 爱 爲 爵 父 爷 爸 爹 爺 爻 爽 爾 牆 片 版 牌 牍 牒 牙 牛 牝 牟 牠 牡 牢 牦 牧 物 牯 牲 牴 牵 特 牺 牽 犀 犁 犄 犊 犍 犒 犢 犧 犬 犯 状 犷 犸 犹 狀 狂 狄 狈 狎 狐 狒 狗 狙 狞 狠 狡 狩 独 狭 狮 狰 狱 狸 狹 狼 狽 猎 猕 猖 猗 猙 猛 猜 猝 猥 猩 猪 猫 猬 献 猴 猶 猷 猾 猿 獄 獅 獎 獐 獒 獗 獠 獣 獨 獭 獰 獲 獵 獷 獸 獺 獻 獼 獾 玄 率 玉 王 玑 玖 玛 玟 玠 玥 玩 玫 玮 环 现 玲 玳 玷 玺 玻 珀 珂 珅 珈 珉 珊 珍 珏 珐 珑 珙 珞 珠 珣 珥 珩 珪 班 珮 珲 珺 現 球 琅 理 琇 琉 琊 琍 琏 琐 琛 琢 琥 琦 琨 琪 琬 琮 琰 琲 琳 琴 琵 琶 琺 琼 瑀 瑁 瑄 瑋 瑕 瑗 瑙 瑚 瑛 瑜 瑞 瑟 瑠 瑣 瑤 瑩 瑪 瑯 瑰 瑶 瑾 璀 璁 璃 璇 璉 璋 璎 璐 璜 璞 璟 璧 璨 環 璽 璿 瓊 瓏 瓒 瓜 瓢 瓣 瓤 瓦 瓮 瓯 瓴 瓶 瓷 甄 甌 甕 甘 甙 甚 甜 生 產 産 甥 甦 用 甩 甫 甬 甭 甯 田 由 甲 申 电 男 甸 町 画 甾 畀 畅 界 畏 畑 畔 留 畜 畝 畢 略 畦 番 畫 異 畲 畳 畴 當 畸 畹 畿 疆 疇 疊 疏 疑 疔 疖 疗 疙 疚 疝 疟 疡 疣 疤 疥 疫 疮 疯 疱 疲 疳 疵 疸 疹 疼 疽 疾 痂 病 症 痈 痉 痊 痍 痒 痔 痕 痘 痙 痛 痞 痠 痢 痣 痤 痧 痨 痪 痫 痰 痱 痴 痹 痺 痼 痿 瘀 瘁 瘋 瘍 瘓 瘘 瘙 瘟 瘠 瘡 瘢 瘤 瘦 瘧 瘩 瘪 瘫 瘴 瘸 瘾 療 癇 癌 癒 癖 癜 癞 癡 癢 癣 癥 癫 癬 癮 癱 癲 癸 発 登 發 白 百 皂 的 皆 皇 皈 皋 皎 皑 皓 皖 皙 皚 皮 皰 皱 皴 皺 皿 盂 盃 盅 盆 盈 益 盎 盏 盐 监 盒 盔 盖 盗 盘 盛 盜 盞 盟 盡 監 盤 盥 盧 盪 目 盯 盱 盲 直 相 盹 盼 盾 省 眈 眉 看 県 眙 眞 真 眠 眦 眨 眩 眯 眶 眷 眸 眺 眼 眾 着 睁 睇 睏 睐 睑 睛 睜 睞 睡 睢 督 睥 睦 睨 睪 睫 睬 睹 睽 睾 睿 瞄 瞅 瞇 瞋 瞌 瞎 瞑 瞒 瞓 瞞 瞟 瞠 瞥 瞧 瞩 瞪 瞬 瞭 瞰 瞳 瞻 瞼 瞿 矇 矍 矗 矚 矛 矜 矢 矣 知 矩 矫 短 矮 矯 石 矶 矽 矾 矿 码 砂 砌 砍 砒 研 砖 砗 砚 砝 砣 砥 砧 砭 砰 砲 破 砷 砸 砺 砼 砾 础 硅 硐 硒 硕 硝 硫 硬 确 硯 硼 碁 碇 碉 碌 碍 碎 碑 碓 碗 碘 碚 碛 碟 碣 碧 碩 碰 碱 碳 碴 確 碼 碾 磁 磅 磊 磋 磐 磕 磚 磡 磨 磬 磯 磲 磷 磺 礁 礎 礙 礡 礦 礪 礫 礴 示 礼 社 祀 祁 祂 祇 祈 祉 祎 祐 祕 祖 祗 祚 祛 祜 祝 神 祟 祠 祢 祥 票 祭 祯 祷 祸 祺 祿 禀 禁 禄 禅 禍 禎 福 禛 禦 禧 禪 禮 禱 禹 禺 离 禽 禾 禿 秀 私 秃 秆 秉 秋 种 科 秒 秘 租 秣 秤 秦 秧 秩 秭 积 称 秸 移 秽 稀 稅 程 稍 税 稔 稗 稚 稜 稞 稟 稠 稣 種 稱 稲 稳 稷 稹 稻 稼 稽 稿 穀 穂 穆 穌 積 穎 穗 穢 穩 穫 穴 究 穷 穹 空 穿 突 窃 窄 窈 窍 窑 窒 窓 窕 窖 窗 窘 窜 窝 窟 窠 窥 窦 窨 窩 窪 窮 窯 窺 窿 竄 竅 竇 竊 立 竖 站 竜 竞 竟 章 竣 童 竭 端 競 竹 竺 竽 竿 笃 笆 笈 笋 笏 笑 笔 笙 笛 笞 笠 符 笨 第 笹 笺 笼 筆 等 筊 筋 筍 筏 筐 筑 筒 答 策 筛 筝 筠 筱 筲 筵 筷 筹 签 简 箇 箋 箍 箏 箐 箔 箕 算 箝 管 箩 箫 箭 箱 箴 箸 節 篁 範 篆 篇 築 篑 篓 篙 篝 篠 篡 篤 篩 篪 篮 篱 篷 簇 簌 簍 簡 簦 簧 簪 簫 簷 簸 簽 簾 簿 籁 籃 籌 籍 籐 籟 籠 籤 籬 籮 籲 米 类 籼 籽 粄 粉 粑 粒 粕 粗 粘 粟 粤 粥 粧 粪 粮 粱 粲 粳 粵 粹 粼 粽 精 粿 糅 糊 糍 糕 糖 糗 糙 糜 糞 糟 糠 糧 糬 糯 糰 糸 系 糾 紀 紂 約 紅 紉 紊 紋 納 紐 紓 純 紗 紘 紙 級 紛 紜 素 紡 索 紧 紫 紮 累 細 紳 紹 紺 終 絃 組 絆 経 結 絕 絞 絡 絢 給 絨 絮 統 絲 絳 絵 絶 絹 綁 綏 綑 經 継 続 綜 綠 綢 綦 綫 綬 維 綱 網 綴 綵 綸 綺 綻 綽 綾 綿 緊 緋 総 緑 緒 緘 線 緝 緞 締 緣 編 緩 緬 緯 練 緹 緻 縁 縄 縈 縛 縝 縣 縫 縮 縱 縴 縷 總 績 繁 繃 繆 繇 繋 織 繕 繚 繞 繡 繩 繪 繫 繭 繳 繹 繼 繽 纂 續 纍 纏 纓 纔 纖 纜 纠 红 纣 纤 约 级 纨 纪 纫 纬 纭 纯 纰 纱 纲 纳 纵 纶 纷 纸 纹 纺 纽 纾 线 绀 练 组 绅 细 织 终 绊 绍 绎 经 绑 绒 结 绔 绕 绘 给 绚 绛 络 绝 绞 统 绡 绢 绣 绥 绦 继 绩 绪 绫 续 绮 绯 绰 绳 维 绵 绶 绷 绸 绻 综 绽 绾 绿 缀 缄 缅 缆 缇 缈 缉 缎 缓 缔 缕 编 缘 缙 缚 缜 缝 缠 缢 缤 缥 缨 缩 缪 缭 缮 缰 缱 缴 缸 缺 缽 罂 罄 罌 罐 网 罔 罕 罗 罚 罡 罢 罩 罪 置 罰 署 罵 罷 罹 羁 羅 羈 羊 羌 美 羔 羚 羞 羟 羡 羣 群 羥 羧 羨 義 羯 羲 羸 羹 羽 羿 翁 翅 翊 翌 翎 習 翔 翘 翟 翠 翡 翦 翩 翰 翱 翳 翹 翻 翼 耀 老 考 耄 者 耆 耋 而 耍 耐 耒 耕 耗 耘 耙 耦 耨 耳 耶 耷 耸 耻 耽 耿 聂 聆 聊 聋 职 聒 联 聖 聘 聚 聞 聪 聯 聰 聲 聳 聴 聶 職 聽 聾 聿 肃 肄 肅 肆 肇 肉 肋 肌 肏 肓 肖 肘 肚 肛 肝 肠 股 肢 肤 肥 肩 肪 肮 肯 肱 育 肴 肺 肽 肾 肿 胀 胁 胃 胄 胆 背 胍 胎 胖 胚 胛 胜 胝 胞 胡 胤 胥 胧 胫 胭 胯 胰 胱 胳 胴 胶 胸 胺 能 脂 脅 脆 脇 脈 脉 脊 脍 脏 脐 脑 脓 脖 脘 脚 脛 脣 脩 脫 脯 脱 脲 脳 脸 脹 脾 腆 腈 腊 腋 腌 腎 腐 腑 腓 腔 腕 腥 腦 腩 腫 腭 腮 腰 腱 腳 腴 腸 腹 腺 腻 腼 腾 腿 膀 膈 膊 膏 膑 膘 膚 膛 膜 膝 膠 膦 膨 膩 膳 膺 膻 膽 膾 膿 臀 臂 臃 臆 臉 臊 臍 臓 臘 臟 臣 臥 臧 臨 自 臬 臭 至 致 臺 臻 臼 臾 舀 舂 舅 舆 與 興 舉 舊 舌 舍 舎 舐 舒 舔 舖 舗 舛 舜 舞 舟 航 舫 般 舰 舱 舵 舶 舷 舸 船 舺 舾 艇 艋 艘 艙 艦 艮 良 艰 艱 色 艳 艷 艹 艺 艾 节 芃 芈 芊 芋 芍 芎 芒 芙 芜 芝 芡 芥 芦 芩 芪 芫 芬 芭 芮 芯 花 芳 芷 芸 芹 芻 芽 芾 苁 苄 苇 苋 苍 苏 苑 苒 苓 苔 苕 苗 苛 苜 苞 苟 苡 苣 若 苦 苫 苯 英 苷 苹 苻 茁 茂 范 茄 茅 茉 茎 茏 茗 茜 茧 茨 茫 茬 茭 茯 茱 茲 茴 茵 茶 茸 茹 茼 荀 荃 荆 草 荊 荏 荐 荒 荔 荖 荘 荚 荞 荟 荠 荡 荣 荤 荥 荧 荨 荪 荫 药 荳 荷 荸 荻 荼 荽 莅 莆 莉 莊 莎 莒 莓 莖 莘 莞 莠 莢 莧 莪 莫 莱 莲 莴 获 莹 莺 莽 莿 菀 菁 菅 菇 菈 菊 菌 菏 菓 菖 菘 菜 菟 菠 菡 菩 華 菱 菲 菸 菽 萁 萃 萄 萊 萋 萌 萍 萎 萘 萝 萤 营 萦 萧 萨 萩 萬 萱 萵 萸 萼 落 葆 葉 著 葚 葛 葡 董 葦 葩 葫 葬 葭 葯 葱 葳 葵 葷 葺 蒂 蒋 蒐 蒔 蒙 蒜 蒞 蒟 蒡 蒨 蒲 蒸 蒹 蒻 蒼 蒿 蓁 蓄 蓆 蓉 蓋 蓑 蓓 蓖 蓝 蓟 蓦 蓬 蓮 蓼 蓿 蔑 蔓 蔔 蔗 蔘 蔚 蔡 蔣 蔥 蔫 蔬 蔭 蔵 蔷 蔺 蔻 蔼 蔽 蕁 蕃 蕈 蕉 蕊 蕎 蕙 蕤 蕨 蕩 蕪 蕭 蕲 蕴 蕻 蕾 薄 薅 薇 薈 薊 薏 薑 薔 薙 薛 薦 薨 薩 薪 薬 薯 薰 薹 藉 藍 藏 藐 藓 藕 藜 藝 藤 藥 藩 藹 藻 藿 蘆 蘇 蘊 蘋 蘑 蘚 蘭 蘸 蘼 蘿 虎 虏 虐 虑 虔 處 虚 虛 虜 虞 號 虢 虧 虫 虬 虱 虹 虻 虽 虾 蚀 蚁 蚂 蚊 蚌 蚓 蚕 蚜 蚝 蚣 蚤 蚩 蚪 蚯 蚱 蚵 蛀 蛆 蛇 蛊 蛋 蛎 蛐 蛔 蛙 蛛 蛟 蛤 蛭 蛮 蛰 蛳 蛹 蛻 蛾 蜀 蜂 蜃 蜆 蜇 蜈 蜊 蜍 蜒 蜓 蜕 蜗 蜘 蜚 蜜 蜡 蜢 蜥 蜱 蜴 蜷 蜻 蜿 蝇 蝈 蝉 蝌 蝎 蝕 蝗 蝙 蝟 蝠 蝦 蝨 蝴 蝶 蝸 蝼 螂 螃 融 螞 螢 螨 螯 螳 螺 蟀 蟄 蟆 蟋 蟎 蟑 蟒 蟠 蟬 蟲 蟹 蟻 蟾 蠅 蠍 蠔 蠕 蠛 蠟 蠡 蠢 蠣 蠱 蠶 蠹 蠻 血 衄 衅 衆 行 衍 術 衔 街 衙 衛 衝 衞 衡 衢 衣 补 表 衩 衫 衬 衮 衰 衲 衷 衹 衾 衿 袁 袂 袄 袅 袈 袋 袍 袒 袖 袜 袞 袤 袪 被 袭 袱 裁 裂 装 裆 裊 裏 裔 裕 裘 裙 補 裝 裟 裡 裤 裨 裱 裳 裴 裸 裹 製 裾 褂 複 褐 褒 褓 褔 褚 褥 褪 褫 褲 褶 褻 襁 襄 襟 襠 襪 襬 襯 襲 西 要 覃 覆 覇 見 規 覓 視 覚 覦 覧 親 覬 観 覷 覺 覽 觀 见 观 规 觅 视 览 觉 觊 觎 觐 觑 角 觞 解 觥 触 觸 言 訂 計 訊 討 訓 訕 訖 託 記 訛 訝 訟 訣 訥 訪 設 許 訳 訴 訶 診 註 証 詆 詐 詔 評 詛 詞 詠 詡 詢 詣 試 詩 詫 詬 詭 詮 詰 話 該 詳 詹 詼 誅 誇 誉 誌 認 誓 誕 誘 語 誠 誡 誣 誤 誥 誦 誨 說 説 読 誰 課 誹 誼 調 諄 談 請 諏 諒 論 諗 諜 諡 諦 諧 諫 諭 諮 諱 諳 諷 諸 諺 諾 謀 謁 謂 謄 謊 謎 謐 謔 謗 謙 講 謝 謠 謨 謬 謹 謾 譁 證 譎 譏 識 譙 譚 譜 警 譬 譯 議 譲 譴 護 譽 讀 變 讓 讚 讞 计 订 认 讥 讧 讨 让 讪 讫 训 议 讯 记 讲 讳 讴 讶 讷 许 讹 论 讼 讽 设 访 诀 证 诃 评 诅 识 诈 诉 诊 诋 词 诏 译 试 诗 诘 诙 诚 诛 话 诞 诟 诠 诡 询 诣 诤 该 详 诧 诩 诫 诬 语 误 诰 诱 诲 说 诵 诶 请 诸 诺 读 诽 课 诿 谀 谁 调 谄 谅 谆 谈 谊 谋 谌 谍 谎 谏 谐 谑 谒 谓 谔 谕 谗 谘 谙 谚 谛 谜 谟 谢 谣 谤 谥 谦 谧 谨 谩 谪 谬 谭 谯 谱 谲 谴 谶 谷 豁 豆 豇 豈 豉 豊 豌 豎 豐 豔 豚 象 豢 豪 豫 豬 豹 豺 貂 貅 貌 貓 貔 貘 貝 貞 負 財 貢 貧 貨 販 貪 貫 責 貯 貰 貳 貴 貶 買 貸 費 貼 貽 貿 賀 賁 賂 賃 賄 資 賈 賊 賑 賓 賜 賞 賠 賡 賢 賣 賤 賦 質 賬 賭 賴 賺 購 賽 贅 贈 贊 贍 贏 贓 贖 贛 贝 贞 负 贡 财 责 贤 败 账 货 质 贩 贪 贫 贬 购 贮 贯 贰 贱 贲 贴 贵 贷 贸 费 贺 贻 贼 贾 贿 赁 赂 赃 资 赅 赈 赊 赋 赌 赎 赏 赐 赓 赔 赖 赘 赚 赛 赝 赞 赠 赡 赢 赣 赤 赦 赧 赫 赭 走 赳 赴 赵 赶 起 趁 超 越 趋 趕 趙 趟 趣 趨 足 趴 趵 趸 趺 趾 跃 跄 跆 跋 跌 跎 跑 跖 跚 跛 距 跟 跡 跤 跨 跩 跪 路 跳 践 跷 跹 跺 跻 踉 踊 踌 踏 踐 踝 踞 踟 踢 踩 踪 踮 踱 踴 踵 踹 蹂 蹄 蹇 蹈 蹉 蹊 蹋 蹑 蹒 蹙 蹟 蹣 蹤 蹦 蹩 蹬 蹭 蹲 蹴 蹶 蹺 蹼 蹿 躁 躇 躉 躊 躋 躍 躏 躪 身 躬 躯 躲 躺 軀 車 軋 軌 軍 軒 軟 転 軸 軼 軽 軾 較 載 輒 輓 輔 輕 輛 輝 輟 輩 輪 輯 輸 輻 輾 輿 轄 轅 轆 轉 轍 轎 轟 车 轧 轨 轩 转 轭 轮 软 轰 轲 轴 轶 轻 轼 载 轿 较 辄 辅 辆 辇 辈 辉 辊 辍 辐 辑 输 辕 辖 辗 辘 辙 辛 辜 辞 辟 辣 辦 辨 辩 辫 辭 辮 辯 辰 辱 農 边 辺 辻 込 辽 达 迁 迂 迄 迅 过 迈 迎 运 近 返 还 这 进 远 违 连 迟 迢 迤 迥 迦 迩 迪 迫 迭 述 迴 迷 迸 迹 迺 追 退 送 适 逃 逅 逆 选 逊 逍 透 逐 递 途 逕 逗 這 通 逛 逝 逞 速 造 逢 連 逮 週 進 逵 逶 逸 逻 逼 逾 遁 遂 遅 遇 遊 運 遍 過 遏 遐 遑 遒 道 達 違 遗 遙 遛 遜 遞 遠 遢 遣 遥 遨 適 遭 遮 遲 遴 遵 遶 遷 選 遺 遼 遽 避 邀 邁 邂 邃 還 邇 邈 邊 邋 邏 邑 邓 邕 邛 邝 邢 那 邦 邨 邪 邬 邮 邯 邰 邱 邳 邵 邸 邹 邺 邻 郁 郅 郊 郎 郑 郜 郝 郡 郢 郤 郦 郧 部 郫 郭 郴 郵 郷 郸 都 鄂 鄉 鄒 鄔 鄙 鄞 鄢 鄧 鄭 鄰 鄱 鄲 鄺 酉 酊 酋 酌 配 酐 酒 酗 酚 酝 酢 酣 酥 酩 酪 酬 酮 酯 酰 酱 酵 酶 酷 酸 酿 醃 醇 醉 醋 醍 醐 醒 醚 醛 醜 醞 醣 醪 醫 醬 醮 醯 醴 醺 釀 釁 采 釉 释 釋 里 重 野 量 釐 金 釗 釘 釜 針 釣 釦 釧 釵 鈀 鈉 鈍 鈎 鈔 鈕 鈞 鈣 鈦 鈪 鈴 鈺 鈾 鉀 鉄 鉅 鉉 鉑 鉗 鉚 鉛 鉤 鉴 鉻 銀 銃 銅 銑 銓 銖 銘 銜 銬 銭 銮 銳 銷 銹 鋁 鋅 鋒 鋤 鋪 鋰 鋸 鋼 錄 錐 錘 錚 錠 錢 錦 錨 錫 錮 錯 録 錳 錶 鍊 鍋 鍍 鍛 鍥 鍰 鍵 鍺 鍾 鎂 鎊 鎌 鎏 鎔 鎖 鎗 鎚 鎧 鎬 鎮 鎳 鏈 鏖 鏗 鏘 鏞 鏟 鏡 鏢 鏤 鏽 鐘 鐮 鐲 鐳 鐵 鐸 鐺 鑄 鑊 鑑 鑒 鑣 鑫 鑰 鑲 鑼 鑽 鑾 鑿 针 钉 钊 钎 钏 钒 钓 钗 钙 钛 钜 钝 钞 钟 钠 钡 钢 钣 钤 钥 钦 钧 钨 钩 钮 钯 钰 钱 钳 钴 钵 钺 钻 钼 钾 钿 铀 铁 铂 铃 铄 铅 铆 铉 铎 铐 铛 铜 铝 铠 铡 铢 铣 铤 铨 铩 铬 铭 铮 铰 铲 铵 银 铸 铺 链 铿 销 锁 锂 锄 锅 锆 锈 锉 锋 锌 锏 锐 锑 错 锚 锟 锡 锢 锣 锤 锥 锦 锭 键 锯 锰 锲 锵 锹 锺 锻 镀 镁 镂 镇 镉 镌 镍 镐 镑 镕 镖 镗 镛 镜 镣 镭 镯 镰 镳 镶 長 长 門 閃 閉 開 閎 閏 閑 閒 間 閔 閘 閡 関 閣 閥 閨 閩 閱 閲 閹 閻 閾 闆 闇 闊 闌 闍 闔 闕 闖 闘 關 闡 闢 门 闪 闫 闭 问 闯 闰 闲 间 闵 闷 闸 闹 闺 闻 闽 闾 阀 阁 阂 阅 阆 阇 阈 阉 阎 阐 阑 阔 阕 阖 阙 阚 阜 队 阡 阪 阮 阱 防 阳 阴 阵 阶 阻 阿 陀 陂 附 际 陆 陇 陈 陋 陌 降 限 陕 陛 陝 陞 陟 陡 院 陣 除 陨 险 陪 陰 陲 陳 陵 陶 陷 陸 険 陽 隅 隆 隈 隊 隋 隍 階 随 隐 隔 隕 隘 隙 際 障 隠 隣 隧 隨 險 隱 隴 隶 隸 隻 隼 隽 难 雀 雁 雄 雅 集 雇 雉 雋 雌 雍 雎 雏 雑 雒 雕 雖 雙 雛 雜 雞 離 難 雨 雪 雯 雰 雲 雳 零 雷 雹 電 雾 需 霁 霄 霆 震 霈 霉 霊 霍 霎 霏 霑 霓 霖 霜 霞 霧 霭 霰 露 霸 霹 霽 霾 靂 靄 靈 青 靓 靖 静 靚 靛 靜 非 靠 靡 面 靥 靦 革 靳 靴 靶 靼 鞅 鞋 鞍 鞏 鞑 鞘 鞠 鞣 鞦 鞭 韆 韋 韌 韓 韜 韦 韧 韩 韬 韭 音 韵 韶 韻 響 頁 頂 頃 項 順 須 頌 預 頑 頒 頓 頗 領 頜 頡 頤 頫 頭 頰 頷 頸 頹 頻 頼 顆 題 額 顎 顏 顔 願 顛 類 顧 顫 顯 顱 顴 页 顶 顷 项 顺 须 顼 顽 顾 顿 颁 颂 预 颅 领 颇 颈 颉 颊 颌 颍 颐 频 颓 颔 颖 颗 题 颚 颛 颜 额 颞 颠 颡 颢 颤 颦 颧 風 颯 颱 颳 颶 颼 飄 飆 风 飒 飓 飕 飘 飙 飚 飛 飞 食 飢 飨 飩 飪 飯 飲 飼 飽 飾 餃 餅 餉 養 餌 餐 餒 餓 餘 餚 餛 餞 餡 館 餮 餵 餾 饅 饈 饋 饌 饍 饑 饒 饕 饗 饞 饥 饨 饪 饬 饭 饮 饯 饰 饱 饲 饴 饵 饶 饷 饺 饼 饽 饿 馀 馁 馄 馅 馆 馈 馋 馍 馏 馒 馔 首 馗 香 馥 馨 馬 馭 馮 馳 馴 駁 駄 駅 駆 駐 駒 駕 駛 駝 駭 駱 駿 騁 騎 騏 験 騙 騨 騰 騷 驀 驅 驊 驍 驒 驕 驗 驚 驛 驟 驢 驥 马 驭 驮 驯 驰 驱 驳 驴 驶 驷 驸 驹 驻 驼 驾 驿 骁 骂 骄 骅 骆 骇 骈 骊 骋 验 骏 骐 骑 骗 骚 骛 骜 骞 骠 骡 骤 骥 骧 骨 骯 骰 骶 骷 骸 骼 髂 髅 髋 髏 髒 髓 體 髖 高 髦 髪 髮 髯 髻 鬃 鬆 鬍 鬓 鬚 鬟 鬢 鬣 鬥 鬧 鬱 鬼 魁 魂 魄 魅 魇 魍 魏 魔 魘 魚 魯 魷 鮑 鮨 鮪 鮭 鮮 鯉 鯊 鯖 鯛 鯨 鯰 鯽 鰍 鰓 鰭 鰲 鰻 鰾 鱈 鱉 鱔 鱗 鱷 鱸 鱼 鱿 鲁 鲈 鲍 鲑 鲛 鲜 鲟 鲢 鲤 鲨 鲫 鲱 鲲 鲶 鲷 鲸 鳃 鳄 鳅 鳌 鳍 鳕 鳖 鳗 鳝 鳞 鳥 鳩 鳳 鳴 鳶 鴉 鴕 鴛 鴦 鴨 鴻 鴿 鵑 鵜 鵝 鵡 鵬 鵰 鵲 鶘 鶩 鶯 鶴 鷗 鷲 鷹 鷺 鸚 鸞 鸟 鸠 鸡 鸢 鸣 鸥 鸦 鸨 鸪 鸭 鸯 鸳 鸵 鸽 鸾 鸿 鹂 鹃 鹄 鹅 鹈 鹉 鹊 鹌 鹏 鹑 鹕 鹘 鹜 鹞 鹤 鹦 鹧 鹫 鹭 鹰 鹳 鹵 鹹 鹼 鹽 鹿 麂 麋 麒 麓 麗 麝 麟 麥 麦 麩 麴 麵 麸 麺 麻 麼 麽 麾 黃 黄 黍 黎 黏 黑 黒 黔 默 黛 黜 黝 點 黠 黨 黯 黴 鼋 鼎 鼐 鼓 鼠 鼬 鼹 鼻 鼾 齁 齊 齋 齐 齒 齡 齢 齣 齦 齿 龄 龅 龈 龊 龋 龌 龍 龐 龔 龕 龙 龚 龛 龜 龟 ︰ ︱ ︶ ︿ ﹁ ﹂ ﹍ ﹏ ﹐ ﹑ ﹒ ﹔ ﹕ ﹖ ﹗ ﹙ ﹚ ﹝ ﹞ ﹡ ﹣ ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ 。 「 」 、 ・ ッ ー イ ク シ ス ト ノ フ ラ ル ン ゙ ゚  ̄ ¥ 👍 🔥 😂 😎 ... yam 10 2017 12 11 2016 20 30 15 06 lofter ##s 2015 by 16 14 18 13 24 17 2014 21 ##0 22 19 25 23 com 100 00 05 2013 ##a 03 09 08 28 ##2 50 01 04 ##1 27 02 2012 ##3 26 ##e 07 ##8 ##5 ##6 ##4 ##9 ##7 29 2011 40 ##t 2010 ##o ##d ##i 2009 ##n app www the ##m 31 ##c ##l ##y ##r ##g 2008 60 http 200 qq ##p 80 ##f google pixnet 90 cookies tripadvisor 500 ##er ##k 35 ##h facebook 2007 2000 70 ##b of ##x ##u 45 300 iphone 32 1000 2006 48 ip 36 in 38 3d ##w ##ing 55 ctrip ##on ##v 33 ##の to 34 400 id 2005 it 37 windows llc top 99 42 39 000 led at ##an 41 51 52 46 49 43 53 44 ##z android 58 and 59 2004 56 vr ##か 5000 2003 47 blogthis twitter 54 ##le 150 ok 2018 57 75 cn no ios ##in ##mm ##00 800 on te 3000 65 2001 360 95 ig lv 120 ##ng ##を ##us ##に pc てす ── 600 ##te 85 2002 88 ##ed html ncc wifi email 64 blog is ##10 ##て mail online ##al dvd ##ic studio ##は ##℃ ##ia ##と line vip 72 ##q 98 ##ce ##en for ##is ##ra ##es ##j usb net cp 1999 asia 4g ##cm diy new 3c ##お ta 66 language vs apple tw 86 web ##ne ipad 62 you ##re 101 68 ##tion ps de bt pony atm ##2017 1998 67 ##ch ceo ##or go ##na av pro cafe 96 pinterest 97 63 pixstyleme3c ##ta more said ##2016 1997 mp3 700 ##ll nba jun ##20 92 tv 1995 pm 61 76 nbsp 250 ##ie linux ##ma cd 110 hd ##17 78 ##ion 77 6000 am ##th ##st 94 ##se ##et 69 180 gdp my 105 81 abc 89 flash 79 one 93 1990 1996 ##ck gps ##も ##ly web885 106 2020 91 ##ge 4000 1500 xd boss isbn 1994 org ##ry me love ##11 0fork 73 ##12 3g ##ter ##ar 71 82 ##la hotel 130 1970 pk 83 87 140 ie ##os ##30 ##el 74 ##50 seo cpu ##ml p2p 84 may ##る sun tue internet cc posted youtube ##at ##ン ##man ii ##ル ##15 abs nt pdf yahoo ago 1980 ##it news mac 104 ##てす ##me ##り java 1992 spa ##de ##nt hk all plus la 1993 ##mb ##16 ##ve west ##da 160 air ##い ##ps から ##to 1989 logo htc php https fi momo ##son sat ##ke ##80 ebd suv wi day apk ##88 ##um mv galaxy wiki or brake ##ス 1200 する this 1991 mon ##こ ❤2017 po ##ない javascript life home june ##ss system 900 ##ー ##0 pp 1988 world fb 4k br ##as ic ai leonardo safari ##60 live free xx wed win7 kiehl ##co lg o2o ##go us 235 1949 mm しい vfm kanye ##90 ##2015 ##id jr ##ey 123 rss ##sa ##ro ##am ##no thu fri 350 ##sh ##ki 103 comments name ##のて ##pe ##ine max 1987 8000 uber ##mi ##ton wordpress office 1986 1985 ##ment 107 bd win10 ##ld ##li gmail bb dior ##rs ##ri ##rd ##ます up cad ##® dr して read ##21 をお ##io ##99 url 1984 pvc paypal show policy ##40 ##ty ##18 with ##★ ##01 txt 102 ##ba dna from post mini ar taiwan john ##ga privacy agoda ##13 ##ny word ##24 ##22 ##by ##ur ##hz 1982 ##ang 265 cookie netscape 108 ##ka ##~ ##ad house share note ibm code hello nike sim survey ##016 1979 1950 wikia ##32 ##017 5g cbc ##tor ##kg 1983 ##rt ##14 campaign store 2500 os ##ct ##ts ##° 170 api ##ns 365 excel ##な ##ao ##ら ##し ~~ ##nd university 163 には 518 ##70 ##ya ##il ##25 pierre ipo 0020 897 ##23 hotels ##ian のお 125 years 6606 ##ers ##26 high ##day time ##ay bug ##line ##く ##す ##be xp talk2yam yamservice 10000 coco ##dy sony ##ies 1978 microsoft david people ##ha 1960 instagram intel その ##ot iso 1981 ##va 115 ##mo ##land xxx man co ltxsw ##ation baby 220 ##pa ##ol 1945 7000 tag 450 ##ue msn ##31 oppo ##ト ##ca control ##om st chrome ##ure ##ん be ##き lol ##19 した ##bo 240 lady ##100 ##way ##から 4600 ##ko ##do ##un 4s corporation 168 ##ni herme ##28 cp 978 ##up ##06 ui ##ds ppt admin three します bbc re 128 ##48 ca ##015 ##35 hp ##ee tpp ##た ##ive ×× root ##cc ##ました ##ble ##ity adobe park 114 et oled city ##ex ##ler ##ap china ##book 20000 view ##ice global ##km your hong ##mg out ##ms ng ebay ##29 menu ubuntu ##cy rom ##view open ktv do server ##lo if english ##ね ##5 ##oo 1600 ##02 step1 kong club 135 july inc 1976 mr hi ##net touch ##ls ##ii michael lcd ##05 ##33 phone james step2 1300 ios9 ##box dc ##2 ##ley samsung 111 280 pokemon css ##ent ##les いいえ ##1 s8 atom play bmw ##said sa etf ctrl ♥yoyo♥ ##55 2025 ##2014 ##66 adidas amazon 1958 ##ber ##ner visa ##77 ##der 1800 connectivity ##hi firefox 109 118 hr so style mark pop ol skip 1975 as ##27 ##ir ##61 190 mba ##う ##ai le ##ver 1900 cafe2017 lte super 113 129 ##ron amd like ##☆ are ##ster we ##sk paul data international ##ft longchamp ssd good ##ート ##ti reply ##my ↓↓↓ apr star ##ker source 136 js 112 get force photo ##one 126 ##2013 ##ow link bbs 1972 goods ##lin python 119 ##ip game ##ics ##ません blue ##● 520 ##45 page itunes ##03 1955 260 1968 gt gif 618 ##ff ##47 group くたさい about bar ganji ##nce music lee not 1977 1971 1973 ##per an faq comment ##って days ##ock 116 ##bs 1974 1969 v1 player 1956 xbox sql fm f1 139 ##ah 210 ##lv ##mp ##000 melody 1957 ##3 550 17life 199 1966 xml market ##au ##71 999 ##04 what gl ##95 ##age tips ##68 book ##ting mysql can 1959 230 ##ung wonderland watch 10℃ ##ction 9000 mar mobile 1946 1962 article ##db part ▲top party って 1967 1964 1948 ##07 ##ore ##op この dj ##78 ##38 010 main 225 1965 ##ong art 320 ad 134 020 ##73 117 pm2 japan 228 ##08 ts 1963 ##ica der sm ##36 2019 ##wa ct ##7 ##や ##64 1937 homemesh search ##85 ##れは ##tv ##di macbook ##9 ##くたさい service ##♥ type った 750 ##ier ##si ##75 ##います ##ok best ##ット goris lock ##った cf 3m big ##ut ftp carol ##vi 10 1961 happy sd ##ac 122 anti pe cnn iii 1920 138 ##ラ 1940 esp jan tags ##98 ##51 august vol ##86 154 ##™ ##fs ##れ ##sion design ac ##ム press jordan ppp that key check ##6 ##tt ##㎡ 1080p ##lt power ##42 1952 ##bc vivi ##ック he 133 121 jpg ##rry 201 175 3500 1947 nb ##ted ##rn しています 1954 usd ##t00 master ##ンク 001 model ##58 al ##09 1953 ##34 ram goo ても ##ui 127 1930 red ##ary rpg item ##pm ##41 270 ##za project ##2012 hot td blogabstract ##ger ##62 650 ##44 gr2 ##します ##m black electronic nfc year asus また html5 cindy ##hd m3 132 esc ##od booking ##53 fed tvb ##81 ##ina mit 165 ##いる chan 192 distribution next になる peter bios steam cm 1941 にも pk10 ##ix ##65 ##91 dec nasa ##ana icecat 00z b1 will ##46 li se ##ji ##み ##ard oct ##ain jp ##ze ##bi cio ##56 smart h5 ##39 ##port curve vpn ##nm ##dia utc ##あり 12345678910 ##52 rmvb chanel a4 miss ##and ##im media who ##63 she girl 5s 124 vera ##して class vivo king ##フ ##ei national ab 1951 5cm 888 145 ipod ap 1100 5mm 211 ms 2756 ##69 mp4 msci ##po ##89 131 mg index 380 ##bit ##out ##zz ##97 ##67 158 apec ##8 photoshop opec ¥799 ては ##96 ##tes ##ast 2g ○○ ##ール ¥2899 ##ling ##よ ##ory 1938 ##ical kitty content ##43 step3 ##cn win8 155 vc 1400 iphone7 robert ##した tcl 137 beauty ##87 en dollars ##ys ##oc step pay yy a1 ##2011 ##lly ##ks ##♪ 1939 188 download 1944 sep exe ph います school gb center pr street ##board uv ##37 ##lan winrar ##que ##ua ##com 1942 1936 480 gpu ##4 ettoday fu tom ##54 ##ren ##via 149 ##72 b2b 144 ##79 ##tch rose arm mb ##49 ##ial ##nn nvidia step4 mvp 00㎡ york 156 ##イ how cpi 591 2765 gov kg joe ##xx mandy pa ##ser copyright fashion 1935 don ##け ecu ##ist ##art erp wap have ##lm talk ##ek ##ning ##if ch ##ite video 1943 cs san iot look ##84 ##2010 ##ku october ##ux trump ##hs ##ide box 141 first ##ins april ##ight ##83 185 angel protected aa 151 162 x1 m2 ##fe ##× ##ho size 143 min ofo fun gomaji ex hdmi food dns march chris kevin ##のか ##lla ##pp ##ec ag ems 6s 720p ##rm ##ham off ##92 asp team fandom ed 299 ▌♥ ##ell info されています ##82 sina 4066 161 ##able ##ctor 330 399 315 dll rights ltd idc jul 3kg 1927 142 ma surface ##76 ##ク ~~~ 304 mall eps 146 green ##59 map space donald v2 sodu ##light 1931 148 1700 まて 310 reserved htm ##han ##57 2d 178 mod ##ise ##tions 152 ti ##shi doc 1933 icp 055 wang ##ram shopping aug ##pi ##well now wam b2 からお ##hu 236 1928 ##gb 266 f2 ##93 153 mix ##ef ##uan bwl ##plus ##res core ##ess tea 5℃ hktvmall nhk ##ate list ##ese 301 feb 4m inn ての nov 159 12345 daniel ##ci pass ##bet ##nk coffee 202 ssl airbnb ##ute fbi woshipm skype ea cg sp ##fc ##www yes edge alt 007 ##94 fpga ##ght ##gs iso9001 さい ##ile ##wood ##uo image lin icon american ##em 1932 set says ##king ##tive blogger ##74 なと 256 147 ##ox ##zy ##red ##ium ##lf nokia claire ##リ ##ding november lohas ##500 ##tic ##マ ##cs ##ある ##che ##ire ##gy ##ult db january win ##カ 166 road ptt ##ま ##つ 198 ##fa ##mer anna pchome はい udn ef 420 ##time ##tte 2030 ##ア g20 white かかります 1929 308 garden eleven di ##おります chen 309b 777 172 young cosplay ちてない 4500 bat ##123 ##tra ##ては kindle npc steve etc ##ern ##| call xperia ces travel sk s7 ##ous 1934 ##int みいたたけます 183 edu file cho qr ##car ##our 186 ##ant ##d eric 1914 rends ##jo ##する mastercard ##2000 kb ##min 290 ##ino vista ##ris ##ud jack 2400 ##set 169 pos 1912 ##her ##ou taipei しく 205 beta ##ませんか 232 ##fi express 255 body ##ill aphojoy user december meiki ##ick tweet richard ##av ##ᆫ iphone6 ##dd ちてすか views ##mark 321 pd ##00 times ##▲ level ##ash 10g point 5l ##ome 208 koreanmall ##ak george q2 206 wma tcp ##200 スタッフ full mlb ##lle ##watch tm run 179 911 smith business ##und 1919 color ##tal 222 171 ##less moon 4399 ##rl update pcb shop 499 157 little なし end ##mhz van dsp easy 660 ##house ##key history ##o oh ##001 ##hy ##web oem let was ##2009 ##gg review ##wan 182 ##°c 203 uc title ##val united 233 2021 ##ons doi trivago overdope sbs ##ance ##ち grand special 573032185 imf 216 wx17house ##so ##ーム audi ##he london william ##rp ##ake science beach cfa amp ps4 880 ##800 ##link ##hp crm ferragamo bell make ##eng 195 under zh photos 2300 ##style ##ント via 176 da ##gi company i7 ##ray thomas 370 ufo i5 ##max plc ben back research 8g 173 mike ##pc ##ッフ september 189 ##ace vps february 167 pantos wp lisa 1921 ★★ jquery night long offer ##berg ##news 1911 ##いて ray fks wto せます over 164 340 ##all ##rus 1924 ##888 ##works blogtitle loftpermalink ##→ 187 martin test ling km ##め 15000 fda v3 ##ja ##ロ wedding かある outlet family ##ea をこ ##top story ##ness salvatore ##lu 204 swift 215 room している oracle ##ul 1925 sam b2c week pi rock ##のは ##a ##けと ##ean ##300 ##gle cctv after chinese ##back powered x2 ##tan 1918 ##nes ##イン canon only 181 ##zi ##las say ##oe 184 ##sd 221 ##bot ##world ##zo sky made top100 just 1926 pmi 802 234 gap ##vr 177 les 174 ▲topoct ball vogue vi ing ofweek cos ##list ##ort ▲topmay ##なら ##lon として last ##tc ##of ##bus ##gen real eva ##コ a3 nas ##lie ##ria ##coin ##bt ▲topapr his 212 cat nata vive health ⋯⋯ drive sir ▲topmar du cup ##カー ##ook ##よう ##sy alex msg tour しました 3ce ##word 193 ebooks r8 block 318 ##より 2200 nice pvp 207 months 1905 rewards ##ther 1917 0800 ##xi ##チ ##sc micro 850 gg blogfp op 1922 daily m1 264 true ##bb ml ##tar ##のお ##ky anthony 196 253 ##yo state 218 ##ara ##aa ##rc ##tz ##ston より gear ##eo ##ade ge see 1923 ##win ##ura ss heart ##den ##ita down ##sm el png 2100 610 rakuten whatsapp bay dream add ##use 680 311 pad gucci mpv ##ode ##fo island ▲topjun ##▼ 223 jason 214 chicago ##❤ しの ##hone io ##れる ##ことか sogo be2 ##ology 990 cloud vcd ##con 2~3 ##ford ##joy ##kb ##こさいます ##rade but ##ach docker ##ful rfid ul ##ase hit ford ##star 580 ##○ 11 a2 sdk reading edited ##are cmos ##mc 238 siri light ##ella ##ため bloomberg ##read pizza ##ison jimmy ##vm college node journal ba 18k ##play 245 ##cer 20 magic ##yu 191 jump 288 tt ##ings asr ##lia 3200 step5 network ##cd mc いします 1234 pixstyleme 273 ##600 2800 money ★★★★★ 1280 12 430 bl みの act ##tus tokyo ##rial ##life emba ##ae saas tcs ##rk ##wang summer ##sp ko ##ving 390 premium ##その netflix ##ヒ uk mt ##lton right frank two 209 える ##ple ##cal 021 ##んな ##sen ##ville hold nexus dd ##ius てお ##mah ##なく tila zero 820 ce ##tin resort ##ws charles old p10 5d report ##360 ##ru ##には bus vans lt ##est pv ##レ links rebecca ##ツ ##dm azure ##365 きな limited bit 4gb ##mon 1910 moto ##eam 213 1913 var eos なとの 226 blogspot された 699 e3 dos dm fc ##ments ##ik ##kw boy ##bin ##ata 960 er ##せ 219 ##vin ##tu ##ula 194 ##∥ station ##ろ ##ature 835 files zara hdr top10 nature 950 magazine s6 marriott ##シ avira case ##っと tab ##ran tony ##home oculus im ##ral jean saint cry 307 rosie ##force ##ini ice ##bert のある ##nder ##mber pet 2600 ##◆ plurk ▲topdec ##sis 00kg ▲topnov 720 ##ence tim ##ω ##nc ##ても ##name log ips great ikea malaysia unix ##イト 3600 ##ncy ##nie 12000 akb48 ##ye ##oid 404 ##chi ##いた oa xuehai ##1000 ##orm ##rf 275 さん ##ware ##リー 980 ho ##pro text ##era 560 bob 227 ##ub ##2008 8891 scp avi ##zen 2022 mi wu museum qvod apache lake jcb ▲topaug ★★★ ni ##hr hill 302 ne weibo 490 ruby ##ーシ ##ヶ ##row 4d ▲topjul iv ##ish github 306 mate 312 ##スト ##lot ##ane andrew のハイト ##tina t1 rf ed2k ##vel ##900 way final りの ns 5a 705 197 ##メ sweet bytes ##ene ▲topjan 231 ##cker ##2007 ##px 100g topapp 229 helpapp rs low 14k g4g care 630 ldquo あり ##fork leave rm edition ##gan ##zon ##qq ▲topsep ##google ##ism gold 224 explorer ##zer toyota category select visual ##labels restaurant ##md posts s1 ##ico もっと angelababy 123456 217 sports s3 mbc 1915 してくたさい shell x86 candy ##new kbs face xl 470 ##here 4a swissinfo v8 ▲topfeb dram ##ual ##vice 3a ##wer sport q1 ios10 public int card ##c ep au rt ##れた 1080 bill ##mll kim 30 460 wan ##uk ##ミ x3 298 0t scott ##ming 239 e5 ##3d h7n9 worldcat brown ##あります ##vo ##led ##580 ##ax 249 410 ##ert paris ##~6 polo 925 ##lr 599 ##ナ capital ##hing bank cv 1g ##chat ##s ##たい adc ##ule 2m ##e digital hotmail 268 ##pad 870 bbq quot ##ring before wali ##まて mcu 2k 2b という costco 316 north 333 switch ##city ##p philips ##mann management panasonic ##cl ##vd ##ping ##rge alice ##lk ##ましょう css3 ##ney vision alpha ##ular ##400 ##tter lz にお ##ありません mode gre 1916 pci ##tm 237 1~2 ##yan ##そ について ##let ##キ work war coach ah mary ##ᅵ huang ##pt a8 pt follow ##berry 1895 ##ew a5 ghost ##ション ##wn ##og south ##code girls ##rid action villa git r11 table games ##cket error ##anonymoussaid ##ag here ##ame ##gc qa ##■ ##lis gmp ##gin vmalife ##cher yu wedding ##tis demo dragon 530 soho social bye ##rant river orz acer 325 ##↑ ##ース ##ats 261 del ##ven 440 ups ##ように ##ター 305 value macd yougou ##dn 661 ##ano ll ##urt ##rent continue script ##wen ##ect paper 263 319 shift ##chel ##フト ##cat 258 x5 fox 243 ##さん car aaa ##blog loading ##yn ##tp kuso 799 si sns イカせるテンマ ヒンクテンマ3 rmb vdc forest central prime help ultra ##rmb ##ような 241 square 688 ##しい のないフロクに ##field ##reen ##ors ##ju c1 start 510 ##air ##map cdn ##wo cba stephen m8 100km ##get opera ##base ##ood vsa com™ ##aw ##ail 251 なのて count t2 ##ᅡ ##een 2700 hop ##gp vsc tree ##eg ##ose 816 285 ##ories ##shop alphago v4 1909 simon ##ᆼ fluke62max zip スホンサー ##sta louis cr bas ##~10 bc ##yer hadoop ##ube ##wi 1906 0755 hola ##low place centre 5v d3 ##fer 252 ##750 ##media 281 540 0l exchange 262 series ##ハー ##san eb ##bank ##k q3 ##nge ##mail take ##lp 259 1888 client east cache event vincent ##ールを きを ##nse sui 855 adchoice ##и ##stry ##なたの 246 ##zone ga apps sea ##ab 248 cisco ##タ ##rner kymco ##care dha ##pu ##yi minkoff royal p1 への annie 269 collection kpi playstation 257 になります 866 bh ##bar queen 505 radio 1904 andy armani ##xy manager iherb ##ery ##share spring raid johnson 1908 ##ob volvo hall ##ball v6 our taylor ##hk bi 242 ##cp kate bo water technology ##rie サイトは 277 ##ona ##sl hpv 303 gtx hip rdquo jayz stone ##lex ##rum namespace ##やり 620 ##ale ##atic des ##erson ##ql ##ves ##type enter ##この ##てきます d2 ##168 ##mix ##bian との a9 jj ky ##lc access movie ##hc リストに tower ##ration ##mit ます ##nch ua tel prefix ##o2 1907 ##point 1901 ott ~10 ##http ##ury baidu ##ink member ##logy bigbang nownews ##js ##shot ##tb ##こと 247 eba ##tics ##lus ける v5 spark ##ama there ##ions god ##lls ##down hiv ##ress burberry day2 ##kv ◆◆ jeff related film edit joseph 283 ##ark cx 32gb order g9 30000 ##ans ##tty s5 ##bee かあります thread xr buy sh 005 land spotify mx ##ari 276 ##verse ×email sf why ##ことて 244 7headlines nego sunny dom exo 401 666 positioning fit rgb ##tton 278 kiss alexa adam lp みリストを ##g mp ##ties ##llow amy ##du np 002 institute 271 ##rth ##lar 2345 590 ##des sidebar 15 imax site ##cky ##kit ##ime ##009 season 323 ##fun ##ンター ##ひ gogoro a7 pu lily fire twd600 ##ッセーシを いて ##vis 30ml ##cture ##をお information ##オ close friday ##くれる yi nick てすか ##tta ##tel 6500 ##lock cbd economy 254 かお 267 tinker double 375 8gb voice ##app oops channel today 985 ##right raw xyz ##+ jim edm ##cent 7500 supreme 814 ds ##its ##asia dropbox ##てすか ##tti books 272 100ml ##tle ##ller ##ken ##more ##boy sex 309 ##dom t3 ##ider ##なります ##unch 1903 810 feel 5500 ##かった ##put により s2 mo ##gh men ka amoled div ##tr ##n1 port howard ##tags ken dnf ##nus adsense ##а ide ##へ buff thunder ##town ##ique has ##body auto pin ##erry tee てした 295 number ##the ##013 object psp cool udnbkk 16gb ##mic miui ##tro most r2 ##alk ##nity 1880 ±0 ##いました 428 s4 law version ##oa n1 sgs docomo ##tf ##ack henry fc2 ##ded ##sco ##014 ##rite 286 0mm linkedin ##ada ##now wii ##ndy ucbug ##◎ sputniknews legalminer ##ika ##xp 2gb ##bu q10 oo b6 come ##rman cheese ming maker ##gm nikon ##fig ppi kelly ##ります jchere てきます ted md 003 fgo tech ##tto dan soc ##gl ##len hair earth 640 521 img ##pper ##a1 ##てきる ##ロク acca ##ition ##ference suite ##ig outlook ##mond ##cation 398 ##pr 279 101vip 358 ##999 282 64gb 3800 345 airport ##over 284 ##おり jones ##ith lab ##su ##いるのて co2 town piece ##llo no1 vmware 24h ##qi focus reader ##admin ##ora tb false ##log 1898 know lan 838 ##ces f4 ##ume motel stop ##oper na flickr netcomponents ##af ##─ pose williams local ##ound ##cg ##site ##iko いお 274 5m gsm con ##ath 1902 friends ##hip cell 317 ##rey 780 cream ##cks 012 ##dp facebooktwitterpinterestgoogle sso 324 shtml song swiss ##mw ##キンク lumia xdd string tiffany 522 marc られた insee russell sc dell ##ations ok camera 289 ##vs ##flow ##late classic 287 ##nter stay g1 mtv 512 ##ever ##lab ##nger qe sata ryan d1 50ml cms ##cing su 292 3300 editor 296 ##nap security sunday association ##ens ##700 ##bra acg ##かり sofascore とは mkv ##ign jonathan gary build labels ##oto tesla moba qi gohappy general ajax 1024 ##かる サイト society ##test ##urs wps fedora ##ich mozilla 328 ##480 ##dr usa urn ##lina ##r grace ##die ##try ##ader 1250 ##なり elle 570 ##chen ##ᆯ price ##ten uhz ##ough eq ##hen states push session balance wow 506 ##cus ##py when ##ward ##ep 34e wong library prada ##サイト ##cle running ##ree 313 ck date q4 ##ctive ##ool ##> mk ##ira ##163 388 die secret rq dota buffet は1ヶ e6 ##ez pan 368 ha ##card ##cha 2a ##さ alan day3 eye f3 ##end france keep adi rna tvbs ##ala solo nova ##え ##tail ##ょう support ##ries ##なる ##ved base copy iis fps ##ways hero hgih profile fish mu ssh entertainment chang ##wd click cake ##ond pre ##tom kic pixel ##ov ##fl product 6a ##pd dear ##gate es yumi audio ##² ##sky echo bin where ##ture 329 ##ape find sap isis ##なと nand ##101 ##load ##ream band a6 525 never ##post festival 50cm ##we 555 guide 314 zenfone ##ike 335 gd forum jessica strong alexander ##ould software allen ##ious program 360° else lohasthree ##gar することかてきます please ##れます rc ##ggle ##ric bim 50000 ##own eclipse 355 brian 3ds ##side 061 361 ##other ##ける ##tech ##ator 485 engine ##ged ##t plaza ##fit cia ngo westbrook shi tbs 50mm ##みませんか sci 291 reuters ##ily contextlink ##hn af ##cil bridge very ##cel 1890 cambridge ##ize 15g ##aid ##data 790 frm ##head award butler ##sun meta ##mar america ps3 puma pmid ##すか lc 670 kitchen ##lic オーフン5 きなしソフトサーヒス そして day1 future ★★★★ ##text ##page ##rris pm1 ##ket fans ##っています 1001 christian bot kids trackback ##hai c3 display ##hl n2 1896 idea さんも ##sent airmail ##ug ##men pwm けます 028 ##lution 369 852 awards schemas 354 asics wikipedia font ##tional ##vy c2 293 ##れている ##dget ##ein っている contact pepper スキル 339 ##~5 294 ##uel ##ument 730 ##hang みてす q5 ##sue rain ##ndi wei swatch ##cept わせ 331 popular ##ste ##tag p2 501 trc 1899 ##west ##live justin honda ping messenger ##rap v9 543 ##とは unity appqq はすへて 025 leo ##tone ##テ ##ass uniqlo ##010 502 her jane memory moneydj ##tical human 12306 していると ##m2 coc miacare ##mn tmt ##core vim kk ##may fan target use too 338 435 2050 867 737 fast ##2c services ##ope omega energy ##わ pinkoi 1a ##なから ##rain jackson ##ement ##シャンルの 374 366 そんな p9 rd ##ᆨ 1111 ##tier ##vic zone ##│ 385 690 dl isofix cpa m4 322 kimi めて davis ##lay lulu ##uck 050 weeks qs ##hop 920 ##n ae ##ear ~5 eia 405 ##fly korea jpeg boost ##ship small ##リア 1860 eur 297 425 valley ##iel simple ##ude rn k2 ##ena されます non patrick しているから ##ナー feed 5757 30g process well qqmei ##thing they aws lu pink ##ters ##kin または board ##vertisement wine ##ien unicode ##dge r1 359 ##tant いを ##twitter ##3c cool1 される ##れて ##l isp ##012 standard 45㎡2 402 ##150 matt ##fu 326 ##iner googlemsn pixnetfacebookyahoo ##ラン x7 886 ##uce メーカー sao ##ev ##きました ##file 9678 403 xddd shirt 6l ##rio ##hat 3mm givenchy ya bang ##lio monday crystal ロクイン ##abc 336 head 890 ubuntuforumwikilinuxpastechat ##vc ##~20 ##rity cnc 7866 ipv6 null 1897 ##ost yang imsean tiger ##fet ##ンス 352 ##= dji 327 ji maria ##come ##んて foundation 3100 ##beth ##なった 1m 601 active ##aft ##don 3p sr 349 emma ##khz living 415 353 1889 341 709 457 sas x6 ##face pptv x4 ##mate han sophie ##jing 337 fifa ##mand other sale inwedding ##gn てきちゃいます ##mmy ##pmlast bad nana nbc してみてくたさいね なとはお ##wu ##かあります ##あ note7 single ##340 せからこ してくたさい♪この しにはとんとんワークケートを するとあなたにもっとマッチした ならワークケートへ もみつかっちゃうかも ワークケートの ##bel window ##dio ##ht union age 382 14 ##ivity ##y コメント domain neo ##isa ##lter 5k f5 steven ##cts powerpoint tft self g2 ft ##テル zol ##act mwc 381 343 もう nbapop 408 てある eds ace ##room previous author tomtom il ##ets hu financial ☆☆☆ っています bp 5t chi 1gb ##hg fairmont cross 008 gay h2 function ##けて 356 also 1b 625 ##ータ ##raph 1894 3~5 ##ils i3 334 avenue ##host による ##bon ##tsu message navigation 50g fintech h6 ##ことを 8cm ##ject ##vas ##firm credit ##wf xxxx form ##nor ##space huawei plan json sbl ##dc machine 921 392 wish ##120 ##sol windows7 edward ##ために development washington ##nsis lo 818 ##sio ##ym ##bor planet ##~8 ##wt ieee gpa ##めて camp ann gm ##tw ##oka connect ##rss ##work ##atus wall chicken soul 2mm ##times fa ##ather ##cord 009 ##eep hitachi gui harry ##pan e1 disney ##press ##ーション wind 386 frigidaire ##tl liu hsu 332 basic von ev いた てきる スホンサーサイト learning ##ull expedia archives change ##wei santa cut ins 6gb turbo brand cf1 508 004 return 747 ##rip h1 ##nis ##をこ 128gb ##にお 3t application しており emc rx ##oon 384 quick 412 15058 wilson wing chapter ##bug beyond ##cms ##dar ##oh zoom e2 trip sb ##nba rcep 342 aspx ci 080 gc gnu める ##count advanced dance dv ##url ##ging 367 8591 am09 shadow battle 346 ##i ##cia ##という emily ##のてす ##tation host ff techorz sars ##mini ##mporary ##ering nc 4200 798 ##next cma ##mbps ##gas ##ift ##dot ##ィ 455 ##~17 amana ##りの 426 ##ros ir 00㎡1 ##eet ##ible ##↓ 710 ˋ▽ˊ ##aka dcs iq ##v l1 ##lor maggie ##011 ##iu 588 ##~1 830 ##gt 1tb articles create ##burg ##iki database fantasy ##rex ##cam dlc dean ##you hard path gaming victoria maps cb ##lee ##itor overchicstoretvhome systems ##xt 416 p3 sarah 760 ##nan 407 486 x9 install second 626 ##ann ##ph ##rcle ##nic 860 ##nar ec ##とう 768 metro chocolate ##rian ~4 ##table ##しています skin ##sn 395 mountain ##0mm inparadise 6m 7x24 ib 4800 ##jia eeworld creative g5 g3 357 parker ecfa village からの 18000 sylvia サーヒス hbl ##ques ##onsored ##x2 ##きます ##v4 ##tein ie6 383 ##stack 389 ver ##ads ##baby sound bbe ##110 ##lone ##uid ads 022 gundam 351 thinkpad 006 scrum match ##ave mems ##470 ##oy ##なりました ##talk glass lamigo span ##eme job ##a5 jay wade kde 498 ##lace ocean tvg ##covery ##r3 ##ners ##rea junior think ##aine cover ##ision ##sia ↓↓ ##bow msi 413 458 406 ##love 711 801 soft z2 ##pl 456 1840 mobil mind ##uy 427 nginx ##oi めた ##rr 6221 ##mple ##sson ##ーシてす 371 ##nts 91tv comhd crv3000 ##uard 1868 397 deep lost field gallery ##bia rate spf redis traction 930 icloud 011 なら fe jose 372 ##tory into sohu fx 899 379 kicstart2 ##hia すく ##~3 ##sit ra 24 ##walk ##xure 500g ##pact pacific xa natural carlo ##250 ##walker 1850 ##can cto gigi 516 ##サー pen ##hoo ob matlab ##b ##yy 13913459 ##iti mango ##bbs sense c5 oxford ##ニア walker jennifer ##ola course ##bre 701 ##pus ##rder lucky 075 ##ぁ ivy なお ##nia sotheby side ##ugh joy ##orage ##ush ##bat ##dt 364 r9 ##2d ##gio 511 country wear ##lax ##~7 ##moon 393 seven study 411 348 lonzo 8k ##ェ evolution ##イフ ##kk gs kd ##レス arduino 344 b12 ##lux arpg ##rdon cook ##x5 dark five ##als ##ida とても sign 362 ##ちの something 20mm ##nda 387 ##posted fresh tf 1870 422 cam ##mine ##skip ##form ##ssion education 394 ##tee dyson stage ##jie want ##night epson pack あります ##ppy テリヘル ##█ wd ##eh ##rence left ##lvin golden mhz discovery ##trix ##n2 loft ##uch ##dra ##sse speed ~1 1mdb sorry welcome ##urn wave gaga ##lmer teddy ##160 トラックハック せよ 611 ##f2016 378 rp ##sha rar ##あなたに ##きた 840 holiday ##ュー 373 074 ##vg ##nos ##rail gartner gi 6p ##dium kit 488 b3 eco ##ろう 20g sean ##stone autocad nu ##np f16 write 029 m5 ##ias images atp ##dk fsm 504 1350 ve 52kb ##xxx ##のに ##cake 414 unit lim ru 1v ##ification published angela 16g analytics ak ##q ##nel gmt ##icon again ##₂ ##bby ios11 445 かこさいます waze いてす ##ハ 9985 ##ust ##ティー framework ##007 iptv delete 52sykb cl wwdc 027 30cm ##fw ##ての 1389 ##xon brandt ##ses ##dragon tc vetements anne monte modern official ##へて ##ere ##nne ##oud もちろん 50 etnews ##a2 ##graphy 421 863 ##ちゃん 444 ##rtex ##てお l2 ##gma mount ccd たと archive morning tan ddos e7 ##ホ day4 ##ウ gis 453 its 495 factory bruce pg ##ito ってくたさい guest cdma ##lling 536 n3 しかし 3~4 mega eyes ro 13 women dac church ##jun singapore ##facebook 6991 starbucks ##tos ##stin ##shine zen ##mu tina 20℃ 1893 ##たけて 503 465 request ##gence qt ##っ 1886 347 363 q7 ##zzi diary ##tore 409 ##ead 468 cst ##osa canada agent va ##jiang ##ちは ##ーク ##lam sg ##nix ##sday ##よって g6 ##master bing ##zl charlie 16 8mm nb40 ##ーン thai ##ルフ ln284ct ##itz ##2f bonnie ##food ##lent originals ##stro ##lts 418 ∟∣ ##bscribe children ntd yesstyle ##かも hmv ##tment d5 2cm arts sms ##pn ##я ##いい topios9 539 lifestyle virtual ##ague xz ##deo muji 024 unt ##nnis ##ᅩ faq1 1884 396 ##ette fly 64㎡ はしめまして 441 curry ##pop のこ release ##← ##◆◆ ##cast 073 ありな 500ml ##ews 5c ##stle ios7 ##ima 787 dog lenovo ##r4 roger 013 cbs vornado 100m 417 ##desk ##クok ##ald 1867 9595 2900 ##van oil ##x some break common ##jy ##lines g7 twice 419 ella nano belle にこ ##mes ##self ##note jb ##ことかてきます benz ##との ##ova 451 save ##wing ##ますのて kai りは ##hua ##rect rainer ##unge 448 ##0m adsl ##かな guestname ##uma ##kins ##zu tokichoi ##price county ##med ##mus rmk 391 address vm えて openload ##group ##hin ##iginal amg urban ##oz jobs emi ##public beautiful ##sch album ##dden ##bell jerry works hostel miller ##drive ##rmin ##10 376 boot 828 ##370 ##fx ##cm~ 1885 ##nome ##ctionary ##oman ##lish ##cr ##hm 433 ##how 432 francis xi c919 b5 evernote ##uc vga ##3000 coupe ##urg ##cca ##uality 019 6g れる multi ##また ##ett em hey ##ani ##tax ##rma inside than 740 leonnhurt ##jin ict れた bird notes 200mm くの ##dical ##lli result 442 iu ee 438 smap gopro ##last yin pure 998 32g けた 5kg ##dan ##rame mama ##oot bean marketing ##hur 2l bella sync xuite ##ground 515 discuz ##getrelax ##ince ##bay ##5s cj ##イス gmat apt ##pass jing ##rix c4 rich ##とても niusnews ##ello bag 770 ##eting ##mobile 18 culture 015 ##のてすか 377 1020 area ##ience 616 details gp universal silver dit はお private ddd u11 kanshu ##ified fung ##nny dx ##520 tai 475 023 ##fr ##lean 3s ##pin 429 ##rin 25000 ly rick ##bility usb3 banner ##baru ##gion metal dt vdf 1871 karl qualcomm bear 1010 oldid ian jo ##tors population ##ernel 1882 mmorpg ##mv ##bike 603 ##© ww friend ##ager exhibition ##del ##pods fpx structure ##free ##tings kl ##rley ##copyright ##mma california 3400 orange yoga 4l canmake honey ##anda ##コメント 595 nikkie ##ルハイト dhl publishing ##mall ##gnet 20cm 513 ##クセス ##┅ e88 970 ##dog fishbase ##! ##" ### ##$ ##% ##& ##' ##( ##) ##* ##+ ##, ##- ##. ##/ ##: ##; ##< ##= ##> ##? ##@ ##[ ##\ ##] ##^ ##_ ##{ ##| ##} ##~ ##£ ##¤ ##¥ ##§ ##« ##± ##³ ##µ ##· ##¹ ##º ##» ##¼ ##ß ##æ ##÷ ##ø ##đ ##ŋ ##ɔ ##ə ##ɡ ##ʰ ##ˇ ##ˈ ##ˊ ##ˋ ##ˍ ##ː ##˙ ##˚ ##ˢ ##α ##β ##γ ##δ ##ε ##η ##θ ##ι ##κ ##λ ##μ ##ν ##ο ##π ##ρ ##ς ##σ ##τ ##υ ##φ ##χ ##ψ ##б ##в ##г ##д ##е ##ж ##з ##к ##л ##м ##н ##о ##п ##р ##с ##т ##у ##ф ##х ##ц ##ч ##ш ##ы ##ь ##і ##ا ##ب ##ة ##ت ##د ##ر ##س ##ع ##ل ##م ##ن ##ه ##و ##ي ##۩ ##ก ##ง ##น ##ม ##ย ##ร ##อ ##า ##เ ##๑ ##་ ##ღ ##ᄀ ##ᄁ ##ᄂ ##ᄃ ##ᄅ ##ᄆ ##ᄇ ##ᄈ ##ᄉ ##ᄋ ##ᄌ ##ᄎ ##ᄏ ##ᄐ ##ᄑ ##ᄒ ##ᅢ ##ᅣ ##ᅥ ##ᅦ ##ᅧ ##ᅨ ##ᅪ ##ᅬ ##ᅭ ##ᅮ ##ᅯ ##ᅲ ##ᅳ ##ᅴ ##ᆷ ##ᆸ ##ᆺ ##ᆻ ##ᗜ ##ᵃ ##ᵉ ##ᵍ ##ᵏ ##ᵐ ##ᵒ ##ᵘ ##‖ ##„ ##† ##• ##‥ ##‧ ## ##‰ ##′ ##″ ##‹ ##› ##※ ##‿ ##⁄ ##ⁱ ##⁺ ##ⁿ ##₁ ##₃ ##₄ ##€ ##№ ##ⅰ ##ⅱ ##ⅲ ##ⅳ ##ⅴ ##↔ ##↗ ##↘ ##⇒ ##∀ ##− ##∕ ##∙ ##√ ##∞ ##∟ ##∠ ##∣ ##∩ ##∮ ##∶ ##∼ ##∽ ##≈ ##≒ ##≡ ##≤ ##≥ ##≦ ##≧ ##≪ ##≫ ##⊙ ##⋅ ##⋈ ##⋯ ##⌒ ##① ##② ##③ ##④ ##⑤ ##⑥ ##⑦ ##⑧ ##⑨ ##⑩ ##⑴ ##⑵ ##⑶ ##⑷ ##⑸ ##⒈ ##⒉ ##⒊ ##⒋ ##ⓒ ##ⓔ ##ⓘ ##━ ##┃ ##┆ ##┊ ##┌ ##└ ##├ ##┣ ##═ ##║ ##╚ ##╞ ##╠ ##╭ ##╮ ##╯ ##╰ ##╱ ##╳ ##▂ ##▃ ##▅ ##▇ ##▉ ##▋ ##▌ ##▍ ##▎ ##□ ##▪ ##▫ ##▬ ##△ ##▶ ##► ##▽ ##◇ ##◕ ##◠ ##◢ ##◤ ##☀ ##☕ ##☞ ##☺ ##☼ ##♀ ##♂ ##♠ ##♡ ##♣ ##♦ ##♫ ##♬ ##✈ ##✔ ##✕ ##✖ ##✦ ##✨ ##✪ ##✰ ##✿ ##❀ ##➜ ##➤ ##⦿ ##、 ##。 ##〃 ##々 ##〇 ##〈 ##〉 ##《 ##》 ##「 ##」 ##『 ##』 ##【 ##】 ##〓 ##〔 ##〕 ##〖 ##〗 ##〜 ##〝 ##〞 ##ぃ ##ぇ ##ぬ ##ふ ##ほ ##む ##ゃ ##ゅ ##ゆ ##ょ ##゜ ##ゝ ##ァ ##ゥ ##エ ##ォ ##ケ ##サ ##セ ##ソ ##ッ ##ニ ##ヌ ##ネ ##ノ ##ヘ ##モ ##ャ ##ヤ ##ュ ##ユ ##ョ ##ヨ ##ワ ##ヲ ##・ ##ヽ ##ㄅ ##ㄆ ##ㄇ ##ㄉ ##ㄋ ##ㄌ ##ㄍ ##ㄎ ##ㄏ ##ㄒ ##ㄚ ##ㄛ ##ㄞ ##ㄟ ##ㄢ ##ㄤ ##ㄥ ##ㄧ ##ㄨ ##ㆍ ##㈦ ##㊣ ##㗎 ##一 ##丁 ##七 ##万 ##丈 ##三 ##上 ##下 ##不 ##与 ##丐 ##丑 ##专 ##且 ##丕 ##世 ##丘 ##丙 ##业 ##丛 ##东 ##丝 ##丞 ##丟 ##両 ##丢 ##两 ##严 ##並 ##丧 ##丨 ##个 ##丫 ##中 ##丰 ##串 ##临 ##丶 ##丸 ##丹 ##为 ##主 ##丼 ##丽 ##举 ##丿 ##乂 ##乃 ##久 ##么 ##义 ##之 ##乌 ##乍 ##乎 ##乏 ##乐 ##乒 ##乓 ##乔 ##乖 ##乗 ##乘 ##乙 ##乜 ##九 ##乞 ##也 ##习 ##乡 ##书 ##乩 ##买 ##乱 ##乳 ##乾 ##亀 ##亂 ##了 ##予 ##争 ##事 ##二 ##于 ##亏 ##云 ##互 ##五 ##井 ##亘 ##亙 ##亚 ##些 ##亜 ##亞 ##亟 ##亡 ##亢 ##交 ##亥 ##亦 ##产 ##亨 ##亩 ##享 ##京 ##亭 ##亮 ##亲 ##亳 ##亵 ##人 ##亿 ##什 ##仁 ##仃 ##仄 ##仅 ##仆 ##仇 ##今 ##介 ##仍 ##从 ##仏 ##仑 ##仓 ##仔 ##仕 ##他 ##仗 ##付 ##仙 ##仝 ##仞 ##仟 ##代 ##令 ##以 ##仨 ##仪 ##们 ##仮 ##仰 ##仲 ##件 ##价 ##任 ##份 ##仿 ##企 ##伉 ##伊 ##伍 ##伎 ##伏 ##伐 ##休 ##伕 ##众 ##优 ##伙 ##会 ##伝 ##伞 ##伟 ##传 ##伢 ##伤 ##伦 ##伪 ##伫 ##伯 ##估 ##伴 ##伶 ##伸 ##伺 ##似 ##伽 ##佃 ##但 ##佇 ##佈 ##位 ##低 ##住 ##佐 ##佑 ##体 ##佔 ##何 ##佗 ##佘 ##余 ##佚 ##佛 ##作 ##佝 ##佞 ##佟 ##你 ##佢 ##佣 ##佤 ##佥 ##佩 ##佬 ##佯 ##佰 ##佳 ##併 ##佶 ##佻 ##佼 ##使 ##侃 ##侄 ##來 ##侈 ##例 ##侍 ##侏 ##侑 ##侖 ##侗 ##供 ##依 ##侠 ##価 ##侣 ##侥 ##侦 ##侧 ##侨 ##侬 ##侮 ##侯 ##侵 ##侶 ##侷 ##便 ##係 ##促 ##俄 ##俊 ##俎 ##俏 ##俐 ##俑 ##俗 ##俘 ##俚 ##保 ##俞 ##俟 ##俠 ##信 ##俨 ##俩 ##俪 ##俬 ##俭 ##修 ##俯 ##俱 ##俳 ##俸 ##俺 ##俾 ##倆 ##倉 ##個 ##倌 ##倍 ##倏 ##們 ##倒 ##倔 ##倖 ##倘 ##候 ##倚 ##倜 ##借 ##倡 ##値 ##倦 ##倩 ##倪 ##倫 ##倬 ##倭 ##倶 ##债 ##值 ##倾 ##偃 ##假 ##偈 ##偉 ##偌 ##偎 ##偏 ##偕 ##做 ##停 ##健 ##側 ##偵 ##偶 ##偷 ##偻 ##偽 ##偿 ##傀 ##傅 ##傍 ##傑 ##傘 ##備 ##傚 ##傢 ##傣 ##傥 ##储 ##傩 ##催 ##傭 ##傲 ##傳 ##債 ##傷 ##傻 ##傾 ##僅 ##働 ##像 ##僑 ##僕 ##僖 ##僚 ##僥 ##僧 ##僭 ##僮 ##僱 ##僵 ##價 ##僻 ##儀 ##儂 ##億 ##儆 ##儉 ##儋 ##儒 ##儕 ##儘 ##償 ##儡 ##優 ##儲 ##儷 ##儼 ##儿 ##兀 ##允 ##元 ##兄 ##充 ##兆 ##兇 ##先 ##光 ##克 ##兌 ##免 ##児 ##兑 ##兒 ##兔 ##兖 ##党 ##兜 ##兢 ##入 ##內 ##全 ##兩 ##八 ##公 ##六 ##兮 ##兰 ##共 ##兲 ##关 ##兴 ##兵 ##其 ##具 ##典 ##兹 ##养 ##兼 ##兽 ##冀 ##内 ##円 ##冇 ##冈 ##冉 ##冊 ##册 ##再 ##冏 ##冒 ##冕 ##冗 ##写 ##军 ##农 ##冠 ##冢 ##冤 ##冥 ##冨 ##冪 ##冬 ##冯 ##冰 ##冲 ##决 ##况 ##冶 ##冷 ##冻 ##冼 ##冽 ##冾 ##净 ##凄 ##准 ##凇 ##凈 ##凉 ##凋 ##凌 ##凍 ##减 ##凑 ##凛 ##凜 ##凝 ##几 ##凡 ##凤 ##処 ##凪 ##凭 ##凯 ##凰 ##凱 ##凳 ##凶 ##凸 ##凹 ##出 ##击 ##函 ##凿 ##刀 ##刁 ##刃 ##分 ##切 ##刈 ##刊 ##刍 ##刎 ##刑 ##划 ##列 ##刘 ##则 ##刚 ##创 ##初 ##删 ##判 ##別 ##刨 ##利 ##刪 ##别 ##刮 ##到 ##制 ##刷 ##券 ##刹 ##刺 ##刻 ##刽 ##剁 ##剂 ##剃 ##則 ##剉 ##削 ##剋 ##剌 ##前 ##剎 ##剐 ##剑 ##剔 ##剖 ##剛 ##剜 ##剝 ##剣 ##剤 ##剥 ##剧 ##剩 ##剪 ##副 ##割 ##創 ##剷 ##剽 ##剿 ##劃 ##劇 ##劈 ##劉 ##劊 ##劍 ##劏 ##劑 ##力 ##劝 ##办 ##功 ##加 ##务 ##劣 ##动 ##助 ##努 ##劫 ##劭 ##励 ##劲 ##劳 ##労 ##劵 ##効 ##劾 ##势 ##勁 ##勃 ##勇 ##勉 ##勋 ##勐 ##勒 ##動 ##勖 ##勘 ##務 ##勛 ##勝 ##勞 ##募 ##勢 ##勤 ##勧 ##勳 ##勵 ##勸 ##勺 ##勻 ##勾 ##勿 ##匀 ##包 ##匆 ##匈 ##匍 ##匐 ##匕 ##化 ##北 ##匙 ##匝 ##匠 ##匡 ##匣 ##匪 ##匮 ##匯 ##匱 ##匹 ##区 ##医 ##匾 ##匿 ##區 ##十 ##千 ##卅 ##升 ##午 ##卉 ##半 ##卍 ##华 ##协 ##卑 ##卒 ##卓 ##協 ##单 ##卖 ##南 ##単 ##博 ##卜 ##卞 ##卟 ##占 ##卡 ##卢 ##卤 ##卦 ##卧 ##卫 ##卮 ##卯 ##印 ##危 ##即 ##却 ##卵 ##卷 ##卸 ##卻 ##卿 ##厂 ##厄 ##厅 ##历 ##厉 ##压 ##厌 ##厕 ##厘 ##厚 ##厝 ##原 ##厢 ##厥 ##厦 ##厨 ##厩 ##厭 ##厮 ##厲 ##厳 ##去 ##县 ##叁 ##参 ##參 ##又 ##叉 ##及 ##友 ##双 ##反 ##収 ##发 ##叔 ##取 ##受 ##变 ##叙 ##叛 ##叟 ##叠 ##叡 ##叢 ##口 ##古 ##句 ##另 ##叨 ##叩 ##只 ##叫 ##召 ##叭 ##叮 ##可 ##台 ##叱 ##史 ##右 ##叵 ##叶 ##号 ##司 ##叹 ##叻 ##叼 ##叽 ##吁 ##吃 ##各 ##吆 ##合 ##吉 ##吊 ##吋 ##同 ##名 ##后 ##吏 ##吐 ##向 ##吒 ##吓 ##吕 ##吖 ##吗 ##君 ##吝 ##吞 ##吟 ##吠 ##吡 ##否 ##吧 ##吨 ##吩 ##含 ##听 ##吭 ##吮 ##启 ##吱 ##吳 ##吴 ##吵 ##吶 ##吸 ##吹 ##吻 ##吼 ##吽 ##吾 ##呀 ##呂 ##呃 ##呆 ##呈 ##告 ##呋 ##呎 ##呐 ##呓 ##呕 ##呗 ##员 ##呛 ##呜 ##呢 ##呤 ##呦 ##周 ##呱 ##呲 ##味 ##呵 ##呷 ##呸 ##呻 ##呼 ##命 ##咀 ##咁 ##咂 ##咄 ##咆 ##咋 ##和 ##咎 ##咏 ##咐 ##咒 ##咔 ##咕 ##咖 ##咗 ##咘 ##咙 ##咚 ##咛 ##咣 ##咤 ##咦 ##咧 ##咨 ##咩 ##咪 ##咫 ##咬 ##咭 ##咯 ##咱 ##咲 ##咳 ##咸 ##咻 ##咽 ##咿 ##哀 ##品 ##哂 ##哄 ##哆 ##哇 ##哈 ##哉 ##哋 ##哌 ##响 ##哎 ##哏 ##哐 ##哑 ##哒 ##哔 ##哗 ##哟 ##員 ##哥 ##哦 ##哧 ##哨 ##哩 ##哪 ##哭 ##哮 ##哲 ##哺 ##哼 ##哽 ##唁 ##唄 ##唆 ##唇 ##唉 ##唏 ##唐 ##唑 ##唔 ##唠 ##唤 ##唧 ##唬 ##售 ##唯 ##唰 ##唱 ##唳 ##唷 ##唸 ##唾 ##啃 ##啄 ##商 ##啉 ##啊 ##問 ##啓 ##啕 ##啖 ##啜 ##啞 ##啟 ##啡 ##啤 ##啥 ##啦 ##啧 ##啪 ##啫 ##啬 ##啮 ##啰 ##啱 ##啲 ##啵 ##啶 ##啷 ##啸 ##啻 ##啼 ##啾 ##喀 ##喂 ##喃 ##善 ##喆 ##喇 ##喉 ##喊 ##喋 ##喎 ##喏 ##喔 ##喘 ##喙 ##喚 ##喜 ##喝 ##喟 ##喧 ##喪 ##喫 ##喬 ##單 ##喰 ##喱 ##喲 ##喳 ##喵 ##営 ##喷 ##喹 ##喺 ##喻 ##喽 ##嗅 ##嗆 ##嗇 ##嗎 ##嗑 ##嗒 ##嗓 ##嗔 ##嗖 ##嗚 ##嗜 ##嗝 ##嗟 ##嗡 ##嗣 ##嗤 ##嗦 ##嗨 ##嗪 ##嗬 ##嗯 ##嗰 ##嗲 ##嗳 ##嗶 ##嗷 ##嗽 ##嘀 ##嘅 ##嘆 ##嘈 ##嘉 ##嘌 ##嘍 ##嘎 ##嘔 ##嘖 ##嘗 ##嘘 ##嘚 ##嘛 ##嘜 ##嘞 ##嘟 ##嘢 ##嘣 ##嘤 ##嘧 ##嘩 ##嘭 ##嘮 ##嘯 ##嘰 ##嘱 ##嘲 ##嘴 ##嘶 ##嘸 ##嘹 ##嘻 ##嘿 ##噁 ##噌 ##噎 ##噓 ##噔 ##噗 ##噙 ##噜 ##噠 ##噢 ##噤 ##器 ##噩 ##噪 ##噬 ##噱 ##噴 ##噶 ##噸 ##噹 ##噻 ##噼 ##嚀 ##嚇 ##嚎 ##嚏 ##嚐 ##嚓 ##嚕 ##嚟 ##嚣 ##嚥 ##嚨 ##嚮 ##嚴 ##嚷 ##嚼 ##囂 ##囉 ##囊 ##囍 ##囑 ##囔 ##囗 ##囚 ##四 ##囝 ##回 ##囟 ##因 ##囡 ##团 ##団 ##囤 ##囧 ##囪 ##囫 ##园 ##困 ##囱 ##囲 ##図 ##围 ##囹 ##固 ##国 ##图 ##囿 ##圃 ##圄 ##圆 ##圈 ##國 ##圍 ##圏 ##園 ##圓 ##圖 ##團 ##圜 ##土 ##圣 ##圧 ##在 ##圩 ##圭 ##地 ##圳 ##场 ##圻 ##圾 ##址 ##坂 ##均 ##坊 ##坍 ##坎 ##坏 ##坐 ##坑 ##块 ##坚 ##坛 ##坝 ##坞 ##坟 ##坠 ##坡 ##坤 ##坦 ##坨 ##坪 ##坯 ##坳 ##坵 ##坷 ##垂 ##垃 ##垄 ##型 ##垒 ##垚 ##垛 ##垠 ##垢 ##垣 ##垦 ##垩 ##垫 ##垭 ##垮 ##垵 ##埂 ##埃 ##埋 ##城 ##埔 ##埕 ##埗 ##域 ##埠 ##埤 ##埵 ##執 ##埸 ##培 ##基 ##埼 ##堀 ##堂 ##堃 ##堅 ##堆 ##堇 ##堑 ##堕 ##堙 ##堡 ##堤 ##堪 ##堯 ##堰 ##報 ##場 ##堵 ##堺 ##堿 ##塊 ##塌 ##塑 ##塔 ##塗 ##塘 ##塚 ##塞 ##塢 ##塩 ##填 ##塬 ##塭 ##塵 ##塾 ##墀 ##境 ##墅 ##墉 ##墊 ##墒 ##墓 ##増 ##墘 ##墙 ##墜 ##增 ##墟 ##墨 ##墩 ##墮 ##墳 ##墻 ##墾 ##壁 ##壅 ##壆 ##壇 ##壊 ##壑 ##壓 ##壕 ##壘 ##壞 ##壟 ##壢 ##壤 ##壩 ##士 ##壬 ##壮 ##壯 ##声 ##売 ##壳 ##壶 ##壹 ##壺 ##壽 ##处 ##备 ##変 ##复 ##夏 ##夔 ##夕 ##外 ##夙 ##多 ##夜 ##够 ##夠 ##夢 ##夥 ##大 ##天 ##太 ##夫 ##夭 ##央 ##夯 ##失 ##头 ##夷 ##夸 ##夹 ##夺 ##夾 ##奂 ##奄 ##奇 ##奈 ##奉 ##奋 ##奎 ##奏 ##奐 ##契 ##奔 ##奕 ##奖 ##套 ##奘 ##奚 ##奠 ##奢 ##奥 ##奧 ##奪 ##奬 ##奮 ##女 ##奴 ##奶 ##奸 ##她 ##好 ##如 ##妃 ##妄 ##妆 ##妇 ##妈 ##妊 ##妍 ##妒 ##妓 ##妖 ##妘 ##妙 ##妝 ##妞 ##妣 ##妤 ##妥 ##妨 ##妩 ##妪 ##妮 ##妲 ##妳 ##妹 ##妻 ##妾 ##姆 ##姉 ##姊 ##始 ##姍 ##姐 ##姑 ##姒 ##姓 ##委 ##姗 ##姚 ##姜 ##姝 ##姣 ##姥 ##姦 ##姨 ##姪 ##姫 ##姬 ##姹 ##姻 ##姿 ##威 ##娃 ##娄 ##娅 ##娆 ##娇 ##娉 ##娑 ##娓 ##娘 ##娛 ##娜 ##娟 ##娠 ##娣 ##娥 ##娩 ##娱 ##娲 ##娴 ##娶 ##娼 ##婀 ##婁 ##婆 ##婉 ##婊 ##婕 ##婚 ##婢 ##婦 ##婧 ##婪 ##婭 ##婴 ##婵 ##婶 ##婷 ##婺 ##婿 ##媒 ##媚 ##媛 ##媞 ##媧 ##媲 ##媳 ##媽 ##媾 ##嫁 ##嫂 ##嫉 ##嫌 ##嫑 ##嫔 ##嫖 ##嫘 ##嫚 ##嫡 ##嫣 ##嫦 ##嫩 ##嫲 ##嫵 ##嫻 ##嬅 ##嬉 ##嬌 ##嬗 ##嬛 ##嬢 ##嬤 ##嬪 ##嬰 ##嬴 ##嬷 ##嬸 ##嬿 ##孀 ##孃 ##子 ##孑 ##孔 ##孕 ##孖 ##字 ##存 ##孙 ##孚 ##孛 ##孜 ##孝 ##孟 ##孢 ##季 ##孤 ##学 ##孩 ##孪 ##孫 ##孬 ##孰 ##孱 ##孳 ##孵 ##學 ##孺 ##孽 ##孿 ##宁 ##它 ##宅 ##宇 ##守 ##安 ##宋 ##完 ##宏 ##宓 ##宕 ##宗 ##官 ##宙 ##定 ##宛 ##宜 ##宝 ##实 ##実 ##宠 ##审 ##客 ##宣 ##室 ##宥 ##宦 ##宪 ##宫 ##宮 ##宰 ##害 ##宴 ##宵 ##家 ##宸 ##容 ##宽 ##宾 ##宿 ##寂 ##寄 ##寅 ##密 ##寇 ##富 ##寐 ##寒 ##寓 ##寛 ##寝 ##寞 ##察 ##寡 ##寢 ##寥 ##實 ##寧 ##寨 ##審 ##寫 ##寬 ##寮 ##寰 ##寵 ##寶 ##寸 ##对 ##寺 ##寻 ##导 ##対 ##寿 ##封 ##専 ##射 ##将 ##將 ##專 ##尉 ##尊 ##尋 ##對 ##導 ##小 ##少 ##尔 ##尕 ##尖 ##尘 ##尚 ##尝 ##尤 ##尧 ##尬 ##就 ##尴 ##尷 ##尸 ##尹 ##尺 ##尻 ##尼 ##尽 ##尾 ##尿 ##局 ##屁 ##层 ##屄 ##居 ##屆 ##屈 ##屉 ##届 ##屋 ##屌 ##屍 ##屎 ##屏 ##屐 ##屑 ##展 ##屜 ##属 ##屠 ##屡 ##屢 ##層 ##履 ##屬 ##屯 ##山 ##屹 ##屿 ##岀 ##岁 ##岂 ##岌 ##岐 ##岑 ##岔 ##岖 ##岗 ##岘 ##岙 ##岚 ##岛 ##岡 ##岩 ##岫 ##岬 ##岭 ##岱 ##岳 ##岷 ##岸 ##峇 ##峋 ##峒 ##峙 ##峡 ##峤 ##峥 ##峦 ##峨 ##峪 ##峭 ##峯 ##峰 ##峴 ##島 ##峻 ##峽 ##崁 ##崂 ##崆 ##崇 ##崎 ##崑 ##崔 ##崖 ##崗 ##崙 ##崛 ##崧 ##崩 ##崭 ##崴 ##崽 ##嵇 ##嵊 ##嵋 ##嵌 ##嵐 ##嵘 ##嵩 ##嵬 ##嵯 ##嶂 ##嶄 ##嶇 ##嶋 ##嶙 ##嶺 ##嶼 ##嶽 ##巅 ##巍 ##巒 ##巔 ##巖 ##川 ##州 ##巡 ##巢 ##工 ##左 ##巧 ##巨 ##巩 ##巫 ##差 ##己 ##已 ##巳 ##巴 ##巷 ##巻 ##巽 ##巾 ##巿 ##币 ##市 ##布 ##帅 ##帆 ##师 ##希 ##帐 ##帑 ##帕 ##帖 ##帘 ##帚 ##帛 ##帜 ##帝 ##帥 ##带 ##帧 ##師 ##席 ##帮 ##帯 ##帰 ##帳 ##帶 ##帷 ##常 ##帼 ##帽 ##幀 ##幂 ##幄 ##幅 ##幌 ##幔 ##幕 ##幟 ##幡 ##幢 ##幣 ##幫 ##干 ##平 ##年 ##并 ##幸 ##幹 ##幺 ##幻 ##幼 ##幽 ##幾 ##广 ##庁 ##広 ##庄 ##庆 ##庇 ##床 ##序 ##庐 ##库 ##应 ##底 ##庖 ##店 ##庙 ##庚 ##府 ##庞 ##废 ##庠 ##度 ##座 ##庫 ##庭 ##庵 ##庶 ##康 ##庸 ##庹 ##庾 ##廁 ##廂 ##廃 ##廈 ##廉 ##廊 ##廓 ##廖 ##廚 ##廝 ##廟 ##廠 ##廢 ##廣 ##廬 ##廳 ##延 ##廷 ##建 ##廿 ##开 ##弁 ##异 ##弃 ##弄 ##弈 ##弊 ##弋 ##式 ##弑 ##弒 ##弓 ##弔 ##引 ##弗 ##弘 ##弛 ##弟 ##张 ##弥 ##弦 ##弧 ##弩 ##弭 ##弯 ##弱 ##張 ##強 ##弹 ##强 ##弼 ##弾 ##彅 ##彆 ##彈 ##彌 ##彎 ##归 ##当 ##录 ##彗 ##彙 ##彝 ##形 ##彤 ##彥 ##彦 ##彧 ##彩 ##彪 ##彫 ##彬 ##彭 ##彰 ##影 ##彷 ##役 ##彻 ##彼 ##彿 ##往 ##征 ##径 ##待 ##徇 ##很 ##徉 ##徊 ##律 ##後 ##徐 ##徑 ##徒 ##従 ##徕 ##得 ##徘 ##徙 ##徜 ##從 ##徠 ##御 ##徨 ##復 ##循 ##徬 ##微 ##徳 ##徴 ##徵 ##德 ##徹 ##徼 ##徽 ##心 ##必 ##忆 ##忌 ##忍 ##忏 ##忐 ##忑 ##忒 ##忖 ##志 ##忘 ##忙 ##応 ##忠 ##忡 ##忤 ##忧 ##忪 ##快 ##忱 ##念 ##忻 ##忽 ##忿 ##怀 ##态 ##怂 ##怅 ##怆 ##怎 ##怏 ##怒 ##怔 ##怕 ##怖 ##怙 ##怜 ##思 ##怠 ##怡 ##急 ##怦 ##性 ##怨 ##怪 ##怯 ##怵 ##总 ##怼 ##恁 ##恃 ##恆 ##恋 ##恍 ##恐 ##恒 ##恕 ##恙 ##恚 ##恢 ##恣 ##恤 ##恥 ##恨 ##恩 ##恪 ##恫 ##恬 ##恭 ##息 ##恰 ##恳 ##恵 ##恶 ##恸 ##恺 ##恻 ##恼 ##恿 ##悄 ##悅 ##悉 ##悌 ##悍 ##悔 ##悖 ##悚 ##悟 ##悠 ##患 ##悦 ##您 ##悩 ##悪 ##悬 ##悯 ##悱 ##悲 ##悴 ##悵 ##悶 ##悸 ##悻 ##悼 ##悽 ##情 ##惆 ##惇 ##惊 ##惋 ##惑 ##惕 ##惘 ##惚 ##惜 ##惟 ##惠 ##惡 ##惦 ##惧 ##惨 ##惩 ##惫 ##惬 ##惭 ##惮 ##惯 ##惰 ##惱 ##想 ##惴 ##惶 ##惹 ##惺 ##愁 ##愆 ##愈 ##愉 ##愍 ##意 ##愕 ##愚 ##愛 ##愜 ##感 ##愣 ##愤 ##愧 ##愫 ##愷 ##愿 ##慄 ##慈 ##態 ##慌 ##慎 ##慑 ##慕 ##慘 ##慚 ##慟 ##慢 ##慣 ##慧 ##慨 ##慫 ##慮 ##慰 ##慳 ##慵 ##慶 ##慷 ##慾 ##憂 ##憊 ##憋 ##憎 ##憐 ##憑 ##憔 ##憚 ##憤 ##憧 ##憨 ##憩 ##憫 ##憬 ##憲 ##憶 ##憾 ##懂 ##懇 ##懈 ##應 ##懊 ##懋 ##懑 ##懒 ##懦 ##懲 ##懵 ##懶 ##懷 ##懸 ##懺 ##懼 ##懾 ##懿 ##戀 ##戈 ##戊 ##戌 ##戍 ##戎 ##戏 ##成 ##我 ##戒 ##戕 ##或 ##战 ##戚 ##戛 ##戟 ##戡 ##戦 ##截 ##戬 ##戮 ##戰 ##戲 ##戳 ##戴 ##戶 ##户 ##戸 ##戻 ##戾 ##房 ##所 ##扁 ##扇 ##扈 ##扉 ##手 ##才 ##扎 ##扑 ##扒 ##打 ##扔 ##払 ##托 ##扛 ##扣 ##扦 ##执 ##扩 ##扪 ##扫 ##扬 ##扭 ##扮 ##扯 ##扰 ##扱 ##扳 ##扶 ##批 ##扼 ##找 ##承 ##技 ##抄 ##抉 ##把 ##抑 ##抒 ##抓 ##投 ##抖 ##抗 ##折 ##抚 ##抛 ##抜 ##択 ##抟 ##抠 ##抡 ##抢 ##护 ##报 ##抨 ##披 ##抬 ##抱 ##抵 ##抹 ##押 ##抽 ##抿 ##拂 ##拄 ##担 ##拆 ##拇 ##拈 ##拉 ##拋 ##拌 ##拍 ##拎 ##拐 ##拒 ##拓 ##拔 ##拖 ##拗 ##拘 ##拙 ##拚 ##招 ##拜 ##拟 ##拡 ##拢 ##拣 ##拥 ##拦 ##拧 ##拨 ##择 ##括 ##拭 ##拮 ##拯 ##拱 ##拳 ##拴 ##拷 ##拼 ##拽 ##拾 ##拿 ##持 ##挂 ##指 ##挈 ##按 ##挎 ##挑 ##挖 ##挙 ##挚 ##挛 ##挝 ##挞 ##挟 ##挠 ##挡 ##挣 ##挤 ##挥 ##挨 ##挪 ##挫 ##振 ##挲 ##挹 ##挺 ##挽 ##挾 ##捂 ##捅 ##捆 ##捉 ##捋 ##捌 ##捍 ##捎 ##捏 ##捐 ##捕 ##捞 ##损 ##捡 ##换 ##捣 ##捧 ##捨 ##捩 ##据 ##捱 ##捲 ##捶 ##捷 ##捺 ##捻 ##掀 ##掂 ##掃 ##掇 ##授 ##掉 ##掌 ##掏 ##掐 ##排 ##掖 ##掘 ##掙 ##掛 ##掠 ##採 ##探 ##掣 ##接 ##控 ##推 ##掩 ##措 ##掬 ##掰 ##掲 ##掳 ##掴 ##掷 ##掸 ##掺 ##揀 ##揃 ##揄 ##揆 ##揉 ##揍 ##描 ##提 ##插 ##揖 ##揚 ##換 ##握 ##揣 ##揩 ##揪 ##揭 ##揮 ##援 ##揶 ##揸 ##揹 ##揽 ##搀 ##搁 ##搂 ##搅 ##損 ##搏 ##搐 ##搓 ##搔 ##搖 ##搗 ##搜 ##搞 ##搡 ##搪 ##搬 ##搭 ##搵 ##搶 ##携 ##搽 ##摀 ##摁 ##摄 ##摆 ##摇 ##摈 ##摊 ##摒 ##摔 ##摘 ##摞 ##摟 ##摧 ##摩 ##摯 ##摳 ##摸 ##摹 ##摺 ##摻 ##撂 ##撃 ##撅 ##撇 ##撈 ##撐 ##撑 ##撒 ##撓 ##撕 ##撚 ##撞 ##撤 ##撥 ##撩 ##撫 ##撬 ##播 ##撮 ##撰 ##撲 ##撵 ##撷 ##撸 ##撻 ##撼 ##撿 ##擀 ##擁 ##擂 ##擄 ##擅 ##擇 ##擊 ##擋 ##操 ##擎 ##擒 ##擔 ##擘 ##據 ##擞 ##擠 ##擡 ##擢 ##擦 ##擬 ##擰 ##擱 ##擲 ##擴 ##擷 ##擺 ##擼 ##擾 ##攀 ##攏 ##攒 ##攔 ##攘 ##攙 ##攜 ##攝 ##攞 ##攢 ##攣 ##攤 ##攥 ##攪 ##攫 ##攬 ##支 ##收 ##攸 ##改 ##攻 ##放 ##政 ##故 ##效 ##敌 ##敍 ##敎 ##敏 ##救 ##敕 ##敖 ##敗 ##敘 ##教 ##敛 ##敝 ##敞 ##敢 ##散 ##敦 ##敬 ##数 ##敲 ##整 ##敵 ##敷 ##數 ##斂 ##斃 ##文 ##斋 ##斌 ##斎 ##斐 ##斑 ##斓 ##斗 ##料 ##斛 ##斜 ##斟 ##斡 ##斤 ##斥 ##斧 ##斩 ##斫 ##斬 ##断 ##斯 ##新 ##斷 ##方 ##於 ##施 ##旁 ##旃 ##旅 ##旋 ##旌 ##旎 ##族 ##旖 ##旗 ##无 ##既 ##日 ##旦 ##旧 ##旨 ##早 ##旬 ##旭 ##旮 ##旱 ##时 ##旷 ##旺 ##旻 ##昀 ##昂 ##昆 ##昇 ##昉 ##昊 ##昌 ##明 ##昏 ##易 ##昔 ##昕 ##昙 ##星 ##映 ##春 ##昧 ##昨 ##昭 ##是 ##昱 ##昴 ##昵 ##昶 ##昼 ##显 ##晁 ##時 ##晃 ##晉 ##晋 ##晌 ##晏 ##晒 ##晓 ##晔 ##晕 ##晖 ##晗 ##晚 ##晝 ##晞 ##晟 ##晤 ##晦 ##晨 ##晩 ##普 ##景 ##晰 ##晴 ##晶 ##晷 ##智 ##晾 ##暂 ##暄 ##暇 ##暈 ##暉 ##暌 ##暐 ##暑 ##暖 ##暗 ##暝 ##暢 ##暧 ##暨 ##暫 ##暮 ##暱 ##暴 ##暸 ##暹 ##曄 ##曆 ##曇 ##曉 ##曖 ##曙 ##曜 ##曝 ##曠 ##曦 ##曬 ##曰 ##曲 ##曳 ##更 ##書 ##曹 ##曼 ##曾 ##替 ##最 ##會 ##月 ##有 ##朋 ##服 ##朐 ##朔 ##朕 ##朗 ##望 ##朝 ##期 ##朦 ##朧 ##木 ##未 ##末 ##本 ##札 ##朮 ##术 ##朱 ##朴 ##朵 ##机 ##朽 ##杀 ##杂 ##权 ##杆 ##杈 ##杉 ##李 ##杏 ##材 ##村 ##杓 ##杖 ##杜 ##杞 ##束 ##杠 ##条 ##来 ##杨 ##杭 ##杯 ##杰 ##東 ##杳 ##杵 ##杷 ##杼 ##松 ##板 ##极 ##构 ##枇 ##枉 ##枋 ##析 ##枕 ##林 ##枚 ##果 ##枝 ##枢 ##枣 ##枪 ##枫 ##枭 ##枯 ##枰 ##枱 ##枳 ##架 ##枷 ##枸 ##柄 ##柏 ##某 ##柑 ##柒 ##染 ##柔 ##柘 ##柚 ##柜 ##柞 ##柠 ##柢 ##查 ##柩 ##柬 ##柯 ##柱 ##柳 ##柴 ##柵 ##査 ##柿 ##栀 ##栃 ##栄 ##栅 ##标 ##栈 ##栉 ##栋 ##栎 ##栏 ##树 ##栓 ##栖 ##栗 ##校 ##栩 ##株 ##样 ##核 ##根 ##格 ##栽 ##栾 ##桀 ##桁 ##桂 ##桃 ##桅 ##框 ##案 ##桉 ##桌 ##桎 ##桐 ##桑 ##桓 ##桔 ##桜 ##桠 ##桡 ##桢 ##档 ##桥 ##桦 ##桧 ##桨 ##桩 ##桶 ##桿 ##梁 ##梅 ##梆 ##梏 ##梓 ##梗 ##條 ##梟 ##梢 ##梦 ##梧 ##梨 ##梭 ##梯 ##械 ##梳 ##梵 ##梶 ##检 ##棂 ##棄 ##棉 ##棋 ##棍 ##棒 ##棕 ##棗 ##棘 ##棚 ##棟 ##棠 ##棣 ##棧 ##森 ##棱 ##棲 ##棵 ##棹 ##棺 ##椁 ##椅 ##椋 ##植 ##椎 ##椒 ##検 ##椪 ##椭 ##椰 ##椹 ##椽 ##椿 ##楂 ##楊 ##楓 ##楔 ##楚 ##楝 ##楞 ##楠 ##楣 ##楨 ##楫 ##業 ##楮 ##極 ##楷 ##楸 ##楹 ##楼 ##楽 ##概 ##榄 ##榆 ##榈 ##榉 ##榔 ##榕 ##榖 ##榛 ##榜 ##榨 ##榫 ##榭 ##榮 ##榱 ##榴 ##榷 ##榻 ##槁 ##槃 ##構 ##槌 ##槍 ##槎 ##槐 ##槓 ##様 ##槛 ##槟 ##槤 ##槭 ##槲 ##槳 ##槻 ##槽 ##槿 ##樁 ##樂 ##樊 ##樑 ##樓 ##標 ##樞 ##樟 ##模 ##樣 ##権 ##横 ##樫 ##樯 ##樱 ##樵 ##樸 ##樹 ##樺 ##樽 ##樾 ##橄 ##橇 ##橋 ##橐 ##橘 ##橙 ##機 ##橡 ##橢 ##橫 ##橱 ##橹 ##橼 ##檀 ##檄 ##檎 ##檐 ##檔 ##檗 ##檜 ##檢 ##檬 ##檯 ##檳 ##檸 ##檻 ##櫃 ##櫚 ##櫛 ##櫥 ##櫸 ##櫻 ##欄 ##權 ##欒 ##欖 ##欠 ##次 ##欢 ##欣 ##欧 ##欲 ##欸 ##欺 ##欽 ##款 ##歆 ##歇 ##歉 ##歌 ##歎 ##歐 ##歓 ##歙 ##歛 ##歡 ##止 ##正 ##此 ##步 ##武 ##歧 ##歩 ##歪 ##歯 ##歲 ##歳 ##歴 ##歷 ##歸 ##歹 ##死 ##歼 ##殁 ##殃 ##殆 ##殇 ##殉 ##殊 ##残 ##殒 ##殓 ##殖 ##殘 ##殞 ##殡 ##殤 ##殭 ##殯 ##殲 ##殴 ##段 ##殷 ##殺 ##殼 ##殿 ##毀 ##毁 ##毂 ##毅 ##毆 ##毋 ##母 ##毎 ##每 ##毒 ##毓 ##比 ##毕 ##毗 ##毘 ##毙 ##毛 ##毡 ##毫 ##毯 ##毽 ##氈 ##氏 ##氐 ##民 ##氓 ##气 ##氖 ##気 ##氙 ##氛 ##氟 ##氡 ##氢 ##氣 ##氤 ##氦 ##氧 ##氨 ##氪 ##氫 ##氮 ##氯 ##氰 ##氲 ##水 ##氷 ##永 ##氹 ##氾 ##汀 ##汁 ##求 ##汆 ##汇 ##汉 ##汎 ##汐 ##汕 ##汗 ##汙 ##汛 ##汝 ##汞 ##江 ##池 ##污 ##汤 ##汨 ##汩 ##汪 ##汰 ##汲 ##汴 ##汶 ##汹 ##決 ##汽 ##汾 ##沁 ##沂 ##沃 ##沅 ##沈 ##沉 ##沌 ##沏 ##沐 ##沒 ##沓 ##沖 ##沙 ##沛 ##沟 ##没 ##沢 ##沣 ##沥 ##沦 ##沧 ##沪 ##沫 ##沭 ##沮 ##沱 ##河 ##沸 ##油 ##治 ##沼 ##沽 ##沾 ##沿 ##況 ##泄 ##泉 ##泊 ##泌 ##泓 ##法 ##泗 ##泛 ##泞 ##泠 ##泡 ##波 ##泣 ##泥 ##注 ##泪 ##泫 ##泮 ##泯 ##泰 ##泱 ##泳 ##泵 ##泷 ##泸 ##泻 ##泼 ##泽 ##泾 ##洁 ##洄 ##洋 ##洒 ##洗 ##洙 ##洛 ##洞 ##津 ##洩 ##洪 ##洮 ##洱 ##洲 ##洵 ##洶 ##洸 ##洹 ##活 ##洼 ##洽 ##派 ##流 ##浃 ##浄 ##浅 ##浆 ##浇 ##浊 ##测 ##济 ##浏 ##浑 ##浒 ##浓 ##浔 ##浙 ##浚 ##浜 ##浣 ##浦 ##浩 ##浪 ##浬 ##浮 ##浯 ##浴 ##海 ##浸 ##涂 ##涅 ##涇 ##消 ##涉 ##涌 ##涎 ##涓 ##涔 ##涕 ##涙 ##涛 ##涝 ##涞 ##涟 ##涠 ##涡 ##涣 ##涤 ##润 ##涧 ##涨 ##涩 ##涪 ##涮 ##涯 ##液 ##涵 ##涸 ##涼 ##涿 ##淀 ##淄 ##淅 ##淆 ##淇 ##淋 ##淌 ##淑 ##淒 ##淖 ##淘 ##淙 ##淚 ##淞 ##淡 ##淤 ##淦 ##淨 ##淩 ##淪 ##淫 ##淬 ##淮 ##深 ##淳 ##淵 ##混 ##淹 ##淺 ##添 ##淼 ##清 ##済 ##渉 ##渊 ##渋 ##渍 ##渎 ##渐 ##渔 ##渗 ##渙 ##渚 ##減 ##渝 ##渠 ##渡 ##渣 ##渤 ##渥 ##渦 ##温 ##測 ##渭 ##港 ##渲 ##渴 ##游 ##渺 ##渾 ##湃 ##湄 ##湊 ##湍 ##湖 ##湘 ##湛 ##湟 ##湧 ##湫 ##湮 ##湯 ##湳 ##湾 ##湿 ##満 ##溃 ##溅 ##溉 ##溏 ##源 ##準 ##溜 ##溝 ##溟 ##溢 ##溥 ##溧 ##溪 ##溫 ##溯 ##溱 ##溴 ##溶 ##溺 ##溼 ##滁 ##滂 ##滄 ##滅 ##滇 ##滋 ##滌 ##滑 ##滓 ##滔 ##滕 ##滙 ##滚 ##滝 ##滞 ##滟 ##满 ##滢 ##滤 ##滥 ##滦 ##滨 ##滩 ##滬 ##滯 ##滲 ##滴 ##滷 ##滸 ##滾 ##滿 ##漁 ##漂 ##漆 ##漉 ##漏 ##漓 ##演 ##漕 ##漠 ##漢 ##漣 ##漩 ##漪 ##漫 ##漬 ##漯 ##漱 ##漲 ##漳 ##漸 ##漾 ##漿 ##潆 ##潇 ##潋 ##潍 ##潑 ##潔 ##潘 ##潛 ##潜 ##潞 ##潟 ##潢 ##潤 ##潦 ##潧 ##潭 ##潮 ##潰 ##潴 ##潸 ##潺 ##潼 ##澀 ##澄 ##澆 ##澈 ##澍 ##澎 ##澗 ##澜 ##澡 ##澤 ##澧 ##澱 ##澳 ##澹 ##激 ##濁 ##濂 ##濃 ##濑 ##濒 ##濕 ##濘 ##濛 ##濟 ##濠 ##濡 ##濤 ##濫 ##濬 ##濮 ##濯 ##濱 ##濺 ##濾 ##瀅 ##瀆 ##瀉 ##瀋 ##瀏 ##瀑 ##瀕 ##瀘 ##瀚 ##瀛 ##瀝 ##瀞 ##瀟 ##瀧 ##瀨 ##瀬 ##瀰 ##瀾 ##灌 ##灏 ##灑 ##灘 ##灝 ##灞 ##灣 ##火 ##灬 ##灭 ##灯 ##灰 ##灵 ##灶 ##灸 ##灼 ##災 ##灾 ##灿 ##炀 ##炁 ##炅 ##炉 ##炊 ##炎 ##炒 ##炔 ##炕 ##炖 ##炙 ##炜 ##炫 ##炬 ##炭 ##炮 ##炯 ##炳 ##炷 ##炸 ##点 ##為 ##炼 ##炽 ##烁 ##烂 ##烃 ##烈 ##烊 ##烏 ##烘 ##烙 ##烛 ##烟 ##烤 ##烦 ##烧 ##烨 ##烩 ##烫 ##烬 ##热 ##烯 ##烷 ##烹 ##烽 ##焉 ##焊 ##焕 ##焖 ##焗 ##焘 ##焙 ##焚 ##焜 ##無 ##焦 ##焯 ##焰 ##焱 ##然 ##焼 ##煅 ##煉 ##煊 ##煌 ##煎 ##煒 ##煖 ##煙 ##煜 ##煞 ##煤 ##煥 ##煦 ##照 ##煨 ##煩 ##煮 ##煲 ##煸 ##煽 ##熄 ##熊 ##熏 ##熒 ##熔 ##熙 ##熟 ##熠 ##熨 ##熬 ##熱 ##熵 ##熹 ##熾 ##燁 ##燃 ##燄 ##燈 ##燉 ##燊 ##燎 ##燒 ##燔 ##燕 ##燙 ##燜 ##營 ##燥 ##燦 ##燧 ##燭 ##燮 ##燴 ##燻 ##燼 ##燿 ##爆 ##爍 ##爐 ##爛 ##爪 ##爬 ##爭 ##爰 ##爱 ##爲 ##爵 ##父 ##爷 ##爸 ##爹 ##爺 ##爻 ##爽 ##爾 ##牆 ##片 ##版 ##牌 ##牍 ##牒 ##牙 ##牛 ##牝 ##牟 ##牠 ##牡 ##牢 ##牦 ##牧 ##物 ##牯 ##牲 ##牴 ##牵 ##特 ##牺 ##牽 ##犀 ##犁 ##犄 ##犊 ##犍 ##犒 ##犢 ##犧 ##犬 ##犯 ##状 ##犷 ##犸 ##犹 ##狀 ##狂 ##狄 ##狈 ##狎 ##狐 ##狒 ##狗 ##狙 ##狞 ##狠 ##狡 ##狩 ##独 ##狭 ##狮 ##狰 ##狱 ##狸 ##狹 ##狼 ##狽 ##猎 ##猕 ##猖 ##猗 ##猙 ##猛 ##猜 ##猝 ##猥 ##猩 ##猪 ##猫 ##猬 ##献 ##猴 ##猶 ##猷 ##猾 ##猿 ##獄 ##獅 ##獎 ##獐 ##獒 ##獗 ##獠 ##獣 ##獨 ##獭 ##獰 ##獲 ##獵 ##獷 ##獸 ##獺 ##獻 ##獼 ##獾 ##玄 ##率 ##玉 ##王 ##玑 ##玖 ##玛 ##玟 ##玠 ##玥 ##玩 ##玫 ##玮 ##环 ##现 ##玲 ##玳 ##玷 ##玺 ##玻 ##珀 ##珂 ##珅 ##珈 ##珉 ##珊 ##珍 ##珏 ##珐 ##珑 ##珙 ##珞 ##珠 ##珣 ##珥 ##珩 ##珪 ##班 ##珮 ##珲 ##珺 ##現 ##球 ##琅 ##理 ##琇 ##琉 ##琊 ##琍 ##琏 ##琐 ##琛 ##琢 ##琥 ##琦 ##琨 ##琪 ##琬 ##琮 ##琰 ##琲 ##琳 ##琴 ##琵 ##琶 ##琺 ##琼 ##瑀 ##瑁 ##瑄 ##瑋 ##瑕 ##瑗 ##瑙 ##瑚 ##瑛 ##瑜 ##瑞 ##瑟 ##瑠 ##瑣 ##瑤 ##瑩 ##瑪 ##瑯 ##瑰 ##瑶 ##瑾 ##璀 ##璁 ##璃 ##璇 ##璉 ##璋 ##璎 ##璐 ##璜 ##璞 ##璟 ##璧 ##璨 ##環 ##璽 ##璿 ##瓊 ##瓏 ##瓒 ##瓜 ##瓢 ##瓣 ##瓤 ##瓦 ##瓮 ##瓯 ##瓴 ##瓶 ##瓷 ##甄 ##甌 ##甕 ##甘 ##甙 ##甚 ##甜 ##生 ##產 ##産 ##甥 ##甦 ##用 ##甩 ##甫 ##甬 ##甭 ##甯 ##田 ##由 ##甲 ##申 ##电 ##男 ##甸 ##町 ##画 ##甾 ##畀 ##畅 ##界 ##畏 ##畑 ##畔 ##留 ##畜 ##畝 ##畢 ##略 ##畦 ##番 ##畫 ##異 ##畲 ##畳 ##畴 ##當 ##畸 ##畹 ##畿 ##疆 ##疇 ##疊 ##疏 ##疑 ##疔 ##疖 ##疗 ##疙 ##疚 ##疝 ##疟 ##疡 ##疣 ##疤 ##疥 ##疫 ##疮 ##疯 ##疱 ##疲 ##疳 ##疵 ##疸 ##疹 ##疼 ##疽 ##疾 ##痂 ##病 ##症 ##痈 ##痉 ##痊 ##痍 ##痒 ##痔 ##痕 ##痘 ##痙 ##痛 ##痞 ##痠 ##痢 ##痣 ##痤 ##痧 ##痨 ##痪 ##痫 ##痰 ##痱 ##痴 ##痹 ##痺 ##痼 ##痿 ##瘀 ##瘁 ##瘋 ##瘍 ##瘓 ##瘘 ##瘙 ##瘟 ##瘠 ##瘡 ##瘢 ##瘤 ##瘦 ##瘧 ##瘩 ##瘪 ##瘫 ##瘴 ##瘸 ##瘾 ##療 ##癇 ##癌 ##癒 ##癖 ##癜 ##癞 ##癡 ##癢 ##癣 ##癥 ##癫 ##癬 ##癮 ##癱 ##癲 ##癸 ##発 ##登 ##發 ##白 ##百 ##皂 ##的 ##皆 ##皇 ##皈 ##皋 ##皎 ##皑 ##皓 ##皖 ##皙 ##皚 ##皮 ##皰 ##皱 ##皴 ##皺 ##皿 ##盂 ##盃 ##盅 ##盆 ##盈 ##益 ##盎 ##盏 ##盐 ##监 ##盒 ##盔 ##盖 ##盗 ##盘 ##盛 ##盜 ##盞 ##盟 ##盡 ##監 ##盤 ##盥 ##盧 ##盪 ##目 ##盯 ##盱 ##盲 ##直 ##相 ##盹 ##盼 ##盾 ##省 ##眈 ##眉 ##看 ##県 ##眙 ##眞 ##真 ##眠 ##眦 ##眨 ##眩 ##眯 ##眶 ##眷 ##眸 ##眺 ##眼 ##眾 ##着 ##睁 ##睇 ##睏 ##睐 ##睑 ##睛 ##睜 ##睞 ##睡 ##睢 ##督 ##睥 ##睦 ##睨 ##睪 ##睫 ##睬 ##睹 ##睽 ##睾 ##睿 ##瞄 ##瞅 ##瞇 ##瞋 ##瞌 ##瞎 ##瞑 ##瞒 ##瞓 ##瞞 ##瞟 ##瞠 ##瞥 ##瞧 ##瞩 ##瞪 ##瞬 ##瞭 ##瞰 ##瞳 ##瞻 ##瞼 ##瞿 ##矇 ##矍 ##矗 ##矚 ##矛 ##矜 ##矢 ##矣 ##知 ##矩 ##矫 ##短 ##矮 ##矯 ##石 ##矶 ##矽 ##矾 ##矿 ##码 ##砂 ##砌 ##砍 ##砒 ##研 ##砖 ##砗 ##砚 ##砝 ##砣 ##砥 ##砧 ##砭 ##砰 ##砲 ##破 ##砷 ##砸 ##砺 ##砼 ##砾 ##础 ##硅 ##硐 ##硒 ##硕 ##硝 ##硫 ##硬 ##确 ##硯 ##硼 ##碁 ##碇 ##碉 ##碌 ##碍 ##碎 ##碑 ##碓 ##碗 ##碘 ##碚 ##碛 ##碟 ##碣 ##碧 ##碩 ##碰 ##碱 ##碳 ##碴 ##確 ##碼 ##碾 ##磁 ##磅 ##磊 ##磋 ##磐 ##磕 ##磚 ##磡 ##磨 ##磬 ##磯 ##磲 ##磷 ##磺 ##礁 ##礎 ##礙 ##礡 ##礦 ##礪 ##礫 ##礴 ##示 ##礼 ##社 ##祀 ##祁 ##祂 ##祇 ##祈 ##祉 ##祎 ##祐 ##祕 ##祖 ##祗 ##祚 ##祛 ##祜 ##祝 ##神 ##祟 ##祠 ##祢 ##祥 ##票 ##祭 ##祯 ##祷 ##祸 ##祺 ##祿 ##禀 ##禁 ##禄 ##禅 ##禍 ##禎 ##福 ##禛 ##禦 ##禧 ##禪 ##禮 ##禱 ##禹 ##禺 ##离 ##禽 ##禾 ##禿 ##秀 ##私 ##秃 ##秆 ##秉 ##秋 ##种 ##科 ##秒 ##秘 ##租 ##秣 ##秤 ##秦 ##秧 ##秩 ##秭 ##积 ##称 ##秸 ##移 ##秽 ##稀 ##稅 ##程 ##稍 ##税 ##稔 ##稗 ##稚 ##稜 ##稞 ##稟 ##稠 ##稣 ##種 ##稱 ##稲 ##稳 ##稷 ##稹 ##稻 ##稼 ##稽 ##稿 ##穀 ##穂 ##穆 ##穌 ##積 ##穎 ##穗 ##穢 ##穩 ##穫 ##穴 ##究 ##穷 ##穹 ##空 ##穿 ##突 ##窃 ##窄 ##窈 ##窍 ##窑 ##窒 ##窓 ##窕 ##窖 ##窗 ##窘 ##窜 ##窝 ##窟 ##窠 ##窥 ##窦 ##窨 ##窩 ##窪 ##窮 ##窯 ##窺 ##窿 ##竄 ##竅 ##竇 ##竊 ##立 ##竖 ##站 ##竜 ##竞 ##竟 ##章 ##竣 ##童 ##竭 ##端 ##競 ##竹 ##竺 ##竽 ##竿 ##笃 ##笆 ##笈 ##笋 ##笏 ##笑 ##笔 ##笙 ##笛 ##笞 ##笠 ##符 ##笨 ##第 ##笹 ##笺 ##笼 ##筆 ##等 ##筊 ##筋 ##筍 ##筏 ##筐 ##筑 ##筒 ##答 ##策 ##筛 ##筝 ##筠 ##筱 ##筲 ##筵 ##筷 ##筹 ##签 ##简 ##箇 ##箋 ##箍 ##箏 ##箐 ##箔 ##箕 ##算 ##箝 ##管 ##箩 ##箫 ##箭 ##箱 ##箴 ##箸 ##節 ##篁 ##範 ##篆 ##篇 ##築 ##篑 ##篓 ##篙 ##篝 ##篠 ##篡 ##篤 ##篩 ##篪 ##篮 ##篱 ##篷 ##簇 ##簌 ##簍 ##簡 ##簦 ##簧 ##簪 ##簫 ##簷 ##簸 ##簽 ##簾 ##簿 ##籁 ##籃 ##籌 ##籍 ##籐 ##籟 ##籠 ##籤 ##籬 ##籮 ##籲 ##米 ##类 ##籼 ##籽 ##粄 ##粉 ##粑 ##粒 ##粕 ##粗 ##粘 ##粟 ##粤 ##粥 ##粧 ##粪 ##粮 ##粱 ##粲 ##粳 ##粵 ##粹 ##粼 ##粽 ##精 ##粿 ##糅 ##糊 ##糍 ##糕 ##糖 ##糗 ##糙 ##糜 ##糞 ##糟 ##糠 ##糧 ##糬 ##糯 ##糰 ##糸 ##系 ##糾 ##紀 ##紂 ##約 ##紅 ##紉 ##紊 ##紋 ##納 ##紐 ##紓 ##純 ##紗 ##紘 ##紙 ##級 ##紛 ##紜 ##素 ##紡 ##索 ##紧 ##紫 ##紮 ##累 ##細 ##紳 ##紹 ##紺 ##終 ##絃 ##組 ##絆 ##経 ##結 ##絕 ##絞 ##絡 ##絢 ##給 ##絨 ##絮 ##統 ##絲 ##絳 ##絵 ##絶 ##絹 ##綁 ##綏 ##綑 ##經 ##継 ##続 ##綜 ##綠 ##綢 ##綦 ##綫 ##綬 ##維 ##綱 ##網 ##綴 ##綵 ##綸 ##綺 ##綻 ##綽 ##綾 ##綿 ##緊 ##緋 ##総 ##緑 ##緒 ##緘 ##線 ##緝 ##緞 ##締 ##緣 ##編 ##緩 ##緬 ##緯 ##練 ##緹 ##緻 ##縁 ##縄 ##縈 ##縛 ##縝 ##縣 ##縫 ##縮 ##縱 ##縴 ##縷 ##總 ##績 ##繁 ##繃 ##繆 ##繇 ##繋 ##織 ##繕 ##繚 ##繞 ##繡 ##繩 ##繪 ##繫 ##繭 ##繳 ##繹 ##繼 ##繽 ##纂 ##續 ##纍 ##纏 ##纓 ##纔 ##纖 ##纜 ##纠 ##红 ##纣 ##纤 ##约 ##级 ##纨 ##纪 ##纫 ##纬 ##纭 ##纯 ##纰 ##纱 ##纲 ##纳 ##纵 ##纶 ##纷 ##纸 ##纹 ##纺 ##纽 ##纾 ##线 ##绀 ##练 ##组 ##绅 ##细 ##织 ##终 ##绊 ##绍 ##绎 ##经 ##绑 ##绒 ##结 ##绔 ##绕 ##绘 ##给 ##绚 ##绛 ##络 ##绝 ##绞 ##统 ##绡 ##绢 ##绣 ##绥 ##绦 ##继 ##绩 ##绪 ##绫 ##续 ##绮 ##绯 ##绰 ##绳 ##维 ##绵 ##绶 ##绷 ##绸 ##绻 ##综 ##绽 ##绾 ##绿 ##缀 ##缄 ##缅 ##缆 ##缇 ##缈 ##缉 ##缎 ##缓 ##缔 ##缕 ##编 ##缘 ##缙 ##缚 ##缜 ##缝 ##缠 ##缢 ##缤 ##缥 ##缨 ##缩 ##缪 ##缭 ##缮 ##缰 ##缱 ##缴 ##缸 ##缺 ##缽 ##罂 ##罄 ##罌 ##罐 ##网 ##罔 ##罕 ##罗 ##罚 ##罡 ##罢 ##罩 ##罪 ##置 ##罰 ##署 ##罵 ##罷 ##罹 ##羁 ##羅 ##羈 ##羊 ##羌 ##美 ##羔 ##羚 ##羞 ##羟 ##羡 ##羣 ##群 ##羥 ##羧 ##羨 ##義 ##羯 ##羲 ##羸 ##羹 ##羽 ##羿 ##翁 ##翅 ##翊 ##翌 ##翎 ##習 ##翔 ##翘 ##翟 ##翠 ##翡 ##翦 ##翩 ##翰 ##翱 ##翳 ##翹 ##翻 ##翼 ##耀 ##老 ##考 ##耄 ##者 ##耆 ##耋 ##而 ##耍 ##耐 ##耒 ##耕 ##耗 ##耘 ##耙 ##耦 ##耨 ##耳 ##耶 ##耷 ##耸 ##耻 ##耽 ##耿 ##聂 ##聆 ##聊 ##聋 ##职 ##聒 ##联 ##聖 ##聘 ##聚 ##聞 ##聪 ##聯 ##聰 ##聲 ##聳 ##聴 ##聶 ##職 ##聽 ##聾 ##聿 ##肃 ##肄 ##肅 ##肆 ##肇 ##肉 ##肋 ##肌 ##肏 ##肓 ##肖 ##肘 ##肚 ##肛 ##肝 ##肠 ##股 ##肢 ##肤 ##肥 ##肩 ##肪 ##肮 ##肯 ##肱 ##育 ##肴 ##肺 ##肽 ##肾 ##肿 ##胀 ##胁 ##胃 ##胄 ##胆 ##背 ##胍 ##胎 ##胖 ##胚 ##胛 ##胜 ##胝 ##胞 ##胡 ##胤 ##胥 ##胧 ##胫 ##胭 ##胯 ##胰 ##胱 ##胳 ##胴 ##胶 ##胸 ##胺 ##能 ##脂 ##脅 ##脆 ##脇 ##脈 ##脉 ##脊 ##脍 ##脏 ##脐 ##脑 ##脓 ##脖 ##脘 ##脚 ##脛 ##脣 ##脩 ##脫 ##脯 ##脱 ##脲 ##脳 ##脸 ##脹 ##脾 ##腆 ##腈 ##腊 ##腋 ##腌 ##腎 ##腐 ##腑 ##腓 ##腔 ##腕 ##腥 ##腦 ##腩 ##腫 ##腭 ##腮 ##腰 ##腱 ##腳 ##腴 ##腸 ##腹 ##腺 ##腻 ##腼 ##腾 ##腿 ##膀 ##膈 ##膊 ##膏 ##膑 ##膘 ##膚 ##膛 ##膜 ##膝 ##膠 ##膦 ##膨 ##膩 ##膳 ##膺 ##膻 ##膽 ##膾 ##膿 ##臀 ##臂 ##臃 ##臆 ##臉 ##臊 ##臍 ##臓 ##臘 ##臟 ##臣 ##臥 ##臧 ##臨 ##自 ##臬 ##臭 ##至 ##致 ##臺 ##臻 ##臼 ##臾 ##舀 ##舂 ##舅 ##舆 ##與 ##興 ##舉 ##舊 ##舌 ##舍 ##舎 ##舐 ##舒 ##舔 ##舖 ##舗 ##舛 ##舜 ##舞 ##舟 ##航 ##舫 ##般 ##舰 ##舱 ##舵 ##舶 ##舷 ##舸 ##船 ##舺 ##舾 ##艇 ##艋 ##艘 ##艙 ##艦 ##艮 ##良 ##艰 ##艱 ##色 ##艳 ##艷 ##艹 ##艺 ##艾 ##节 ##芃 ##芈 ##芊 ##芋 ##芍 ##芎 ##芒 ##芙 ##芜 ##芝 ##芡 ##芥 ##芦 ##芩 ##芪 ##芫 ##芬 ##芭 ##芮 ##芯 ##花 ##芳 ##芷 ##芸 ##芹 ##芻 ##芽 ##芾 ##苁 ##苄 ##苇 ##苋 ##苍 ##苏 ##苑 ##苒 ##苓 ##苔 ##苕 ##苗 ##苛 ##苜 ##苞 ##苟 ##苡 ##苣 ##若 ##苦 ##苫 ##苯 ##英 ##苷 ##苹 ##苻 ##茁 ##茂 ##范 ##茄 ##茅 ##茉 ##茎 ##茏 ##茗 ##茜 ##茧 ##茨 ##茫 ##茬 ##茭 ##茯 ##茱 ##茲 ##茴 ##茵 ##茶 ##茸 ##茹 ##茼 ##荀 ##荃 ##荆 ##草 ##荊 ##荏 ##荐 ##荒 ##荔 ##荖 ##荘 ##荚 ##荞 ##荟 ##荠 ##荡 ##荣 ##荤 ##荥 ##荧 ##荨 ##荪 ##荫 ##药 ##荳 ##荷 ##荸 ##荻 ##荼 ##荽 ##莅 ##莆 ##莉 ##莊 ##莎 ##莒 ##莓 ##莖 ##莘 ##莞 ##莠 ##莢 ##莧 ##莪 ##莫 ##莱 ##莲 ##莴 ##获 ##莹 ##莺 ##莽 ##莿 ##菀 ##菁 ##菅 ##菇 ##菈 ##菊 ##菌 ##菏 ##菓 ##菖 ##菘 ##菜 ##菟 ##菠 ##菡 ##菩 ##華 ##菱 ##菲 ##菸 ##菽 ##萁 ##萃 ##萄 ##萊 ##萋 ##萌 ##萍 ##萎 ##萘 ##萝 ##萤 ##营 ##萦 ##萧 ##萨 ##萩 ##萬 ##萱 ##萵 ##萸 ##萼 ##落 ##葆 ##葉 ##著 ##葚 ##葛 ##葡 ##董 ##葦 ##葩 ##葫 ##葬 ##葭 ##葯 ##葱 ##葳 ##葵 ##葷 ##葺 ##蒂 ##蒋 ##蒐 ##蒔 ##蒙 ##蒜 ##蒞 ##蒟 ##蒡 ##蒨 ##蒲 ##蒸 ##蒹 ##蒻 ##蒼 ##蒿 ##蓁 ##蓄 ##蓆 ##蓉 ##蓋 ##蓑 ##蓓 ##蓖 ##蓝 ##蓟 ##蓦 ##蓬 ##蓮 ##蓼 ##蓿 ##蔑 ##蔓 ##蔔 ##蔗 ##蔘 ##蔚 ##蔡 ##蔣 ##蔥 ##蔫 ##蔬 ##蔭 ##蔵 ##蔷 ##蔺 ##蔻 ##蔼 ##蔽 ##蕁 ##蕃 ##蕈 ##蕉 ##蕊 ##蕎 ##蕙 ##蕤 ##蕨 ##蕩 ##蕪 ##蕭 ##蕲 ##蕴 ##蕻 ##蕾 ##薄 ##薅 ##薇 ##薈 ##薊 ##薏 ##薑 ##薔 ##薙 ##薛 ##薦 ##薨 ##薩 ##薪 ##薬 ##薯 ##薰 ##薹 ##藉 ##藍 ##藏 ##藐 ##藓 ##藕 ##藜 ##藝 ##藤 ##藥 ##藩 ##藹 ##藻 ##藿 ##蘆 ##蘇 ##蘊 ##蘋 ##蘑 ##蘚 ##蘭 ##蘸 ##蘼 ##蘿 ##虎 ##虏 ##虐 ##虑 ##虔 ##處 ##虚 ##虛 ##虜 ##虞 ##號 ##虢 ##虧 ##虫 ##虬 ##虱 ##虹 ##虻 ##虽 ##虾 ##蚀 ##蚁 ##蚂 ##蚊 ##蚌 ##蚓 ##蚕 ##蚜 ##蚝 ##蚣 ##蚤 ##蚩 ##蚪 ##蚯 ##蚱 ##蚵 ##蛀 ##蛆 ##蛇 ##蛊 ##蛋 ##蛎 ##蛐 ##蛔 ##蛙 ##蛛 ##蛟 ##蛤 ##蛭 ##蛮 ##蛰 ##蛳 ##蛹 ##蛻 ##蛾 ##蜀 ##蜂 ##蜃 ##蜆 ##蜇 ##蜈 ##蜊 ##蜍 ##蜒 ##蜓 ##蜕 ##蜗 ##蜘 ##蜚 ##蜜 ##蜡 ##蜢 ##蜥 ##蜱 ##蜴 ##蜷 ##蜻 ##蜿 ##蝇 ##蝈 ##蝉 ##蝌 ##蝎 ##蝕 ##蝗 ##蝙 ##蝟 ##蝠 ##蝦 ##蝨 ##蝴 ##蝶 ##蝸 ##蝼 ##螂 ##螃 ##融 ##螞 ##螢 ##螨 ##螯 ##螳 ##螺 ##蟀 ##蟄 ##蟆 ##蟋 ##蟎 ##蟑 ##蟒 ##蟠 ##蟬 ##蟲 ##蟹 ##蟻 ##蟾 ##蠅 ##蠍 ##蠔 ##蠕 ##蠛 ##蠟 ##蠡 ##蠢 ##蠣 ##蠱 ##蠶 ##蠹 ##蠻 ##血 ##衄 ##衅 ##衆 ##行 ##衍 ##術 ##衔 ##街 ##衙 ##衛 ##衝 ##衞 ##衡 ##衢 ##衣 ##补 ##表 ##衩 ##衫 ##衬 ##衮 ##衰 ##衲 ##衷 ##衹 ##衾 ##衿 ##袁 ##袂 ##袄 ##袅 ##袈 ##袋 ##袍 ##袒 ##袖 ##袜 ##袞 ##袤 ##袪 ##被 ##袭 ##袱 ##裁 ##裂 ##装 ##裆 ##裊 ##裏 ##裔 ##裕 ##裘 ##裙 ##補 ##裝 ##裟 ##裡 ##裤 ##裨 ##裱 ##裳 ##裴 ##裸 ##裹 ##製 ##裾 ##褂 ##複 ##褐 ##褒 ##褓 ##褔 ##褚 ##褥 ##褪 ##褫 ##褲 ##褶 ##褻 ##襁 ##襄 ##襟 ##襠 ##襪 ##襬 ##襯 ##襲 ##西 ##要 ##覃 ##覆 ##覇 ##見 ##規 ##覓 ##視 ##覚 ##覦 ##覧 ##親 ##覬 ##観 ##覷 ##覺 ##覽 ##觀 ##见 ##观 ##规 ##觅 ##视 ##览 ##觉 ##觊 ##觎 ##觐 ##觑 ##角 ##觞 ##解 ##觥 ##触 ##觸 ##言 ##訂 ##計 ##訊 ##討 ##訓 ##訕 ##訖 ##託 ##記 ##訛 ##訝 ##訟 ##訣 ##訥 ##訪 ##設 ##許 ##訳 ##訴 ##訶 ##診 ##註 ##証 ##詆 ##詐 ##詔 ##評 ##詛 ##詞 ##詠 ##詡 ##詢 ##詣 ##試 ##詩 ##詫 ##詬 ##詭 ##詮 ##詰 ##話 ##該 ##詳 ##詹 ##詼 ##誅 ##誇 ##誉 ##誌 ##認 ##誓 ##誕 ##誘 ##語 ##誠 ##誡 ##誣 ##誤 ##誥 ##誦 ##誨 ##說 ##説 ##読 ##誰 ##課 ##誹 ##誼 ##調 ##諄 ##談 ##請 ##諏 ##諒 ##論 ##諗 ##諜 ##諡 ##諦 ##諧 ##諫 ##諭 ##諮 ##諱 ##諳 ##諷 ##諸 ##諺 ##諾 ##謀 ##謁 ##謂 ##謄 ##謊 ##謎 ##謐 ##謔 ##謗 ##謙 ##講 ##謝 ##謠 ##謨 ##謬 ##謹 ##謾 ##譁 ##證 ##譎 ##譏 ##識 ##譙 ##譚 ##譜 ##警 ##譬 ##譯 ##議 ##譲 ##譴 ##護 ##譽 ##讀 ##變 ##讓 ##讚 ##讞 ##计 ##订 ##认 ##讥 ##讧 ##讨 ##让 ##讪 ##讫 ##训 ##议 ##讯 ##记 ##讲 ##讳 ##讴 ##讶 ##讷 ##许 ##讹 ##论 ##讼 ##讽 ##设 ##访 ##诀 ##证 ##诃 ##评 ##诅 ##识 ##诈 ##诉 ##诊 ##诋 ##词 ##诏 ##译 ##试 ##诗 ##诘 ##诙 ##诚 ##诛 ##话 ##诞 ##诟 ##诠 ##诡 ##询 ##诣 ##诤 ##该 ##详 ##诧 ##诩 ##诫 ##诬 ##语 ##误 ##诰 ##诱 ##诲 ##说 ##诵 ##诶 ##请 ##诸 ##诺 ##读 ##诽 ##课 ##诿 ##谀 ##谁 ##调 ##谄 ##谅 ##谆 ##谈 ##谊 ##谋 ##谌 ##谍 ##谎 ##谏 ##谐 ##谑 ##谒 ##谓 ##谔 ##谕 ##谗 ##谘 ##谙 ##谚 ##谛 ##谜 ##谟 ##谢 ##谣 ##谤 ##谥 ##谦 ##谧 ##谨 ##谩 ##谪 ##谬 ##谭 ##谯 ##谱 ##谲 ##谴 ##谶 ##谷 ##豁 ##豆 ##豇 ##豈 ##豉 ##豊 ##豌 ##豎 ##豐 ##豔 ##豚 ##象 ##豢 ##豪 ##豫 ##豬 ##豹 ##豺 ##貂 ##貅 ##貌 ##貓 ##貔 ##貘 ##貝 ##貞 ##負 ##財 ##貢 ##貧 ##貨 ##販 ##貪 ##貫 ##責 ##貯 ##貰 ##貳 ##貴 ##貶 ##買 ##貸 ##費 ##貼 ##貽 ##貿 ##賀 ##賁 ##賂 ##賃 ##賄 ##資 ##賈 ##賊 ##賑 ##賓 ##賜 ##賞 ##賠 ##賡 ##賢 ##賣 ##賤 ##賦 ##質 ##賬 ##賭 ##賴 ##賺 ##購 ##賽 ##贅 ##贈 ##贊 ##贍 ##贏 ##贓 ##贖 ##贛 ##贝 ##贞 ##负 ##贡 ##财 ##责 ##贤 ##败 ##账 ##货 ##质 ##贩 ##贪 ##贫 ##贬 ##购 ##贮 ##贯 ##贰 ##贱 ##贲 ##贴 ##贵 ##贷 ##贸 ##费 ##贺 ##贻 ##贼 ##贾 ##贿 ##赁 ##赂 ##赃 ##资 ##赅 ##赈 ##赊 ##赋 ##赌 ##赎 ##赏 ##赐 ##赓 ##赔 ##赖 ##赘 ##赚 ##赛 ##赝 ##赞 ##赠 ##赡 ##赢 ##赣 ##赤 ##赦 ##赧 ##赫 ##赭 ##走 ##赳 ##赴 ##赵 ##赶 ##起 ##趁 ##超 ##越 ##趋 ##趕 ##趙 ##趟 ##趣 ##趨 ##足 ##趴 ##趵 ##趸 ##趺 ##趾 ##跃 ##跄 ##跆 ##跋 ##跌 ##跎 ##跑 ##跖 ##跚 ##跛 ##距 ##跟 ##跡 ##跤 ##跨 ##跩 ##跪 ##路 ##跳 ##践 ##跷 ##跹 ##跺 ##跻 ##踉 ##踊 ##踌 ##踏 ##踐 ##踝 ##踞 ##踟 ##踢 ##踩 ##踪 ##踮 ##踱 ##踴 ##踵 ##踹 ##蹂 ##蹄 ##蹇 ##蹈 ##蹉 ##蹊 ##蹋 ##蹑 ##蹒 ##蹙 ##蹟 ##蹣 ##蹤 ##蹦 ##蹩 ##蹬 ##蹭 ##蹲 ##蹴 ##蹶 ##蹺 ##蹼 ##蹿 ##躁 ##躇 ##躉 ##躊 ##躋 ##躍 ##躏 ##躪 ##身 ##躬 ##躯 ##躲 ##躺 ##軀 ##車 ##軋 ##軌 ##軍 ##軒 ##軟 ##転 ##軸 ##軼 ##軽 ##軾 ##較 ##載 ##輒 ##輓 ##輔 ##輕 ##輛 ##輝 ##輟 ##輩 ##輪 ##輯 ##輸 ##輻 ##輾 ##輿 ##轄 ##轅 ##轆 ##轉 ##轍 ##轎 ##轟 ##车 ##轧 ##轨 ##轩 ##转 ##轭 ##轮 ##软 ##轰 ##轲 ##轴 ##轶 ##轻 ##轼 ##载 ##轿 ##较 ##辄 ##辅 ##辆 ##辇 ##辈 ##辉 ##辊 ##辍 ##辐 ##辑 ##输 ##辕 ##辖 ##辗 ##辘 ##辙 ##辛 ##辜 ##辞 ##辟 ##辣 ##辦 ##辨 ##辩 ##辫 ##辭 ##辮 ##辯 ##辰 ##辱 ##農 ##边 ##辺 ##辻 ##込 ##辽 ##达 ##迁 ##迂 ##迄 ##迅 ##过 ##迈 ##迎 鸮 ##鳝 丌 狲 媁 肜 浠 鲚 冔 ` 螫 儁 倸 寔 郾 鋈 诌 邽 鮡 澣 鳜 旴 頵 鼒 枂 鸻 瑭 蓂 烔 鹩 侂 厓 隰 嗥 邾 镊 鷉 鮗 奁 偰 浛 豕 诒 乀 琚 倛 猇 ##7 﨑 桭 珹 芴 浈 烚 渟 聻 菰 禤 ##z 毬 沇 瑈 仱 赟 榘 魈 栌 疃 芟 焞 弢 勍 洡 廆 遹 猯 鳟 娸 埙 溲 樕 彊 鲀 綡 汊 觌 丏 ##姬 龑 蝣 慠 尙 纡 鲻 耔 犛 訢 荭 ##路 尭 ##宇 刂 佾 舲 淯 苾 瓿 甍 ##麦 纮 縻 垔 钶 椤 ##横 刿 绋 瘿 沔 闱 诇 镃 铖 茪 楩 耜 靑 樨 蠊 俤 诳 鑙 苅 戆 莛 蜉 棪 螋 砮 囃 渑 葶 髁 魉 蓠 虓 蚶 菝 ’ 魑 ##庆 喾 媜 ##久 珧 鲾 噘 茕 繻 枏 垲 昺 僯 濉 喈 鹆 嵚 暁 暻 溷 蚧 顗 瓉 鋆 蠖 茌 姸 坭 沆 鳐 傈 仉 仵 弨 雠 ##牛 炥 昝 鳊 鮣 嵃 鸲 濋 阗 琩 圉 杲 ##中 堉 鲯 缃 鼔 缵 嫮 渌 螈 衜 笡 惗 溚 鹬 蟛 棓 珌 呒 飏 咥 炘 浉 鹠 僳 嶦 婳 姽 褴 鉽 愬 蒳 廼 鴴 伷 芘 枬 玙 錩 霡 唛 骙 ##0 砜 垅 戋 ##2 棰 祶 滏 冴 巯 坜 蝓 砀 鯝 琤 魢 侒 翕 帏 囓 钫 轱 埝 鏊 砦 繮 䶮 耰 鼯 雱 畇 茆 愔 懔 秈 狍 諴 駉 椆 哞 曷 蛣 媺 镔 琎 杺 渼 酡 澕 筭 盉 姁 ##契 罴 旒 溆 枵 ##4 哙 莳 鬪 鹚 褡 镤 鲬 孒 狃 螭 犴 鞮 柽 蕶 笪 蟳 郯 鸺 甑 皝 ##5 榤 甃 埚 逑 剀 渕 鼱 楯 螟 狨 葜 伱 楢 镬 鳚 ##袁 玹 杪 鲣 鱵 樗 ##说 鄀 暟 焌 勣 棻 蛸 豜 淠 畊 ##9 ##邕 匦 沩 嵛 釪 鰧 姮 劬 镝 琭 蒾 蜑 埈 掟 薫 躄 鲿 鹨 逄 䳍 彳 巣 敭 喑 絾 崚 鮈 樋 邴 蝾 曈 尐 祹 爀 杌 暘 苙 昳 陔 呔 茛 桫 熯 茳 飔 熞 ##板 蝮 吇 猟 墭 禶 蟴 鹱 捊 邡 鲔 烆 泅 棅 鰶 煐 陉 曧 劼 婞 莜 柃 穰 裢 ― 蛄 瀍 戨 郗 锬 桷 蝽 朲 蛩 穸 ‘ 洚 漭 锗 镠 猞 饫 悫 崃 藁 榧 籹 橚 帙 滉 侪 琯 骀 ##婉 璘 荇 霙 坻 纟 猢 袴 嘏 蜩 鱚 訸 謇 嫀 撖 燹 鳇 猡 柷 鰕 蒗 娫 僾 霨 芶 槑 缬 瑒 堎 姄 — 潶 鲆 噰 汸 蒽 焓 嫒 霂 麐 鮋 胪 尪 煕 沚 熜 荑 ##1 傒 鲐 疋 黦 浐 匑 膤 笕 宬 逯 轸 ##o 晸 邠 镫 祓 熳 噵 鸫 毳 涢 蟜 熀 镹 彲 塍 鹪 鳢 鲵 犰 嫄 骢 蓚 莙 ##恪 孮 垧 仫 蛉 ##德 鸰 崀 锜 … 鵙 媣 瞹 镏 琱 颀 ##鲢 峁 鳽 槊 锒 鶤 淝 漷 鳎 鄯 垕 茈 皛 蕅 鹡 浧 錞 ##须 淽 薷 ” 蠃 ##瑞 酴 忞 鲂 鵖 鲩 鑨 ##院 箬 褀 粦 翀 亍 芠 凖 ##日 ##金 玞 狟 辁 畠 瑑 I 貟 琸 虨 榬 駌 摭 狳 渃 頨 蛱 爨 郞 莀 ##赵 蓹 洊 哓 髆 儚 湴 璈 繸 蠼 踽 鲇 禚 娡 姏 卲 烺 垍 訏 嫼 揅 黾 垌 鯙 郄 盦 牮 晄 峘 簕 鰁 垡 诜 箓 鈜 溍 ##弋 ##月 凫 倓 頔 枍 鲎 阍 祙 橑 淓 漘 鰆 荦 璠 氿 隩 筼 圪 炟 浞 浥 儇 禥 鱲 鳠 鳱 栒 蛞 ##w 魃 鱥 藨 沶 禵 瘣 ##巨 岿 寳 昃 玢 鹎 赜 贽 裒 鳔 寀 蓍 鄠 勄 纁 礽 腧 K 吔 湦 Ю 垞 俦 祧 鉁 颏 翯 峠 崱 瑷 霔 遘 娈 鄣 坣 掮 蛃 箎 鮄 鄄 鹀 蕺 鬯 巘 翾 昣 锷 堓 翷 鞨 枖 衎 锝 溎 埭 廙 阏 鱓 戢 徯 魮 酆 烰 龢 颿 ##卵 鰺 窉 垱 汣 蓥 剡 禑 绂 蝰 肸 湉 榊 昖 勰 鏸 骓 茔 骎 洳 钖 陬 窳 蠓 绨 栊 鮀 獴 氵 鶲 诂 爿 愼 燚 慥 栘 禩 鱇 逦 捑 媪 鼢 鲧 洧 桄 黟 鹮 澔 俅 鴗 锴 镒 鳒 焻 羙 ##书 濞 熥 墪 珽 沺 鲳 鲅 翮 訇 凊 旸 挵 轵 瀹 鷧 尒 蚖 睟 蘅 虿 郏 杬 鱊 笳 ##h 钍 嵴 鲋 魣 洺 ##斑 ##a 樘 黧 茀 娌 牻 塽 辔 镡 晙 劢 掦 汯 蚬 ##3 ##ン T 曟 岄 薮 ##e 鯥 瑔 澂 苎 靺 瓃 盺 穉 䴕 鮻 樰 枧 煝 瑮 恽 咺 苴 崟 柭 ┷ 羴 仦 廾 櫱 趼 翥 逖 偲 壦 佺 棫 淛 屺 蜣 猼 莣 夼 螅 锘 墡 ##道 怰 怿 薾 唞 ##光 堈 珒 玎 旼 澪 铧 蜾 檠 Ⅻ 麿 淏 菋 赉 缡 皃 塱 畈 翃 捭 犇 朏 ##有 襞 昡 妯 䗉 黼 燠 瓘 揺 鲃 暠 寤 鬘 ##8 猊 棨 罘 鲹 琹 玗 柝 伋 ##耕 弇 翙 毖 葇 槇 鲠 缦 圀 艚 魰 媸 玦 硖 ##充 嬲 榑 旑 坃 椴 潕 絔 铱 犼 椛 佴 鲼 厣 鸬 錡 棐 蛏 㬎 瘰 缒 鹍 迳 芨 砬 骝 贠 糀 ##鱼 昰 ##网 鵾 屾 鹲 鮠 芗 嶷 皞 撄 垇 尓 ##纹 魟 篦 鱾 誴 铼 桕 炤 鱂 爟 崾 鹟 戣 鲭 梿 韫 铍 瓖 俣 铳 谡 缶 垴 垟 冣 涑 ##6 蓭 墫 巎 瑱 蠋 鳾 楤 蒴 崮 鐭 姌 鮟 鷟 捜 絅 璗 朊 莸 廌 荩 郃 妵 豳 亶 鹗 溦 廑 峄 蛘 煃 浵 ##s 贇 沨 辂 羄 茮 韮 缑 恂 螽 楳 酃 垸 谠 鳯 竑 鮰 晥 楙 邗 怲 蜞 谰 镱 菻 殛 煇 鯒 頀 璥 葊 晽 瞫 鴷 斝 岢 銤 莼 筮 冮 颎 枞 妫 鸊 聃 瑂 黻 鳤 鲴 媖 訾 晧 烜 Ⅷ 狴 亓 岵 黡 仡 嫫 玏 彟 灊 ##v 玘 鉲 鸶 暕 稃 挿 卨 莯 觯 谖 硚 戯 蒧 郇 ##浚 庥 鸀 鲮 琄 ##微 奭 滃 宍 隗 荛 鮊 髭 ##椿 釄 醻 柍 甡 玚 ㄖ 苈 聡 眀 铗 鮁 纥 梉 滵 M 颙 妺 驩 晳 芏 璩 婲 垿 钇 巑 鮶 绉 婼 汭 尛 洢 跗 枥 鼩 ##n “ 鳀 爌 笶 苌 窅 垓 栞 嵨 翚 鲥 譞 俋 箣 悒 袓 镧 鳉 碞 旳 筜 悆 鄚 仚 漈 鋐 厶 獛 愽 梼 滘 俆 鯻 闳 蒉 鲽 嫤 鸱 墱 柟 瞽 匏 姵 鲡 嫊 嫱 炆 菫 鱺 溁 沬 魾 唢 菴 玭 汜 鳡 眭 鲉 荿 玡 锽 胼 鹛 Ⅶ 寯 郓 嵒 辿 耏 栻 蟌 觚 郿 蓨 锶 ================================================ FILE: config.py ================================================ # -*- coding: utf-8 -*- class Config(object): # -----------数据集选择--------------------# dataset = 'small' # large(没有合并type关系)/small(合并type关系) naNum = 2 # 每个例子中补充的最大NA关系数目 tag_nums = 19*2+1 # tag类型数量 rel_nums = 50 # 关系数量 # -------------dir ----------------# bert_model_dir = './bert-base-chinese/bert-base-chinese.tar.gz' bert_vocab_dir = './bert-base-chinese/vocab.txt' bert_vocab_unk = './bert-base-chinese/vocab.txt' npy_data_root = './data/'+dataset+'/npy_data/' origin_data_root = './data/'+dataset+'/origin_data/' json_data_root = './data/'+dataset+'/json_data/' id2type_dir = json_data_root + 'id2type.json' type2id_dir = json_data_root + 'type2id.json' tag2id_dir = json_data_root + 'tag2id.json' r2id_dir = json_data_root + 'r2id.json' id2r_dir = json_data_root + 'id2r.json' id2tag_dir = json_data_root + 'id2tag.json' type2types_dir = json_data_root + 'type2types.json' schema_dir_old = origin_data_root + 'all_50_schemas_old' schema_dir_new = origin_data_root + 'all_50_schemas_new' train_data_dir = origin_data_root + 'train_data.json' dev_data_dir = origin_data_root + 'dev_data.json' test1_data_dir = origin_data_root + 'test1_data_postag.json' test2_data_dir = origin_data_root + 'test2_data_postag.json' log_dir = './log' # -------------- 模型超参数 -----------# k = 9 filters = [5, 9, 13] # CNN卷积核宽度 filter_num = 230 # CNN卷积核个数 seq_length = 180 tuple_max_len = 13 bert_hidden_size = 768 # bert隐层维度,固定 lam = 0.85 # 越大tag越重要` # --------------main.py ----------------# load_ckpt = False ckpt_path = './checkpoints/BERT_CNN_CRF_sl:180_k:[5, 9, 13]_fn:230_lam:0.85_lr:3e-05_epoch:9' num_workers = 1 seed = 9979 epochs = 10 batch_size = 20 use_gpu = 1 gpu_id = 0 # ------------optimizer ------------------# lr = 3e-5 full_finetuning = True optimizer = 'Adam' model = 'BERT_MUL_CNN' # 'BERT_CNN_CRF' clip_grad = 2 # 梯度的最大值 # ----------预测数据集----------# case = 1 # 0:dev(并测试数据质量) 1:test1, 2:test2 def parse(self, kwargs): ''' user can update the default hyperparamter ''' for k, v in kwargs.items(): if not hasattr(self, k): raise Exception('opt has No key: {}'.format(k)) setattr(self, k, v) print('*************************************************') print('user config:') for k, v in self.__class__.__dict__.items(): if not k.startswith('__'): print("{} => {}".format(k, getattr(self, k))) print('*************************************************') opt = Config() ================================================ FILE: data/Data.py ================================================ # -*- coding: utf-8 -*- import re import os import sys import numpy as np import pickle from torch.utils.data import Dataset class Data(Dataset): def __init__(self, opt, case=0): # 0:train, 1:dev, 2 :test data_root = opt.npy_data_root if case == 0: now = 'train/' elif case == 1: now = 'dev/' elif case == 2: now = 'test1/' elif case == 3: now = 'test2/' data_path = data_root + now sens = np.load(data_path+'sens.npy') if case < 2: rels = np.load(data_path+'relations.npy') tags = np.load(data_path+'tags.npy') assert len(sens) == len(tags) self.data = list(zip(sens, tags, rels)) else: self.data = list(zip(sens, sens, sens)) def __len__(self): return len(self.data) def __getitem__(self, idx): assert idx < len(self) return self.data[idx] ================================================ FILE: data/__init__.py ================================================ from .Data import Data ================================================ FILE: data/small/json_data/.ipynb_checkpoints/tag2id_id2tag-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import json" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "def write2json(path, data):\n", " with open(path, 'w') as f:\n", " f.write(json.dumps(data, ensure_ascii=False))" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "tag2id = {}\n", "id2tag = {}" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "type2id = json.loads(open('type2id.json', 'r').readline())" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "tag2id['O'] = 0\n", "id2tag[0] = 'O'\n", "for type_ in type2id.keys():\n", " if type_ != 'O':\n", " B_tag = 'B-'+type_\n", " I_tag = 'I-'+type_\n", " tag2id[B_tag] = 2*(type2id[type_]-1) + 1\n", " tag2id[I_tag] = 2*(type2id[type_]-1) + 2\n", " id2tag[2*(type2id[type_]-1) + 1] = B_tag\n", " id2tag[2*(type2id[type_]-1) + 2] = I_tag" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "write2json('tag2id.json', tag2id)\n", "write2json('id2tag.json', id2tag)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: data/small/json_data/id2r.json ================================================ {"0": "祖籍", "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": "NA"} ================================================ FILE: data/small/json_data/id2tag.json ================================================ {"1": "B-地点", "2": "I-地点", "3": "B-人物", "4": "I-人物", "5": "B-机构", "6": "I-机构", "7": "B-生物", "8": "I-生物", "9": "B-Number", "10": "I-Number", "11": "B-Text", "12": "I-Text", "13": "B-Date", "14": "I-Date", "15": "B-作品", "16": "I-作品", "17": "B-音乐专辑", "18": "I-音乐专辑", "19": "B-歌曲", "20": "I-歌曲", "21": "B-国家", "22": "I-国家", "23": "B-学科专业", "24": "I-学科专业", "25": "B-网站", "26": "I-网站", "27": "B-书籍", "28": "I-书籍", "29": "B-出版社", "30": "I-出版社", "31": "B-电视综艺", "32": "I-电视综艺", "33": "B-学校", "34": "I-学校", "35": "B-语言", "36": "I-语言", "37": "B-气候", "38": "I-气候", "0": "O"} ================================================ FILE: data/small/json_data/id2type.json ================================================ {"1": "地点", "2": "人物", "3": "机构", "4": "生物", "5": "Number", "6": "Text", "7": "Date", "8": "作品", "9": "音乐专辑", "10": "歌曲", "11": "国家", "12": "学科专业", "13": "网站", "14": "书籍", "15": "出版社", "16": "电视综艺", "17": "学校", "18": "语言", "19": "气候", "0": "O"} ================================================ FILE: data/small/json_data/r2id.json ================================================ {"祖籍": 0, "父亲": 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, "NA": 49} ================================================ FILE: data/small/json_data/tag2id.json ================================================ {"B-地点": 1, "I-地点": 2, "B-人物": 3, "I-人物": 4, "B-机构": 5, "I-机构": 6, "B-生物": 7, "I-生物": 8, "B-Number": 9, "I-Number": 10, "B-Text": 11, "I-Text": 12, "B-Date": 13, "I-Date": 14, "B-作品": 15, "I-作品": 16, "B-音乐专辑": 17, "I-音乐专辑": 18, "B-歌曲": 19, "I-歌曲": 20, "B-国家": 21, "I-国家": 22, "B-学科专业": 23, "I-学科专业": 24, "B-网站": 25, "I-网站": 26, "B-书籍": 27, "I-书籍": 28, "B-出版社": 29, "I-出版社": 30, "B-电视综艺": 31, "I-电视综艺": 32, "B-学校": 33, "I-学校": 34, "B-语言": 35, "I-语言": 36, "B-气候": 37, "I-气候": 38, "O": 0} ================================================ FILE: data/small/json_data/type2id.json ================================================ {"地点": 1, "人物": 2, "机构": 3, "生物": 4, "Number": 5, "Text": 6, "Date": 7, "作品": 8, "音乐专辑": 9, "歌曲": 10, "国家": 11, "学科专业": 12, "网站": 13, "书籍": 14, "出版社": 15, "电视综艺": 16, "学校": 17, "语言": 18, "气候": 19, "O": 0} ================================================ FILE: data/small/json_data/type2types.json ================================================ {"地点": ["地点", "人物", "机构", "国家"], "Text": ["地点", "人物", "学科专业", "机构"], "音乐专辑": ["歌曲"], "语言": ["国家"], "学科专业": [], "学校": ["人物"], "国家": ["人物"], "网站": ["书籍"], "气候": ["地点"], "电视综艺": [], "歌曲": [], "机构": ["作品"], "Date": ["人物", "作品", "机构"], "出版社": ["书籍"], "人物": ["电视综艺", "歌曲", "机构", "人物", "作品", "书籍"], "Number": ["地点", "人物", "学科专业", "机构"], "生物": ["生物"], "作品": ["作品"], "O": [], "书籍": []} ================================================ FILE: data/small/origin_data/all_50_schemas_new ================================================ {"object_type": "地点", "predicate": "祖籍", "subject_type": "人物"} {"object_type": "人物", "predicate": "父亲", "subject_type": "人物"} {"object_type": "地点", "predicate": "总部地点", "subject_type": "机构"} {"object_type": "地点", "predicate": "出生地", "subject_type": "人物"} {"object_type": "生物", "predicate": "目", "subject_type": "生物"} {"object_type": "Number", "predicate": "面积", "subject_type": "地点"} {"object_type": "Text", "predicate": "简称", "subject_type": "机构"} {"object_type": "Date", "predicate": "上映时间", "subject_type": "作品"} {"object_type": "人物", "predicate": "妻子", "subject_type": "人物"} {"object_type": "音乐专辑", "predicate": "所属专辑", "subject_type": "歌曲"} {"object_type": "Number", "predicate": "注册资本", "subject_type": "机构"} {"object_type": "地点", "predicate": "首都", "subject_type": "国家"} {"object_type": "人物", "predicate": "导演", "subject_type": "作品"} {"object_type": "Text", "predicate": "字", "subject_type": "人物"} {"object_type": "Number", "predicate": "身高", "subject_type": "人物"} {"object_type": "机构", "predicate": "出品公司", "subject_type": "作品"} {"object_type": "Number", "predicate": "修业年限", "subject_type": "学科专业"} {"object_type": "Date", "predicate": "出生日期", "subject_type": "人物"} {"object_type": "人物", "predicate": "制片人", "subject_type": "作品"} {"object_type": "人物", "predicate": "母亲", "subject_type": "人物"} {"object_type": "人物", "predicate": "编剧", "subject_type": "作品"} {"object_type": "国家", "predicate": "国籍", "subject_type": "人物"} {"object_type": "Number", "predicate": "海拔", "subject_type": "地点"} {"object_type": "网站", "predicate": "连载网站", "subject_type": "书籍"} {"object_type": "人物", "predicate": "丈夫", "subject_type": "人物"} {"object_type": "Text", "predicate": "朝代", "subject_type": "人物"} {"object_type": "Text", "predicate": "民族", "subject_type": "人物"} {"object_type": "Text", "predicate": "号", "subject_type": "人物"} {"object_type": "出版社", "predicate": "出版社", "subject_type": "书籍"} {"object_type": "人物", "predicate": "主持人", "subject_type": "电视综艺"} {"object_type": "Text", "predicate": "专业代码", "subject_type": "学科专业"} {"object_type": "人物", "predicate": "歌手", "subject_type": "歌曲"} {"object_type": "人物", "predicate": "作词", "subject_type": "歌曲"} {"object_type": "人物", "predicate": "主角", "subject_type": "书籍"} {"object_type": "人物", "predicate": "董事长", "subject_type": "机构"} {"object_type": "Date", "predicate": "成立日期", "subject_type": "机构"} {"object_type": "学校", "predicate": "毕业院校", "subject_type": "人物"} {"object_type": "Number", "predicate": "占地面积", "subject_type": "机构"} {"object_type": "语言", "predicate": "官方语言", "subject_type": "国家"} {"object_type": "Text", "predicate": "邮政编码", "subject_type": "地点"} {"object_type": "Number", "predicate": "人口数量", "subject_type": "地点"} {"object_type": "地点", "predicate": "所在城市", "subject_type": "地点"} {"object_type": "人物", "predicate": "作者", "subject_type": "书籍"} {"object_type": "Date", "predicate": "成立日期", "subject_type": "机构"} {"object_type": "人物", "predicate": "作曲", "subject_type": "歌曲"} {"object_type": "气候", "predicate": "气候", "subject_type": "地点"} {"object_type": "人物", "predicate": "嘉宾", "subject_type": "电视综艺"} {"object_type": "人物", "predicate": "主演", "subject_type": "作品"} {"object_type": "作品", "predicate": "改编自", "subject_type": "作品"} {"object_type": "人物", "predicate": "创始人", "subject_type": "机构"} ================================================ FILE: data/small/origin_data/all_50_schemas_old ================================================ {"object_type": "地点", "predicate": "祖籍", "subject_type": "人物"} {"object_type": "人物", "predicate": "父亲", "subject_type": "人物"} {"object_type": "地点", "predicate": "总部地点", "subject_type": "企业"} {"object_type": "地点", "predicate": "出生地", "subject_type": "人物"} {"object_type": "目", "predicate": "目", "subject_type": "生物"} {"object_type": "Number", "predicate": "面积", "subject_type": "行政区"} {"object_type": "Text", "predicate": "简称", "subject_type": "机构"} {"object_type": "Date", "predicate": "上映时间", "subject_type": "影视作品"} {"object_type": "人物", "predicate": "妻子", "subject_type": "人物"} {"object_type": "音乐专辑", "predicate": "所属专辑", "subject_type": "歌曲"} {"object_type": "Number", "predicate": "注册资本", "subject_type": "企业"} {"object_type": "城市", "predicate": "首都", "subject_type": "国家"} {"object_type": "人物", "predicate": "导演", "subject_type": "影视作品"} {"object_type": "Text", "predicate": "字", "subject_type": "历史人物"} {"object_type": "Number", "predicate": "身高", "subject_type": "人物"} {"object_type": "企业", "predicate": "出品公司", "subject_type": "影视作品"} {"object_type": "Number", "predicate": "修业年限", "subject_type": "学科专业"} {"object_type": "Date", "predicate": "出生日期", "subject_type": "人物"} {"object_type": "人物", "predicate": "制片人", "subject_type": "影视作品"} {"object_type": "人物", "predicate": "母亲", "subject_type": "人物"} {"object_type": "人物", "predicate": "编剧", "subject_type": "影视作品"} {"object_type": "国家", "predicate": "国籍", "subject_type": "人物"} {"object_type": "Number", "predicate": "海拔", "subject_type": "地点"} {"object_type": "网站", "predicate": "连载网站", "subject_type": "网络小说"} {"object_type": "人物", "predicate": "丈夫", "subject_type": "人物"} {"object_type": "Text", "predicate": "朝代", "subject_type": "历史人物"} {"object_type": "Text", "predicate": "民族", "subject_type": "人物"} {"object_type": "Text", "predicate": "号", "subject_type": "历史人物"} {"object_type": "出版社", "predicate": "出版社", "subject_type": "书籍"} {"object_type": "人物", "predicate": "主持人", "subject_type": "电视综艺"} {"object_type": "Text", "predicate": "专业代码", "subject_type": "学科专业"} {"object_type": "人物", "predicate": "歌手", "subject_type": "歌曲"} {"object_type": "人物", "predicate": "作词", "subject_type": "歌曲"} {"object_type": "人物", "predicate": "主角", "subject_type": "网络小说"} {"object_type": "人物", "predicate": "董事长", "subject_type": "企业"} {"object_type": "Date", "predicate": "成立日期", "subject_type": "机构"} {"object_type": "学校", "predicate": "毕业院校", "subject_type": "人物"} {"object_type": "Number", "predicate": "占地面积", "subject_type": "机构"} {"object_type": "语言", "predicate": "官方语言", "subject_type": "国家"} {"object_type": "Text", "predicate": "邮政编码", "subject_type": "行政区"} {"object_type": "Number", "predicate": "人口数量", "subject_type": "行政区"} {"object_type": "城市", "predicate": "所在城市", "subject_type": "景点"} {"object_type": "人物", "predicate": "作者", "subject_type": "图书作品"} {"object_type": "Date", "predicate": "成立日期", "subject_type": "企业"} {"object_type": "人物", "predicate": "作曲", "subject_type": "歌曲"} {"object_type": "气候", "predicate": "气候", "subject_type": "行政区"} {"object_type": "人物", "predicate": "嘉宾", "subject_type": "电视综艺"} {"object_type": "人物", "predicate": "主演", "subject_type": "影视作品"} {"object_type": "作品", "predicate": "改编自", "subject_type": "影视作品"} {"object_type": "人物", "predicate": "创始人", "subject_type": "企业"} ================================================ FILE: data/small/origin_data/切词测试.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Better speed can be achieved with apex installed from https://www.github.com/nvidia/apex.\n" ] } ], "source": [ "from pytorch_pretrained_bert import BertTokenizer" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "tokenizer = BertTokenizer.from_pretrained('../../../bert-base-chinese/vocab_unk.txt', do_lower_case=True)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def get_positions(data_list, map_str):\n", " map_str = tokenizer.tokenize(map_str)\n", " map_str = [i.replace('#', '') for i in map_str]\n", " map_str = ''.join(map_str)\n", " # 如果只由一个词组成\n", " for word in data_list:\n", " if map_str.lower() in word.lower():\n", " start_id = end_id = data_list.index(word)\n", " return start_id, end_id\n", "\n", " start_id = -1\n", " end_id = -1\n", " for idx, word in enumerate(data_list):\n", " if start_id != - 1 and end_id != -1:\n", " return start_id, end_id\n", " if map_str.startswith(word):\n", " start_id = end_id = idx\n", " while end_id+1 < len(data_list) and data_list[end_id+1] in map_str:\n", " if \"\".join(data_list[start_id:end_id+2]) == map_str:\n", " print(\"\".join(data_list[start_id:end_id+2]))\n", " return start_id, end_id+1\n", " end_id += 1\n", " find_str = \"\"\n", " for idx in range(start_id, end_id+1):\n", " find_str = find_str + data_list[idx]\n", " if find_str != map_str:\n", " pre_extend = (data_list[start_id-1] if start_id > 0 else \"\") + find_str\n", " last_extend = find_str + (data_list[end_id+1] if end_id < len(data_list)-1 else \"\")\n", " pre_last_extend = (data_list[start_id-1] if start_id > 0 else \"\")+ find_str + (data_list[end_id+1] if end_id < len(data_list)-1 else \"\")\n", " print(\"need:{} \\nfind:{} \\n pre:{}\\n last:{} \\n pre_las:{}\".format(map_str,find_str, pre_extend,pre_extend,pre_last_extend))\n", " if map_str in pre_extend:\n", " start_id -= 1\n", " elif map_str in last_extend:\n", " end_id += 1\n", " elif map_str in pre_last_extend:\n", " start_id -= 1\n", " end_id += 1\n", " else:\n", " start_id = -1\n", " end_id = -1\n", " if start_id != -1 and end_id != -1:\n", " return start_id, end_id\n", " for idx, word in enumerate(data_list[:-1]):\n", " if map_str in (word+data_list[idx+1]):\n", " return idx, idx+1\n", " # print(\"word_list{} map_str {} loss\".format(data_list, map_str))\n", " return start_id, end_id" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "text = '《李烈钧自述》是2011年11月1日人民日报出版社出版的图书,作者是李烈钧'\n", "word_list = tokenizer.tokenize(text)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "人民日报出版社\n" ] }, { "data": { "text/plain": [ "(14, 20)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_positions(word_list, '人民日报出版社')" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['机', '械', '工', '业', '出', '版', '社']" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "word_list[10:17]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: data/small/origin_data/统计实体类别数目.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import json" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def load_data(path):\n", " '''\n", " 加载数据,返回json数组.\n", " '''\n", " data = []\n", " data_lines = open(path, encoding='utf-8').readlines()\n", " for line in data_lines:\n", " line_json = json.loads(line)\n", " if len(line_json['postag']) == 0:\n", " continue\n", " if 'spo_list' in line_json.keys() and len(line_json['spo_list']) == 0:\n", " continue\n", " data.append(line_json)\n", " return data\n", "train_data = load_data('./train_data.json')\n", "dev_data = load_data('./dev_data.json')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 统计类别数目" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "def get_type2num(datas):\n", " type2num = {}\n", " for data in datas:\n", " spo_list = data['spo_list']\n", " for spo in spo_list:\n", " obj_type = spo['object_type']\n", " sbj_type = spo['subject_type']\n", "# if obj_type == \"机构\" or sbj_type == '机构':\n", "# print(data['text'])\n", "# print(data['spo_list'])\n", " if obj_type not in type2num.keys():\n", " type2num[obj_type] = 1\n", " else:\n", " type2num[obj_type] += 1\n", " if sbj_type not in type2num.keys():\n", " type2num[sbj_type] = 1\n", " else:\n", " type2num[sbj_type] += 1\n", " return type2num" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "type_num_train = get_type2num(train_data)\n", "type_num_dev = get_type2num(dev_data)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'人物': 292928, '影视作品': 100202, '目': 10327, '生物': 10327, 'Number': 5276, 'Date': 39704, '国家': 12800, '网站': 12876, '网络小说': 13126, '图书作品': 33848, '歌曲': 54654, '地点': 24147, '气候': 920, '行政区': 2014, 'Text': 20193, '历史人物': 7682, '学校': 11514, '企业': 19388, '出版社': 17706, '书籍': 17706, '音乐专辑': 10399, '城市': 972, '景点': 575, '电视综艺': 2879, '机构': 5309, '作品': 553, '语言': 145, '学科专业': 46}\n" ] } ], "source": [ "print(type_num_train)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'地点': 2904, '人物': 36535, 'Date': 4961, '歌曲': 6614, '企业': 2509, '影视作品': 12505, '图书作品': 4393, '出版社': 2272, '书籍': 2272, '国家': 1717, 'Text': 2532, '目': 1268, '生物': 1268, '机构': 653, '网站': 1657, '网络小说': 1696, '音乐专辑': 1287, 'Number': 686, '学校': 1433, '历史人物': 951, '电视综艺': 379, '城市': 124, '景点': 77, '作品': 71, '行政区': 231, '气候': 103, '学科专业': 5, '语言': 15}\n" ] } ], "source": [ "print(type_num_dev)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: helpData.py ================================================ import json import os import re import numpy as np from pytorch_pretrained_bert import BertTokenizer import metrics from config import opt def load_data(path, case=0): ''' 加载数据,字典数据列表. 0:加载原始json数据 1:加载schema数据 ''' data = [] if case == 1: data_lines = open(path, encoding='utf-8').readlines() for line in data_lines: line_json = json.loads(line) data.append(line_json) return data data_lines = open(path, encoding='utf-8').readlines() for line in data_lines: line_json = json.loads(line) if line_json.get('postag', None) is None or len(line_json['postag']) == 0: continue if 'spo_list' in line_json.keys() and len(line_json['spo_list']) == 0: continue data.append(line_json) return data def write2file(data, path): with open(path, 'w') as f: f.write(json.dumps(data, ensure_ascii=False)) class DataHelper(object): def __init__(self, opt): self.opt = opt self.tokenizer = BertTokenizer.from_pretrained(opt.bert_vocab_unk, do_lower_case=True) self.id2r, self.r2id = None, None self.id2tag, self.tag2id = None, None self.id2type, self.type2id = None, None self.type2types = None self.get_relations() self.origin_train_data = self.down2topForDatas(load_data(self.opt.train_data_dir)) self.origin_dev_data = self.down2topForDatas(load_data(self.opt.dev_data_dir)) self.origin_test1_data = load_data(self.opt.test1_data_dir) def get_relations(self): """ 得到所有的xx2xx文件 """ origin_50_schema = load_data(self.opt.schema_dir_old, case=1) new_50_schema = load_data(self.opt.schema_dir_new, case=1) self.down2top = {} # 记录类别的上下为关系 for old, new in zip(origin_50_schema, new_50_schema): old_sample_obj_type = old['object_type'] old_sample_sbj_type = old['subject_type'] new_sample_obj_type = new['object_type'] new_sample_sbj_type = new['subject_type'] top_obj, top_sbj = self.down2top.get(old_sample_obj_type, None), self.down2top.get(old_sample_sbj_type, None) assert (top_obj == None or top_obj == new_sample_obj_type) \ and (top_sbj == None or top_sbj == new_sample_sbj_type) self.down2top[old_sample_obj_type] = new_sample_obj_type self.down2top[old_sample_sbj_type] = new_sample_sbj_type print("上下位关系为:{}".format(self.down2top)) self.r2id= {} self.id2r = {} self.id2tag = {} self.tag2id = {} self.id2type = {} self.type2id = {} exist_ent_type, exist_rel_type = set(), set() for sample in new_50_schema: obj, r, sbj = sample['object_type'], sample['predicate'], sample['subject_type'] if obj not in exist_ent_type: self.id2type[len(exist_ent_type)+1] = obj self.id2tag[2*len(exist_ent_type)+1]='B-'+ obj self.id2tag[2*len(exist_ent_type)+2]='I-'+ obj exist_ent_type.add(obj) if sbj not in exist_ent_type: self.id2type[len(exist_ent_type)+1] = sbj self.id2tag[2*len(exist_ent_type)+1]='B-'+sbj self.id2tag[2*len(exist_ent_type)+2]='I-'+sbj exist_ent_type.add(sbj) if r not in exist_rel_type: # 49给NA self.id2r[len(exist_rel_type)] = r exist_rel_type.add(r) self.id2r[len(exist_rel_type)] = 'NA' exist_rel_type.add('NA') self.id2tag[0] = 'O' exist_ent_type.add('O') self.id2type[0] = 'O' print("实体类型数目为:{};关系数目为:{}".format(len(exist_ent_type), len(exist_rel_type))) self.r2id = {self.id2r[idx]:idx for idx in self.id2r.keys()} self.tag2id = {self.id2tag[idx]: idx for idx in self.id2tag.keys()} self.type2id = {self.id2type[idx]: idx for idx in self.id2type.keys()} self.type2types = {ent:set() for ent in exist_ent_type} for sample in new_50_schema: obj, r, sbj = sample['object_type'], sample['predicate'], sample['subject_type'] self.type2types[obj].add(sbj) self.type2types = {ent: list(self.type2types[ent]) for ent in self.type2types.keys()} # 写入文件 print("写入xx2xx数据到目录{}..".format(self.opt.json_data_root)) write2file(self.id2r, self.opt.id2r_dir) write2file(self.r2id, self.opt.r2id_dir) write2file(self.id2tag, self.opt.id2tag_dir) write2file(self.tag2id, self.opt.tag2id_dir) write2file(self.id2type, self.opt.id2type_dir) write2file(self.type2id, self.opt.type2id_dir) write2file(self.type2types, self.opt.type2types_dir) def down2topForDatas(self, datas): topDatas = [] for data in datas: text = data['text'] downSpoList = data['spo_list'] topSpoList = [] for spo in downSpoList: spo['object_type'] = self.down2top[spo['object_type']] spo['subject_type'] = self.down2top[spo['subject_type']] topSpoList.append(spo) dataUnit = {} dataUnit['text'] = text dataUnit['spo_list'] = topSpoList topDatas.append(dataUnit) return topDatas def get_positions(self, data_list, map_str): """ 返回实体在单词列表中的位置 sample: >> input: ['球','星','姚','明', ...., ], '姚明' >> return: (2, 3) """ map_str = map_str.strip().replace(' ', '$') map_str = self.tokenizer.tokenize(map_str) map_str = [i.replace('#', '') for i in map_str] map_str = ''.join(map_str) data_list = [i.replace('#', '') for i in data_list] # 如果只由一个词组成 for word in data_list: if map_str.lower() in word.lower(): start_id = end_id = data_list.index(word) return start_id, end_id start_id = -1 end_id = -1 for idx, word in enumerate(data_list): if start_id != - 1 and end_id != -1: return start_id, end_id if map_str.startswith(word): start_id = end_id = idx while end_id+1 < len(data_list) and data_list[end_id+1] in map_str: if "".join(data_list[start_id:end_id+2]) == map_str: # print("".join(data_list[start_id:end_id+3])) return start_id, end_id+1 end_id += 1 find_str = "" for idx in range(start_id, end_id+1): find_str = find_str + data_list[idx] if find_str != map_str: pre_extend = (data_list[start_id-1] if start_id > 0 else "") + find_str last_extend = find_str + (data_list[end_id+1] if end_id < len(data_list)-1 else "") pre_last_extend = (data_list[start_id-1] if start_id > 0 else "")+ find_str + (data_list[end_id+1] if end_id < len(data_list)-1 else "") if map_str in pre_extend: start_id -= 1 elif map_str in last_extend: end_id += 1 elif map_str in pre_last_extend: start_id -= 1 end_id += 1 else: start_id = -1 end_id = -1 if start_id != -1 and end_id != -1: return start_id, end_id for idx, word in enumerate(data_list[:-1]): if map_str in (word+data_list[idx+1]): return idx,idx+1 # print("word_list{} map_str {} loss".format(data_list, map_str)) return start_id, end_id def get_tag(self, word_list, entity_list, type_list): ''' 得到一个句子的tag标签 sampple: >> input: ['球','星', '姚', '明', ...], ['姚明'], ['人物'] >> return: ['O', 'O', 'id(B-人物), id(I-人物)'] ''' word_list = [word.replace('#', '')for word in word_list] tag_list = [0] * len(word_list) for entity, type_ in zip(entity_list, type_list): start_id, end_id = self.get_positions(word_list, entity) if start_id == -1 or end_id == -1: continue # 补充书名号 # if start_id > 0 and end_id < len(word_list)-1: # if word_list[start_id-1] == '《' and word_list[end_id+1] == '》': # start_id -= 1 # end_id += 1 Bid = 2 * (self.type2id[type_]-1) + 1 Iid = 2 * (self.type2id[type_]-1) + 2 tag_list[start_id] = Bid if start_id < end_id: for idx in range(start_id+1, end_id+1): tag_list[idx] = Iid return tag_list def get_entity_list_and_type_list(self, data_list): """ 得到实体和对应的类型列表,一一对应 sample: >> input: [姚明,NBA] >> return:[人,组织] """ entity_list, type_list = [], [] for unit in data_list: entity_list.append(unit['object']) type_list.append(unit['object_type']) entity_list.append(unit['subject']) type_list.append(unit['subject_type']) return entity_list, type_list def get_sample_exist_entity2rlation(self, word_list, spo_list): """ 给定句子的 bert切词列表, 一句话的spo_list 返回该句话存在的头实体尾实体位置及对应的关系字典 {(obj_s, obj_e, sbj_s, sbj_e): r} """ golden_map = {} word_list = [word.replace('#', '')for word in word_list] for spo in spo_list: obj = spo['object'] sbj = spo['subject'] o_s, o_e = self.get_positions(word_list, obj) # if o_s > 0 and o_e < len(word_list)-1: # if word_list[o_s-1] == '《' and word_list[o_e+1] == '》': # o_s -= 1 # o_e += 1 s_s, s_e = self.get_positions(word_list, sbj) # if s_s > 0 and s_e < len(word_list)-1: # if word_list[s_s-1] == '《' and word_list[s_e+1] == '》': # s_s -= 1 # s_e += 1 r = self.r2id[spo['predicate']] golden_map[(o_s, o_e, s_s, s_e)] = r return golden_map def get_sample_all_entity2relation(self, tags_list, golden_map): """ 返回一个句子所有可能实体组合极其关系 [[s1, e1, s2, e2, r], [s1, e1, s2, e2, 0] ...]] """ all_entity = [] NA_entity = [] NA_num = 0 rel_num = 0 tags_list = [self.id2tag[i] for i in tags_list] ent_and_position = metrics.get_entities(tags_list) for ent1 in ent_and_position: for ent2 in ent_and_position: if ent2 == ent1: continue ent2_for_ent1 = self.type2types.get(ent1[0], []) if ent2[0] not in ent2_for_ent1: continue entity_tuple = (ent1[1], ent1[2], ent2[1], ent2[2]) # 0代表关系为NA re = golden_map.get(entity_tuple, self.r2id['NA']) ent_list = [entity_tuple[i] for i in range(4)] ent_list.append(re) if re == self.r2id['NA']: NA_entity.append(ent_list) else: all_entity.append(ent_list) rel_num = len(all_entity) if len(NA_entity) > 0: all_entity.extend(NA_entity[:min(2,len(NA_entity))]) NA_num = min(opt.naNum, len(NA_entity)) return all_entity, rel_num, NA_num def get_sens_and_tags_and_entsRel(self, datas, case=0): rel_max_sen = -1 exceed_length_num = 0 NA_num = 0 max_r_num = 0 all_rel_num = 0 sens, tags, ent_rel = [], [], [] PAD = self.tokenizer.convert_tokens_to_ids(['[PAD]']) O_tag = [self.type2id['O']] for data in datas: text = data['text'] # 一共修改3处, util中一处 此文件两处去掉首位空格,然后将空格替换为@ text = text.strip().replace(' ', '$') word_list = self.tokenizer.tokenize(text) sen = self.tokenizer.convert_tokens_to_ids(word_list) rel_max_sen = max(rel_max_sen, len(word_list)) if len(word_list) > self.opt.seq_length: exceed_length_num += 1 if len(word_list) < self.opt.seq_length: sen = sen + PAD * (self.opt.seq_length - len(sen)) else: sen = sen[:self.opt.seq_length] sens.append(sen) if case >= 2: continue entity_list, type_list = self.get_entity_list_and_type_list(data['spo_list']) #__import__('ipdb').set_trace() # '▌1999年:「喜剧之王」前两年的贺岁档其实都有星爷,只不过作品票房一直跟不上' tag = self.get_tag(word_list, entity_list, type_list) assert len(word_list) == len(tag) if len(word_list) < self.opt.seq_length: tag = tag + O_tag * (self.opt.seq_length - len(tag)) else: tag = tag[:self.opt.seq_length] tags.append(tag) # __import__('ipdb').set_trace() exist_map = self.get_sample_exist_entity2rlation(word_list, data['spo_list']) if case == 0: all_e2r, rel_num, NAs = self.get_sample_all_entity2relation(tag, exist_map) NA_num += NAs else: all_e2r = [] for key in exist_map.keys(): e2r = [key[0], key[1], key[2], key[3], exist_map[key]] all_e2r.append(e2r) all_rel_num += len(exist_map) max_r_num = max(max_r_num, len(all_e2r)) ent_rel.append(all_e2r) sens = np.array(sens) tags = np.array(tags) ent_rel = np.array(ent_rel) root_path = self.opt.npy_data_root if case == 0: branch = 'train/' if case == 1: branch = 'dev/' if case == 2: branch = 'test1/' if case == 3: branch = 'test2/' data_root = root_path + branch print("存在关系数:{};NA关系数{}; 每句话中最大关系数(含NA):{}".format(all_rel_num, NA_num, max_r_num)) print("真实最大长度{}; 设置最大长度{}; 超过长度数{}".format(rel_max_sen, self.opt.seq_length, exceed_length_num)) print("saving data in {}".format(data_root)) np.save(data_root+'sens', sens) if case < 2: np.save(data_root+'tags', tags) np.save(data_root+'relations', ent_rel) def process_data(self): if self.origin_train_data is not None: print("process train data") self.get_sens_and_tags_and_entsRel(self.origin_train_data, case=0) if self.origin_dev_data is not None: print("process dev data") self.get_sens_and_tags_and_entsRel(self.origin_dev_data, case=1) if self.origin_test1_data is not None: print("process test1 data") self.get_sens_and_tags_and_entsRel(self.origin_test1_data, case=2) print("确定数据质量...") metrics.judge_data_quality(self.opt) if __name__ == '__main__': dataHelper = DataHelper(opt) dataHelper.process_data() ================================================ FILE: main.py ================================================ # -*- encoding: utf-8 -*- import time import random import models import torch import logging import fire import json import numpy as np import torch.optim as optim from tqdm import trange from torch.optim.lr_scheduler import LambdaLR from torch.utils.data import DataLoader import utils import config from data import Data from metrics import f1_score, f1_score_ent_rel, eval_file from config import opt def load_data(path): ''' 加载数据,返回json数组. ''' data = [] data_lines = open(path, encoding='utf-8').readlines() for line in data_lines: line_json = json.loads(line) if len(line_json['postag']) == 0: continue if 'spo_list' in line_json.keys() and len(line_json['spo_list']) == 0: continue data.append(line_json) return data def now(): return str(time.strftime('%Y-%m-%d %H:%M:%S')) def collate_fn(batch): data, label, rel = zip(*batch) return data, label, rel def set_up(opt): random.seed(opt.seed) np.random.seed(opt.seed) torch.manual_seed(opt.seed) if opt.use_gpu: torch.cuda.manual_seed_all(opt.seed) def train(**kwargs): # 1 config opt.parse(kwargs) set_up(opt) if opt.use_gpu: torch.cuda.set_device(opt.gpu_id) # 2 model model = getattr(models, opt.model)(opt) if opt.use_gpu: model.cuda() if opt.load_ckpt: logging.info("{} load ckpt from {}".format(now(), opt.ckpt)) model.load(opt.ckpt_path) # 3 data train_data = Data(opt, case=0) train_data_loader = DataLoader(train_data, opt.batch_size, shuffle=False, num_workers=opt.num_workers, collate_fn=collate_fn) dev_data = Data(opt, case=1) dev_data_loader = DataLoader(dev_data, batch_size=opt.batch_size, shuffle=False, num_workers=opt.num_workers, collate_fn=collate_fn) utils.set_logger(opt.log_dir) logging.info("lamba: {}, na num: {}, data set:{}".format(opt.lam, opt.naNum, opt.dataset)) logging.info("CNN k:{}, filter num:{}, seq length:{}, tuple max length:{}".format(opt.filters, opt.filter_num, opt.seq_length, opt.tuple_max_len)) logging.info('{};train data: {}; dev data: {}'.format(now(), len(train_data), len(dev_data))) # 4 optimiezer train_steps = (len(train_data) + opt.batch_size - 1) // opt.batch_size dev_steps = (len(dev_data) + opt.batch_size - 1) // opt.batch_size if opt.full_finetuning: param_optimizer = list(model.named_parameters()) no_decay = ['bias', 'LayerNorm.bias', 'LayerNorm.weight'] # no_decay = ['bias', 'gamma', 'beta'] optimizer_grouped_parameters = [ {'params': [p for n, p in param_optimizer if not any(nd in n for nd in no_decay)], 'weight_decay_rate': 0.01}, {'params': [p for n, p in param_optimizer if any(nd in n for nd in no_decay)], 'weight_decay_rate': 0.0} ] else: param_optimizer = list(model.classifier.named_parameters()) optimizer_grouped_parameters = [{'params': [p for n, p in param_optimizer]}] optimizer = optim.Adam(optimizer_grouped_parameters, lr=opt.lr) scheduler = LambdaLR(optimizer, lr_lambda=lambda epoch: 1/(1 + 0.95*epoch)) # training for epoch in range(opt.epochs): logging.info("{}; epoch:{}/{};training....".format(now(), epoch, opt.epochs)) model.train() scheduler.step() loss_avg = utils.RunningAverage() loss_tag_avg = utils.RunningAverage() loss_rel_avg = utils.RunningAverage() data_interator = enumerate(train_data_loader) t = trange(train_steps) for i in t: idx, data = next(data_interator) sens , tags = list(map(lambda x: torch.LongTensor(x), data[:2])) entRels = data[-1] if opt.use_gpu: sens = sens.cuda() tags = tags.cuda() loss_tags, loss_rels = model(sens, tags, entRels) loss = opt.lam * loss_tags + (1-opt.lam)*loss_rels # 梯度裁剪 model.zero_grad() loss.backward() torch.nn.utils.clip_grad_norm_(parameters=model.parameters(), max_norm=opt.clip_grad) optimizer.step() loss_avg.update(loss.item()) loss_tag_avg.update(loss_tags.item()) loss_rel_avg.update(loss_rels.item()) t.set_postfix(loss='{:05.3f}/{:05.3f}'.format(loss_avg(), loss.item()), \ tag_loss='{:05.3f}/{:05.3f}'.format(loss_tag_avg(), loss_tags.item()), \ rel_loss='{:05.3f}/{:05.3f}'.format(loss_rel_avg(), loss_rels.item())) print("saving model ..") model.save(opt, epoch) #print("evaluate train set: ") #evaluate(opt, model, train_steps, train_data_loader, epoch, case='train') print("evaluate dev set: ") evaluate(opt, model, dev_steps, dev_data_loader, epoch, case='dev') def evaluate(opt, model, steps, data_loader, epoch, case='dev'): model.eval() predicts = [] goldens = [] g_entRel_t = [] p_entRel_t = [] tag2id = json.loads(open(opt.tag2id_dir, 'r').readline()) id2tag = {tag2id[k]: k for k in tag2id.keys()} with torch.no_grad(): data_interator = enumerate(data_loader) t = trange(steps) for i in t: idx, data = next(data_interator) sens, g_tags = list(map(lambda x: torch.LongTensor(x), data[:2])) g_entRel = data[-1] if opt.use_gpu: sens = sens.cuda() g_tags = g_tags.cuda() p_tags, all_out = model(sens, None, None) if 'crf' not in opt.model.lower(): p_tags = torch.max(p_tags, 2)[1] if opt.use_gpu: g_tags = g_tags.cpu() if 'crf' not in opt.model.lower(): p_tags = p_tags.cpu() g_tags = g_tags.tolist() goldens.extend([id2tag.get(idx) for indices in g_tags for idx in indices]) if 'crf' not in opt.model.lower(): p_tags = p_tags.tolist() predicts.extend([id2tag.get(idx) for indices in p_tags for idx in indices]) g_entRel_t.extend(g_entRel) p_entRel_t.extend(all_out) # 测试单纯的位置对应准确率 assert len(g_entRel_t) == len(p_entRel_t) p_t, r_t, f_t = f1_score_ent_rel(g_entRel_t, p_entRel_t) logging.info("epoch {}; POS: pre: {}; rel: {}; f1: {}".format(epoch, p_t, r_t, f_t)) # 测试实际转换为文字的准确率 if case =='dev': data_path = opt.dev_data_dir else: data_path = opt.train_data_dir json_data = load_data(data_path) # assert len(json_data) == len(p_entRel_t) predict_data = utils.get_text_spolist(opt, p_entRel_t, json_data) p, r, f = eval_file(predict_data, data_path) logging.info("epoch {}; REL: pre:{};rel:{};f1:{}".format(epoch, p,r,f)) assert len(g_tags) == len(p_tags) p, r, f = f1_score(goldens, predicts) logging.info("epoch {}; NER: pre: {}; rel: {}; f1: {}".format(epoch, p, r, f)) def tofile(**kwargs): opt.parse(kwargs) if opt.use_gpu: torch.cuda.set_device(opt.gpu_id) # 2 model model = getattr(models, opt.model)(opt) if opt.use_gpu: model.cuda() print("{} load ckpt from: {}".format(now(), opt.ckpt_path)) model.load(opt.ckpt_path) model.eval() data = Data(opt, case=opt.case+1) data_loader = DataLoader(data, batch_size=opt.batch_size, shuffle=False, num_workers=opt.num_workers, collate_fn=collate_fn) print("predict case:{},data num:{}".format(opt.case, len(data))) tag2id = json.loads(open(opt.tag2id_dir, 'r').readline()) id2tag = {tag2id[k]: k for k in tag2id.keys()} steps = (len(data) + opt.batch_size - 1) // opt.batch_size data_interator = enumerate(data_loader) t = trange(steps) p_entRel_t = [] dev_entRel_t = [] pred_tags = [] true_tags = [] with torch.no_grad(): for i in t: idx, data = next(data_interator) sens, true_tag = list(map(lambda x: torch.LongTensor(x), data[:2])) dev_entRel = data[-1] if opt.use_gpu: sens = sens.cuda() p_tags, all_out = model(sens, None, None) if 'crf' not in opt.model.lower(): p_tags = torch.max(p_tags, 2)[1] if opt.use_gpu: if 'crf' not in opt.model.lower(): p_tags = p_tags.cpu() p_entRel_t.extend(all_out) dev_entRel_t.extend(dev_entRel) true_tags.extend(true_tag.tolist()) if 'crf' not in opt.model.lower(): pred_tags.extend(p_tags.tolist()) else: pred_tags.extend(p_tags) if opt.case == 0: data_path = opt.dev_data_dir elif opt.case == 1: data_path = opt.test1_data_dir else: data_path = opt.test2_data_dir json_data = load_data(data_path)[:len(true_tags)] # assert len(json_data) == len(p_entRel_t) predict_data = utils.get_text_spolist(opt, p_entRel_t, json_data) if opt.case == 0: p, r, f = eval_file(predict_data, opt.dev_data_dir) print("predict res: pre:{};rel:{};f1:{}".format(p,r,f)) with open('out/pred_out', 'w') as f: for p_data in predict_data: f.write(json.dumps(p_data, ensure_ascii=False)+'\n') if opt.case == 0: dev_data = utils.get_text_spolist(opt,dev_entRel_t, json_data) p, r, f = eval_file(dev_data, opt.dev_data_dir) print("origin dev res: pre:{};rel:{};f1:{}".format(p,r,f)) with open('./out/true_out', 'w') as f: for p_data in dev_data: f.write(json.dumps(p_data, ensure_ascii=False)+'\n') utils.write_tags(opt, true_tags, pred_tags, json_data, './out/tag_out', id2tag) if __name__ == "__main__": fire.Fire() ================================================ FILE: metrics.py ================================================ """Thanks to https://github.com/chakki-works/seqeval Metrics to assess performance on sequence labeling task given prediction Functions named as ``*_score`` return a scalar value to maximize: the higher the better """ from __future__ import absolute_import from __future__ import division from __future__ import print_function from collections import defaultdict import numpy as np import json import utils def load_data(path): ''' 加载数据,返回json数组. ''' data = [] data_lines = open(path, encoding='utf-8').readlines() for line in data_lines: line_json = json.loads(line) if len(line_json['postag']) == 0: continue if 'spo_list' in line_json.keys() and len(line_json['spo_list']) == 0: continue data.append(line_json) return data def f1_score_ent_rel(g_entRel, p_entRel): """ g_entRel [[[s1,e1, s2, e2, r],[]], [[], []], ....] """ acc, pre, rel = 0.0, 0.0, 0.0 # 针对dev, 没有对dev补NA关系 # train, need for idx, g_sen in enumerate(g_entRel): p_sen = p_entRel[idx] pre += len(p_sen) rel += len(g_sen) for p_s in p_sen: if p_s in g_sen: acc+=1 p = 100 * acc / pre if pre > 0 else 0 r = 100 * acc / rel if rel > 0 else 0 f1 = 2 * p * r / (p + r) if p + r > 0 else 0 return p, r, f1 def get_entities(seq, suffix=False): """Gets entities from sequence. Args: seq (list): sequence of labels. Returns: list: list of (chunk_type, chunk_start, chunk_end). Example: >>> from seqeval.metrics.sequence_labeling import get_entities >>> seq = ['B-PER', 'I-PER', 'O', 'B-LOC'] >>> get_entities(seq) [('PER', 0, 1), ('LOC', 3, 3)] """ # for nested list if any(isinstance(s, list) for s in seq): seq = [item for sublist in seq for item in sublist + ['O']] prev_tag = 'O' prev_type = '' begin_offset = 0 chunks = [] for i, chunk in enumerate(seq + ['O']): if suffix: tag = chunk[-1] type_ = chunk.split('-')[0] else: tag = chunk[0] type_ = chunk.split('-')[-1] if end_of_chunk(prev_tag, tag, prev_type, type_): chunks.append((prev_type, begin_offset, i-1)) if start_of_chunk(prev_tag, tag, prev_type, type_): begin_offset = i prev_tag = tag prev_type = type_ return chunks def end_of_chunk(prev_tag, tag, prev_type, type_): """Checks if a chunk ended between the previous and current word. Args: prev_tag: previous chunk tag. tag: current chunk tag. prev_type: previous type. type_: current type. Returns: chunk_end: boolean. """ chunk_end = False if prev_tag == 'E': chunk_end = True if prev_tag == 'S': chunk_end = True if prev_tag == 'B' and tag == 'B': chunk_end = True if prev_tag == 'B' and tag == 'S': chunk_end = True if prev_tag == 'B' and tag == 'O': chunk_end = True if prev_tag == 'I' and tag == 'B': chunk_end = True if prev_tag == 'I' and tag == 'S': chunk_end = True if prev_tag == 'I' and tag == 'O': chunk_end = True if prev_tag != 'O' and prev_tag != '.' and prev_type != type_: chunk_end = True return chunk_end def start_of_chunk(prev_tag, tag, prev_type, type_): """Checks if a chunk started between the previous and current word. Args: prev_tag: previous chunk tag. tag: current chunk tag. prev_type: previous type. type_: current type. Returns: chunk_start: boolean. """ chunk_start = False if tag == 'B': chunk_start = True if tag == 'S': chunk_start = True if prev_tag == 'E' and tag == 'E': chunk_start = True if prev_tag == 'E' and tag == 'I': chunk_start = True if prev_tag == 'S' and tag == 'E': chunk_start = True if prev_tag == 'S' and tag == 'I': chunk_start = True if prev_tag == 'O' and tag == 'E': chunk_start = True if prev_tag == 'O' and tag == 'I': chunk_start = True if tag != 'O' and tag != '.' and prev_type != type_: chunk_start = True return chunk_start def f1_score(y_true, y_pred, average='micro', digits=2, suffix=False): """Compute the F1 score. The F1 score can be interpreted as a weighted average of the precision and recall, where an F1 score reaches its best value at 1 and worst score at 0. The relative contribution of precision and recall to the F1 score are equal. The formula for the F1 score is:: F1 = 2 * (precision * recall) / (precision + recall) Args: y_true : 2d array. Ground truth (correct) target values. y_pred : 2d array. Estimated targets as returned by a tagger. Returns: score : float. Example: >>> from seqeval.metrics import f1_score >>> y_true = [['O', 'O', 'O', 'B-MISC', 'I-MISC', 'I-MISC', 'O'], ['B-PER', 'I-PER', 'O']] >>> y_pred = [['O', 'O', 'B-MISC', 'I-MISC', 'I-MISC', 'I-MISC', 'O'], ['B-PER', 'I-PER', 'O']] >>> f1_score(y_true, y_pred) 0.50 """ true_entities = set(get_entities(y_true, suffix)) pred_entities = set(get_entities(y_pred, suffix)) nb_correct = len(true_entities & pred_entities) nb_pred = len(pred_entities) nb_true = len(true_entities) p = 100 * nb_correct / nb_pred if nb_pred > 0 else 0 r = 100 * nb_correct / nb_true if nb_true > 0 else 0 score = 2 * p * r / (p + r) if p + r > 0 else 0 return p, r, score def accuracy_score(y_true, y_pred): """Accuracy classification score. In multilabel classification, this function computes subset accuracy: the set of labels predicted for a sample must *exactly* match the corresponding set of labels in y_true. Args: y_true : 2d array. Ground truth (correct) target values. y_pred : 2d array. Estimated targets as returned by a tagger. Returns: score : float. Example: >>> from seqeval.metrics import accuracy_score >>> y_true = [['O', 'O', 'O', 'B-MISC', 'I-MISC', 'I-MISC', 'O'], ['B-PER', 'I-PER', 'O']] >>> y_pred = [['O', 'O', 'B-MISC', 'I-MISC', 'I-MISC', 'I-MISC', 'O'], ['B-PER', 'I-PER', 'O']] >>> accuracy_score(y_true, y_pred) 0.80 """ if any(isinstance(s, list) for s in y_true): y_true = [item for sublist in y_true for item in sublist] y_pred = [item for sublist in y_pred for item in sublist] nb_correct = sum(y_t==y_p for y_t, y_p in zip(y_true, y_pred)) nb_true = len(y_true) score = nb_correct / nb_true return score def classification_report(y_true, y_pred, digits=2, suffix=False): """Build a text report showing the main classification metrics. Args: y_true : 2d array. Ground truth (correct) target values. y_pred : 2d array. Estimated targets as returned by a classifier. digits : int. Number of digits for formatting output floating point values. Returns: report : string. Text summary of the precision, recall, F1 score for each class. Examples: >>> from seqeval.metrics import classification_report >>> y_true = [['O', 'O', 'O', 'B-MISC', 'I-MISC', 'I-MISC', 'O'], ['B-PER', 'I-PER', 'O']] >>> y_pred = [['O', 'O', 'B-MISC', 'I-MISC', 'I-MISC', 'I-MISC', 'O'], ['B-PER', 'I-PER', 'O']] >>> print(classification_report(y_true, y_pred)) precision recall f1-score support MISC 0.00 0.00 0.00 1 PER 1.00 1.00 1.00 1 avg / total 0.50 0.50 0.50 2 """ true_entities = set(get_entities(y_true, suffix)) pred_entities = set(get_entities(y_pred, suffix)) name_width = 0 d1 = defaultdict(set) d2 = defaultdict(set) for e in true_entities: d1[e[0]].add((e[1], e[2])) name_width = max(name_width, len(e[0])) for e in pred_entities: d2[e[0]].add((e[1], e[2])) last_line_heading = 'avg / total' width = max(name_width, len(last_line_heading), digits) headers = ["precision", "recall", "f1-score", "support"] head_fmt = u'{:>{width}s} ' + u' {:>9}' * len(headers) report = head_fmt.format(u'', *headers, width=width) report += u'\n\n' row_fmt = u'{:>{width}s} ' + u' {:>9.{digits}f}' * 3 + u' {:>9}\n' ps, rs, f1s, s = [], [], [], [] for type_name, true_entities in d1.items(): pred_entities = d2[type_name] nb_correct = len(true_entities & pred_entities) nb_pred = len(pred_entities) nb_true = len(true_entities) p = 100 * nb_correct / nb_pred if nb_pred > 0 else 0 r = 100 * nb_correct / nb_true if nb_true > 0 else 0 f1 = 2 * p * r / (p + r) if p + r > 0 else 0 report += row_fmt.format(*[type_name, p, r, f1, nb_true], width=width, digits=digits) ps.append(p) rs.append(r) f1s.append(f1) s.append(nb_true) report += u'\n' # compute averages report += row_fmt.format(last_line_heading, np.average(ps, weights=s), np.average(rs, weights=s), np.average(f1s, weights=s), np.sum(s), width=width, digits=digits) return report def get_sent2triple_set(json_datas): sen2set = {} for data in json_datas: sent = data['text'] spo_set = set() for spo_item in data['spo_list']: s = spo_item['subject'].lower() o = spo_item['object'].lower() r = spo_item['predicate'] if r == 'NA': continue spo_set.add((o, r, s)) sen2set[sent] = spo_set return sen2set def eval_file(predict_json, golden_file_path): ''' 传入两个数据格式如下文件 {"text": "《离开》是由张宇谱曲,演唱", "spo_list": [{"subject": "离开", "predicate": "歌手", "object": "张宇", "subject_type": "歌曲", "object_type": "人物"}, {"subject": "离开", "predicate": "作词", "object": "张宇", "subject_type": "歌曲", "object_type": "人物"}]} ''' correct_sum, predict_sum, recall_sum = 0.0, 0.0, 0.0 golden_data = load_data(golden_file_path)[:len(predict_json)] pred_sent2set = get_sent2triple_set(predict_json) golden_sent2set = get_sent2triple_set(golden_data) for sent in golden_sent2set.keys(): golden_set = golden_sent2set[sent] pred_set = pred_sent2set.get(sent, set()) recall_sum += len(golden_set) predict_sum += len(pred_set) for each in pred_set: if each in golden_set: correct_sum += 1 pre = correct_sum / predict_sum rel = correct_sum / recall_sum f1_num = pre + rel if f1_num == 0: f1_num = 10000 f1 = 2*pre*rel/f1_num return 100*pre, 100*rel, 100*f1 def judge_data_quality(opt): train_npy_data = np.load(opt.npy_data_root+'train/relations.npy') dev_npy_data = np.load(opt.npy_data_root+'dev/relations.npy') train_data = [] dev_data= [] for i in train_npy_data: train_data.append(i) for i in dev_npy_data: dev_data.append(i) json_data = load_data(opt.train_data_dir) train_data = utils.get_text_spolist(opt, train_data, json_data) json_data = load_data(opt.dev_data_dir) dev_data = utils.get_text_spolist(opt, dev_data, json_data) print("judge train data..") p, r, f = eval_file(train_data, opt.train_data_dir) print("train_data p:{};r:{};f1:{}".format(p, r, f)) print("judge dev data..") p, r, f = eval_file(dev_data, opt.dev_data_dir) print("dev_data p:{};r:{};f1:{}".format(p, r, f)) ================================================ FILE: models/BERT_CNN_CRF.py ================================================ from .BasicModule import BasicModule from pytorch_pretrained_bert import BertForTokenClassification import torch.nn as nn from metrics import get_entities import json import torch import torch.nn.functional as F from torch.nn import CrossEntropyLoss from modules import Encoder from torchcrf import CRF class BERT_CNN_CRF(BasicModule): def __init__(self, opt): super(BERT_CNN_CRF, self).__init__() self.opt = opt self.bertForToken = BertForTokenClassification.from_pretrained(self.opt.bert_model_dir, num_labels=self.opt.tag_nums) # tag分类 self.num_labels = self.opt.tag_nums self.crf = CRF(self.opt.tag_nums, batch_first=True) # 关系分类 self.type_emb = nn.Embedding(3, self.opt.bert_hidden_size) self.rel_cnns = Encoder(enc_method='cnn', filters_num=self.opt.filter_num, filters=self.opt.filters, f_dim=self.opt.bert_hidden_size) self.classifier_rels = nn.Linear(len(self.opt.filters)*self.opt.filter_num, self.opt.rel_nums) self.id2tag = json.loads(open(opt.id2tag_dir, 'r').readline()) self.type2types = json.loads(open(opt.type2types_dir, 'r').readline()) self.init_weights() def init_weights(self): nn.init.xavier_uniform_(self.classifier_rels.weight) nn.init.xavier_uniform_(self.type_emb.weight) for p in self.crf.parameters(): torch.nn.init.uniform_(p, 0, 1) def match_entities(self, tags_lists): """ 返回Batch个句子中所有可能存在关系的实体对 [[s1, e1, s2, e2, r], [s1, e1, s2, e2, 0] ...]] """ tags_lists = torch.max(tags_lists,2)[1] if self.opt.use_gpu: tags_lists = tags_lists.cpu() tags_lists = tags_lists.tolist() all_entitys = [] for tags_list in tags_lists: all_entity = [] tags_list = [self.id2tag[str(i)] for i in tags_list] ent_and_position = get_entities(tags_list) for ent1 in ent_and_position: for ent2 in ent_and_position: if ent2 == ent1: continue ent2_for_ent1 = self.type2types.get(ent1[0],[]) if ent2[0]not in ent2_for_ent1: continue all_entity.append([ent1[1], ent1[2], ent2[1], ent2[2], 0]) all_entitys.append(all_entity) return all_entitys def get_ent_pair_matrix(self, positions, sen_matrix): ''' position: [s1, e1, s2, e2] sent_matrix: 对应句子的bert输出 返回,该pair的cnn输入句子 ''' s1, e1, s2, e2 = positions type_obj = torch.zeros(e1-s1+1).long() type_sbj = torch.ones(e2-s2+1).long() if e1 < s2: m_s = e1+1 m_e = s2-1 else: m_s = e2+1 m_e = s1-1 type_mid = torch.ones(m_e-m_s+1).long() * 2 if self.opt.use_gpu: type_obj = type_obj.cuda() type_sbj = type_sbj.cuda() type_mid = type_mid.cuda() obj_vecs = sen_matrix[s1:e1+1,:] + self.type_emb(type_obj) sbj_vecs = sen_matrix[s2:e2+1,:] + self.type_emb(type_sbj) mid_vecs = sen_matrix[m_s:m_e+1,:] + self.type_emb(type_mid) sample_matrix = torch.cat([obj_vecs, sbj_vecs, mid_vecs], 0) if sample_matrix.size(0) < self.opt.tuple_max_len: length = sample_matrix.size(0) pad = torch.zeros(self.opt.tuple_max_len - sample_matrix.size(0), self.opt.bert_hidden_size) if self.opt.use_gpu: pad = pad.cuda() sample_matrix = torch.cat([sample_matrix, pad], 0) else: length = self.opt.tuple_max_len sample_matrix = sample_matrix[:self.opt.tuple_max_len,:] return sample_matrix, length def forward(self, batch_data, tags=None, entRels=None): batch_masks = batch_data.gt(0) # 用于长度的mask ''' B: 批大小, L: 句子最大, N: Toekn的类别数 input - batch_data: torch.LongTensor (B,L) 输入数据 - token_type_ids: torch.LongTensor 两句话时才有, 标记是那一句话的词 - attention_mask: torch.LongTensor (B,L) 用来对长度的mask - tags: torch.LongTensor (B)数据标签 - entRels: [[[s1,e1,s2,e2,r], []]; [[],[]]] output train : tags的损失和关系的损失 predict: [[[s1, e1, s2, e2, r], []],[[],[]]] ''' # 训练 sequence_output, _ = self.bertForToken.bert(batch_data, token_type_ids=None, attention_mask=batch_masks, output_all_encoded_layers=False) sequence_output = self.bertForToken.dropout(sequence_output) # (B, L, H) logits = self.bertForToken.classifier(sequence_output) all_rels, all_tuples, lengths = [], [], [] if tags is None: entRels = self.match_entities(logits) for idx, sen_ent_rels in enumerate(entRels): sen_matrix = sequence_output[idx,:,:] for sample in sen_ent_rels: # sample [s1, e1, s2, e2, r] sample_matrix, length = self.get_ent_pair_matrix(sample[:4], sen_matrix) if tags is not None: all_rels.append(sample[-1]) lengths.append(length) all_tuples.append(sample_matrix.unsqueeze(0)) lengths = torch.LongTensor(lengths) if self.opt.use_gpu: lengths = lengths.cuda() all_tuples = torch.cat(all_tuples, 0) # (B * tule_num, 1, tuple_max_len, bert_hidden_size) all_tuples = self.rel_cnns(all_tuples, lengths) all_tuples = [F.max_pool1d(i, i.size(2)).relu().squeeze(2) for i in all_tuples] all_tuples = torch.cat(all_tuples, 1) out = self.classifier_rels(all_tuples) # (B*tuple_num/B*P, 50) if tags is not None: loss_fct = CrossEntropyLoss() loss_tags = -self.crf(logits, tags) all_rels = torch.LongTensor(all_rels) if self.opt.use_gpu: all_rels = all_rels.cuda() loss_rels = loss_fct(out, all_rels) return loss_tags, loss_rels tags_out = self.crf.decode(logits) all_out = [] idx = 0 sum_case = sum([len(i) for i in entRels]) out = torch.max(out, 1)[1] assert sum_case == len(out) for entRel in entRels: sen_pair = [] for t, e in enumerate(entRel): entPostion = entRel[t] entPostion[-1] = out[idx].item() idx+=1 if entPostion[-1] == 49: continue sen_pair.append(entPostion) all_out.append(sen_pair) return tags_out, all_out ================================================ FILE: models/BERT_MUL_CNN.py ================================================ from .BasicModule import BasicModule from pytorch_pretrained_bert import BertForTokenClassification import torch.nn as nn from metrics import get_entities import json import torch import torch.nn.functional as F from torch.nn import CrossEntropyLoss from modules import Encoder class BERT_MUL_CNN(BasicModule): def __init__(self, opt): super(BERT_MUL_CNN, self).__init__() self.opt = opt self.bertForToken = BertForTokenClassification.from_pretrained(self.opt.bert_model_dir, num_labels=self.opt.tag_nums) # tag分类 self.num_labels = self.opt.tag_nums # 关系分类 self.type_emb = nn.Embedding(3, self.opt.bert_hidden_size) self.rel_cnns = Encoder(enc_method='cnn', filters_num=self.opt.filter_num, filters=self.opt.filters, f_dim=self.opt.bert_hidden_size) self.classifier_rels = nn.Linear(len(self.opt.filters)*self.opt.filter_num, self.opt.rel_nums) self.id2tag = json.loads(open(opt.id2tag_dir, 'r').readline()) self.type2types = json.loads(open(opt.type2types_dir, 'r').readline()) self.init_weights() def init_weights(self): nn.init.xavier_uniform_(self.classifier_rels.weight) nn.init.xavier_uniform_(self.type_emb.weight) def match_entities(self, tags_lists): """ 返回Batch个句子中所有可能存在关系的实体对 [[s1, e1, s2, e2, r], [s1, e1, s2, e2, 0] ...]] """ tags_lists = torch.max(tags_lists,2)[1] if self.opt.use_gpu: tags_lists = tags_lists.cpu() tags_lists = tags_lists.tolist() all_entitys = [] for tags_list in tags_lists: all_entity = [] tags_list = [self.id2tag[str(i)] for i in tags_list] ent_and_position = get_entities(tags_list) for ent1 in ent_and_position: for ent2 in ent_and_position: if ent2 == ent1: continue ent2_for_ent1 = self.type2types.get(ent1[0],[]) if ent2[0]not in ent2_for_ent1: continue all_entity.append([ent1[1], ent1[2], ent2[1], ent2[2], 0]) all_entitys.append(all_entity) return all_entitys def get_ent_pair_matrix(self, positions, sen_matrix): ''' position: [s1, e1, s2, e2] sent_matrix: 对应句子的bert输出 返回,该pair的cnn输入句子 ''' s1, e1, s2, e2 = positions type_obj = torch.zeros(e1-s1+1).long() type_sbj = torch.ones(e2-s2+1).long() if e1 < s2: m_s = e1+1 m_e = s2-1 else: m_s = e2+1 m_e = s1-1 type_mid = torch.ones(m_e-m_s+1).long() * 2 if self.opt.use_gpu: type_obj = type_obj.cuda() type_sbj = type_sbj.cuda() type_mid = type_mid.cuda() obj_vecs = sen_matrix[s1:e1+1,:] + self.type_emb(type_obj) sbj_vecs = sen_matrix[s2:e2+1,:] + self.type_emb(type_sbj) mid_vecs = sen_matrix[m_s:m_e+1,:] + self.type_emb(type_mid) sample_matrix = torch.cat([obj_vecs, sbj_vecs, mid_vecs], 0) if sample_matrix.size(0) < self.opt.tuple_max_len: length = sample_matrix.size(0) pad = torch.zeros(self.opt.tuple_max_len - sample_matrix.size(0), self.opt.bert_hidden_size) if self.opt.use_gpu: pad = pad.cuda() sample_matrix = torch.cat([sample_matrix, pad], 0) else: length = self.opt.tuple_max_len sample_matrix = sample_matrix[:self.opt.tuple_max_len,:] return sample_matrix, length def forward(self, batch_data, tags=None, entRels=None): batch_masks = batch_data.gt(0) # 用于长度的mask ''' B: 批大小, L: 句子最大, N: Toekn的类别数 input - batch_data: torch.LongTensor (B,L) 输入数据 - token_type_ids: torch.LongTensor 两句话时才有, 标记是那一句话的词 - attention_mask: torch.LongTensor (B,L) 用来对长度的mask - tags: torch.LongTensor (B)数据标签 - entRels: [[[s1,e1,s2,e2,r], []]; [[],[]]] output train : tags的损失和关系的损失 predict: [[[s1, e1, s2, e2, r], []],[[],[]]] ''' # 训练 sequence_output, _ = self.bertForToken.bert(batch_data, token_type_ids=None, attention_mask=batch_masks, output_all_encoded_layers=False) sequence_output = self.bertForToken.dropout(sequence_output) # (B, L, H) logits = self.bertForToken.classifier(sequence_output) all_rels, all_tuples, lengths = [], [], [] if tags is None: entRels = self.match_entities(logits) for idx, sen_ent_rels in enumerate(entRels): sen_matrix = sequence_output[idx,:,:] for sample in sen_ent_rels: # sample [s1, e1, s2, e2, r] sample_matrix, length = self.get_ent_pair_matrix(sample[:4], sen_matrix) if tags is not None: all_rels.append(sample[-1]) lengths.append(length) all_tuples.append(sample_matrix.unsqueeze(0)) lengths = torch.LongTensor(lengths) if self.opt.use_gpu: lengths = lengths.cuda() all_tuples = torch.cat(all_tuples, 0) # (B * tule_num, 1, tuple_max_len, bert_hidden_size) all_tuples = self.rel_cnns(all_tuples, lengths) all_tuples = [F.max_pool1d(i, i.size(2)).relu().squeeze(2) for i in all_tuples] all_tuples = torch.cat(all_tuples, 1) out = self.classifier_rels(all_tuples) # (B*tuple_num/B*P, 50) if tags is not None: loss_fct = CrossEntropyLoss() loss_tags = loss_fct(logits.view(-1, self.num_labels), tags.view(-1)) all_rels = torch.LongTensor(all_rels) if self.opt.use_gpu: all_rels = all_rels.cuda() loss_rels = loss_fct(out, all_rels) return loss_tags, loss_rels all_out = [] idx = 0 sum_case = sum([len(i) for i in entRels]) out = torch.max(out, 1)[1] assert sum_case == len(out) for entRel in entRels: sen_pair = [] for t, e in enumerate(entRel): entPostion = entRel[t] entPostion[-1] = out[idx].item() idx+=1 if entPostion[-1] == 49: continue sen_pair.append(entPostion) all_out.append(sen_pair) return logits, all_out ================================================ FILE: models/BasicModule.py ================================================ import torch import time class BasicModule(torch.nn.Module): ''' 封装了nn.Module,主要是提供了save和load两个方法 ''' def __init__(self): super(BasicModule, self).__init__() def load(self, path): ''' 可加载指定路径的模型 ''' self.load_state_dict(torch.load(path, map_location=lambda storage, loc: storage)) # self.load_state_dict(torch.load(path)) def save(self, opt, epoch=0): ''' 保存模型,默认使用“模型名字+时间”作为文件名 ''' name = './checkpoints/{}_sl:{}_k:{}_fn:{}_lam:{}_lr:{}_epoch:{}'.format(opt.model,\ opt.seq_length,\ opt.filters, \ opt.filter_num,\ opt.lam,\ opt.lr,\ epoch) torch.save(self.state_dict(), name) return name ================================================ FILE: models/__init__.py ================================================ from .BERT_MUL_CNN import BERT_MUL_CNN ================================================ FILE: modules/__init__.py ================================================ from .embedder import Embedder from .attenter import Attenter from .encoder import Encoder ================================================ FILE: modules/attenter.py ================================================ import torch import torch.nn as nn import torch.nn.functional as F class Attenter(nn.Module): def __init__(self, att_method='Hdot', f_dim=None, q_dim=None, q_num=None): super(Attenter, self).__init__() """ input: f_dim: dimension of input vectors q_dim: dimension of query vectors att_method: 'Hdot': QHW: a very simple att att_method 'Cat'*: tanh(H[W;q]+b): A complex att att_method, we just accept 1-dimension query vector 'Tdot1': QTanh(HW+b): att_method from paper: "Coevolutionary Recommendation Model: Mutual Learning between Ratings and Reviews" 'Tdot2': Tanh(QHW+b): att_method from parer: "HAMI: Neural Gender Prediction for Chinese Microblogging with Hierarchical Attention and Multi-channel Input """ self.att_method = att_method if self.att_method == 'Hdot': self.H = nn.Parameter(torch.randn(f_dim, q_dim)) elif self.att_method == 'Tdot1': self.L = nn.Linear(f_dim, q_dim) elif self.att_method == 'Tdot2': self.H = nn.Parameter(torch.randn(f_dim, q_dim)) self.att_bias = nn.Parameter(torch.randn(1, 1, q_num)) elif self.att_method == 'Cat': self.L = nn.Linear(f_dim+q_dim, 1) self.init_weight() def init_weight(self): if self.att_method == 'Hdot': nn.init.xavier_normal_(self.H) elif self.att_method == 'Tdot1' or self.att_method == 'Cat': nn.init.xavier_normal_(self.L.weight) nn.init.uniform_(self.L.bias) elif self.att_method == 'Tdot2': nn.init.xavier_normal_(self.H) nn.init.uniform_(self.att_bias) def sequence_mask(self, sequence_length, max_len=None): """ Accept length vector, and return mask matrix. refer:https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/masked_cross_entropy.py#L5 """ if max_len is None: max_len = sequence_length.data.max() batch_size = sequence_length.size(0) seq_range = torch.LongTensor(range(0, max_len)) seq_range_expand = seq_range.unsqueeze(0).expand(batch_size, max_len) if sequence_length.is_cuda: seq_range_expand = seq_range_expand.cuda() seq_length_expand = (sequence_length.unsqueeze(1).expand_as(seq_range_expand)) return seq_range_expand < seq_length_expand def Mask(self, inputs, sqe_len=None): """ A simper vision mask att_method just for input size (B, L, K) refer: https://github.com/bojone/attention/blob/master/attention_tf.py """ """ inputs: (B, L, K), the possibilities we need to mask sqe_len: (B) """ if sqe_len is None: return inputs mask = self.sequence_mask(sqe_len, input.size(1)) # (B, L) mask = mask.unsqueeze(-1) # (B, L, 1) outputs = inputs - (1 - mask).float() * 1e12 return outputs def forward(self, W, Q, sqe_len=None): """ input: W: sematic vectors (B:batchSize/None, L: numberOfVector, f_dim: featureDim) Q: query vectors (K:numberOfQueryVector, q_dim: queryVectorFeatureDim) sqe_len: the lengths of sentence in word level tip: K = 1 when attention att_method is Cat ouput: result: (B, K, f_dim) """ if len(W.size()) == 2: W = W.unsqueeze(0) if self.att_method == 'Hdot': V = torch.matmul(W, self.H) # (B, L, q_dim) A = torch.matmul(V, Q.t()) # (B, L, K) elif self.att_method == 'Tdot1': V = self.L(W).tanh() # (B, L, q_dim) A = torch.matmul(V, Q.t()) # (B, L, K) elif self.att_method == 'Tdot2': V = torch.matmul(W, self.H) # (B, L, q_dim) A = torch.matmul(V, Q.t()) + self.att_bias # (B, L, K) A = A.tanh() # (B, L, K) elif self.att_method == 'Cat': zeros = torch.zeros(W.size(0), W.size(1), Q.size(1)) if Q.is_cuda: zeros = zeros.cuda() extend_q = zeros + Q.squeeze(0) # (B, L, q_dim) V = torch.cat([W, extend_q], -1) # (B, L, f_dim + q_dim) A = self.L(V).tanh() # (B, L, K) tip:K = 1 if not sqe_len is None: A = self.Mask(A, sqe_len) A = F.softmax(A, 1).permute(0,2,1) # (B, K, L) result = torch.matmul(A, W) # (B, K, f_dim) return result ================================================ FILE: modules/embedder.py ================================================ from allennlp.modules.elmo import Elmo, batch_to_ids import torch import torch.nn as nn import numpy as np class Embedder(nn.Module): def __init__(self, emb_method='glove', glove_param=None, elmo_param=None, use_gpu=True): super(Embedder, self).__init__() if 'glove' in emb_method and glove_param is None: raise RuntimeError('glove_param is not provided') if 'elmo' in emb_method and elmo_param is None: raise RuntimeError('elmo_param is not provided') if emb_method == 'glove' and glove_param['use_id'] == False and glove_param['word2id_file'] is None: raise RuntimeError('word2id_file is not provided') self.use_gpu = use_gpu self.emb_method = emb_method if emb_method == 'elmo': self.elmo_param = elmo_param self.init_elmo() elif emb_method == 'glove': self.glove_param = glove_param self.init_glove() elif emb_method == 'elmo_glove': self.glove_param = glove_param self.elmo_param = elmo_param self.init_elmo() self.init_glove() self.word_dim = elmo_param['elmo_dim'] + glove_param['glove_dim'] def init_elmo(self): self.elmo = Elmo(self.elmo_param['elmo_options_file'], self.elmo_param['elmo_weight_file'], 1, requires_grad=self.elmo_param['requires_grad']) self.word_dim = self.elmo_param['elmo_dim'] def init_glove(self): if self.glove_param['use_id'] == False: self.word2id = np.load(self.glove_param['word2id_file']).tolist() self.glove = nn.Embedding(self.glove_param['vocab_size'], self.glove_param['glove_dim']) if not self.glove_param['glove_file'] is None: emb = torch.from_numpy(np.load(self.glove_param['glove_file'])) if self.use_gpu is True: emb = emb.cuda() self.glove.weight.data.copy_(emb) if self.glove_param['requires_grad'] == False: self.glove.weight.requires_grad = False self.word_dim = self.glove_param['glove_dim'] def get_elmo(self, sentence_lists): character_ids = batch_to_ids(sentence_lists) if self.use_gpu is True: character_ids = character_ids.cuda() embeddings = self.elmo(character_ids) return embeddings['elmo_representations'][0] def get_glove(self, sentence_lists): if self.glove_param['use_id'] is True: sentence_lists = torch.LongTensor(sentence_lists) if self.use_gpu is True: sentence_lists = sentence_lists.cuda() return self.glove(sentence_lists) max_len = max(map(lambda x: len(x), sentence_lists)) sentence_lists = list(map(lambda x: list(map(lambda w: self.word2id.get(w, 0), x)), sentence_lists)) sentence_lists = list(map(lambda x: x + [self.glove_param['vocab_size']-1] * (max_len - len(x)), sentence_lists)) sentence_lists = torch.LongTensor(sentence_lists) if self.use_gpu is True: sentence_lists = sentence_lists.cuda() embeddings = self.glove(sentence_lists) return embeddings def forward(self, sentence_lists): if self.emb_method == 'elmo': return self.get_elmo(sentence_lists) elif self.emb_method == 'glove': return self.get_glove(sentence_lists) elif self.emb_method == 'elmo_glove': elmo_embeddings = self.get_elmo(sentence_lists) glove_embeddings = self.get_glove(sentence_lists) return torch.cat([elmo_embeddings, glove_embeddings], -1) ================================================ FILE: modules/encoder.py ================================================ import torch import torch.nn as nn import torch.nn.functional as F class Encoder(nn.Module): def __init__(self, enc_method='cnn', filters_num=None, filters=None, f_dim=None, input_size=None, hidden_size=None, bidirectional=True): super(Encoder, self).__init__() if enc_method == 'cnn': if filters_num is None or filters is None or f_dim is None: raise RuntimeError("filters_num/filters/f_dim are not provided") else: if input_size is None or hidden_size is None: raise RuntimeError("input_size/hidden_size are not provided") self.enc_method = enc_method if enc_method == 'cnn': self.convs = nn.ModuleList([nn.Conv2d(1, filters_num, (k, f_dim), padding=(int(k / 2), 0)) for k in filters]) self.init_model_weight() elif enc_method == 'rnn': self.rnn = nn.RNN(input_size, hidden_size, batch_first=True, bidirectional=bidirectional) elif enc_method == 'gru': self.rnn = nn.GRU(input_size, hidden_size, batch_first=True, bidirectional=bidirectional) elif enc_method == 'lstm': self.rnn = nn.LSTM(input_size, hidden_size, batch_first=True, bidirectional=bidirectional) def init_model_weight(self): for conv in self.convs: nn.init.xavier_uniform_(conv.weight) #nn.init.constant_(conv.bias, 0.0) def sequence_mask(self, sequence_length, max_len=None): if max_len is None: max_len = sequence_length.data.max() batch_size = sequence_length.size(0) seq_range = torch.LongTensor(range(0, max_len)) seq_range_expand = seq_range.unsqueeze(0).expand(batch_size, max_len) if sequence_length.is_cuda: seq_range_expand = seq_range_expand.cuda() seq_length_expand = (sequence_length.unsqueeze(1).expand_as(seq_range_expand)) return seq_range_expand < seq_length_expand def Mask(self, inputs, sqe_len=None): if sqe_len is None: return inputs mask = self.sequence_mask(sqe_len, inputs.size(1)) # (B, L) mask = mask.unsqueeze(-1) # (B, L, 1) outputs = inputs * mask.float() return outputs def forward(self, inputs, lengths=None): if self.enc_method == 'cnn': if not lengths is None: inputs = self.Mask(inputs, lengths) x = inputs.unsqueeze(1) x = [conv(x).squeeze(3) for conv in self.convs] return x else: if not lengths is None: sorted_lengths, sorted_indexs = torch.sort(lengths, descending=True) tmp1, desorted_indexs = torch.sort(sorted_indexs, descending=False) x_rnn = inputs[sorted_indexs] packed_x_rnn = nn.utils.rnn.pack_padded_sequence(x_rnn, sorted_lengths.cpu().numpy(), batch_first=True) packed_rnn_output, tmp2 = self.rnn(packed_x_rnn) sort_rnn_output, tmp3 = nn.utils.rnn.pad_packed_sequence(packed_rnn_output, batch_first=True) rnn_output = sort_rnn_output[desorted_indexs] # (B, N, 2/1hidden_size) return rnn_output else: rnn_output, tmp = self.rnn(inputs) return rnn_output # (B, L, 2/1hidden_size) ================================================ FILE: utils.py ================================================ import logging import json from pytorch_pretrained_bert import BertTokenizer class RunningAverage(): """A simple class that maintains the running average of a quantity Example: ``` loss_avg = RunningAverage() loss_avg.update(2) loss_avg.update(4) loss_avg() = 3 ``` """ def __init__(self): self.steps = 0 self.total = 0 def update(self, val): self.total += val self.steps += 1 def __call__(self): return self.total / float(self.steps) def set_logger(log_path): """Set the logger to log info in terminal and file `log_path`. In general, it is useful to have a logger so that every output to the terminal is saved in a permanent file. Here we save it to `model_dir/train.log`. Example: ``` logging.info("Starting training...") ``` Args: log_path: (string) where to log """ logger = logging.getLogger() logger.setLevel(logging.INFO) if not logger.handlers: # Logging to a file file_handler = logging.FileHandler(log_path) file_handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s: %(message)s')) logger.addHandler(file_handler) # Logging to console stream_handler = logging.StreamHandler() stream_handler.setFormatter(logging.Formatter('%(message)s')) logger.addHandler(stream_handler) def get_text_spolist(opt, p_entRel_t, json_data): id2r = json.loads(open(opt.id2r_dir, 'r').readline()) tokenizer = BertTokenizer.from_pretrained(opt.bert_vocab_unk, do_lower_case=True) predictg_data = [] for idx, p_tuples in enumerate(p_entRel_t): data_unit = {} data = json_data[idx] text = data['text'] # 得到时按同样方式加工 text = text.strip().replace(' ', '$') word_list = tokenizer.tokenize(text) word_list = [word.replace('#', '')for word in word_list] spo_list = [] for p_sample in p_tuples: o_s, o_e, s_s, s_e, r = p_sample if r == 49: continue obj, sbj = '','' if max(o_s, o_e, s_s, s_e) >= len(word_list): continue for i in range(o_s, o_e+1): obj = obj + word_list[i] for i in range(s_s, s_e+1): sbj = sbj + word_list[i] #将@替换回来 obj = obj.replace('$', ' ') sbj = sbj.replace('$', ' ') spo_unit = {} spo_unit['object'] = obj spo_unit['subject'] = sbj spo_unit['predicate'] = id2r[str(r)] spo_list.append(spo_unit) # 替换回来: text = text.replace('$', ' ') data_unit['text'] = text data_unit['spo_list'] = spo_list predictg_data.append(data_unit) return predictg_data def norm_length(origin_list): """ 规范化标签格式长度 input: ['球', '星', '姚', '明'] """ return origin_list norm_list = [] for i in origin_list: if len(i) < 5: i = i + (5 - len(i)) * ' ' else: i = i[:5] norm_list.append(i) return norm_list def write_tags(opt, true_tags, pred_tags, json_data, out_dir, id2tag): f = open(out_dir, 'w') tokenizer = BertTokenizer.from_pretrained(opt.bert_vocab_unk, do_lower_case=True) for idx, data in enumerate(json_data): text = data['text'] # 得到时按同样方式加工 text = text.strip().replace(' ', '$') word_list = tokenizer.tokenize(text) word_list = norm_length([word.replace('#', '')for word in word_list]) true_tag = true_tags[idx][:len(word_list)] pred_tag = pred_tags[idx][:len(word_list)] true_tag = norm_length([id2tag[i] for i in true_tag]) pred_tag = norm_length([id2tag[i] for i in pred_tag]) sens = "".join(word_list) t_tag = " ".join(true_tag) p_tag = " ".join(pred_tag) f.write(sens+'\n') f.write(t_tag+'\n') f.write(p_tag+'\n') f.write("------------------------------------------------------------------\n") f.close()