├── CNNmodel ├── MLP.py ├── TextCNN.py ├── __init__.py ├── changeRelation.py ├── dataUtils.py ├── datas │ ├── all_word_dict.txt │ ├── my_dict.txt │ ├── predict.txt │ ├── predictBook │ │ └── predict.txt │ ├── relation │ │ ├── 依据.csv │ │ ├── 决定.csv │ │ ├── 包含.csv │ │ ├── 未知.csv │ │ └── 正相关.csv │ ├── relation_label │ ├── tempBook │ │ ├── sp0.txt │ │ ├── sp1.txt │ │ ├── sp10.txt │ │ ├── sp11.txt │ │ ├── sp12.txt │ │ ├── sp13.txt │ │ ├── sp14.txt │ │ ├── sp15.txt │ │ ├── sp16.txt │ │ ├── sp17.txt │ │ ├── sp18.txt │ │ ├── sp19.txt │ │ ├── sp2.txt │ │ ├── sp20.txt │ │ ├── sp21.txt │ │ ├── sp22.txt │ │ ├── sp23.txt │ │ ├── sp3.txt │ │ ├── sp4.txt │ │ ├── sp5.txt │ │ ├── sp6.txt │ │ ├── sp7.txt │ │ ├── sp8.txt │ │ └── sp9.txt │ └── word2vec126.pkl ├── myRNN.py ├── test.py ├── test2.py ├── test3.py ├── test_txt │ └── test.txt ├── train.py └── train_more.py ├── LICENSE ├── README.md ├── Utils ├── RelationUtils.py └── duplicate_removal.py ├── book ├── 人力资源管理概论.txt ├── 人员测评与选拔.txt ├── 劳动经济学.txt ├── 员工关系管理.txt ├── 员工招聘与配置.txt ├── 国际人力资源管理.txt ├── 培训与开发理论及技术.txt ├── 工作分析.txt ├── 战略人力资源审计.txt ├── 社会保障理论.txt ├── 组织文化.txt ├── 组织行为学.txt ├── 组织设计与管理.txt ├── 绩效管理.txt ├── 职业生涯管理.txt └── 薪酬管理原理.txt ├── data ├── all_word_dict.txt ├── expand_words.txt ├── key_word.txt ├── my_dict.txt ├── relation │ ├── 依据.csv │ ├── 包含.csv │ ├── 正相关.csv │ └── 等价.csv ├── result.csv └── triple ├── k-means-relation ├── Candidate.py ├── Node.py ├── ReCluster.py ├── find_tuple.py ├── kmeans_relation.py ├── readme.md └── result │ └── test.py ├── pattern-relation ├── 50relation.txt ├── __init__.py ├── all.txt ├── create_pro.py ├── deal_data.py ├── find_tuple.py ├── find_tuple_correlation.py ├── key_word.txt ├── readme.md ├── relation_test.txt ├── rule ├── rule.py ├── rule_correlation ├── rule_old ├── sorted_words └── tupleUtils.py ├── spiderDance ├── HRwords.txt ├── HRwordsCE.txt ├── pattern_chinese.py ├── spider_result.txt └── spider_test.py └── test ├── spider_result.txt ├── test.py ├── test2.py ├── 正确.txt └── 错误.txt /CNNmodel/MLP.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/3/20 13:18 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : MLP.py 8 | @Software: PyCharm 9 | @Desc: 10 | ''' 11 | import torch 12 | import torch.nn as nn 13 | 14 | 15 | class MLP(nn.Module): 16 | def __int__(self): 17 | super(MLP, self).__init__() 18 | 19 | self.model = nn.Sequential( 20 | 21 | nn.Linear(784, 200), 22 | nn.Dropout(0.5), 23 | nn.ReLU(inplace=True), 24 | nn.Linear(200, 200), 25 | nn.Dropout(0.5), 26 | nn.ReLU(inplace=True), 27 | nn.Linear(200, 10), 28 | nn.ReLU(inplace=True) 29 | ) 30 | 31 | def forward(self, x): 32 | x = self.model(x) 33 | return x 34 | -------------------------------------------------------------------------------- /CNNmodel/TextCNN.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/3/20 20:54 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : TextCNN.py 8 | @Software: PyCharm 9 | @Desc: 10 | ''' 11 | import torch.nn as nn 12 | # import torch 13 | # import numpy 14 | 15 | 16 | class TextCNN(nn.Module): 17 | def __init__(self, **kwargs): 18 | super(TextCNN, self).__init__() 19 | self.n_class = kwargs['n_class'] 20 | # print('n-class=', self.n_class) 21 | self.max_len = kwargs['max_len'] 22 | self.word_location_dim = kwargs['word_dim'] 23 | # n_class = 10 24 | # max_len = 32 25 | # word_location_dim = 128 26 | # (1,max_len,word_location_dim) 27 | self.conv1 = nn.Sequential( 28 | nn.Conv2d(in_channels=1, out_channels=256, kernel_size=(5, self.word_location_dim), stride=1, 29 | padding=(2, 0)), 30 | nn.ReLU(), 31 | nn.MaxPool2d(2) # 32 | ) 33 | # self.conv2 = nn.Sequential( 34 | # nn.Conv2d(in_channels=1, out_channels=64, kernel_size=(5, self.word_location_dim), stride=1, 35 | # padding=(2, 0)), 36 | # nn.ReLU(), 37 | # nn.MaxPool2d(2) # 38 | # ) 39 | # self.conv3 = nn.Sequential( 40 | # nn.Conv2d(in_channels=1, out_channels=128, kernel_size=(5, self.word_location_dim), stride=1, 41 | # padding=(2, 0)), 42 | # nn.ReLU(), 43 | # nn.MaxPool2d(2) # 44 | # ) 45 | self.out = nn.Sequential( 46 | nn.Linear(256 * self.max_len // 2, self.n_class) 47 | 48 | ) 49 | 50 | def forward(self, x): 51 | x = x.view(x.size(0), 1, self.max_len, self.word_location_dim) 52 | # a = self.conv1(x) 53 | # b = self.conv2(x) 54 | # c = self.conv3(x) 55 | # input = torch.cat((a, b, c), dim=1) 56 | # input = input.view(input.shape[0], -1) 57 | a = self.conv1(x) 58 | input = a.view(a.shape[0], -1) 59 | output = self.out(input) 60 | # output = F.softmax(output, dim=1) 61 | return output 62 | 63 | 64 | if __name__ == "__main__": 65 | TextCNN(n_class=5, max_len=32, word_dim=128) 66 | -------------------------------------------------------------------------------- /CNNmodel/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/10 15:15 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : __init__.py 7 | # @Software: PyCharm 8 | # @Desc : 9 | import os 10 | print(os.getcwd()) -------------------------------------------------------------------------------- /CNNmodel/changeRelation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/16 16:04 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : changeRelation.py 7 | # @Software: PyCharm 8 | # @Desc : 得到未知关系 9 | import os 10 | 11 | file = open("datas/relation/未知.csv", encoding='utf8', mode='r') 12 | file2 = open("datas/relation/未知.csv", encoding='utf8', mode='w') 13 | for line in file.readlines(): 14 | line_parts = line.strip('\n').split(',') 15 | line_parts[2] = '未知' 16 | strs=",".join(line_parts) 17 | file2.write(strs + '\n') 18 | file.close() 19 | file2.close() 20 | -------------------------------------------------------------------------------- /CNNmodel/dataUtils.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/3/20 16:49 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : dataUtils.py 8 | @Software: PyCharm 9 | @Desc: 数据处理与词向量转换 10 | ''' 11 | import os 12 | import jieba 13 | 14 | import pickle 15 | import numpy 16 | import itertools 17 | import torch 18 | 19 | 20 | class DataIndex: 21 | def __init__(self, word, begin, end): 22 | self.word = word 23 | self.begin = begin 24 | self.end = end 25 | 26 | def __gt__(self, other): 27 | """ 用以比较一个DataIndex是否包含另一个,如果包含则返回true 28 | :param other: 29 | :return: 30 | """ 31 | if self.word.find(other.word) != -1: 32 | if self.begin <= other.begin and self.end >= other.end: 33 | return True 34 | else: 35 | return False 36 | else: 37 | return False 38 | 39 | 40 | class dataHelper: 41 | def __init__(self, entity_path, word2vec_path): 42 | self.entity_path = entity_path 43 | jieba.load_userdict(entity_path) 44 | # 读取word2vec 45 | # '../wordsEmbedding/result/word2vec_xinchou.pkl' 46 | word2vec_file = open(word2vec_path, 'rb') 47 | self.all_word_vec = pickle.load(word2vec_file) 48 | self.MAX_LEN = 100 49 | self.WORD_DIM = 126 # 126+2=128 50 | relation_path = os.listdir("datas/relation") 51 | # 关系label 52 | self.relations = {} 53 | # relation_label = open("datas/relation_label", mode='w', encoding='utf-8') 54 | # 关系三元组 55 | self.all_triple = [] 56 | # "../data/triple" 57 | # triple_file = open(triplePath, mode='w', encoding='utf-8') 58 | self.count = 0 59 | # relation_label.write('未知 0\n') 60 | # relations['未知'] = 0 61 | # 获取当前label的最大值 62 | self.relation_max = {} 63 | for file in relation_path: 64 | file_name = file.split(".")[0] 65 | self.relations[file_name] = self.count 66 | # relation_label.write(file_name + ' ' + str(self.count) + '\n') 67 | file_reader = open("datas/relation/" + file, "r", encoding='utf-8') 68 | index = 0 69 | for lines in file_reader.readlines(): 70 | self.all_triple.append(lines.strip('\n')) 71 | # triple_file.write(lines.strip('\n') + '\n') 72 | index += 1 73 | self.relation_max[self.count] = index 74 | self.count += 1 75 | file_reader.close() 76 | # relation_label.close() 77 | 78 | def entity_initalize(self, entity_path): 79 | """ 领域词存储 80 | :param entity_path: 领域词文件 81 | :return: entity_words: 领域词 82 | """ 83 | entity_file = open(entity_path, encoding="UTF8", mode="r") 84 | entity_words = [] 85 | for word in entity_file.readlines(): 86 | if word.strip('\n') != '': 87 | entity_words.append(word.strip('\n')) 88 | entity_words.sort(key=lambda x: (len(x), x), reverse=True) 89 | return entity_words 90 | 91 | def tripleHelper(self, numpySavePath): 92 | """ 93 | :param triplePath: 三元组(含路径)的位置 94 | :param numpySavePath: CNN输入向量的的存放路径 95 | """ 96 | # relation_path = os.listdir("datas/relation") 97 | # # 关系label 98 | # relations = {} 99 | # relation_label = open("datas/relation_label", mode='w', encoding='utf-8') 100 | # # 关系三元组 101 | # all_triple = [] 102 | # # "../data/triple" 103 | # # triple_file = open(triplePath, mode='w', encoding='utf-8') 104 | # count = 0 105 | # # relation_label.write('未知 0\n') 106 | # # relations['未知'] = 0 107 | # # 获取当前label的最大值 108 | # relation_max = {} 109 | # 110 | # for file in relation_path: 111 | # file_name = file.split(".")[0] 112 | # relations[file_name] = count 113 | # relation_label.write(file_name + ' ' + str(count) + '\n') 114 | # file_reader = open("datas/relation/" + file, "r", encoding='utf-8') 115 | # index = 0 116 | # for lines in file_reader.readlines(): 117 | # all_triple.append(lines.strip('\n')) 118 | # # triple_file.write(lines.strip('\n') + '\n') 119 | # index += 1 120 | # relation_max[count] = index 121 | # count += 1 122 | # file_reader.close() 123 | # relation_label.close() 124 | # triple_file.close() 125 | 126 | # 分词 127 | 128 | word_train_vector = [] 129 | labels_train = [] 130 | word_test_vector = [] 131 | labels_test = [] 132 | location = [self.MAX_LEN] 133 | relation_sum = [0] * self.count 134 | # print(len(all_triple)) 135 | for triple in self.all_triple: 136 | triple_vec = [] 137 | part_triple = triple.split(',', 3) 138 | begin, end = part_triple[0], part_triple[1] 139 | # 分词与拼接 140 | split_begin = part_triple[3].index(begin) 141 | split_end = part_triple[3].index(end) 142 | words = jieba.lcut(part_triple[3][:split_begin]) 143 | words.append(begin) 144 | words.extend(jieba.lcut(part_triple[3][split_begin + len(begin):split_end])) 145 | words.append(end) 146 | words.extend(jieba.lcut(part_triple[3][split_end + len(end):])) 147 | # print(words) 148 | index0, index1 = words.index(begin), words.index(end) 149 | # 位置向量 150 | if len(words) > self.MAX_LEN: 151 | print(words) 152 | location0 = numpy.arange(start=-index0, stop=self.MAX_LEN - index0, dtype=numpy.int32).tolist() 153 | location1 = numpy.arange(start=-index1, stop=self.MAX_LEN - index1, dtype=numpy.int32).tolist() 154 | # location0 = numpy.arange(start=-index0, stop=len(words) - index0, dtype=numpy.int32).tolist() 155 | # location1 = numpy.arange(start=-index1, stop=len(words) - index1, dtype=numpy.int32).tolist() 156 | for index, word in enumerate(words): 157 | temp_list = [location0[index], location1[index]] 158 | # temp_list = [] 159 | # 加入位置向量 160 | try: 161 | word_location = numpy.append(self.all_word_vec[word], temp_list, axis=0) 162 | # 可能没有得到该词的词向量 163 | except: 164 | random_numpy = numpy.random.rand(self.WORD_DIM) 165 | word_location = numpy.append(random_numpy, temp_list, axis=0) 166 | triple_vec.append(word_location) 167 | # 插入为定长 168 | value = self.MAX_LEN - len(triple_vec) 169 | if value > 0: 170 | for i in range(0, value): 171 | ndarray = numpy.zeros(shape=self.WORD_DIM + 2) 172 | # ndarray = numpy.zeros(shape=self.WORD_DIM) 173 | triple_vec.append(ndarray) 174 | # 训练集 175 | if relation_sum[self.relations[part_triple[2]]] < self.relation_max[self.relations[part_triple[2]]] * 0.85: 176 | # words_list 177 | word_train_vector.append(triple_vec) 178 | labels_train.append(self.relations[part_triple[2]]) 179 | # relation_num增加 180 | relation_sum[self.relations[part_triple[2]]] += 1 181 | # 测试集 182 | else: 183 | # words_list 184 | word_test_vector.append(triple_vec) 185 | labels_test.append(self.relations[part_triple[2]]) 186 | 187 | print(type(word_train_vector)) 188 | 189 | numpy_words_train = numpy.array(word_train_vector, dtype=numpy.float) 190 | numpy_labels_train = numpy.array(labels_train, dtype=numpy.float) 191 | numpy_class_num = numpy.arange(start=0, stop=self.count) 192 | numpy_words_test = numpy.array(word_test_vector, dtype=numpy.float) 193 | numpy_labels_test = numpy.array(labels_test, dtype=numpy.float) 194 | # 模型保存 # numpy.npz 195 | numpy.savez(numpySavePath, labels_train=numpy_labels_train, words_train=numpy_words_train, 196 | class_num=numpy_class_num, words_test=numpy_words_test, labels_test=numpy_labels_test) 197 | 198 | def bookHelper(self, bookPath, numpySavePath): 199 | """ 200 | 201 | :param bookPath: 202 | :param numpySavePath: 203 | :return: 204 | """ 205 | # 此处已排序完成 206 | entity_words = self.entity_initalize(self.entity_path) 207 | # 保存的词向量 208 | word_vector = [] 209 | # 保存的词关系及句子 210 | 211 | count = 0 212 | for book in os.listdir(bookPath): 213 | tuple_words = [] 214 | tuple_sentences = [] 215 | read_file = open(bookPath + "/" + book, mode="r", encoding="UTF8") 216 | for line in read_file.readlines(): 217 | line = line.strip('\n') 218 | if line != "": 219 | words_index = [] 220 | # jieba分词拿到的词可能不是最佳词 221 | # words = jieba.lcut(line) 222 | # for word in words: 223 | # if word in entity_words and word not in words_list: 224 | # words_list.append(word) 225 | for word in entity_words: 226 | begin = line.find(word) 227 | if begin != -1: 228 | otherIndex = DataIndex(word, begin, begin + len(word)) 229 | temp_bool = False 230 | # 进行words_list判断 231 | for dataIndex in words_index: 232 | if not dataIndex.__gt__(otherIndex): 233 | continue 234 | else: 235 | temp_bool = True 236 | break 237 | if not temp_bool: 238 | words_index.append(otherIndex) 239 | words_list = [] 240 | for dataIndex in words_index: 241 | words_list.append(dataIndex.word) 242 | if len(words_list) < 2: 243 | continue 244 | # 任意取两个全排列,[0]得到的是一维数组 245 | temp_combines = [] 246 | temp_combines.append(list(itertools.permutations(words_list, 2))) 247 | words_combines = temp_combines[0] 248 | print(words_combines) 249 | for words_combine in words_combines: 250 | # 这才是分词 251 | begin, end = words_combine[0], words_combine[1] 252 | # 分词与拼接 253 | # print(part_triple[3]) 254 | split_begin = line.index(begin) 255 | split_end = line.index(end) 256 | words = jieba.lcut(line[:split_begin]) 257 | words.append(begin) 258 | words.extend(jieba.lcut(line[split_begin + len(begin):split_end])) 259 | words.append(end) 260 | words.extend(jieba.lcut(line[split_end + len(end):])) 261 | if len(words) > self.MAX_LEN: 262 | continue 263 | # 上面为分段分词 264 | triple_vec = [] 265 | index0, index1 = words.index(words_combine[0]), words.index(words_combine[1]) 266 | # 位置向量 267 | location0 = numpy.arange(start=-index0, stop=self.MAX_LEN - index0, dtype=numpy.int32).tolist() 268 | location1 = numpy.arange(start=-index1, stop=self.MAX_LEN - index1, dtype=numpy.int32).tolist() 269 | for index, word in enumerate(words): 270 | temp_list = [location0[index], location1[index]] 271 | # 加入位置向量 272 | try: 273 | word_location = numpy.append(self.all_word_vec[word], temp_list, axis=0) 274 | # 可能没有得到该词的词向量 275 | except: 276 | random_numpy = numpy.random.rand(self.WORD_DIM) 277 | word_location = numpy.append(random_numpy, temp_list, axis=0) 278 | triple_vec.append(word_location) 279 | # 插入为定长 280 | value = self.MAX_LEN - len(triple_vec) 281 | if value > 0: 282 | for i in range(0, value): 283 | ndarray = numpy.zeros(shape=self.WORD_DIM + 2) 284 | triple_vec.append(ndarray) 285 | word_vector.append(triple_vec) 286 | tuple_words.append([words_combine[0], words_combine[1]]) 287 | tuple_sentences.append(line.strip('\n')) 288 | predict_sentences = numpy.asarray(word_vector, dtype=numpy.float) 289 | numpy_words = numpy.array(tuple_words, dtype=numpy.str) 290 | numpy_sentences = numpy.array(tuple_sentences, dtype=numpy.str) 291 | # 模型保存 # numpy.npz 292 | numpy.savez(numpySavePath + "/numpy" + str(count) + ".npz", 293 | predict_sentences=predict_sentences, tuple_words=numpy_words, 294 | tuple_sentences=numpy_sentences) 295 | word_vector = [] 296 | count += 1 297 | 298 | def reliabilityHelper(self, Pt, Ps, sentences_vector, predict_tensors): 299 | """ 300 | 三元组分类 301 | :param Ps: 可信阙值 302 | :param Pt: 保留阙值 303 | :param sentences_vector:句向量(可直接用以训练或预测等) 304 | :param predict_tensors:句子的预测向量 305 | :return: 306 | """ 307 | predict_logits = torch.max(predict_tensors, 1)[0] 308 | predict_relations = torch.max(predict_tensors, 1)[1] 309 | middle_tensors = {} 310 | right_tensors = {} 311 | left_tensors = {} 312 | for index in range(predict_logits.shape[0]): 313 | # uuid_num = uuid.uuid4() 314 | # print(predict_logit) 315 | # print(predict_logits[index]) 316 | uuid_num = index 317 | if predict_logits[index] >= Pt: 318 | # 映射关系 uuid-句向量—预测概率-预测关系 319 | right_tensors[uuid_num] = [] 320 | right_tensors[uuid_num].append(sentences_vector[index]) 321 | right_tensors[uuid_num].append(predict_logits[index]) 322 | right_tensors[uuid_num].append(predict_relations[index]) 323 | elif Ps <= predict_logits[index] < Pt: 324 | # 映射关系 uuid-句向量—预测概率-预测关系 325 | middle_tensors[uuid_num] = [] 326 | middle_tensors[uuid_num].append(sentences_vector[index]) 327 | middle_tensors[uuid_num].append(predict_logits[index]) 328 | middle_tensors[uuid_num].append(predict_relations[index]) 329 | else: 330 | # print(predict_tensors[index]) 331 | # 映射关系 uuid-句向量—预测概率-预测关系 332 | left_tensors[uuid_num] = [] 333 | left_tensors[uuid_num].append(sentences_vector[index]) 334 | left_tensors[uuid_num].append(predict_logits[index]) 335 | left_tensors[uuid_num].append(predict_relations[index]) 336 | return left_tensors, middle_tensors, right_tensors 337 | 338 | def sentenceHelper(self, sentences_path, numpySavePath): 339 | """ 340 | 341 | :param sentences_path: 342 | :param numpySavePath: 343 | :return: 344 | """ 345 | word_train_vector = [] 346 | predict_sentences = [] 347 | file_reader = open(sentences_path, "r", encoding='utf-8') 348 | for lines in file_reader.readlines(): 349 | predict_sentences.append(lines.strip('\n')) 350 | for triple in predict_sentences: 351 | triple_vec = [] 352 | part_triple = triple.split(',', 2) 353 | begin, end = part_triple[0], part_triple[1] 354 | # 分词与拼接 355 | split_begin = part_triple[2].index(begin) 356 | split_end = part_triple[2].index(end) 357 | words = jieba.lcut(part_triple[2][:split_begin]) 358 | words.append(begin) 359 | words.extend(jieba.lcut(part_triple[2][split_begin + len(begin):split_end])) 360 | words.append(end) 361 | words.extend(jieba.lcut(part_triple[2][split_end + len(end):])) 362 | # print(words) 363 | index0, index1 = words.index(begin), words.index(end) 364 | # 位置向量 365 | if len(words) > self.MAX_LEN: 366 | print(words) 367 | location0 = numpy.arange(start=-index0, stop=self.MAX_LEN - index0, dtype=numpy.int32).tolist() 368 | location1 = numpy.arange(start=-index1, stop=self.MAX_LEN - index1, dtype=numpy.int32).tolist() 369 | for index, word in enumerate(words): 370 | temp_list = [location0[index], location1[index]] 371 | # temp_list = [] 372 | # 加入位置向量 373 | try: 374 | word_location = numpy.append(self.all_word_vec[word], temp_list, axis=0) 375 | # 可能没有得到该词的词向量 376 | except: 377 | random_numpy = numpy.random.rand(self.WORD_DIM) 378 | word_location = numpy.append(random_numpy, temp_list, axis=0) 379 | triple_vec.append(word_location) 380 | # 插入为定长 381 | value = self.MAX_LEN - len(triple_vec) 382 | if value > 0: 383 | for i in range(0, value): 384 | ndarray = numpy.zeros(shape=self.WORD_DIM + 2) 385 | # ndarray = numpy.zeros(shape=self.WORD_DIM) 386 | triple_vec.append(ndarray) 387 | word_train_vector.append(triple_vec) 388 | numpy_words_train = numpy.array(word_train_vector, dtype=numpy.float) 389 | print(numpy_words_train.shape) 390 | numpy_class_num = numpy.arange(start=0, stop=self.count) 391 | numpy_sentences = numpy.array(predict_sentences, dtype=numpy.str) 392 | # 模型保存 # numpy.npz 393 | numpy.savez(numpySavePath, words_predict=numpy_words_train, 394 | class_num=numpy_class_num, tuple_sentences=numpy_sentences) 395 | -------------------------------------------------------------------------------- /CNNmodel/datas/predict.txt: -------------------------------------------------------------------------------- 1 | (5)发展 2 | 通过员工培训、工作丰富化、职业生涯规划与开发,促进员工知识、技巧和其他方面素质提高,使其劳动能力得到增强和发挥,最大限度地实现其个人价值和对企业的贡献率,达到员工个人和企业共同发展的目的。 3 | a.员工培训:根据个人、工作、企业的需要制定培训计划,选择培训的方式和方法,对培训效果进行评估。 4 | b.职业发展管理:帮助员工制定个人发展计划,使个人的发展与企业的发展相协调,满足个人成长的需要。 5 | 第一,整体而言,人力资源工作要和战略、技术、产品等其他要素联系起来; 6 | 第二,人力资源必须要推动绩效。推动落实企业的战略和经营目标是现代人力资源管理工作的使命,因此绩效管理是推动型人力资源管理工作的中枢。 7 | 第一,确定人力资源的质量标准; 8 | 第二,建立人力资源的质量检测体系; 9 | 第三,建立人力资源的质量保证体系。 10 | 人力资源规划与政策 11 | 开发和整合人力资源计划与政策,确保与组织战略一致性,支持公司业绩目标的实现。 12 | 招聘与录用 13 | 提供及时和有效的方法,吸引和招聘到合适的、有经验、技术的员工,以满足组织要求。 14 | 薪酬福利与激励 15 | 提供薪酬和福利框架,以激励更高的工作业绩,确保组织目标的实现和优秀人才的保留。 16 | 员工发展与培训 17 | 协助开发员工必要的能力以确保组织目标的实现,提供框架以帮助解决员工问题。 18 | 员工遣任与退任 19 | 确保员工迁移与中止有效管理和成本合理,及充分解决对个体员工的冲击。 20 | 信息管理 21 | 确保人力资源信息的产生和流程运行高效、精确,并保持与其他业务系统和流程的整合。 22 | 1. 管理人员判断法 23 | 管理人员判断法,即企业各级管理人员根据自己的经验和直接,自下而上确定未来所需人员。这是一种粗浅的人力需求预测方法,主要适用于短期预测。 24 | 2. 经验预测法 25 | 经验预测法也称比率分析,即根据以往的经验对人力资源需求进行预测。 26 | 由于不同人的经验会有差别,不同新员工的能力也有差别,特别是管理人员、销售人员,在能力、业绩上的差别更大。所以,若采用这种方法预测人员需求,要注意经验的积累和预测的准确度。 27 | 3. 德尔菲法 28 | 德尔菲法是使专家们对影响组织某一领域发展(如组织将来对劳动力的需求)达成一致意见的结构化方法。该方法的目标是通过综合专家们各自的意见来预测某一领域的发展趋势。具体来说,由人力资源部作为中间人,将第一轮预测中专家们各自单独提出的意见集中起来并加以归纳后反馈给他们,然后重复这一循环,使专家们有机会修改他们的预测并说明修改的原因。一般情况下重复3~5次之后,专家们的意见即趋于一致。 29 | 这里所说的专家,可以是来自一线的管理人员,也可以是高层经理;可以是企业内部的,也可以是外请的。专家的选择基于他们对影响企业的内部因素的了解程度。 30 | 4. 趋势分析法 31 | 这种定量分析方法的基本思路是:确定组织中哪一种因素与劳动力数量和结构的关系最密切,然后找出这一因素随聘用人数而变化的趋势,由此推断出未来人力资源的需求。 32 | 选择与劳动力数量有关的组织因素是需求预测的关键一步。这个因素至少应满足两个条件:第一,组织因素应与组织的基本特性直接相关;第二,所选因素的变化必须与所需人员数量变化成比例。有了与聘用人数相关的组织因素和劳动生产率,我们就能够估计出劳动力的需求数量了。 33 | 在运用趋势分析法做预测时,可以完全根据经验估计,也可以利用计算机进行回归分析。 34 | 所谓回归分析法,就是利用历史数据找出某一个或几个组织因素与人力资源需求量的关系,并将这一关系用一个数学模型表示出来,借助这个数学模型,就可推测未来人力资源的需求。但此过程比较复杂,需要借助计算机来进行。 35 | 一、人才的变化。未来的人才特别是研究生在学校里学到的不仅是专业知识,更多的是学习的能力和研究方法,也就是说,他们能很快进入一个新的领域并适应这个新的领域。一个非所学专业的学生能很快进入新专业的角色。 36 | 二、终身学习的理念开始深入到大学教育。毕业生在大学所学的东西并非仅限于专业知识,而是广泛涉猎各类知识,在毕业后能较快进入其他专业领域的工作。 37 | 三、未来的组织极其注重的已不再是工作人员重复原来工作,技能的发挥,而是创新能力。来自不同专业的人员特别是大学生,研究生具有广博的知识,多方面的知识是创新的前提条件。 38 | 由此看来,未来的人力资源管理范式关注的已不再是招聘到对组织来说是“成熟”的人,而是极具创新能力的人。也就是说,人的经验和专业要求已不是最重要的,最重要的是要有广博的知识和创新的意识。 39 | 在这种变化下,人力资源管理的范式也应有所变化,应由原来的侧重于招聘到什么样的人转向到如何对招聘到的人进行激励以发挥其创新的潜能。 40 | 国有企业 41 | 存在问题 42 | 1.1 人力资源开发与管理理念落后 43 | 长期以来,受计划经济体制的影响,国有企业受国家宏观调控,只重视解决企业内部的物质、资金、技术等问题而忽视企业的人力资源,把人力资源仅仅看作是需要时才发挥作用,视人为固有劳动力,只重拥有和使用,不重视开发和流动,使得人才既进不来,也流不出去,人才闲置、压制、浪费等现象严重。 44 | 1.2人力资本投资不足 45 | 人力资本投资是投资者通过对人进行一定的资本投入(货币资本或实物),增加或提高了人的智能和体能,这种劳动力的提高最终反映在劳动产出增加上的一种投为。 我国国有企业管理人员缺乏人力资本的投资意识,只关心眼前,(为企业补充人员,发放工资等),不敢轻易培训员工,只怕“为别人做嫁衣”。很少作长期的人力资源预测,规划和开发。这样就使一些渴望学习新技能,新知识的优秀员工得不到培训的机会;国有企业培训制度的不健全和不透明也助长了某些有关系的人抢占这些机会;而且有些培训流于形式,内容枯燥,考核脱离实际,并没有真正达到培训的目的。 46 | 1.3 管理模式单一,管理权限集中,管理体制高度集中 47 | 首先,国有企业机构庞大,各部门,各行业不能根据各自业务工作的性质、难易程度等特点,分门别类,灵活有效,有针对性地管理干部,从而造成责权分离,管人管事脱节,进而导致人与事的脱节。 其次,国有企业权限过分集中,强化“长官意志”,忽视了制度建设。再次,国有企业高度集中的管理体制,阻碍了竞争机制的作用,一方面,就业“铁饭碗”、干部“铁交椅”、分配“大锅饭”在限制了竞争和个人才能的发挥。另一方面,计划经济时期强化个人对集体的服从, 这就抑制了个人的自主性、独立性、选择性。 48 | 2.当前形势下,提高国有企业人力资源管理水平的对策 49 | 为了应对经济全球化,国际市场的激烈竞争,我国人力资源管理要采用计划、组织、领导、监督、协条、控制等有效措施和手段,不但要考虑人才需要和人才配备,而且要着眼于未来,重视人力资源的规划与开发。企业在经费预算上不应以节约为目标,而是与对资本或信息投资一样,谋求在特定时期内投入与产出的最佳比值,即同样追求高效率,高回报。因此,笔者认为,当前形势下,提高国有企业人力资源管理 50 | 解决办法 51 | 1 要树立“以人为本”的科学管理理念,实现人力资源的优化配置 “以人为本”的管理思想,简单地说就是人本管理 52 | 2 注重人力资源投资的开发与人力资本投资 国有企业人才的开发,发展和完善,根本途径在于企业教育培训。 优化企业教育培训,意味着企业要以更高的资本投入,更高的效率和质量。 53 | 3 建立灵活的竞争机制国有企业要改变就业“铁饭碗”、分配“大锅饭”,在根本上排斥竞争和个人才能的发挥、个人利益的实现,真正实现公开、公平、公正的用人自主权,使企业引进需要的人,淘汰富余的人,建立干部能上能下,员工能进能出的灵活竞争机制,搞活企业,提高生产效率,让优秀人才有用武之地,让他们能在适合自己的岗位上得到发展,从而为企业创造更多的利润。人力资源管理是现代企业管理的核心。国有企业作为国家经济的支柱产业,要充分实施制定纠偏措施, 另一方面给各级管理层反馈预算执行的动态信息,指导经营决策。 54 | 国外现状 55 | 抽屉式管理 56 | 在现代管理中,它也叫做“职务分析”。当今一些经济发达国家的大中型企业,都非常重视“抽屉式”管理和职位分类,并且都在“抽屉式”管理的基础上,不同程度地建立了职位分类制度。据调查统计:泰国在1981年采用“抽屉式”管理的企业为50%。在1985年为75%,而在1999年为95%以上。最近几年,香港的大中型企业也普遍实行“抽屉式”管理。 57 | “抽屉式”管理是一种通俗形象的管理术语,它形容在每个管理人员办公桌的抽屉里,都有一个明确的职务工作规范,在管理工作中,既不能有职无权,也不能有责无权,更不能有权无责,必须职、责、权、利相互结合。 58 | “一分钟”管理 59 | “一分钟”管理西方许多企业纷纷采用“一分钟”管理法则,并取得了显著的成效。具体内容为:一分钟目标、一分钟赞美及一分钟惩罚。 60 | 所谓一分钟目标,就是企业中的每个人都将自己的主要目标和职责明确地记在一张纸上。每一个目标及其检验标准,应该在250个字内表达清楚,一个人在一分钟内能读完。这样,便于每个人明确认识自己为何而干,如何去干,并且据此定期检查自己的工作。 61 | 一分钟赞美,就是人力资源激励。具体做法是企业的经理经常花费不长的时间,在职员所做的事情中,挑出正确的部分加以赞美。这样可以促使每位职员明确自己所做的事情,更加努力地工作,使自己的行为不断向完美的方向发展。 62 | 一分钟惩罚,是指某件事应该做好,但却没有做好,对有关的人员首先进行及时批评,指出其错误,然后提醒他,你是如何器重他,不满的是他此时此地的工作。这样,可使做错事的人乐于接受批评,感到愧疚,并注意避免同样错误的发生。 63 | “一分钟”管理法则妙就妙在它大大缩短了管理过程,有立竿见影之效果。一分钟目标,便于每个员工明确自己的工作职责,努力实现自己的工作目标;一分钟赞美可使每个职员更加努力地工作,使自己的行为趋向完善;一分钟惩罚可使做错事的人乐意接受批评,促使他今后工作更加认真。 64 | “破格式”管理 65 | 在企业诸多管理中,最终都通过对人事的管理达到变革创新的目的。因此,世界发达企业都根据企业内部竞争形势的变化,积极实行人事管理制度变革,以激发员工的创造性。 66 | 在日本和韩国企业里,过去一直采用以工作年限作为晋升职员级别和提高工资标准的“年功制度”,这种制度适应了企业快速膨胀时期对用工用人的要求,提供了劳动力就业与发展的机会。进入20世纪80年代以来,这些发达企业进入低增长和相对稳定阶段,“年功制度”已不能满足职员的晋升欲望,使企业组织人事的活力下降。90年代初起,日本、韩国发达企业着手改革人事制度,大力推行根据工作能力和成果决定升降员工职务的“破格式”的新人事制度,收到了明显成效。世界大企业人事制度的变革,集中反映出对人的潜力的充分挖掘,以搞活人事制度来搞活企业组织结构,注意培养和形成企业内部的“强人”机制,形成竞争、奋发、进取、开拓的新气象。 67 | “和拢式”管理 68 | “和拢式”管理“和拢”表示管理必须强调个人和整体的配合,创造整体和个体的高度和谐。在管理中,欧美企业主要强调个人奋斗,促使不同的管理相互融洽借鉴。 69 | 它的具体特点是: 70 | -------------------------------------------------------------------------------- /CNNmodel/datas/relation/依据.csv: -------------------------------------------------------------------------------- 1 | 专业结构,员工,依据,专业结构是根据员工所从事的工作性质对员工进行的划分 2 | 为导向的项目培训,培训,依据,2.推行以结果为导向的项目培训:根据不同的希望实现的结果按项目开展培训。 3 | 主试人员,测评人员的回答,依据,主试人员可以根据被测评人员的回答 4 | 人力资源,实际工作中员工,依据,人力资源再配置是组织根据在实际工作中员工与职位匹配程度或是员工个人因素 5 | 人力资源开发,企业战略的需要,依据,人力资源开发经理们的主要职责就是根据企业战略的需要 6 | 人力资源招聘,效标变量,依据,预测工具或效标变量是人力资源招聘与配置工作人员进行甄选决策的依据。 7 | 人力资源招聘,预测工具,依据,预测工具或效标变量是人力资源招聘与配置工作人员进行甄选决策的依据。 8 | 人力资源数量规划,组织结构等因素,依据,人力资源数量规划是依据企业战略对未来企业业务规模、地域分布、商业模式、业务流程和组织结构等因素 9 | 人力资源晋升规划,员工的提升方案,依据,人力资源晋升规划是根据组织需要和人员分布状况制定员工的提升方案。 10 | 人力资源法律审计,诊断性,依据,实用性人力资源法律审计根据其作用又可分为两种类型:诊断性审计与处方性审计。 11 | 人力资源现状,企业战略分析,依据,科学的对本企业的人力资源现状进行评价;(2)根据企业战略分析和人力资源现状 12 | 人力资源结构规划,业务模式,依据,人力资源结构规划是依据行业特点、企业规模、未来战略重点发育的业务及业务模式 13 | 人力资源规划,人力资源需求预测,依据,组织人力资源规划的依据就是人力资源需求预测、供给预测和供需平衡分析的结果 14 | 人力资源规划,供给预测,依据,组织人力资源规划的依据就是人力资源需求预测、供给预测和供需平衡分析的结果 15 | 人力资源需求预测,预测技术,依据,人力资源需求预测主要是根据企业的发展战略规划和本企业的内外部条件选择预测技术 16 | 人员补充计划,储备人才,依据,制定有目标导向性与预见性的人员补充计划——根据战略的要求及劳动力市场的涨落适时吸纳、储备人才 17 | 人工成本,服务人员的问题,依据,可从人工成本和服务效率质量角度根据实际情况来解决服务人员的问题。 18 | 企业培训,企业发展战略,依据,一、企业培训与开发系统设计的出发点1.依据企业发展战略确定培训开发策略 19 | 企业需要,员工,依据,企业需要根据员工总体的能力差异性来决定企业需要多少个工资宽带 20 | 企业需要,所谓薪酬政策,依据,企业需要根据其竞争性的薪酬政策来确定企业的薪酬政策线(见图8-14);所谓薪酬政策 21 | 企业需要,竞争性的薪酬政策,依据,企业需要根据其竞争性的薪酬政策来确定企业的薪酬政策线(见图8-14);所谓薪酬政策 22 | 全面的调查表,申请表,依据,全面的调查表将使你能根据申请人符合工作剖析的程度来决定优先考虑哪些申请表 23 | 公司战略,组织的未来发展方向,依据,公司战略就是依据组织所拥有的资源勾画出组织的未来发展方向 24 | 公司方案,职位价值,依据,公司方案将根据不同要素的不同维度对职位价值的影响而设计2—6个等级。 25 | 公司董事会,准予股票期权时,依据,其行权时间由公司董事会或者经其授权的公司股票期权管理委员会根据实际情况在准予股票期权时具体规定。 26 | 公司高层管理者,组织的企业战略,依据,公司高层管理者可以根据这些信息制定组织的企业战略 27 | 军人保障,群体特征,依据,由于军人保障有较权威的法规依据和具体对象的群体特征 28 | 分类的工作分析法,职业活动,依据,职业分类的工作分析法是根据工作的基本属性对每一种职业活动进行分析 29 | 划分职位等级,得到的职位评价,依据,划分职位等级的依据是通过职位评价得到的职位评价点值。 30 | 劳动争议仲裁,劳动法律,依据,劳动争议仲裁委认为:根据劳动法律、法规规定 31 | 劳动争议仲裁,法规规定,依据,劳动争议仲裁委认为:根据劳动法律、法规规定 32 | 劳动合同,劳动合同法,依据,用人单位可以解除劳动合同根据《劳动合同法》第39条规定 33 | 劳动合同,工作职责描述,依据,工作职责描述是不能胜任工作而解除劳动合同的唯一依据和基础。 34 | 劳动合同,经济情况,依据,仍需裁减人员的;④其他因劳动合同订立时所依据的客观经济情况发生重大变化 35 | 医疗保险机构,机构支付费用,依据,指医疗保险机构根据医疗机构上报的医疗服务项目和服务量向医疗机构支付费用 36 | 单一型职务薪酬制度,支付薪酬,依据,单一型职务薪酬制度是一种根据工作的难易程度来支付薪酬的制度 37 | 员工,企业组织,依据,因此会提醒员工根据自己的情况和企业组织的需要正确地进行职业选择、人生目标的确立和发展道路的确定。 38 | 员工,发展道路的确定,依据,因此会提醒员工根据自己的情况和企业组织的需要正确地进行职业选择、人生目标的确立和发展道路的确定。 39 | 员工,员工的职位,依据,对员工进行评价的依据员工的职位内容 40 | 员工,支付工资的同类员工,依据,接受激励性的计件工资计划的员工比根据工时支付工资的同类员工所获得的工资要高 41 | 员工,绩效标准,依据,下一年的绩效标准通常是由高管和员工在年会上根据上一年的绩效表现制定。 42 | 员工,能力攀登公司的阶梯,依据,迪斯尼乐园就对员工做出承诺:“每个人都将根据他的能力攀登公司的阶梯”。 43 | 员工,自动离职,依据,自动离职是员工依据个人意愿所做的离职 44 | 员工,选择福利,依据,让员工根据需求选择福利 45 | 员工产出,素质特征之间的关系,依据,将员工产出和管理投入结合起来;·根据各种素质特征之间的关系 46 | 员工的工作,员工,依据,员工的工作安排、薪酬和职业发展等都是根据员工所具备的胜任能力的水平来确定的。 47 | 命题人员,编制蓝图,依据,命题人员必须明确试题编写的依据是根据考试大纲制定的双向细目表或试卷编制蓝图。 48 | 命题人员,考试大纲,依据,命题人员必须明确试题编写的依据是根据考试大纲制定的双向细目表或试卷编制蓝图。 49 | 咨询小组,文化现状,依据,咨询小组建议公司应该根据文化现状和冲突 50 | 团队奖励,奖金分配,依据,团队奖励是根据组织、团队或者部门业绩来进行奖金分配决策的一种方式。 51 | 国家职称体系,不同岗位的工作量,依据,基本工资根据国家职称体系确定;岗位津贴根据不同岗位的工作量和责任确定 52 | 国家职称体系,责任,依据,基本工资根据国家职称体系确定;岗位津贴根据不同岗位的工作量和责任确定 53 | 地方政府,社会救助,依据,由地方政府根据本地区的具体情况来负责管理并实施社会救助。 54 | 基于能力,核心能力,依据,基于能力的规划模式以及依据核心能力挑选员工 55 | 基本工资,岗位,依据,基本工资的确定主要依据市场供需量、岗位对公司效益产生的重要性、员工从业经验和学历水平 56 | 基本工资,市场,依据,基本工资的确定主要依据市场供需量、岗位对公司效益产生的重要性、员工从业经验和学历水平 57 | 基本薪酬,法律基础,依据,是确定职位基本薪酬的主要依据;(3)解决劳资纠纷:职位评价为员工薪酬的确定提供了客观依据和法律基础 58 | 外包服务商,评价指标,依据,该评价指标一方面可以作为企业评选外包服务商的依据 59 | 奖励,经济增加值,依据,越来越多的企业集团采用经济增加值作为下属子公司业绩评估和经营者奖励的依据。 60 | 奖励性报酬,业绩考评,依据,确定应付给每个职务岗位占有者的薪酬(包括基薪、奖励性报酬和福利津贴);·根据定期的工作业绩考评 61 | 奖金数额,员工,依据,奖金数额依据员工超过标准绩效的多少而支付 62 | 审计的主要任务,特定的人力资源制度,依据,人力资源制度合理性审计的主要任务就是依据这些标准去对特定的人力资源制度进行审计分析 63 | 小组的责任,化学银行的战略,依据,每一个小组的责任是根据化学银行的战略来为平衡计分卡中的某一方面确定其相应的目标和指标。 64 | 岗位,职位评价,依据,评价每个岗位对本企业相对价值的高低;·根据职位评价 65 | 工人的岗位薪酬,岗位劳动,依据,工人的岗位薪酬应根据行业、企业岗位劳动评价总数的高低 66 | 工伤职工,劳动能力鉴定结论,依据,劳动能力鉴定结论是工伤职工享受工伤保险待遇的依据。 67 | 工作分析,完善的培训计划,依据,第一是加强对制造行业的工作分析;第二是根据工作的要求设计更完善的培训计划。 68 | 工作分析小组,设计补充的工作分析表格,依据,工作分析小组可以根据PAQ的结构以及被分析工作的实际情况来设计补充的工作分析表格 69 | 工作绩效考核,年度考核,依据,工作绩效考核可以根据具体情况和实际需要进行月考核、季考核、半年考核和年度考核。 70 | 工作职责描述,绩效评估,依据,绩效评估又是以工作职责描述为核心依据的 71 | 工作行为典型情况,行为锚定法,依据,行为锚定法是一种以工作行为典型情况为依据进行考评的方法。 72 | 工作要素的提出,目标工作,依据,工作要素的提出应该根据完成目标工作所需的知识、技能、能力和个人特征 73 | 工作设计,员工,依据,知觉运动型工作设计的基本含义是要根据员工感知和处理信息的方法来设计工作和工作辅助方式。 74 | 工作评价项目,任务清单,依据,从任务清单中得到的数据可以作为确定工作评价项目以及建立工作评价体系的依据。 75 | 工作说明书,职位,依据,工作说明书应该根据所执行的具体活动对职位进行描述。 76 | 市场情况的判断,相应战略,依据,无论是对市场情况的判断、根据判断制定相应战略 77 | 并购者,组织的物质文化,依据,并购者应该根据文化整合的需要对组织的物质文化进行调整和改造。 78 | 建立工资范围时,工资等级,依据,建立工资范围时会依据事先已确定的每一工资等级的市场工资。 79 | 录用人员,招聘计划,依据,录用人员评估是指根据招聘计划对录用人员的质量和数量进行评价的过程。 80 | 心理契约,成文的相互责任,依据,心理契约是根据劳动合同、企业通行惯例以及双方许诺而形成的一种内隐的、不成文的相互责任 81 | 心理测验,评判标准,依据,才能使心理测验有一些相对固定的出发点、依据、程序、工具手段和评判标准 82 | 我国职业的现状,国家职业分类,依据,体现我国职业的现状与发展趋势;以国家标准——《国家职业分类和代码》为依据 83 | 战略目标,人力资源战略目标,依据,确定人力资源愿景与战略目标;(3)根据人力资源战略目标 84 | 技能工资,员工报酬,依据,技能工资是根据员工所掌握的与工作相关的技能决定员工报酬的工资方案。 85 | 招聘,工作分析,依据,(1)为招聘提供依据;通过工作分析中的岗位关键职责 86 | 招聘,招聘计划,依据,招聘计划是招聘的主要依据 87 | 招聘过程,岗位的胜任,依据,在招聘过程中根据岗位的胜任能力 88 | 是员工,企业的战略目标,依据,它大致的理念是员工依据企业的战略目标对自己的年度业绩目标作出承诺 89 | 权限,部门的职责,依据,并明确每个部门的职责与权限;再根据部门的职责与权限 90 | 法院审理,劳动合同法,依据,法院审理认为:根据《中华人民共和国劳动合同法》的规定 91 | 环境的反应能力,进行变革的组织弹性,依据,企业越来越强调对外部环境的反应能力和根据外部环境进行变革的组织弹性 92 | 用工单位,劳务派遣单位,依据,用工单位应当根据工作岗位的实际需要与劳务派遣单位确定派遣期限 93 | 相关变量,历史资料,依据,X1、X2、…、Xn——选取的相关变量;(3)根据历史资料确定多元回归方程的系数 94 | 相应的培训方案,员工的上述特点,依据,拟定相应的培训方案;根据员工的上述特点 95 | 知识工资,员工报酬,依据,知识工资是根据员工所拥有的与工作相关的知识决定员工报酬的工资方案 96 | 社会保险机构,医疗服务机构,依据,指社会保险机构根据合同医疗服务机构医务人员所提供的服务 97 | 社会保障制度,社会保障体系,依据,社会保障体系有无漏洞通常是衡量社会保障制度完备与否的基本依据。 98 | 社会化过程的阶段模型,结果划分,依据,社会化过程的阶段模型一般是依据心理学的研究结果划分的。 99 | 社会救助,法律规定,依据,社会救助是指国家和社会依据法律规定 100 | 福利津贴,业绩考评,依据,确定应付给每个职务岗位占有者的薪酬(包括基薪、奖励性报酬和福利津贴);·根据定期的工作业绩考评 101 | 科研管理人员,能力价值,依据,是合理的;科研管理人员、职能和支撑人员固定工资的支付依据是能力价值(职称) 102 | 管理委员会,准予股票期权时,依据,其行权时间由公司董事会或者经其授权的公司股票期权管理委员会根据实际情况在准予股票期权时具体规定。 103 | 素质库,相应岗位,依据,也就是所谓的编制素质库;然后根据具体需要选择相应岗位建立能力保证产生高绩效的素质模型 104 | 组建的企业领导团队,处的发展阶段,依据,依照情景理论组建的企业领导团队应根据企业所处的发展阶段(如图9-3所示)而发挥不同的作用。 105 | 组建领导团队时,处的发展阶段,依据,在组建领导团队时应根据当时所处的发展阶段确定所需要强化的不同职能。 106 | 组织需要,法律要求,依据,组织需要根据法律要求与组织自身实际来选择改进方向。 107 | 绩效状况报告,反馈意见,依据,将绩效状况报告定时提交给相关管理者和决策者;第三个环节由各级经营管理部门定期根据战略调整和反馈意见 108 | 绩效状况报告,战略调整,依据,将绩效状况报告定时提交给相关管理者和决策者;第三个环节由各级经营管理部门定期根据战略调整和反馈意见 109 | 绩效管理,员工,依据,绩效管理是依据员工和他们的直接主管之间达成的协议 110 | 考核者,考核者日常行为,依据,考核者总是依据自己对被考核者日常行为及工作表现的观察进行判断和评价。 111 | 考核者,考核者绩效目标,依据,考核者根据绩效监控体系的反馈数据、被考核者绩效目标的完成状况 112 | 考评者,考评者的实际表现,依据,考评者只需根据被考评者的实际表现 113 | 职业,从事的工作性质同一性,依据,其划分职业的依据是以在业人口本人所从事的工作性质同一性进行职业分类。 114 | 职业,能力特点,依据,职业匹配:根据你的能力特点 115 | 职业分层,不同的职业,依据,这是职业分层的依据;如果只是笼统地宣讲不同的职业是社会分工的需要 116 | 职业发展,员工,依据,员工的工作安排、薪酬和职业发展等都是根据员工所具备的胜任能力的水平来确定的。 117 | 职业角色,劳动者社会经济地位,依据,为社会公众所认可;最早以职业角色为依据确定劳动者社会经济地位的 118 | 职位价值序列,职位,依据,职位评价主要有以下用途:(1)建立职位价值序列:职位价值序列是根据职位对于组织的相对重要性的排序 119 | 职位相对价值,职位特性,依据,报酬要素指的是能够为各种职位相对价值的比较提供客观依据的职位特性。 120 | 职务,绩效考核结果,依据,这种职务调整在很大程度上是以绩效考核结果为依据的。 121 | 职务,角色定义,依据,收集与职务有关的信息;②根据角色定义 122 | 能力,任务的业绩要求,依据,了解、并且有能力根据某项任务的业绩要求 123 | 能力,工作标准,依据,就是指这样的能力:它们使工作者能够根据工作标准进行特定的工作。 124 | 能力标准,工资宽带人员的平均能力,依据,表8-8给出了对应一家企业的工资宽带的能力标准的实例[10];·根据每个工资宽带人员的平均能力要求 125 | 薪酬,业绩考评,依据,确定应付给每个职务岗位占有者的薪酬(包括基薪、奖励性报酬和福利津贴);·根据定期的工作业绩考评 126 | 薪酬,员工,依据,员工的工作安排、薪酬和职业发展等都是根据员工所具备的胜任能力的水平来确定的。 127 | 薪酬制度的特点,职务,依据,这种薪酬制度的特点是在依据职务确定薪酬的同时 128 | 薪酬支付,企业的雇员数量,依据,薪酬支付的规模通常根据企业的雇员数量来确定。 129 | 薪酬支付,员工,依据,先于绩效的薪酬支付是依据职位价值和员工本身所拥有的能力 130 | 衡量职位的相对价值,职位的通用的工作特征,依据,以这种标准来衡量职位的相对价值;(4)因素比较法:是指根据职位的通用的工作特征 131 | 补充人员,岗位要求,依据,组织在什么时候需要补充人员、补充哪个层次的人员、采取哪些补充方式、根据岗位要求如何组织培训等 132 | 补充方式,岗位要求,依据,组织在什么时候需要补充人员、补充哪个层次的人员、采取哪些补充方式、根据岗位要求如何组织培训等 133 | 评价体系,任务清单,依据,从任务清单中得到的数据可以作为确定工作评价项目以及建立工作评价体系的依据。 134 | 评定者,员工绩效,依据,大部分的绩效考核工具要求评定者依据某些优胜标准来考核员工绩效。 135 | 该职位,从事该职位的员工人数,依据,将每个公司该职位的平均工资根据该公司中从事该职位的员工人数来赋予权数 136 | 该职位,职位模型的理解,依据,是指用非常简洁和明确的一句话来表述该职位存在的价值和理由;根据前面关于对职位模型的理解 137 | 负责招聘的管理人员,候选人员,依据,负责招聘的管理人员可以根据档案资料搜索合格的候选人员 138 | 辅助性人才,工作职责,依据,(3)辅助性人才从事的多为根据合同要求明确界定工作职责的工作 139 | 进行职位等级的划分,任务,依据,我们根据以下步骤进行职位等级的划分:·依据完成任务所必需的决策的种类和水平对各项工作进行分类 140 | 雇员参与,管理过程中的“分享,依据,雇员参与是依据企业管理过程中的“分享管理”和“机会均等”原则发展而来的 141 | 雷斯特测验的评分,排列部分,依据,雷斯特测验的评分是依据被测者在重要性排列部分的解答 142 | 非结构化访谈,职位信息,依据,非结构化访谈可以根据实际情况灵活收集职位信息 143 | 高层管理者的承诺,完成情况分配报酬时,依据,如果对结果存在不切实际的期望、缺乏高层管理者的承诺、管理层无力或不愿根据目标的完成情况分配报酬时 144 | 鼓励企业,劳动力价格,依据,鼓励企业根据自己的需求制定劳动力价格 145 | 预测效度,预测效标材料,依据,预测效度即根据预测效标材料确定的有效性 146 | 裁员管理方案的制订,企业的战略,依据,裁员管理方案的制订要根据企业的战略和目标 147 | 薪酬支付,职位价值,依据,先于绩效的薪酬支付是依据职位价值和员工本身所拥有的能力 148 | 薪酬设计,员工能力,依据,基于能力的基于薪酬设计是指组织依据员工能力的高低从而支付其报酬的方法设计。 149 | 职位评价,具体的工作职责,依据,职位评价的依据是企业的战略和具体的工作职责 150 | 职位评价,企业的战略,依据,职位评价的依据是企业的战略和具体的工作职责 151 | 考核指标的提取,工作分析的结果,依据,考核指标的提取依据工作分析的结果 152 | 考核指标,年度目标,依据,考核指标依据年度目标而来 153 | 绩效过程的指导,设定的绩效目标,依据,(2)绩效过程的指导;绩效过程的指导的依据是设定的绩效目标和达成的具体方法 154 | 绩效考核指标的提取,绩效目标,依据,而绩效考核指标的提取同样要依据绩效目标 155 | 绩效评价指标,绩效评价的目的,依据,绩效评价的目的是选择绩效评价指标的一个非常重要的依据。 156 | 绩效调薪,员工的绩效考核结果,依据,绩效调薪主要根据员工的绩效考核结果作出 157 | 绩效反馈,考核者参与程度,依据,绩效反馈根据被考核者参与程度分为三种:指令式、指导式、授权式。 158 | 组织成员思想,企业文化,依据,企业文化是组织成员思想、行为的依据 159 | 素质测评,行为事实,依据,A.素质测评必须以某一行为事实为依据 160 | 竞业限制,工作职责描述,依据,商业秘密和竞业限制的设定均须依据工作职责描述而进行。 161 | 社会保障制度,法制规范,依据,法制规范是社会保障制度赖以建立的客观基础与依据。 162 | 社会保障项目,社会保障法律,依据,以社会保障法律作为实施社会保障项目的依据 163 | 目标体系,企业的战略,依据,确立目标体系的主要依据是企业的战略 164 | 激励原则,员工的能力,依据,激励原则就是指根据员工的能力和贡献大小 165 | 测评考察的品德素质要点,不同的岗位需求,依据,测评考察的品德素质要点一定要可以根据不同的岗位需求进行定制。 166 | 清晰的工作要求,具体的工作职责,依据,而清晰的工作要求又是以明确、具体的工作职责描述为依据的。 167 | 测评与选拔主体,工作分析,依据,测评与选拔主体必须根据工作分析 168 | 时间维度,外部竞争,依据,而质量和时间维度则根据外部竞争情况而定。 169 | 文化迫力,生理需求,依据,文化迫力的根据来自人类社会中人的生理需求和社会需求 170 | 文化迫力,社会需求,依据,文化迫力的根据来自人类社会中人的生理需求和社会需求 171 | 政府管理与监督社会保障事务,社会保障法律,依据,以社会保障法律作为政府管理与监督社会保障事务的依据。 172 | 排序法,职位的相对价值,依据,排序法是根据各种职位的相对价值或它们各自对组织的相对贡献由高到低地进行排列。 173 | 技能工资,员工技能,依据,技能工资可以根据员工技能宽度或者技能深度两种方式来进行设计。 174 | 技能工资,技能深度,依据,技能工资可以根据员工技能宽度或者技能深度两种方式来进行设计。 175 | 广义的人力资源战略规划,组织内外环境的变化,依据,广义的人力资源战略规划是指根据组织的发展战略、组织目标及组织内外环境的变化 176 | 广义的人力资源战略规划,组织的发展战略,依据,广义的人力资源战略规划是指根据组织的发展战略、组织目标及组织内外环境的变化 177 | 广义的人力资源战略规划,组织目标,依据,广义的人力资源战略规划是指根据组织的发展战略、组织目标及组织内外环境的变化 178 | 心理契约,劳动合同,依据,心理契约是根据劳动合同、企业通行惯例以及双方许诺而形成的一种内隐的、不成文的相互责任 179 | 工资支付,工作成绩,依据,工资支付的唯一根据或主要根据是工作成绩和劳动效率 180 | 工作物等级,工作的技术复杂程度,依据,工作物等级是根据各种工作的技术复杂程度及设备状况等 181 | 工作物等级,设备状况,依据,工作物等级是根据各种工作的技术复杂程度及设备状况等 182 | 工作年的薪酬福利,工作评估的结果,依据,而第二个工作年的薪酬福利就根据工作评估的结果而定。 183 | 岗位需求,人力资源规划的内容,依据,①定义岗位需求:这个环节主要是依据职位说明书或人力资源规划的内容 184 | 岗位需求,职位说明书,依据,①定义岗位需求:这个环节主要是依据职位说明书或人力资源规划的内容 185 | 奖金发放,员工个人业绩,依据,而个人奖励则是根据员工个人业绩作为奖金发放依据。 186 | 奖金发放,员工个人的工作业绩,依据,主要是根据员工个人的工作业绩来作为奖金发放的依据。 187 | 奖金基数的确定,基础工资,依据,奖金基数的确定主要有两种方式:一是根据基础工资来确定奖金基数 188 | 季度奖,员工的业绩,依据,季度奖是部门经理根据员工的业绩表现按季度发放 189 | 宽带薪酬,工作角色,依据,因此宽带薪酬是根据工作角色及其能力要求 190 | 宽带薪酬,能力要求,依据,因此宽带薪酬是根据工作角色及其能力要求 191 | 宽带薪酬底部,市场水平,依据,宽带薪酬底部和高线通常是根据市场水平确定的 192 | 岗位工资标准,工作说明书,依据,岗位工资标准应依据工作说明书中所反映的工作内容 193 | 大国华人力资源观,发展战略,依据,“大国华人力资源观”是国华电力根据自身发展战略实际 194 | 奖金,奖励措施,依据,记功3次相当于记大功一次;这些奖励措施通常可以作为绩效加分或增发奖金的依据或者晋升参考 195 | 奖金,惩罚措施,依据,这种惩罚措施也可以作为减发奖金的依据;(2)降级:即降低受惩罚者的薪酬等级 196 | 基本工资,员工从业经验,依据,基本工资的确定主要依据市场供需量、岗位对公司效益产生的重要性、员工从业经验和学历水平 197 | 基本工资,学历水平,依据,基本工资的确定主要依据市场供需量、岗位对公司效益产生的重要性、员工从业经验和学历水平 198 | 培训的内容,培训教师的专业水平,依据,培训的内容和进度主要是根据培训教师的专业水平和空闲时间而定。 199 | 培训的内容,空闲时间,依据,培训的内容和进度主要是根据培训教师的专业水平和空闲时间而定。 200 | 固定工资,岗位价值,依据,科研管理、职能和支撑人员的固定工资根据岗位价值确定。 201 | 固定工资,能力价值,依据,科研人员固定工资根据能力价值(职能)确定 202 | 固定工资的支付,能力价值,依据,是合理的;科研管理人员、职能和支撑人员固定工资的支付依据是能力价值(职称) 203 | 企业薪酬体系设计,企业的薪酬理念,依据,并据此确立企业的薪酬理念;薪酬理念是企业薪酬体系设计的依据 204 | 企业薪酬体系设计,薪酬理念,依据,并据此确立企业的薪酬理念;薪酬理念是企业薪酬体系设计的依据 205 | 企业的人力资源战略规划,企业的人力资源战略,依据,企业的人力资源战略规划应当根据企业的人力资源战略而定。 206 | 企业自主福利,员工的内在需求,依据,企业自主福利是企业根据自身的管理特色、财务状况和员工的内在需求 207 | 企业自主福利,管理特色,依据,企业自主福利是企业根据自身的管理特色、财务状况和员工的内在需求 208 | 人员分析,素质模型,依据,人员分析还可以根据素质模型来进行。 209 | 人力资源需求预测,能力水平,依据,人力资源需求预测就是根据能力水平和岗位要求确定所需员工的数量和类型。 210 | 人力资源需求预测,岗位要求,依据,人力资源需求预测就是根据能力水平和岗位要求确定所需员工的数量和类型。 211 | 人力资源结构规划,企业规模,依据,人力资源结构规划是依据行业特点、企业规模、未来战略重点发育的业务及业务模式 212 | 人力资源结构规划,行业特点,依据,人力资源结构规划是依据行业特点、企业规模、未来战略重点发育的业务及业务模式 213 | 人力资源管理,个人发展,依据,人力资源管理是根据组织和个人发展的需要 214 | 人力资源管理,发展战略,依据,这时的人力资源管理要根据发展战略的不同来提供不同的支持 215 | 人力资源数量规划,企业战略,依据,人力资源数量规划是依据企业战略对未来企业业务规模、地域分布、商业模式、业务流程和组织结构等因素 216 | 人力资源晋升规划,组织需要,依据,人力资源晋升规划是根据组织需要和人员分布状况制定员工的提升方案。 217 | 人力资源,组织战略,依据,人力资源获取是指根据组织战略和人力资源规划的要求 218 | -------------------------------------------------------------------------------- /CNNmodel/datas/relation/决定.csv: -------------------------------------------------------------------------------- 1 | EPS的绩效情况,考核期,决定,投资资本收益率(ROIC)和EPS的绩效情况都按照表格来确定;·若在这个考核期结束时 2 | 业绩单位,业绩股票,决定,第五十条 业绩单位所确定的现金额等于业绩股票授予日的股票价格与授予数量的乘积 3 | 个人评估,未来职业,决定,职业策划是指组织在员工进行个人评估和确定未来职业发展策略时给予他们有效的援助 4 | 为基础的薪酬体系,员工的价值,决定,便得到以能力为基础的薪酬体系;如果以业绩产生的过程即工作的完成为主来确定员工的价值 5 | 人力资源专业人员,培训需求的能力,决定,(1)某企业人力资源部为了提高集团各下属分子公司人力资源专业人员确定培训需求的能力 6 | 人力资源制度,人力资源管理,决定,3.人力资源制度是指组织为特定目的而确定的人力资源管理原则、规范、条件、权利义务关系的综合 7 | 人力资源开发人员,培训,决定,人力资源开发人员就可以确定哪些是需要弥补的作业缺陷以及受训者在培训结束时应该达到的作业水平。 8 | 人力资源的配置,职位,决定,工作分析在人力资源的配置甄选中的作用是确定胜任某一职位所需知识、技术、能力和其他的特征。 9 | 人力资源的配置,能力,决定,工作分析在人力资源的配置甄选中的作用是确定胜任某一职位所需知识、技术、能力和其他的特征。 10 | 任职资格,工作规范,决定,(2)任职资格的确定与工作规范; 11 | 企业员工,属于企业的通用胜任力,决定,企业需要视该胜任力对于企业员工要求的普遍性来确定该胜任力属于企业的通用胜任力还是专业胜任力。 12 | 企业战略,相应的人力资源管理,决定,而按照企业战略确定的宗旨和方针设计和实施相应的人力资源管理 13 | 企业战略的影响,企业员工的类型,决定,而这各个方面的确定都要受到企业战略的影响;(1)战略决定企业员工的类型、规模和数量结构 14 | 企业的管理层次,管理层次,决定,确定企业的管理层次;再进一步确定各管理层次应设置的部门(如职能处室);最后 15 | 企业的组织模式,战略,决定,(2)企业的KPI指标体系——企业的组织模式;在确定了企业以战略为导向的KPI指标体系之后 16 | 企业的财力,市场,决定,企业的薪酬标准在市场上应该处于一个什么位置要视企业的财力、所需要人才的可获得性等具体条件而定 17 | 佣金制,销售人员的报酬,决定,佣金制是直接按销售额的一定比例确定销售人员的报酬 18 | 公司能力,战略能力,决定,《公司能力分析:确定战略能力》 19 | 公司领导,人力资源规划,决定,公司领导可以用这种方法来确定和动员实现人力资源规划所需要的资源。 20 | 养老保险面,经济发展水平,决定,至少有以下几点是直接影响养老保险面的确定的:经济发展水平 21 | 内部价值观,合作与竞争等内部价值观,决定,这些内部价值观如平等与不平等、确定与不确定、合作与竞争等内部价值观以及对应的薪酬设计都得到考虑 22 | 内部价值观,对应的薪酬设计,决定,这些内部价值观如平等与不平等、确定与不确定、合作与竞争等内部价值观以及对应的薪酬设计都得到考虑 23 | 分类的培训课程体系,培训目标,决定,同时它还为企业设计分层分类的培训课程体系以及确定课程的培训目标提供了基本思路 24 | 劳动力市场的薪酬状况,不同的职位,决定,然后再根据这种评价以及外部劳动力市场的薪酬状况来确定应当对不同的职位支付的薪酬水平高低 25 | 劳动合同的签订,报酬,决定,具体体现在劳动合同的签订、试用期的确定及报酬、试用期劳动合同的解除等。 26 | 劳动合同的签订,试用期劳动合同的解除,决定,具体体现在劳动合同的签订、试用期的确定及报酬、试用期劳动合同的解除等。 27 | 劳动者,终止时间的劳动合同,决定,无固定期限劳动合同是指用人单位和劳动者签订的无确定终止时间的劳动合同 28 | 劳动者约定,终止时间的劳动合同,决定,是指用人单位与劳动者约定无确定终止时间的劳动合同。 29 | 发展要求,需的核心能力,决定,即围绕组织的战略重点和发展要求来确定企业所需的核心能力 30 | 发展需求,培训的内容,决定,对个人绩效差距和发展需求的分析有助于确定培训的内容和受训者。 31 | 员工的需求,企业需要,决定,最根本的是要从员工的需求出发来确定企业需要为员工提供什么样的福利。 32 | 员工绩效考核,薪酬奖惩,决定,在员工绩效考核和确定薪酬奖惩中运用得最多 33 | 员工行为,员工的绩效水平,决定,即通过预先设计的不良事故清单对员工行为进行考核以确定员工的绩效水平。 34 | 员工需求,企业需要,决定,是指从员工需求出发来确定企业需要为员工提供什么样的福利。 35 | 团队成员,培训类型,决定,因为团队成员并不熟悉业务且彼此关系不熟悉;然后确定团队的培训类型是针对整个团队进行的 36 | 培训,培训与开发项目,决定,在培训和开发项目设计前首先要做的工作就是确定培训与开发项目的目标。 37 | 培训需求,培训范围,决定,还发现应用它进行工作分析的结果对组织培训需求、确定培训范围有很大的帮助(E.S.Primoff 38 | 基准职位,因素比较法的基础,决定,或者说基准职位的确定是因素比较法的基础 39 | 基层经理的判定,员工的表现,决定,员工的表现及所获报酬直接取决于基层经理的判定 40 | 基层经理的判定,报酬,决定,员工的表现及所获报酬直接取决于基层经理的判定 41 | 基本变量,企业内部薪酬的坐标系,决定,在确定了这两个基本变量之后就可以确定企业内部薪酬的坐标系 42 | 审计的第二项任务,管理计划,决定,人力资源管理计划审计的第二项任务是确定该管理计划与人力资源战略的一致性。 43 | 工作信息,工作维度,决定,(3)利用既得的工作信息来确定工作维度; 44 | 工作分析,工作职责,决定,工作分析所确定的工作职责和工作规范 45 | 工作分析,工作规范,决定,工作分析所确定的工作职责和工作规范 46 | 工作分析,职位相对价值,决定,工作分析是确定职位相对价值并有效进行薪酬管理的重要基石。 47 | 工作分析,需要的工作技能,决定,工作分析确定了不同组织、不同工作需要的工作技能、知识、态度以及最适当的个人偏好、兴趣和个性特征 48 | 工作绩效评价,薪酬,决定,企业不仅能够定期地通过对员工作绩效评价来确定薪酬 49 | 工作职责,胜任能力,决定,根据角色和工作职责确定胜任能力单元 50 | 工作职责描述,企业商业秘密,决定,工作职责描述是确定企业商业秘密的重要来源。工作规范中的信息,人力资源开发需求,决定,工作规范中的信息在确定人力资源开发需求方面常常是很有用的。 51 | 工作说明书,最佳变革方案,决定,工作说明书可以帮助确定最佳变革方案 52 | 工作轮换,清晰的职业目标,决定,因此要通过工作轮换和发展培训等来逐步了解和发现自己的能力和特长、确定清晰的职业目标 53 | 差别费率,工伤保险的缴费比例,决定,差别费率是对某一行业或单个企业单独确定工伤保险的缴费比例。 54 | 当事人协商,工资标准,决定,当事人协商确定工资标准 55 | 德尔菲法,指标权重,决定,采用德尔菲法确定指标权重 56 | 战略,企业员工的类型,决定,而这各个方面的确定都要受到企业战略的影响;(1)战略决定企业员工的类型、规模和数量结构 57 | 战略的贡献,报酬要素,决定,人们以业务活动的战略方向和职位对战略的贡献为基础来确定报酬要素。 58 | 战略规划,公司当年的绩效计划,决定,那么就可以由战略规划确定公司当年的绩效计划。 59 | 接受调查的员工,时间安排,决定,我们要求每个接受调查的员工确定最适合目前他们工作情况特征的工作时间安排模式。 60 | 整个组织的战略目标,部门目标,决定,也可以是整个组织的战略目标;●确定部门目标:部门目标由组织目标分解而来 61 | 新的组织文化变革方案,文化变革的方向,决定,新的组织文化变革方案的确定为组织指明了文化变革的方向。 62 | 服务流程,企业的关键绩效指标体系,决定,基于流程的绩效管理体系是指基于企业的业务和服务流程来确定企业的关键绩效指标体系 63 | 测验量表,职业兴趣,决定,本测验量表将帮助您发现和确定自己的职业兴趣和能力特长 64 | 测验量表,能力特长,决定,本测验量表将帮助您发现和确定自己的职业兴趣和能力特长 65 | 组织发展战略,组织需要,决定,是组织发展战略确定组织需要哪些技能 66 | 组织的整体人力资源规划,培训开发的阶段性,决定,通过组织的整体人力资源规划来确定培训开发的阶段性和层次性 67 | 组织目标,员工的数量,决定,即根据组织目标和任务来确定需要员工的数量和类型。 68 | 组织绩效目标,不同员工的主要绩效范围,决定,首先需要根据组织绩效目标自上而下地层层分解确定不同员工的主要绩效范围 69 | 组织规模,变革委员会的人数,决定,变革委员会的人数通常视组织规模而定。 70 | 经济实力,支付报酬的最高限,决定,经济实力仅能确定它支付报酬的最高限。 71 | 结构审计,审计的技术标准,决定,组织结构审计首先要确定审计的技术标准;然后 72 | 绩效计划,员工方向方面,决定,从而使得绩效计划在确定员工方向方面的作用更加突出。 73 | 绩效记录,一般绩效代表,决定,将另一年的绩效记录确定为一般绩效代表。 74 | 绩效评价结果,奖金系数,决定,确定一个浮动的绩效奖金额度;奖金系数则是由员工的绩效评价结果决定的。 75 | 职位,员工的基本薪酬,决定,职位和能力多用于确定员工的基本薪酬 76 | 胜任能力模型,公司的核心价值观,决定,胜任能力模型的确定需要同公司的核心价值观相一致。 77 | 能力,员工的基本薪酬,决定,职位和能力多用于确定员工的基本薪酬 78 | 薪酬支付水平,支付多高水平的报酬,决定,薪酬支付水平指的是企业要确定支付多高水平的报酬。 79 | 薪酬调查,基础薪酬水平,决定,应先在薪酬调查的基础上确定基础薪酬水平 80 | 薪酬调查,支付依据,决定,①依据什么向员工支付基本薪酬;●通过职位评价确定内部支付依据;●通过薪酬调查确定外部支付依据; 81 | 达到的技术等级标准,工资等级,决定,它是按照工人所达到的技术等级标准确定工资等级 82 | 达到的技术等级标准,薪酬等级,决定,技能薪酬制是按照工人所达到的技术等级标准来确定薪酬等级 83 | 部门协商,招聘方式,决定,2.人力资源部与用人部门协商确定招聘方式以及对应聘人选的考核和面试内容; 84 | 部门协商,面试内容,决定,2.人力资源部与用人部门协商确定招聘方式以及对应聘人选的考核和面试内容; 85 | 采用的分析方法,效度高低的评价,决定,效度高低的评价应视测评的性质目的和所采用的分析方法而定。 86 | 不同职责,报酬,决定,基于不同职责和任职条件来确定其报酬 87 | 业务活动的战略方向,报酬要素,决定,人们以业务活动的战略方向和职位对战略的贡献为基础来确定报酬要素。 88 | 业务流程分析,绩效评价指标,决定,(1)通过工作分析与业务流程分析确定绩效评价指标。 89 | 丧失劳动能力的程度,伤残等级的法定检验,决定,由国家法律规定的工伤鉴定机构对其丧失劳动能力的程度进行鉴定以确定伤残等级的法定检验与评价。 90 | 个性心理品质,品德测评结构,决定,我们依据个性心理品质中的个性心理倾向和性格特征两个部分确定了品德测评结构中所含的内容及其表现形式 91 | 人力资源管理理论,逻辑结构,决定,即在人力资源管理理论的指导下确定某项制度的基本内容与逻辑结构 92 | 任务,员工的数量,决定,即根据组织目标和任务来确定需要员工的数量和类型。 93 | 任务层面的需求分析,工作相关的培训目标,决定,而任务层面的需求分析则主要用来确定与某种特别的活动或工作相关的培训目标。 94 | 任职条件,报酬,决定,基于不同职责和任职条件来确定其报酬 95 | 企业战略,企业员工的类型,决定,(1)企业战略决定企业员工的类型、规模和数量结构 96 | 企业战略,企业的核心能力,决定,(5)企业战略确定企业的核心能力和核心人力资源 97 | 企业战略,核心人力资源,决定,(5)企业战略确定企业的核心能力和核心人力资源 98 | 企业年终的经济效益,奖励薪酬,决定,奖励薪酬应视企业年终的经济效益而定。 99 | 企业战略,薪酬激励的方向,决定,(6)企业战略确定企业薪酬激励的方向和重点。 100 | 伤残程度,支付方式,决定,支付方式视伤残程度而定 101 | 公司清晰的发展战略,企业的薪酬结构,决定,如果一个企业的薪酬结构和绩效指标是基于公司清晰的发展战略确定的 102 | 公司清晰的发展战略,绩效指标,决定,如果一个企业的薪酬结构和绩效指标是基于公司清晰的发展战略确定的 103 | 劳资谈判双方的力量,实际工资率的确定,决定,实际工资率的确定将取决于劳资谈判双方的力量对比。 104 | 培训需求分析,培训重点,决定,一个设计良好的培训需求分析能够确定有效的培训战略、培训重点 105 | 培训需求分析,有效的培训战略,决定,一个设计良好的培训需求分析能够确定有效的培训战略、培训重点 106 | 驱动的方案,改进的绩效项目,决定,以结果驱动的方案则以确定最迫切需要改进的绩效项目入手 107 | 未来职位的素质模型,培训需求,决定,根据未来职位的素质模型确定培训需求 108 | 服务流程,关键绩效指标体系,决定,基于企业的业务和服务流程来确定关键绩效指标体系 109 | 战略,行业选择,决定,战略是确定并实施行业选择、产品和业务选择、定位和关键竞争方式的方法;对内而言 110 | -------------------------------------------------------------------------------- /CNNmodel/datas/relation/未知.csv: -------------------------------------------------------------------------------- 1 | 劳动者的知识存量,人力资本,未知,人力资本中最重要的组成部分是劳动者的知识存量和技能存量 2 | 《劳动合同法》相关条款,工作说明书,未知,本节综合工作说明书构成部分和《劳动合同法》相关条款 3 | 分层分类能力模型的开发,界定企业,未知,分层分类能力模型的开发主要包括界定企业各层各类人员所通用的核心能力 4 | O*NET的内容模型,多的量表,未知,另一个质疑是O*NET的内容模型包含过多的量表 5 | 人力资源管理系统,人力资源管理措施,未知,需要开展哪些人力资源管理措施;⑦描述了构成人力资源管理系统的内容 6 | 人力资源,甄选过程,未知,人力资源获取的一般操作流程主要包括四个环节:定义需求、选择招募途径、实施甄选过程、试用考评。 7 | 学历结构,员工,未知,学历结构是指按照不同学历划分的员工构成 8 | 变量,学历,未知,协变量包括年龄、性别、学历以及其他与研究相关的人口统计变量。 9 | 人员比率,专业人员,未知,人员比率包括管理、文秘、专业人员和从事间接和直接劳动的雇员等的比率 10 | 工伤保险基金的其他资金,工伤保险基金的利息,未知,工伤保险基金由用人单位缴纳的工伤保险费、工伤保险基金的利息和依法纳入工伤保险基金的其他资金构成。 11 | 个性化的胜任力特征要求,胜任力模型,未知,其个性化的胜任力特征要求则不包含在该胜任力模型中。 12 | 基本养老保险,我国的养老保险,未知,我国的养老保险由三个部分组成:第一部分是基本养老保险 13 | 劳动者的工资,我国法律规定,未知,由用人单位支付给劳动者的工资;主要包括:(1)履行国家和社会义务期间的工资;我国法律规定 14 | 劳动合同,试用期,未知,劳动合同中包含试用期的内容。 15 | 实施计划,总任务,未知,实施计划主要包括以下内容:一是将企业总目标、总任务作时间上的分解 16 | 人员比率,直接劳动,未知,人员比率包括管理、文秘、专业人员和从事间接和直接劳动的雇员等的比率 17 | 培训的成本,受训员,未知,培训的成本包括培训人员和受训员的薪酬、培训部门的管理费和一般管理费等。 18 | 导向评估法,为基础的绩效考核,未知,结果导向评估法主要包括:以个人绩效合约为基础的绩效考核、产量衡量法和目标管理法。 19 | 保障范围,低保条件,未知,在较短时间内将大量符合城市低保条件的贫困人员纳入了保障范围。 20 | 工作职责的定义,职责,未知,工作职责的定义中常常包括这些职责所对应的结果和完成程度的定义 21 | 工作小组,人力资源部门的大力支持,未知,共同设计职业管理系统;这个工作小组包括高层经理人员(得到了人力资源部门的大力支持);另外 22 | 技术变革,工作流程,未知,技术变革包括对工作流程、方法以及所用设备的调整。 23 | 实施计划,企业总目标,未知,实施计划主要包括以下内容:一是将企业总目标、总任务作时间上的分解 24 | 培训的效益,培训工作,未知,培训的效益包括培训工作给企业带来的经济效益和培训的社会效益。 25 | 失业保险,奖金,未知,养老保险、医疗保险、失业保险等都是以工资(包括基本工资和各种形式的奖金 26 | 外在的环境限制条件,经济问题,未知,外在的环境限制条件包括组织面对的法律、社会、政治、经济问题。 27 | 员工,组织员工,未知,协助员工平衡工作与生活)、员工关系管理培训(包括组织员工进行人际交往 28 | 工伤保险基金的其他资金,缴纳的工伤保险费,未知,工伤保险基金由用人单位缴纳的工伤保险费、工伤保险基金的利息和依法纳入工伤保险基金的其他资金构成。 29 | 劳动力资源,劳动年龄,未知,劳动力资源不包括在押犯人、在劳动年龄内丧失劳动能力的人员 30 | 心理学研究,能力,未知,能力构成因素的研究是心理学研究的重要问题 31 | 工作标准,行为指标,未知,行为指标由与纳入考评的改进KPI指标密切相关的一组或若干组行为要项及工作标准组成 32 | 奖金,佣金,未知,混合计划(基薪+奖金+佣金)就是指构成成分包括了基本薪、奖金和佣金三者的支付计划。 33 | 主管人事政策手册,一线管理人员,未知,《花旗银行主管人事政策手册》中包含了大约50项对一线管理人员提出具体要求的人事政策。 34 | 基本能力,能力,未知,基本能力和综合能力也包括从事多种工作活动的能力 35 | 任务清单,分析者,未知,任务清单中还应包含有关分析者的任职资格信息 36 | 工作职位,任务,未知,“装载”是指将某种任务和要求纳入工作职位的结构中。 37 | 工资结构,职位等级,未知,工资结构包括针对每一职位或者职位等级的工资范围 38 | 军人的福利事业,收养事业等内容,未知,面向军人的福利事业包括军人休养事业、疗养事业、精神病收养事业、孤老收养事业等内容。 39 | 企业价值,货币资本等同的要素,未知,其根本理念是经营层将人力资本作为一种与货币资本等同的要素纳入企业价值的范畴 40 | 企业社会责任的内容,企业文化,未知,企业文化的构成内容本身还包括了企业社会责任的内容 41 | 培训评估所,软性数据,未知,通常培训评估所需要的数据包括硬性数据和软性数据。 42 | 企业层次的培训,新员工,未知,1.企业层次的培训:包括新员工进入角色培训和企业文化培训两个层次 43 | 到绩效管理的范畴,企业绩效,未知,为改善企业绩效而进行的管理活动都可以纳入到绩效管理的范畴之内。 44 | 市场,总体计划,未知,组织年度总体计划中各组成部分(生产、市场、人力资源、财务、研发等)是完全兼容的 45 | 劳动力组织,决策过程,未知,包括劳动力组织与划分和动态环境相互作用及更为复杂的决策过程。 46 | 信息类,分配者,未知,信息类包括发言人、联系人和监控者;决策类包括领导者、企业家、分配者。 47 | 团队领导,团队绩效,未知,影响团队绩效的团队整体特征有成员构成、团队目标、团队领导、集体效能感。 48 | 周边绩效,员工的工作说明书,未知,周边绩效不包含在员工的工作说明书中 49 | 招聘成本,适应性培训,未知,招聘成本包括在招募和录取过程中招募、选拔、录用、安置以及适应性培训的成本。 50 | 劳动者的工资,社会义务,未知,由用人单位支付给劳动者的工资;主要包括:(1)履行国家和社会义务期间的工资;我国法律规定 51 | 培训的内容,薪酬,未知,培训的内容应包括公司的保障制度、政策、安全法规、工作时间、薪酬和考核制度等激励机制和压力机制 52 | 列出的任务,工作任务,未知,所列出的任务应能覆盖工作所包括的85%以上的工作任务 53 | 员工,胜任力标准,未知,胜任力标准即可构成一组胜任力模型;为帮助管理者开发他们的员工 54 | 外在薪酬,薪酬的定义,未知,外在薪酬则包括货币奖励和非货币奖励;这种对薪酬的定义 55 | 多方法工作设计问卷,动机,未知,他的多方法工作设计问卷中包括了以下四类描述项:机械的、动机的、认知的以及生物的。 56 | 战略导向,人力资源开发部门,未知,战略导向包括为人力资源开发部门树立明确的目标 57 | 企业家道德价值观,企业家,未知,企业家道德价值观的根本问题包括两个方面:一是企业家个体利益与群体利益的关系问题 58 | 处理员工,团队满意度,未知,如何处理员工的关系等;产出因素主要包括效能衡量和团队满意度 59 | 团队目标,团队绩效,未知,影响团队绩效的团队整体特征有成员构成、团队目标、团队领导、集体效能感。 60 | 事业部式结构的显著特点,组织产出,未知,事业部式结构的显著特点是基于组织产出的组合。 61 | NET系统的职位信息,职位,未知,O*NET系统的职位信息包含了17个类别的职位相关特征(O*NET内容模型) 62 | 学科体系,社会保障,未知,[14]尽管一些学科可以将社会保障纳入自己的学科体系 63 | 技能清单,组织人员流动频率,未知,其技能清单中要包括所有的员工;而对于那些组织人员流动频率不高 64 | 员工专业,人员岗位,未知,4.人员岗位分类专业构成:各类员工专业分布较为分散 65 | 工伤保险,整个社会保险制度,未知,(3)工伤保险包括在整个社会保险制度之中。 66 | 外部价值观,组织成员,未知,外部价值观包含着组织成员对外部环境的判断和对应该如何处理组织与外部环境的关系的共识。 67 | 实现的薪酬总额,执行股票期权的收入,未知,世界500强企业的 CEO实现的薪酬总额(包括执行股票期权的收入)差不多达到了原来的四倍。 68 | 劳动力组织,动态环境,未知,包括劳动力组织与划分和动态环境相互作用及更为复杂的决策过程。 69 | 劳动者个人,人口年龄,未知,一国的人口规模、人口年龄构成、民族特性和劳动者个人的身体自然条件都是影响劳动供给的重要方面。 70 | 周边绩效之分,意志动机等因素,未知,又存在任务绩效和周边绩效之分;任务绩效是指工作的直接结果;周边绩效则包括人际、意志动机等因素 71 | 产量曲线,生产要素投入量,未知,等产量曲线是在技术水平不变的条件下生产同一产量的两种生产要素投入量的所有不同组合的轨迹。 72 | 人力资源开发人员,任务,未知,这样可以使人力资源开发人员对工作包含的任务和员工实际的工作条件有更清楚的认识。 73 | 发放的薪酬,薪酬,未知,②薪酬构成:表明企业发放的薪酬主要包括哪些部分。 74 | 占总报酬的比率问题,奖金比率,未知,三者的结构设计可以转换为分析可变部分占总报酬的比率问题(包括了前文提到的佣金提成比率和奖金比率) 75 | 人力资源,人力资源管理的基础活动,未知,因此由这些人力资源管理的基础活动所提供的信息就构成了人力资源获取与配置的客观依据和参照系。 76 | 固定奖金,薪酬,未知,现金薪酬的主要构成为基本工资、固定奖金、浮动薪酬以及现金津贴。 77 | 外部价值观,处理组织,未知,外部价值观包含着组织成员对外部环境的判断和对应该如何处理组织与外部环境的关系的共识。 78 | 保障行政管理的内容,具体的社会保障政策,未知,社会保障行政管理的内容包括依法制定更为具体的社会保障政策及运行规范 79 | 公司治理,员工,未知,公司治理还包括与利益者(如员工、客户、供应商、债权人和社会公众等)之间的关系 80 | 培训,工作环境,未知,该模型包括三个部分:一是培训投入(包括被培训者特征、培训设计和工作环境) 81 | 培训成果,计算机辅助教学系统,未知,培训成果转化的技术支持系统主要包括电子操作支持系统与计算机辅助教学系统。 82 | 公司级关键绩效指标,企业关键绩效指标,未知,企业关键绩效指标由以下几个层级构成:一是公司级关键绩效指标 83 | 劳动者个人,国的人口规模,未知,一国的人口规模、人口年龄构成、民族特性和劳动者个人的身体自然条件都是影响劳动供给的重要方面。 84 | 分配比例关系,薪酬制度,未知,实施这种薪酬制度必须合理安排五个组成部分之间的分配比例关系。 85 | 单独的社会保障,医疗保险统筹基金,未知,对医疗保险统筹基金纳入单独的社会保障基金财政账户专款专用 86 | 建立职工名册的对象,建立劳动关系的劳动者,未知,建立职工名册的对象包括与用人单位建立劳动关系的劳动者 87 | 中央银行的管理职责,养老基金,未知,如智利养老基金监管局和中央银行的管理职责就包括:规定养老基金管理公司的投资工具及其应占的比例 88 | 常见的沟通障碍,沟通渠道,未知,常见的沟通障碍包括沟通渠道不适当 89 | 失业保险,基本工资,未知,养老保险、医疗保险、失业保险等都是以工资(包括基本工资和各种形式的奖金 90 | 任务清单,职位,未知,(1)确定任职资格要求;由于任务清单包括了某一职位要执行的全部工作任务 91 | 分类标准,不同类型的人口年龄,未知,表3-1 不同类型的人口年龄构成分类标准 92 | 业绩标准,是员工,未知,业绩标准包括两种信息:一是员工应该做什么 93 | 传统的工作分析,专门小组面试,未知,传统的工作分析常用的数据搜集方法包括观察、与在职者或专门小组面试以及问卷调查等。 94 | 一定时期的社会平均收入水平,社会救助的标准,未知,它与社会救助的标准构成正比例关系;二是一定时期的社会平均收入水平 95 | 养老保险,奖金,未知,养老保险、医疗保险、失业保险等都是以工资(包括基本工资和各种形式的奖金 96 | 团队评估,任务绩效等过程,未知,过程咨询旨在帮助部门经理、雇员和团队评估并改进包括沟通、人际关系、决策、任务绩效等过程。 97 | 培训的成本,培训人员,未知,培训的成本包括培训人员和受训员的薪酬、培训部门的管理费和一般管理费等。 98 | 公司战略,方案,未知,(1)公司战略(Corporate Strategy):包括产业选择及在产业内的扩张方案的选择; 99 | 工作要素,工作任务信息,未知,其工作要素及其下级子要素不包括任何工作任务信息。 100 | 员工基本生活,组合薪酬制,未知,组合薪酬制一般由以下几部分构成:●基础薪酬;保障员工基本生活需要的薪酬 101 | 多元工作设计问卷,动机,未知,多元工作设计问卷包括四个类型的内容:动机型、机械型、生理型、知觉运动型 102 | 培训,培训设计,未知,该模型包括三个部分:一是培训投入(包括被培训者特征、培训设计和工作环境) 103 | 所有的员工,强的员工,未知,组织对病假提供慷慨的福利待遇实际上就是在鼓励所有的员工(包括那些满意感很强的员工)去休病假。 104 | 医疗保险,奖金,未知,养老保险、医疗保险、失业保险等都是以工资(包括基本工资和各种形式的奖金 105 | 企业责任,责任,未知,企业责任包括经济责任、法律责任、道德责任和自愿决定(慈善)责任 106 | 养老保险,基本工资,未知,养老保险、医疗保险、失业保险等都是以工资(包括基本工资和各种形式的奖金 107 | 变量,相关的人口统计变量,未知,协变量包括年龄、性别、学历以及其他与研究相关的人口统计变量。 108 | 企业发展,员工福利成本问题,未知,员工福利成本问题就构成了企业发展中的一个必须正视的问题 109 | 工作任务,组成部分,未知,米勒(Miller)将工作任务都分解成了三个组成部分。 110 | 工资结构,职位,未知,工资结构包括针对每一职位或者职位等级的工资范围 111 | 工作时间,劳动者实际,未知,工作时间既包括劳动者实际完成工作的时间 112 | 奖金,奖金支付,未知,可以从两个角度来关注奖金支付的相对量安排问题:一是奖金的内部构成分析;二是奖金的外部比较分析。 113 | 团队评估,人际关系,未知,过程咨询旨在帮助部门经理、雇员和团队评估并改进包括沟通、人际关系、决策、任务绩效等过程。 114 | 占总报酬的比率问题,提到的佣金提成比率,未知,三者的结构设计可以转换为分析可变部分占总报酬的比率问题(包括了前文提到的佣金提成比率和奖金比率) 115 | 培训,派往海外工作,未知,外资公司的人员发展计划主要包括以下几种:培训、轮岗(包括派往海外工作)、专人指导 116 | 保障性薪酬,薪酬结构,未知,薪酬结构由两部分构成:一块是保障性薪酬 117 | 人力资源,总体计划,未知,组织年度总体计划中各组成部分(生产、市场、人力资源、财务、研发等)是完全兼容的 118 | 定量测评,测评主体,未知,有定性测评与定量测评以及包括模糊综合测评在内的中性测评;按测评主体来划分 119 | 基础薪酬,组合薪酬制,未知,组合薪酬制一般由以下几部分构成:●基础薪酬;保障员工基本生活需要的薪酬 120 | 劳务关系,员工,未知,派遣员工与实际用工单位则构成劳务关系。 121 | 军人保障,稳定社会,未知,而军人保障的目标则包括着稳定军心和稳定社会的双重目标 122 | 承担的责任,工作时间,未知,他们承担的责任包括控制工作节奏、决定工作任务的分配、安排工作时间等。 123 | 工作分析,任职人员,未知,工作分析包括两个方面的内容:确定工作的具体特征;找出工作对任职人员的各种要求。 124 | 序列的专业胜任能力,市场信息,未知,该序列的专业胜任能力则包括市场信息分析能力、产品知识技术能力、客户关系管理能力、销售业务管理能力等 125 | 基本工资,薪酬,未知,现金薪酬的主要构成为基本工资、固定奖金、浮动薪酬以及现金津贴。 126 | 员工,工作分析的目的,未知,需要传递给员工的基本信息包括:工作分析的目的、时间规划以及数据搜集过程的注意事项等。 127 | 信息类,企业家,未知,信息类包括发言人、联系人和监控者;决策类包括领导者、企业家、分配者。 128 | 任职资格要求,职位,未知,(1)确定任职资格要求;由于任务清单包括了某一职位要执行的全部工作任务 129 | 基本能力,综合能力,未知,分别是基本能力和综合能力、知识以及教育;O*NET包括59个基本能力和综合能力的要素 130 | 动机,工作要素,未知,动机型所包含的工作要素内容见表11-5。 131 | 人力资源项目,人力资源项目中的事务,未知,对于人力资源项目中的事务就直接纳入人力资源项目审计中去。 132 | 培训,员工,未知,培训主要包括向员工传授完成当前的某项任务或工作所需的知识和技能 133 | 同一套指标内容,指标内容,未知,对同一套指标内容与该目标下应包括的指标内容间的符合程度也会有不同的判断。 134 | 员工发展,继任计划,未知,继任计划最重要的组成部分就是员工发展计划 135 | 任务绩效,意志动机等因素,未知,又存在任务绩效和周边绩效之分;任务绩效是指工作的直接结果;周边绩效则包括人际、意志动机等因素 136 | 员工,数据搜集,未知,需要传递给员工的基本信息包括:工作分析的目的、时间规划以及数据搜集过程的注意事项等。 137 | 反思式,学习效率,未知,反思式学习包括有意识地学习、怎样学习以及努力寻找提高单向式和双向式学习效率的途径。 138 | 个人的专业化,任务,未知,追求个人的专业化;而现在更多的是围绕一项目标或任务进行人才的组合 139 | 医疗保险,基本工资,未知,养老保险、医疗保险、失业保险等都是以工资(包括基本工资和各种形式的奖金 140 | 市场范围,战略,未知,战略应当包括四个基本的构成要素:(1)产品与市场范围 141 | 员工,研究薪酬,未知,因此研究薪酬激励的构成因素以及怎样对员工进行有效的激励对于一个企业来说是十分重要的。 142 | 人力资源开发人员,员工实际的工作条件,未知,这样可以使人力资源开发人员对工作包含的任务和员工实际的工作条件有更清楚的认识。 143 | 国家经济政策,经济环境,未知,经济环境是指构成企业生存和发展的社会经济状况和国家经济政策。 144 | 价值观,组织文化,未知,“组织文化给考虑决策道德方面的管理者所提供的支持取决于构成文化的共有价值观” 145 | 序列的专业胜任能力,管理能力,未知,该序列的专业胜任能力则包括市场信息分析能力、产品知识技术能力、客户关系管理能力、销售业务管理能力等 146 | 二级营销部总经理的报酬,提取的业务费用,未知,一级、二级营销部总经理的报酬由两部分组成:第一部分是工资;第二部分是按一定费率提取的业务费用。 147 | 预测未来劳动力供给时,人力资源,未知,劳动参与率指标在研究和确定一个国家人力资源的规模和构成因素以及预测未来劳动力供给时具有重要作用 148 | 预测未来劳动力供给时,劳动参与率指标,未知,劳动参与率指标在研究和确定一个国家人力资源的规模和构成因素以及预测未来劳动力供给时具有重要作用 149 | 颁布的主要的社会保障,劳动保险条例,未知,这一时期颁布的主要的社会保障法规包括《中华人民共和国劳动保险条例》和一组优待抚恤条例 150 | 非劳动力,法定劳动年龄人口,未知,非劳动力既包括未达到法定劳动年龄人口的人 151 | 集体效能感,团队绩效,未知,影响团队绩效的团队整体特征有成员构成、团队目标、团队领导、集体效能感。 152 | 阶段的绩效目标,经营目标,未知,通过经营检讨确定的下一阶段的经营目标将会纳入下一阶段的绩效目标和计划之中 153 | 销售培训,经营方针,未知,销售培训的第一期课程包括IBM公司经营方针的很多内容 154 | 销售角色,市场营销培训,未知,IBM公司市场营销培训的一个基本组成部分是模拟销售角色。 155 | 造成的经济成本,劳动力人口,未知,人们认为失业率夸大失业造成的经济成本的第二个来源是劳动力人口统计构成的变化。 156 | 退休,丧失劳动能力,未知,第三十条 股票期权持有人因退休(包括病退)、工(公)伤事故丧失劳动能力而离职的 157 | 过程咨询,人际关系,未知,过程咨询旨在帮助部门经理、雇员和团队评估并改进包括沟通、人际关系、决策、任务绩效等过程。 158 | 过程咨询,任务绩效等过程,未知,过程咨询旨在帮助部门经理、雇员和团队评估并改进包括沟通、人际关系、决策、任务绩效等过程。 159 | 过程变量,团队成员,未知,过程变量包括团队成员间的相互作用和环境的影响因素 160 | 跨文化管理,战略,未知,跨文化管理实际上是组织文化在不同的民族文化层面中进行的组织、战略、人员的组合 161 | 资本市场的发展,基本养老保险,未知,资本市场的发展又会为包括基本养老保险在内的养老保险资金运用提供广阔空间 162 | 负有的责任,医疗保险,未知,政府负有的责任包括:①推动医疗保险立法 163 | 调查问卷,价值观类型,未知,这项调查问卷包括两种价值观类型 164 | 调查内容,职位,未知,调查内容取决于调查目的和调查中所包括的职位。 165 | 调查内容,家庭收入水平,未知,西方国家的家庭经济情况调查内容包括家庭收入水平、市场物价、购买力的动向、就业状况、消费构成等指标 166 | 调查内容,就业状况,未知,西方国家的家庭经济情况调查内容包括家庭收入水平、市场物价、购买力的动向、就业状况、消费构成等指标 167 | 调查内容,市场物价,未知,西方国家的家庭经济情况调查内容包括家庭收入水平、市场物价、购买力的动向、就业状况、消费构成等指标 168 | 该职位,能力,未知,该报告还反映该职位对MPDQ问卷所包含的31项知识、技术和能力(KSAs)的需求程度。 169 | 计点法,四个维度,未知,即大部分计点法所包含的要素都可以概括为四个维度 170 | 行为导向的维度,培训,未知,行为导向的维度包括撰写报告、执行例行的巡逻任务、处理公共事务以及参与培训等 171 | 薪酬的所有形式,薪酬调查,未知,要把薪酬的所有形式都包括在薪酬调查之内是相当困难的。 172 | 薪酬理念,人力资源管理体系,未知,确定人力资源管理体系中最重要的组成部分——薪酬理念和策略。 173 | 薪酬,奖金体系的设计,未知,二、奖金体系的设计奖金是薪酬中十分重要的组成部分 174 | 薪酬,基于绩效,未知,其薪酬是基本工资和基于绩效的可变薪酬的组合。 175 | 能力,市场营销人员,未知,市场营销人员可以根据构成这些能力的因素及自身的经验来评价在这些方面的长处和短处。 176 | 胜任力词典的基本内容,胜任力,未知,由这21项胜任力便构成了胜任力词典的基本内容 177 | 胜任力模型,特定的工作岗位,未知,胜任力模型是指组织当中特定的工作岗位所要求的与高绩效相关的一系列素质或素质组合 178 | 背景材料,岗位,未知,这些背景材料包括企业组织图、岗位配置图、工作流程图以及原有的工作说明书等。 179 | 职责很大一部分,合作伙伴,未知,他们的职责很大一部分还包括对与各种渠道合作伙伴之间关系的维护和管理 180 | 职责,社会救助,未知,而提供社会救助则构成了国家和社会的应尽职责和义务。 181 | 职务分析,情景因素,未知,职务分析问卷包括以工作的背景或情景因素为特征的工作要素 182 | 职位评价,评价要素,未知,2.公司职位评价权重结构的设计包含两层含义:总点值的确定和各个评价要素在总点值内部的结构分布。 183 | 职位评价,报酬要素,未知,若职位评价中包含“学历及工作经验”这一报酬要素 184 | 职位等级,职位的绩,未知,带宽也就越大;·职位等级所包含职位的绩效变动幅度:如果绩效变动幅度较大 185 | 职位分析,明确职务内容,未知,职位分析的目的主要有:·明确职务内容 186 | 职位,基础信息,未知,提供了职位包含的基础信息 187 | 职业管理,人力资源部门的大力支持,未知,共同设计职业管理系统;这个工作小组包括高层经理人员(得到了人力资源部门的大力支持);另外 188 | 职业生涯计划,职业生涯手册,未知,最后介绍职业生涯计划工作的开展(包括职业生涯讨论会的举办、职业生涯手册的编制等等)。 189 | 职业生涯计划,职业生涯讨论会,未知,最后介绍职业生涯计划工作的开展(包括职业生涯讨论会的举办、职业生涯手册的编制等等)。 190 | 职业生涯规划,生活方式,未知,职业生涯规划本身就包含对生活方式、生活风格的考虑。 191 | 职业生涯管理,职业生涯规划,未知,虽然职业生涯管理包括了组织帮助个人设计和实施职业生涯规划的活动 192 | 职业洞察力,员工,未知,职业洞察力包括员工对自己兴趣优势和不足的自知能力 193 | 职业洞察力,不足的自知能力,未知,职业洞察力包括员工对自己兴趣优势和不足的自知能力 194 | 职业,职业技能,未知,即职业;一个职业包含一组性质相同、具有通用的职业知识和职业技能的工作;细类的划分一般采用工作分析法 195 | 职业,通用的职业知识,未知,即职业;一个职业包含一组性质相同、具有通用的职业知识和职业技能的工作;细类的划分一般采用工作分析法 196 | 职业,国家职业分类,未知,(4)细类(职业)划分的原则;细类是国家职业分类最基本的类别 197 | 考核量表,个人特征,未知,典型的行为锚定等级考核量表包括7个或8个个人特征 198 | 美国社会保障,社会保险,未知,老(年)残(障)遗(属)社会保险构成美国社会保障开支中的最大项目 199 | 美国戴尔公司的培训内容,员工潜能,未知,美国戴尔公司的培训内容则包括企业文化定位、技术技能、领导艺术及挖掘员工潜能方面的课程。 200 | 综合能力,能力,未知,基本能力和综合能力也包括从事多种工作活动的能力 201 | 综合能力,基本能力,未知,分别是基本能力和综合能力、知识以及教育;O*NET包括59个基本能力和综合能力的要素 202 | 绩效评价困境,任职条件,未知,绩效评价困境实际上包含着两个方面:一是没有通过职位分析和职位评价确定职位职责和任职条件 203 | 绩效评价困境,职位分析,未知,绩效评价困境实际上包含着两个方面:一是没有通过职位分析和职位评价确定职位职责和任职条件 204 | 绩效评价困境,职位评价,未知,绩效评价困境实际上包含着两个方面:一是没有通过职位分析和职位评价确定职位职责和任职条件 205 | 绩效考核程序,员工,未知,360度绩效考核程序包含直线主管介绍员工岗位职责和员工与其他部门工作的内容、特点、职责、成绩和困难 206 | 绩效考核程序,员工岗位职责,未知,360度绩效考核程序包含直线主管介绍员工岗位职责和员工与其他部门工作的内容、特点、职责、成绩和困难 207 | 绩效考核程序,职责,未知,360度绩效考核程序包含直线主管介绍员工岗位职责和员工与其他部门工作的内容、特点、职责、成绩和困难 208 | 绩效考核,战略方向,未知,国际人力资源管理中绩效考核的目标包括战略方向和业绩。 209 | 绩效管理,绩效计划,未知,绩效管理主要包括以下几个环节:表达组织期望和制定绩效计划 210 | 绩效管理,组织期望,未知,绩效管理主要包括以下几个环节:表达组织期望和制定绩效计划 211 | 绩效合同,员工认可,未知,绩效合同一般包括:工作目的描述、员工认可的工作目标及其衡量标准等。 212 | 继任计划的职位,胜任能力的管理职位,未知,继任计划的职位包括需要更高胜任能力的管理职位 213 | 统一的薪酬体系,薪酬,未知,这些薪酬的组成部分很难纳入统一的薪酬体系当中。 214 | 结构模型,人格测验,未知,对以无领导小组讨论、文件筐和人格测验构成的一个评价中心的构想效度和结构模型进行了研究。 215 | 结构模型,文件筐,未知,对以无领导小组讨论、文件筐和人格测验构成的一个评价中心的构想效度和结构模型进行了研究。 216 | 经济学理论,变量,未知,我们依靠经济学理论来决定统计分析中应该包括哪些变量 217 | 经济全球化,生产要素,未知,经济全球化指商品(包括服务)、信息和生产要素跨国流动 218 | 组织运行,组织结构,未知,职位在整个组织运行中的地位由组织结构和流程所构成的二维坐标系所决定。 219 | 组织核心竞争力的源泉,智力资本,未知,拥有和创造知识与智力资本的人是构成组织核心竞争力的源泉 220 | 组织文化的工具,组织的文化维度,未知,11个要素、4个组织的文化维度构成测量我国组织文化的工具 221 | 组织文化,共享的价值观,未知,(5)组织文化是由员工共享的价值观、信念、理解与标准等的基本组合。 222 | 组织承诺,员工心理契约的内容,未知,员工心理契约的内容构成了组织承诺的深层基础 223 | 组织形象,物质形象,未知,组织形象是包含着组织精神形象、组织行为形象和组织物质形象的统一体。 224 | 组织学习,个人学习,未知,组织学习是一种包括了一系列不同于个人学习的活动。 225 | 组织在员工职业生涯中的任务,员工能力,未知,组织在员工职业生涯中的任务应该包含对员工能力、兴趣及职业发展要求和目标的分析与评估 226 | 组织在员工职业生涯中的任务,职业发展,未知,组织在员工职业生涯中的任务应该包含对员工能力、兴趣及职业发展要求和目标的分析与评估 227 | 组成部分,诊断性,未知,这两个基本的组成部分包括判别性的人员分析和诊断性的人员分析[1]。 228 | 组成部分,工作分析,未知,工作分析不仅仅关注构成整体的各个组成部分 229 | 组合计划,人员薪酬,未知,2.销售人员薪酬的一般构成及其组合计划 230 | 组成部分,人员分析,未知,这两个基本的组成部分包括判别性的人员分析和诊断性的人员分析[1]。 231 | 组成部分,在岗职工,未知,即不在岗职工构成了失业率计算公式中分母的组成部分 232 | 类员工,人事信息,未知,其功能主要是管理各类员工(包括在职员工、解聘员工、离退员工及其他类别人员)的人事信息 233 | 类员工,员工,未知,其功能主要是管理各类员工(包括在职员工、解聘员工、离退员工及其他类别人员)的人事信息 234 | 类员工,在职员工,未知,其功能主要是管理各类员工(包括在职员工、解聘员工、离退员工及其他类别人员)的人事信息 235 | 类员工,聘员工,未知,其功能主要是管理各类员工(包括在职员工、解聘员工、离退员工及其他类别人员)的人事信息 236 | 管理能力,方面的素质要素,未知,自我管理能力包括以下几个方面的素质要素: 237 | 管理类专业员工,人员专业分类学历,未知,3.人员专业分类学历构成:会计金融与经济管理类专业员工10人中 238 | 管理社会保障的责任主体,失业保险,未知,其管理社会保障的责任主体包括有不同保险机构、基金会或部门所属地方机构管理和实施;除失业保险外 239 | 管理培训,组织员工,未知,协助员工平衡工作与生活)、员工关系管理培训(包括组织员工进行人际交往 240 | 管理制度变革,管理理念,未知,组织管理制度变革包括组织的管理理念与管理方法的改变。 241 | 等级说明,工作中的典型决策水平,未知,(36)S决策(通过选择等级说明包含在工作中的典型决策水平 242 | 竞争优势的核心技能,核心竞争力的思想,未知,核心竞争力的思想关注那些构成企业(非个人)竞争优势的核心技能 243 | 竞争优势,战略,未知,认为战略的构成要素包括产品与市场范围、增长向量、协同效应和竞争优势。 244 | 福利,薪酬,未知,作为薪酬组成部分的福利在中国显得格外重要。 245 | 社保体系,参与流动的劳动者,未知,逐步将参与流动的劳动者全部纳入到社保体系中来;二是建立覆盖全国各地和各行业的社会化保障体系 246 | 社会经济状况,经济环境,未知,经济环境是指构成企业生存和发展的社会经济状况和国家经济政策。 247 | 社会管理体系,流入的劳动力,未知,才能使新流入的劳动力尽快被纳入城市社会管理体系 248 | 社会福利范围,职业,未知,不论其地位、职业、贫富等均被强制性地纳入社会福利范围 249 | 社会福利的项目,全社会成员,未知,社会福利的项目包括全社会成员享受的公共福利事业 250 | 社会福利,社会保障体系,未知,构成社会保障体系重要组成部分的社会福利与社会服务 251 | 社会成员,缴费义务,未知,履行缴费义务构成社会成员获得医疗保障权利的前提条件。 252 | 社会成员,劳动过程,未知,由于社会成员包括劳动者在社会生活以及劳动过程中 253 | 社会保障系统,军人保障,未知,军人保障构成了一个既相对独立、又与其他社会保障系统相联系的子系统 254 | 社会保障法律体系,社会保障,未知,社会保障法律体系包括社会保障专业法律体系和社会保障相关法律体系。 255 | 社会保障体系,社会保障,未知,社会保障体系可以划分为基本社会保障(正式制度安排)和补充社会保障(非正式制度)两个部分。 256 | 社会保障制度,社会安全,未知,社会保障制度由单一项目的制度安排逐渐发展成为一个包含多个子系统及众多保障项目在内的社会安全体系。 257 | 提升其核心能力的轨道,员工,未知,最终组织能够将员工的努力和贡献纳入到帮助企业完成其目标、提升其核心能力的轨道上来。 258 | 提取的业务费用,二级营销部总经理的报酬,未知,一级、二级营销部总经理的报酬由两部分组成:第一部分是工资;第二部分是按一定费率提取的业务费用 259 | 整个企业的人力资源系统设计,人力资源战略的一个,未知,属于人力资源战略的一个组成部分;即在整个企业的人力资源系统设计中 260 | 新员工入职培训,岗位,未知,新员工入职培训的目的包括:向新员工介绍本组织和各岗位的有关信息 261 | 新员工入职培训,新员工,未知,新员工入职培训的目的包括:向新员工介绍本组织和各岗位的有关信息 262 | 新的《企业文化手册》,员工,未知,新的《企业文化手册》中包含了《企业文化纲领》、《员工日常行为规范》等内容。 263 | 无私奉献价值观,消极的价值观,未知,无私奉献价值观;也包括不道德行为所表现出来的错误、庸俗、消极的价值观 264 | 普遍保障模式,劳动者,未知,如瑞典就是普遍保障模式;有些国家的养老保险只包括劳动者 265 | 智利养老基金监管局,养老基金,未知,如智利养老基金监管局和中央银行的管理职责就包括:规定养老基金管理公司的投资工具及其应占的比例 266 | 有效领导能力,方面的素质要素,未知,有效领导能力包括以下几个方面的素质要素: 267 | 校园招聘,大的企业组织,未知,如校园招聘中就包含着很大的企业组织宣传自身的成分。 268 | 核心要素,胜任力,未知,图5-4展现了胜任力构成的几个核心要素 269 | 框架设计的重点,组成部分,未知,如果说框架设计的重点在于把整个企业的经营管理活动分解成各个组成部分 270 | 法国失业保险制度规定的享受,退休年龄,未知,法国失业保险制度规定的享受条件包括:非自愿失业、未达到退休年龄 271 | 社会交往能力,方面的素质要素,未知,社会交往能力包括以下几个方面的素质要素: 272 | 监控者,企业家,未知,信息类包括发言人、联系人和监控者;决策类包括领导者、企业家、分配者。 273 | 监控者,分配者,未知,信息类包括发言人、联系人和监控者;决策类包括领导者、企业家、分配者。 274 | 测试系统,人格,未知,该测试系统包括人格、心理运动以及诸如航空知识、操作等能力因素的测量与评价 275 | 激励功能,组织行为主体,未知,企业文化对组织行为主体所产生的激发、动员、鼓舞、推进的作用就构成了它的激励功能。 276 | 监控机制,组织创新,未知,这种监控机制包括对企业技术创新和组织创新的各类动力源和信息源的监控。 277 | 生产的等产量曲线,家庭商品,未知,家庭生产的等产量曲线就是指在生产同样家庭商品产量的家庭生产时间和购买物品的不同要素组合的轨迹。 278 | 现金津贴,薪酬,未知,现金薪酬的主要构成为基本工资、固定奖金、浮动薪酬以及现金津贴。 279 | 环境探索,职业生涯决定,未知,环境探索还包括了解家庭对职业生涯决定的影响。 280 | 特定的职位等级,责任,未知,某一特定的职位等级中所包含的各种工作职位应遵循这样的原则:它们的工作任务、义务和责任大体相当 281 | 物理环境变革,工作场所的位置,未知,物理环境变革包括对工作场所的位置和布局安排的改变。 282 | A咨询公司,目标岗位,未知,A咨询公司为依据目标岗位对报名的竞聘者进行了胜任力的排序和分析 283 | 个人的职业,个人的职业开发,未知,组织的存在和发展依赖于个人的职业工作、依赖于个人的职业开发与发展。 284 | 企业战略的制定,企业内部的技术能力,未知,企业战略的制定和实施依赖于企业现有的资源水平及体现在企业内部的技术能力和管理能力。 285 | 企业战略的制定,管理能力,未知,企业战略的制定和实施依赖于企业现有的资源水平及体现在企业内部的技术能力和管理能力。 286 | 企业薪酬体系设计,企业的薪酬理念,未知,并据此确立企业的薪酬理念;薪酬理念是企业薪酬体系设计的依据 287 | 传统方案,工作时间,未知,这类薪酬形式与传统方案的区别是:前者的工资不仅仅取决于工作时间或资历 288 | 公司战略,组织的未来发展方向,未知,公司战略就是依据组织所拥有的资源勾画出组织的未来发展方向 289 | 劳动力,收入要求,未知,劳动力参与的水平和方式取决于就业机会的多少和收入要求 290 | 劳动合同,工作职责描述,未知,工作职责描述是不能胜任工作而解除劳动合同的唯一依据和基础。 291 | 劳动数量,产品市场,未知,劳动数量直接取决于产品市场所需要的产出量。 292 | 员工,工作态度,未知,员工可以依据工作业绩和工作态度分为以下四种类型。 293 | 员工,自动离职,未知,自动离职是员工依据个人意愿所做的离职 294 | 命题人员,考试大纲,未知,命题人员必须明确试题编写的依据是根据考试大纲制定的双向细目表或试卷编制蓝图。 295 | 培训与开发系统,企业发展战略,未知,一、企业培训与开发系统设计的出发点1.依据企业发展战略确定培训开发策略 296 | 基于能力,核心能力,未知,基于能力的规划模式以及依据核心能力挑选员工 297 | 奖励,等级关系,未知,共享奖励;他们看重的是群体的和谐、统一和忠诚;英国人和法国人则遵循另一个取向:他们依赖于等级关系 298 | 审计的主要任务,特定的人力资源制度,未知,人力资源制度合理性审计的主要任务就是依据这些标准去对特定的人力资源制度进行审计分析 299 | 进行职位等级的划分,任务,未知,我们根据以下步骤进行职位等级的划分:·依据完成任务所必需的决策的种类和水平对各项工作进行分类 300 | 计算方法,赛季的收入,未知,它的计算方法首先是在每年6月依据近几年篮球事业收入(BRI)预测下一赛季的收入 301 | 薪酬的确定,一岗数薪制,未知,薪酬的确定同样是依据岗位要求而定的;实行一岗数薪制 302 | 营销总监,信托营销总部,未知,营销总监进行年终考评时参考的客观依据由信托营销总部有关职能部门提供。 303 | 职务,绩效考核结果,未知,这种职务调整在很大程度上是以绩效考核结果为依据的。 304 | 职业分层,不同的职业,未知,这是职业分层的依据;如果只是笼统地宣讲不同的职业是社会分工的需要 305 | 结构性分析法,分析对象,未知,有结构性分析法和非结构性分析法;依据分析对象的不同划分 306 | 社会化过程的阶段模型,结果划分,未知,社会化过程的阶段模型一般是依据心理学的研究结果划分的。 307 | 平衡计分卡,~20个绩效指标,未知,平衡计分卡的成功取决于它的简洁性:只要15~20个绩效指标就行了。 308 | 是员工,企业的战略目标,未知,它大致的理念是员工依据企业的战略目标对自己的年度业绩目标作出承诺 309 | 绩效管理,员工,未知,绩效管理是依据员工和他们的直接主管之间达成的协议 310 | 职位层级,基本工资的比重,未知,可以发现职位层级越高,基本工资的比重越低,变动部分的比重越高。 311 | 承担的战略责任,战略因素,未知,一般来说,组织中层级越高的人员,其承担的战略责任就越大,其报酬包中与战略因素相挂钩的比重就越高。 312 | 承担的战略责任,报酬包,未知,一般来说,组织中层级越高的人员,其承担的战略责任就越大,其报酬包中与战略因素相挂钩的比重就越高。 313 | 劳动需求,市场,未知,经济增长快速发展时,资本投资需求增大,从而导致对劳动需求增加,市场运行的结果会导致劳动供给增加。 314 | 高级行政官员,当前政策问题,未知,(4)通过政府高级行政官员之间的交流与研讨,促进学员加深对当前政策问题及其难点的认识。 315 | 部门全体员工,基层员工,未知,每季度举办一次部门全体员工参加的聚餐例会,以促进基层员工与领导层之间的沟通与交流。 316 | 进行中的评价中心,评价员差别的控制,未知,这些现象启示我们,应对进行中的评价中心测评实行质量监控,加强对评价员差别的控制与调整。 317 | 资本市场,劳资关系,未知,(2)促进资本市场和劳动力市场的完善,有利于改善劳资关系。 318 | 薪酬体系的个性化,薪酬体系,未知,其优点是可以实现薪酬体系的个性化,增强精确性;保证薪酬体系具备外部竞争力。 319 | 考核结果的可信度,考核者的培训,未知,要保持考核结果的可信度和效能,就必须加强对考核者的培训。 320 | 绩效考核结果,工作成效,未知,绩效考核结果反馈给员工后,有利于他们认识自己的工作成效,发现自己工作过程中的短板所在。 321 | 绩效管理,员工,未知,绩效管理是管理者和员工双方就目标及如何达到目标而达成共识,并促进员工成功地达到目标的管理方法。 322 | 经济增长,市场,未知,经济增长快速发展时,资本投资需求增大,从而导致对劳动需求增加,市场运行的结果会导致劳动供给增加。 323 | 组织文化的变革,连续的文化过程,未知,组织文化的变革和创新实际上就是一个增强文化动力、克服阻力的连续的文化过程。 324 | 组织文化变革的本质特征,组织文化的进步,未知,因此,正确认识组织文化变革的本质特征,对于促进组织文化的进步具有重要意义。 325 | 生活方式,行政官员,未知,(8)通过个人保健、生活方式、财务状况评价促进行政官员为承担领导职责做好准备。 326 | 测评与选拔标准体系,测评与选拔主体,未知,测评与选拔标准体系的建立还有利于测评与选拔主体深化对于人员和工作的认识。 327 | 日本的失业保险金,连续就业保险金,未知,按照支付的目的和性质,日本的失业保险金可分为求职者保险金、促进就业保险金和连续就业保险金三类。 328 | 无过失补偿原则的确立,劳动者,未知,无过失补偿原则的确立,有利于劳动者在工伤发生后能够得到及时的治疗和经济补偿。 329 | 新老员工座谈会,老员工,未知,每季度举办一次新老员工座谈会,增强了部门间的横向交流,增加了新员工向老员工学习的机会。 330 | 新的改革措施,员工,未知,这种新的改革措施通过降低工作资历的重要性,奖励成绩优异者,加强同级间的工作变动等办法鼓励员工。 331 | 文化积淀,文化转化,未知,1.注重文化积淀,促进文化转化 332 | 教育体系,企业职工培训,未知,美国商会是在美国影响很大的协会,这个协会为改进教育体系、促进企业职工培训起了很大作用。 333 | 提高生产率,个人工作熟练程度,未知,传统观点认为,分工有利于提高生产率,有利于提高个人工作熟练程度。 334 | 提高学员业务能力的同时,反应能力,未知,(5)在提高学员业务能力的同时,也加强了其反应能力和心理素质。 335 | 提高员工知识水平的同时,员工之间的交流,未知,开展读书活动在提高员工知识水平的同时,还有利于加强员工之间的交流合作。 336 | 战略目标,管理人才的培养,未知,企业要顺利实现自己的战略目标,就必须加强对管理人才的培养,提高他们的管理水平。 337 | 战略决策者,战略创新,未知,而恰恰是不被战略决策者看好的对现实的不满和改进的设想,却往往隐藏着许多有利于战略创新的问题。 338 | 我国现阶段劳动合同,劳动者的就业,未知,法律的这些规定主要是为了解决我国现阶段劳动合同短期化的普遍现象,促进劳动者的就业稳定。 339 | 巨大的生产力,日本经济的快速发展,未知,日本的“拿来主义”文化,转化成巨大的生产力,促进了日本经济的快速发展。 340 | 工作分析,工作分析的发展,未知,第一次世界大战前夕美国在大规模征兵过程中利用工作分析为人员测评选拔服务,也促进了工作分析的发展。 341 | 工会力量,员工,未知,随着工会力量的逐步增强,员工开始在合同中要求更多的福利。 342 | 就业管理职能,劳动力市场的宏观干预,未知,这一方面表现在劳动部门就业管理职能得到扩大和加强,政府开始对劳动力市场的宏观干预。 343 | 失业保险制度,失业保险,未知,可以看出,目前各国失业保险制度中促进就业的规定越来越多,失业保险越来越向就业保险靠拢。 344 | 失业保险制度,失业人员,未知,失业保险制度本身具有保障失业人员失业期间的基本生活和促进失业人员再就业两种功能。 345 | 外在的动机,自发的动机,未知,如果外在的动机增强,那么自发的动机就会受到抑制。 346 | 基本薪酬,企业的经营目标,未知,前两个目标主要依靠基本薪酬实现,而奖金计划更有利于帮助完成企业的经营目标。 347 | 培训部门,培训部门人员的培训,未知,4.提升企业内培训部门人员的素质,加强对培训部门人员的培训。 348 | 培训部门,培训人员,未知,外包的概念以及具体的流程,培训部门在未来将加强开发同外部培训人员和其他供应商的合作伙伴关系。 349 | 培训教师的因素,培训成果,未知,除了培训教师的因素外,员工培训后返回岗位,还需要一个能够促进培训成果转化的环境。 350 | 培训,培训和开发实效,未知,第四,要对培训和开发工作加强评估和总结,吸取教训,不断改进,提高培训和开发实效。 351 | 培养员工,绩效反馈的有效性,未知,通过运用技术手段,可以培养员工更积极的态度,从而增强绩效反馈的有效性。 352 | 国内消费需求,生产和就业规模的扩张,未知,(2)积极扩大国内消费需求,促进生产和就业规模的扩张。 353 | 员工的日常工作,员工,未知,能够有效指导员工的日常工作和自学,促进员工不断学习和提高。 354 | 员工忠诚度,企业凝聚力,未知,(4)提高员工忠诚度,增强企业凝聚力。 355 | 员工升职的机会,员工的激励,未知,这种方式一般用于员工晋升,给员工升职的机会,有利于对员工的激励。 356 | 员工个体,员工,未知,2.将员工个体和组织紧密联系起来,促进员工与企业共同成长和发展 357 | 员工,员工的自信心,未知,尊重需求是指员工希望自己得到他人的尊重,这将有利于提高员工的自信心,激发出员工的潜能。 358 | 受训员工,培训成果,未知,企业可通过在受训员工之间建立联系网络来增强培训成果在工作中的应用。 359 | 双重职业通道,市场等领域,未知,双重职业通道有利于激励在工程、技术、财务、市场等领域中有突出贡献的员工。 360 | 劳动力市场制度,经济的界限配置劳动力的制度,未知,显然,劳动力市场制度与计划经济制度相比,是一种有利于企业按技术的和经济的界限配置劳动力的制度。 361 | 劳动力,高比例的技术雇员的行业,未知,具体来讲,对劳动力派生需求的移动,有利于雇用高比例的技术雇员的行业的劳动力需求水平的上升。 362 | 利益考虑,经济关系,未知,(10)来华投资的跨国公司出于其本身利益考虑,愿促进其本国政府改善同中国的政治、经济关系。 363 | 养老保险,养老保险制度,未知,理顺管理体制是进一步发展养老保险、促进养老保险制度的统一性的要求。 364 | 儿童福利事业,义不容辞的职责,未知,中国政府是很重视儿童福利事业的,它把发展儿童福利、促进儿童健康成长当作义不容辞的职责。 365 | 体察受训者的社会需求,很重要的能力,未知,对培训者来说,善于体察受训者的社会需求并能迅速采取措施增强他们的归属感,是一种很重要的能力。 366 | 人岗匹配,人的职业适应性,未知,(2)增进人岗匹配,加强人的职业适应性,提高职业活动效率和职业培训的效率。 367 | 人力资本的地位,人力资本,未知,实际上标志着人力资本的地位和作用在极大地加强,也就是所谓的对人力资本的权利和地位的激励。 368 | 临时员工,培训部门,未知,目前,临时员工日益增多,对产品和服务的需求弹性也得到加强,因此对培训部门提出了挑战。 369 | 专业化,经营和生产成本,未知,(4)按产品划分事业部,便于组织专业化生产,形成规模经济,有利于节约经营和生产成本。 370 | 个体文化,组织成员,未知,如果个体文化与组织文化之间的一致性较强,则会促进组织成员与组织共同发展。 371 | 个体角度,组织员工,未知,3.从个体角度来看,人力资源规划有利于组织员工制定个人发展计划和实现其长期利益 372 | -------------------------------------------------------------------------------- /CNNmodel/datas/relation/正相关.csv: -------------------------------------------------------------------------------- 1 | J研究所的薪酬体系,核心人才,正相关,J研究所的薪酬体系切实起到了促进组织目标达成、核心人才保留和员工满意的作用。 2 | J研究所的薪酬体系,组织目标,正相关,J研究所的薪酬体系切实起到了促进组织目标达成、核心人才保留和员工满意的作用。 3 | 两难问题的处理方法,道德能力的提高,正相关,在两难问题的处理方法能更好地促进其道德能力的提高;道德两方面的发展在时间上是平行的 4 | 为基础的工作分析系统,关键性的工作任务,正相关,以工作任务为基础的工作分析系统有利于辨别哪些是重要的、关键性的工作任务 5 | 人体工程学,工作分析方法的发展,正相关,残疾人就业问题和人体工程学都促进了工作分析方法的发展。 6 | 人力资本,经济增长,正相关,人力资本对于促进经济增长的贡献日益突出 7 | 人力资源的开发,中欧经贸关系的进一步发展,正相关,以此通过人力资源的开发来促进中欧经贸关系的进一步发展。 8 | 人力资源管理门的宣传,考核者,正相关,以及人力资源管理门的宣传和要求来加强考核者对考核的重视和投入 9 | 人力资源规划,人力资源管理工作,正相关,2.人力资源规划有利于人力资源管理工作的开展和提升 10 | 人力资源规划,组织员工,正相关,人力资源规划有利于组织员工制定个人发展计划和实现其长期利益。 11 | 人力资源规划,组织战略,正相关,1.人力资源规划有利于组织战略、目标、愿景的实现。 12 | 使用人力资源信息系统,组织战略各步骤,正相关,使用人力资源信息系统可以促进组织战略各步骤的实施过程(参见表6-15)。 13 | 全球性生产系统的形成,全球经济的相互依赖,正相关,全球性生产系统的形成加强了全球经济的相互依赖 14 | 公正地分配收入,生产效率,正相关,重要的在于保证更加公正地分配收入与财富以促进社会正义与生产效率 15 | 劳动力流动,劳动力市场发育,正相关,劳动力流动促进了劳动力市场发育 16 | 劳资关系的全面合作,员工的安全感,正相关,而且劳资关系的全面合作也增强了员工的安全感和归属感 17 | 区域性集体合同,劳动关系,正相关,订立行业性、区域性集体合同有利于调整行业内或区域内的劳动关系。 18 | 员工,跨文化,正相关,这就要求员工或经理人在整个跨国任职的过程中不断地加强跨文化学习。 19 | 员工福利,企业的人工成本,正相关,(5)员工福利有利于节省企业的人工成本。 20 | 周边绩效,员工与组织的绩效,正相关,周边绩效管理能够促进员工与组织的绩效。 21 | 周边绩效,组织核心价值观,正相关,周边绩效管理有利于组织的长远发展和组织核心价值观的建立。 22 | 培训部门,合作伙伴关系,正相关,培训部门在未来将加强开发同外部培训人员和其他供应商的合作伙伴关系。 23 | 培训部门,员工,正相关,培训部门应该加强对员工参加各种培训开发活动的文档管理 24 | 多元化的员工,企业的长期发展,正相关,多元化的员工有利于企业的长期发展。 25 | 大的报酬,约束作用,正相关,期待更大的报酬;●有利于发挥资本市场对公司及其经营者的监督、激励和约束作用;●股票期权有多种方式 26 | 失业保险,失业者,正相关,促使失业保险向既能够促进失业者再就业又能够保障失业者基本生活的就业保障机制转化。 27 | 失业保险,就业功能,正相关,也开始注重失业保险促进就业功能的发挥。 28 | 奖金支付,绩效管理,正相关,奖金支付也成为促进绩效管理的各个环节得以有效运转的有力手段。 29 | 奖金计划,企业的经营目标,正相关,而奖金计划更有利于帮助完成企业的经营目标。 30 | 家庭津贴,社会文明的发展,正相关,养老保险与家庭津贴等有利于生育政策的实施等等;五是能够促进社会文明的发展 31 | 就业培训支出的比重,失业者,正相关,通过加大再就业培训支出的比重、建立就业导向的机制等来促进失业者再就业 32 | 工作分析,人力资源管理活动,正相关,工作分析是促进所有人力资源管理活动高效开展的核心因素。 33 | 工作分析,组织价值,正相关,工作分析是提高工作效率、增强组织价值的工具。 34 | 工作设计,人际关系,正相关,④工作设计有利于改善人际关系。 35 | 所有的人力资源活动,组织文化,正相关,确保所有的人力资源活动都产生附加值;·加强组织文化管理 36 | 技术进步,投资机会,正相关,而且认为技术进步通过促进消费和创造有利的投资机会 37 | 技能指标,素质提升,正相关,设立技能指标旨在不断地促进销售人员自身的技能提高和素质提升 38 | 技能指标,销售人员自身的技能,正相关,设立技能指标旨在不断地促进销售人员自身的技能提高和素质提升 39 | 支付促进就业保险金的目的,失业者,正相关,并有7天的等待期;支付促进就业保险金的目的是促进失业者再就业 40 | 无固定期限劳动合同,劳动者权益,正相关,无固定期限劳动合同更有利于保护劳动者权益 41 | 日本的组织管理,契约关系,正相关,而日本的组织管理则着力于加强组织与成员的契约关系及规章制度的进一步完善。 42 | 残疾人就业,工作分析方法的发展,正相关,残疾人就业问题和人体工程学都促进了工作分析方法的发展。 43 | 沟通制度,组织沟通,正相关,设计和建立一个有效的沟通制度是促进组织沟通的有为之举。 44 | 测评与选拔标准体系,测评与选拔主体,正相关,测评与选拔标准体系的建立还有利于测评与选拔主体深化对于人员和工作的认识。 45 | 特定的模拟环境,培训效果,正相关,(2)特定的模拟环境和主题有利于增强培训效果; 46 | 电子操作支持系统,受训者的培训成果,正相关,电子操作支持系统可以被用来促进受训者的培训成果转化 47 | 社会保障,家庭关系的稳定性,正相关,社会保障应有助于加强家庭关系的稳定性 48 | 社会保障,社会经济发展,正相关,又使社会保障具备了促进社会经济发展的相应的影响力与实力;再次。 49 | 社会力量,社会保障事业,正相关,也是提高社会保障公共资源的效率并充分调动民间与社会力量共同促进社会保障事业发展的必由之路 50 | 社会总体薪酬水平的提高,社会福利整体水平,正相关,社会总体薪酬水平的提高有利于提高社会福利整体水平。 51 | 福利,员工之间的合作,正相关,福利更加能够促进员工之间的合作 52 | 离职率,组织活力,正相关,高离职率反而能促进组织活力;离职在某些人看来 53 | 积极的工作关系,员工的自尊,正相关,如今的管理者必须培养积极的工作关系以加强员工的自尊。 54 | 管理层次的减少,组织的反应能力,正相关,管理层次的减少有助于增强组织的反应能力。 55 | 精神奖励,员工,正相关,许多事实证明精神奖励比物质奖励更能促进员工作出成绩 56 | 组织价值观,组织成员,正相关,塑造正确组织价值观的根本目的就是要增强组织的凝聚力和组织成员的归宿感 57 | 组织印象管理,员工的忠诚度,正相关,组织印象管理有利于提高员工的忠诚度 58 | 组织发展,组织运行,正相关,(1)组织发展可以增强组织运行的有效性。 59 | 绩效管理,全面质量管理,正相关,绩效管理过程可以加强全面质量管理(TQM)。 60 | 绩效管理,员工发展,正相关,从这一点出发我们也可以这样认为:绩效管理是一种为促进员工发展而进行的人力资本投资。 61 | 绩效管理,员工的发展,正相关,6.绩效管理可以促进员工的发展 62 | 绩效管理,质量管理,正相关,2.绩效管理可以有效地促进质量管理 63 | 绩效考评,内部沟通,正相关,组织中常见的布告栏、会议、内部刊物、绩效考评等都是促进内部沟通的尝试和设置 64 | 职业生涯发展,员工职业能力,正相关,企业通过动态的职业生涯发展机制来促进员工职业能力持续增强 65 | 职业生涯评价,职业生涯探索,正相关,从职业生涯评价中得到的信息又反过来促进职业生涯探索(见步骤H到A的箭头) 66 | 职业生涯阶梯,员工的创新能力,正相关,索尼公司则利用非传统的职业生涯阶梯设计来促进员工的创新能力。 67 | 职业管理,员工职业生涯的发展,正相关,职业管理是指组织为了促进员工职业生涯的发展 68 | 联系网络,培训成果,正相关,企业可通过在受训员工之间建立联系网络来增强培训成果在工作中的应用。 69 | 薪酬激励,人力资本,正相关,通过设置有针对性的薪酬激励促进人力资本的最大作用 70 | 行为导向的评估方法,绩效评估,正相关,行为导向的评估方法可以加强绩效评估的发展性目的。 71 | 西方一些发达资本主义国家,经济生活,正相关,西方一些发达资本主义国家加强了对社会生活和经济生活的干预和控制 72 | 雇佣关系的稳定性,员工对企业的归属感,正相关,这种雇佣关系的稳定性促进了员工对企业的归属感和忠诚心。 73 | 高劳动者素质,经济增长,正相关,职业教育和就业培训已成为提高劳动者素质、促进生产发展和经济增长的重要手段。 74 | 个体文化,组织成员,正相关,如果个体文化与组织文化之间的一致性较强,则会促进组织成员与组织共同发展。 75 | 临时员工,培训部门,正相关,目前,临时员工日益增多,对产品和服务的需求弹性也得到加强,因此对培训部门提出了挑战。 76 | 企业年金,企业凝聚力,正相关,(4)企业年金是提高劳动生产率和增强企业凝聚力的重要手段。 77 | 企业能力理论,“动态能力”战略观,正相关,而企业能力理论与演化经济学相结合,促进了“动态能力”战略观的出现和发展。 78 | 传统的职业生涯,员工的创新能力,正相关,索尼公司则利用非传统的职业生涯阶梯设计来促进员工的创新能力。 79 | 信度系数,信度,正相关,信度系数是衡量信度大小的指标,信度系数越大,说明信度越高,亦即测评与选拔的可靠程度越高。 80 | 信度系数,测评信度,正相关,数据分布范围越大,变异程度越高,相关系数越大,即信度系数越大,从而测评信度越高。 81 | 公共就业服务系统,劳动力市场供求,正相关,公共就业服务系统在发达国家已经相当成熟,并且在促进劳动力市场供求匹配方面效果显著。 82 | 利益考虑,经济关系,正相关,(10)来华投资的跨国公司出于其本身利益考虑,愿促进其本国政府改善同中国的政治、经济关系。 83 | 劳动人口,消费需求,正相关,因为伴随着劳动人口的增加,消费需求也增加了。 84 | 劳动力,技术雇员,正相关,具体来讲,对劳动力派生需求的移动,有利于雇用高比例的技术雇员的行业的劳动力需求水平的上升。 85 | 劳动力市场制度,配置劳动力,正相关,显然,劳动力市场制度与计划经济制度相比,是一种有利于企业按技术的和经济的界限配置劳动力的制度。 86 | 劳动力流动,城市化进程,正相关,总之,劳动力流动促进了劳动力市场发育,优化了劳动力资源的配置,也促进了城市化进程。 87 | 劳资关系的全面合作,员工对企业的忠诚度,正相关,而且劳资关系的全面合作也增强了员工的安全感和归属感,提高了员工对企业的忠诚度。 88 | 受训员工,培训成果,正相关,企业可通过在受训员工之间建立联系网络来增强培训成果在工作中的应用。 89 | 员工升职的机会,员工的激励,正相关,这种方式一般用于员工晋升,给员工升职的机会,有利于对员工的激励。 90 | 员工忠诚度,企业凝聚力,正相关,(4)提高员工忠诚度,增强企业凝聚力。 91 | 员工的日常工作,员工,正相关,能够有效指导员工的日常工作和自学,促进员工不断学习和提高。 92 | 员工福利,知识型企业核心能力,正相关,员工福利可以使企业获得人才竞争优势、低成本优势并且特别能促进知识型企业核心能力的增加。 93 | 培养员工,绩效反馈,正相关,通过运用技术手段,可以培养员工更积极的态度,从而增强绩效反馈的有效性。 94 | 培训,培训和开发实效,正相关,第四,要对培训和开发工作加强评估和总结,吸取教训,不断改进,提高培训和开发实效。 95 | 培训与开发项目,引导受训者,正相关,(3)明确的培训与开发项目目标有利于引导受训者集中精力完成培训与学习任务。 96 | 培训环境,培训成果,正相关,也就是说,培训环境和工作环境完全吻合,这样很有利于飞行员培训成果在实际工作中的应用。 97 | 失业保险制度,失业人员,正相关,失业保险制度本身具有保障失业人员失业期间的基本生活和促进失业人员再就业两种功能。 98 | 工会力量,员工,正相关,随着工会力量的逐步增强,员工开始在合同中要求更多的福利。 99 | 工作分析,工作分析的发展,正相关,第一次世界大战前夕美国在大规模征兵过程中利用工作分析为人员测评选拔服务,也促进了工作分析的发展。 100 | 工作行为的难度,工作者职能等级,正相关,工作行为的难度越大,所需的能力越高,也就说明了工作者职能等级越高。 101 | 巨大的生产力,日本经济的快速发展,正相关,日本的“拿来主义”文化,转化成巨大的生产力,促进了日本经济的快速发展。 102 | 总成本中劳动成本,劳动需求的工资弹性,正相关,如果总成本中劳动成本所占的比例越高,那么,劳动需求的工资弹性就越大。 103 | 成为世界冰箱十强,人力资本投资,正相关,海尔集团之所以能够成为世界冰箱十强,与该公司着力加强人力资本投资、提高员工素质是分不开的。 104 | 战略方向,实现企业,正相关,这与一般企业通常关注业绩有很大的差别,特别突出了战略方向,有利于实现企业的长远发展。 105 | 战略目标,管理人才的培养,正相关,企业要顺利实现自己的战略目标,就必须加强对管理人才的培养,提高他们的管理水平。 106 | 承担的战略责任,报酬包,正相关,一般来说,组织中层级越高的人员,其承担的战略责任就越大,其报酬包中与战略因素相挂钩的比重就越高。 107 | 招聘,企业竞争力,正相关,招聘到合适的人才是保证员工素质,增强企业竞争力的关键。 108 | 收入要求,劳动力参与率,正相关,不论男女,所有人就业机会越大,收入要求越高,则劳动力参与率也越高。 109 | 新老员工座谈会,员工学习,正相关,每季度举办一次新老员工座谈会,增强了部门间的横向交流,增加了新员工向老员工学习的机会。 110 | 无固定期限劳动合同,劳动者就业,正相关,与固定期限劳动合同相比,无固定期限劳动合同更有利于保护劳动者权益,更有利于保护劳动者就业稳定。 111 | 无过失补偿原则的确立,劳动者,正相关,无过失补偿原则的确立,有利于劳动者在工伤发生后能够得到及时的治疗和经济补偿。 112 | 星光计划,老年人福利事业,正相关,实施“星光计划”,是应对人口老龄化挑战,提高老年人生活质量,促进老年人福利事业发展的重大举措。 113 | 有效的激励机制,员工,正相关,毋庸置疑的是,任何企业都需要建立一套有效的激励机制,以促进员工持续地为企业创造价值。 114 | 测量系统的长度,信度,正相关,一般而言,测量系统的长度越高,其信度就越高。 115 | 福利管理,人力资源管理,正相关,福利管理越人性化,越能增加广大员工的凝聚力,进而就越有利于人力资源管理核心目标的实现。 116 | 管理者职位,胜任能力,正相关,管理者职位越高,业务胜任能力要求越高,反之则越低。 117 | 组织文化变革的本质特征,组织文化的进步,正相关,因此,正确认识组织文化变革的本质特征,对于促进组织文化的进步具有重要意义。 118 | 绩效反馈,企业的核心竞争力,正相关,(3)绩效反馈可以排除目标冲突,有利于增强企业的核心竞争力。 119 | 绩效管理,员工,正相关,绩效管理就是管理者和员工双方就目标及如何达到目标而达成共识,并增强员工成功地达到目标的管理方法。 120 | 职业生涯发展,员工职业化水平,正相关,企业通过动态的职业生涯发展机制来促进员工职业能力持续增强,提升员工职业化水平(见图9-3)。 121 | 职业生涯阶梯的设置,组织目标,正相关,组织职业生涯阶梯的设置,对促进雇员的发展、实现组织目标与员工个人目标的整合具有重要意义。 122 | 能力差距,浮动幅度,正相关,能力差距越大,任职者所须付出的努力越大,浮动幅度就越大。 123 | 能力跨度,薪酬区间,正相关,能力跨度越大,向上晋升所需的时间越长,薪酬区间就应当越大。 124 | 薪酬水平,劳动力成本,正相关,在其他条件相同的情况下,薪酬水平越高,劳动力成本就越高。 125 | 薪酬调查,企业薪酬决策的针对性,正相关,薪酬调查还能使企业了解竞争对手的薪酬策略,增强企业薪酬决策的针对性。 126 | 裁终局制度,劳动争议仲裁的权威性,正相关,一裁终局制度有利于提升劳动争议处理工作效率,减轻当事人负担,提高劳动争议仲裁的权威性和法律效力。 127 | 资本市场,劳资关系,正相关,(2)促进资本市场和劳动力市场的完善,有利于改善劳资关系。 128 | 跨文化的国际化专家,国际竞争实力,正相关,通过这种制度,三星培养了几千名跨文化的国际化专家,从而进一步增强了其国际竞争实力。 129 | 随意的沟通方式,员工之间的信任,正相关,看似随意的沟通方式,却能促进员工之间的信任,在谈笑间解决了问题。 130 | -------------------------------------------------------------------------------- /CNNmodel/datas/relation_label: -------------------------------------------------------------------------------- 1 | 依据 0 2 | 决定 1 3 | 包含 2 4 | 未知 3 5 | 正相关 4 6 | -------------------------------------------------------------------------------- /CNNmodel/datas/tempBook/sp23.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Erisu0014/relationExtraction/4604a4645ea2f321bf28c9844f762780401d6e0b/CNNmodel/datas/tempBook/sp23.txt -------------------------------------------------------------------------------- /CNNmodel/datas/word2vec126.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Erisu0014/relationExtraction/4604a4645ea2f321bf28c9844f762780401d6e0b/CNNmodel/datas/word2vec126.pkl -------------------------------------------------------------------------------- /CNNmodel/myRNN.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/10 11:35 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : myRNN.py 7 | # @Software: PyCharm 8 | # @Desc : 9 | import torch 10 | import torch.nn as nn 11 | 12 | rnn = nn.RNN(100, 10) 13 | print(rnn) 14 | x = torch.randn(20, 3, 100) 15 | out, h = rnn(x, torch.zeros(1, 3, 10)) 16 | print(out.shape, h.shape) 17 | # 3,20,10 18 | # 1,20,10 19 | -------------------------------------------------------------------------------- /CNNmodel/test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/10 15:14 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : test.py 7 | # @Software: PyCharm 8 | # @Desc : 数据预备等工作 9 | from CNNmodel.dataUtils import * 10 | import pickle 11 | import numpy 12 | 13 | datas = dataHelper(entity_path="datas/my_dict.txt", word2vec_path="datas/word2vec126.pkl") 14 | # datas.tripleHelper("datas/numpy.npz") 15 | file = open("datas/numpy.npz", 'rb') 16 | wordEmbedding = numpy.load(file) 17 | print("训练集数据shape:", wordEmbedding['words_train'].shape) 18 | print("验证集数据shape:", wordEmbedding['words_test'].shape) 19 | print(wordEmbedding['labels_train'].shape) 20 | print(wordEmbedding['labels_test'].shape) 21 | print(wordEmbedding['class_num'].shape) 22 | -------------------------------------------------------------------------------- /CNNmodel/test2.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/17 17:40 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : test2.py 7 | # @Software: PyCharm 8 | # @Desc : 9 | 10 | 11 | import os 12 | 13 | tuples = [] 14 | for file_path in os.listdir("test_txt"): 15 | file = open("test_txt/" + file_path, mode="r", encoding="UTF-8") 16 | for line in file.readlines(): 17 | line = line.strip('\n') 18 | if line.strip()=="": 19 | continue 20 | parts = line.split(',', 3) 21 | tuples.append(parts[0] + ',' + parts[1] + ',' + parts[-1]) 22 | file.close() 23 | file_final = open("test_txt/" + "test.txt", mode="w", encoding="UTF-8") 24 | for tuple in tuples: 25 | file_final.write(tuple + '\n') 26 | -------------------------------------------------------------------------------- /CNNmodel/test3.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/5/7 15:02 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : test3.py 7 | # @Software: PyCharm 8 | # @Desc : 9 | import numpy 10 | import os 11 | 12 | a = os.listdir("../book") 13 | count = 0 14 | for i in a: 15 | x = open("../book/" + i, encoding='utf8', mode='r') 16 | for emm in x.readlines(): 17 | emm = emm.strip('\n') 18 | if emm != '': 19 | count += len(emm) 20 | print(count) 21 | -------------------------------------------------------------------------------- /CNNmodel/train.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/3/21 9:11 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : train.py 8 | @Software: PyCharm 9 | @Desc: textCNN训练 10 | ''' 11 | from CNNmodel.TextCNN import TextCNN as TextCNN 12 | import numpy 13 | import torch 14 | import torch.nn as nn 15 | import torch.nn.functional as F 16 | import sys 17 | import math 18 | import matplotlib.pyplot as plt 19 | 20 | # 加载预训练参数 21 | args = {} 22 | # 判断是否训练过了 23 | Trained = False 24 | triplePath = "../data/triple.csv" 25 | numpySavePath = "numpy.npz" 26 | if sys.argv[-1] == "True": 27 | Trained = True 28 | if not Trained: 29 | triplePath = "../data/triple.csv" 30 | numpySavePath = "datas/numpy.npz" 31 | else: 32 | # triplePath = "../data/triple_test.csv" 33 | # numpySavePath = "numpy_test.npz" 34 | triplePath = "../data/triple.csv" 35 | numpySavePath = "datas/numpy.npz" 36 | 37 | # 读取数据 38 | read_numpy = numpy.load(numpySavePath) 39 | words_train = read_numpy['words_train'] 40 | labels_train = read_numpy['labels_train'] 41 | words_test = read_numpy['words_test'] 42 | labels_test = read_numpy['labels_test'] 43 | n_class = read_numpy['class_num'] 44 | # words.shaoe=(n,max_len,word_dim) 45 | # labels.shape=(n) 46 | args['max_len'] = words_train.shape[1] 47 | args['word_dim'] = words_train.shape[-1] 48 | args['n_class'] = len(n_class) 49 | 50 | net = TextCNN(n_class=args['n_class'], max_len=args['max_len'], word_dim=args['word_dim']) 51 | net.cuda() 52 | 53 | # 设置超参数 54 | LR = 0.005 55 | EPOCH = 240 56 | optimizer = torch.optim.Adam(net.parameters(), lr=LR) 57 | # 损失函数 58 | criteon = nn.CrossEntropyLoss() 59 | if Trained: 60 | net = torch.load("bestmodel/cnnModel.pth") 61 | net.eval() 62 | # 训练批次大小 63 | train_epoch = 150 64 | train_len = words_train.shape[0] 65 | # 测试批次大小 66 | test_epoch = 50 67 | test_len = words_test.shape[0] 68 | # best model 69 | best_acc = 0 70 | # 保存训练过程中的准确率 71 | train_acc = [] 72 | # 保存测试过程中的准确率 73 | test_acc = [] 74 | 75 | 76 | def draw(train_acc, test_acc, epoch, LR): 77 | plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 78 | plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 79 | plt.title('初始模型结果分析(' + str(best_acc) + ')') 80 | plt.plot(epoch, train_acc, color='green', label='training accuracy') 81 | plt.plot(epoch, test_acc, color='red', label='testing accuracy') 82 | plt.legend() # 显示图例 83 | plt.xlabel('迭代次数') 84 | plt.ylabel('准确率') 85 | plt.savefig("初始模型" + "(" + str(LR) + ")" + "训练结果.png") 86 | # plt.show() 87 | plt.close() 88 | 89 | 90 | for epoch in range(1, EPOCH + 1): 91 | accuracy = 0 92 | index = 1 93 | for batch_index in range(0, math.ceil(train_len / train_epoch)): 94 | # index_begin = epoch[train_epoch] * batch_index 95 | # index_end = epoch[train_epoch] * (batch_index + 1) 96 | index_begin = train_epoch * batch_index 97 | index_end = train_epoch * (batch_index + 1) 98 | if index_end < train_len: 99 | train_input = words_train[index_begin:index_end] 100 | train_output = labels_train[index_begin:index_end] 101 | elif index_begin == train_len: 102 | # 恰好整除 103 | continue 104 | else: 105 | train_input = words_train[index_begin:] 106 | train_output = labels_train[index_begin:] 107 | # numpy转torch 108 | torch_train_input = torch.from_numpy( 109 | train_input.reshape(-1, 1, args['max_len'], args['word_dim'])).float().cuda() 110 | torch_train_output = torch.from_numpy(train_output).cuda() 111 | logits = net(torch_train_input) 112 | loss = criteon(logits, torch_train_output.long()) 113 | optimizer.zero_grad() 114 | loss.backward() 115 | optimizer.step() 116 | # 得到关系预测的数值 3 这里计算不知道对不对 117 | pre_tuple = torch.max(logits, 1)[1].cuda() 118 | true_pre = (numpy.fromiter(pre_tuple.cpu(), dtype=numpy.int32) == train_output).sum() 119 | acc = true_pre / torch_train_output.size()[0] 120 | accuracy += acc 121 | index = batch_index 122 | accuracy /= index + 1 123 | train_acc.append(accuracy) 124 | print("当前迭代次数为:{},训练过程准确率为::{}".format(epoch, accuracy)) 125 | 126 | # torch.save_old(net, "models/cnnModel_" + str(epoch) + ".pth") 127 | accuracy = 0 128 | index = 1 129 | for batch_index in range(0, math.ceil(test_len / test_epoch)): 130 | index_begin = test_epoch * batch_index 131 | index_end = test_epoch * (batch_index + 1) 132 | if index_end < test_len: 133 | test_input = words_test[index_begin:index_end] 134 | test_output = labels_test[index_begin:index_end] 135 | elif index_begin == test_len: 136 | # 恰好整除 137 | continue 138 | else: 139 | test_input = words_test[index_begin:] 140 | test_output = labels_test[index_begin:] 141 | # numpy转torch 142 | torch_test_input = torch.from_numpy(test_input.reshape(-1, 1, args['max_len'], args['word_dim'])).float().cuda() 143 | torch_test_output = torch.from_numpy(test_output).cuda() 144 | # net = net.cuda() 145 | logits = net(torch_test_input) 146 | soft_logits = F.softmax(logits, dim=1) 147 | # 得到关系预测的数值 148 | pre_tuple = torch.max(soft_logits, 1)[1].cuda() 149 | acc = (numpy.fromiter(pre_tuple.cpu(), 150 | dtype=numpy.int32) == torch_test_output.cpu().numpy()).sum() / torch_test_output.size()[0] 151 | accuracy += acc 152 | index = batch_index 153 | accuracy /= index + 1 154 | test_acc.append(accuracy) 155 | if best_acc < accuracy: 156 | best_acc = accuracy 157 | # 保存网络参数 158 | print("save_old this model") 159 | torch.save(net, "bestmodel/cnnModel.pth") 160 | 161 | print("当前迭代次数为:{},测试过程准确率为::{}".format(epoch, accuracy)) 162 | 163 | epochs = numpy.arange(1, EPOCH + 1) 164 | print(best_acc) 165 | draw(train_acc, test_acc, epochs, LR) 166 | -------------------------------------------------------------------------------- /CNNmodel/train_more.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/9 10:19 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : train_more.py 7 | # @Software: PyCharm 8 | # @Desc : 迭代训练模型 9 | import torch 10 | # from dataUtils import dataHelper 11 | # from TextCNN import TextCNN 12 | 13 | import math 14 | import torch.nn as nn 15 | import torch.nn.functional as F 16 | import matplotlib.pyplot as plt 17 | from CNNmodel.TextCNN import TextCNN 18 | from CNNmodel.dataUtils import * 19 | 20 | # 上次重训练后得到的可信三元组数据信息 21 | 22 | time_train = {} 23 | # 当前可信度位于中间范围的向量 24 | save_true_predict = {} 25 | # 历史最好acc 26 | best_acc = 0.606667 27 | 28 | 29 | def train_unit(unit_datas, old_train_numpy, numpySavePath): 30 | global time_train 31 | global save_true_predict 32 | 33 | # 加载预训练参数 34 | args = {} 35 | 36 | read_numpy = numpy.load(numpySavePath) 37 | predict_sentences = read_numpy['predict_sentences'] 38 | # 模型加载与参数初始化 39 | max_len = predict_sentences.shape[1] 40 | word_dim = predict_sentences.shape[-1] 41 | args['max_len'] = max_len 42 | args['word_dim'] = word_dim 43 | args['n_class'] = 5 44 | net = TextCNN(max_len=max_len, word_dim=word_dim, n_class=6) 45 | net.cuda() 46 | net = torch.load("bestmodel/cnnModel.pth") 47 | net.eval() 48 | # 训练批次大小 49 | predict_epoch = 300 50 | predict_len = predict_sentences.shape[0] 51 | # 对得到的句子向量进行预测 52 | last_logits = predict(predict_epoch=predict_epoch, 53 | predict_sentences=predict_sentences, args=args, net=net) 54 | 55 | # 三元组根据可信度分类 56 | left_tensors, middle_tensors, right_tensors = unit_datas.reliabilityHelper(Pt=0.8, Ps=0.4, 57 | sentences_vector=predict_sentences, 58 | predict_tensors=last_logits) 59 | print(len(left_tensors), len(middle_tensors), len(right_tensors)) 60 | # print(middle_tensors) 61 | if time_train: 62 | # 将上次的训练结果加入 63 | right_tensors.update(time_train) 64 | time_train = {} 65 | # 将位于两个可信度之间的数据加入 66 | save_true_predict.update(middle_tensors) 67 | middle_tensors = {} 68 | # 69 | list_train_input = [] 70 | list_train_output = [] 71 | # 遍历并返回即将训练的向量输入 72 | for key, value in right_tensors.items(): 73 | list_train_input.append(value[0]) 74 | list_train_output.append(value[-1]) 75 | right_tensors = {} 76 | # 对可信度高的数据模型进行训练 77 | numpy_words_train = numpy.asarray(list_train_input, dtype=numpy.float) 78 | numpy_labels_train = numpy.asarray(list_train_output, dtype=numpy.float) 79 | # 训练批次大小 80 | train_epoch = 300 81 | train_acc, test_acc, epoch_size = train(old_train_numpy=old_train_numpy, train_epoch=train_epoch, 82 | numpy_words_train=numpy_words_train, numpy_labels_train=numpy_labels_train, 83 | args=args, net=net) 84 | # 预测备选知识库 85 | list_predict_input = [] 86 | # 对字典排序并找值 87 | sorted_dict = sorted(save_true_predict.items(), key=lambda x: x[0]) 88 | for item in sorted_dict: 89 | list_predict_input.append(item[-1][0]) 90 | numpy_words_predict = numpy.asarray(list_predict_input, dtype=numpy.float) 91 | # 感觉这玩意一定不为0 92 | if numpy_words_predict.shape[0] != 0: 93 | predict_logits = predict(predict_epoch=predict_epoch, 94 | predict_sentences=numpy_words_predict, args=args, net=net) 95 | 96 | pre_relation = torch.max(predict_logits, 1)[1] 97 | for index, item in enumerate(sorted_dict): 98 | item[-1][1] = predict_logits[index] 99 | item[-1][-1] = pre_relation[index] 100 | # 三元组根据可信度分类 101 | left_tensors, middle_tensors, right_tensors = unit_datas.reliabilityHelper(Pt=0.8, Ps=0.4, 102 | sentences_vector=numpy_words_predict, 103 | predict_tensors=predict_logits) 104 | print(len(left_tensors), len(middle_tensors), len(right_tensors)) 105 | # 用以下次训练 106 | time_train.update(right_tensors) 107 | # 将结果从排序字典写回dict 108 | temp_dict = {} 109 | for item in save_true_predict.items(): 110 | temp_dict[item[0]] = item[1] 111 | save_true_predict = {} 112 | for key, value in temp_dict.items(): 113 | if key in middle_tensors: 114 | save_true_predict[key] = value 115 | 116 | else: 117 | print("位于可信度区间的待抽取三元组有0个") 118 | return train_acc, test_acc, epoch_size, len(save_true_predict) 119 | 120 | 121 | def predict(predict_epoch, predict_sentences, args, net): 122 | """ 123 | 124 | :param predict_epoch: 每次预测的batch 125 | :param predict_sentences: 预测数据 126 | :param args: 词维度等信息 127 | :param net: 神经网络 128 | :return: 预测值 129 | """ 130 | predict_len = predict_sentences.shape[0] 131 | last_logits = None 132 | for batch_index in range(0, math.ceil(predict_len / predict_epoch)): 133 | index_begin = predict_epoch * batch_index 134 | index_end = predict_epoch * (batch_index + 1) 135 | if index_end < predict_len: 136 | predict_input = predict_sentences[index_begin:index_end] 137 | elif index_begin == predict_len: 138 | # 恰好整除 139 | continue 140 | else: 141 | predict_input = predict_sentences[index_begin:] 142 | # numpy转torch 143 | torch_train_input = torch.from_numpy( 144 | predict_input.reshape(-1, 1, args['max_len'], args['word_dim'])).float().cuda() 145 | # print(torch_train_input.shape) 146 | logits = net(torch_train_input) 147 | torch_train_input = None 148 | soft_logits = F.softmax(logits, dim=1) 149 | # soft_logits = logits 150 | if last_logits is not None: 151 | last_logits = torch.cat((last_logits, soft_logits), dim=0) 152 | else: 153 | last_logits = soft_logits 154 | # print("?", last_logits.shape) 155 | return last_logits 156 | 157 | 158 | def train(old_train_numpy, train_epoch, numpy_words_train, numpy_labels_train, args, net): 159 | """ 160 | :param old_train_numpy:初始拿到的训练数据和测试数据路径,主要用途是对训练结果进行验证 161 | :param train_epoch: 每轮训练的数据 162 | :param numpy_words_train: 训练的句向量输入 163 | :param numpy_labels_train: 训练的label输入 164 | :param args: 词维度等信息 165 | :param net: 神经网络 166 | :return: 167 | """ 168 | global best_acc 169 | # 读取数据 170 | read_numpy = numpy.load(old_train_numpy) 171 | words_test = read_numpy['words_test'] 172 | labels_test = read_numpy['labels_test'] 173 | n_class = read_numpy['class_num'] 174 | args['word_dim'] = words_test.shape[-1] 175 | args['n_class'] = len(n_class) 176 | # 测试批次大小 177 | test_epoch = 50 178 | test_len = words_test.shape[0] 179 | # 保存训练过程中的准确率 180 | train_acc = [] 181 | # 保存测试过程中的准确率 182 | test_acc = [] 183 | # 模型训练 184 | # 设置超参数 185 | LR = 0.001 186 | EPOCH = 5 187 | optimizer = torch.optim.Adam(net.parameters(), lr=LR) 188 | # 损失函数 189 | criteon = nn.CrossEntropyLoss() 190 | train_len = numpy_words_train.shape[0] 191 | print("train_len:", train_len) 192 | if train_len != 0: 193 | 194 | for epoch in range(EPOCH): 195 | accuracy = 0 196 | index = 1 197 | for batch_index in range(0, math.ceil(train_len / train_epoch)): 198 | 199 | index_begin = train_epoch * batch_index 200 | index_end = train_epoch * (batch_index + 1) 201 | if index_end < train_len: 202 | train_input = numpy_words_train[index_begin:index_end] 203 | train_output = numpy_labels_train[index_begin:index_end] 204 | elif index_begin == train_len: 205 | # 恰好整除 206 | continue 207 | else: 208 | train_input = numpy_words_train[index_begin:] 209 | train_output = numpy_labels_train[index_begin:] 210 | # numpy转torch 211 | torch_train_input = torch.from_numpy( 212 | train_input.reshape(-1, 1, args['max_len'], args['word_dim'])).float().cuda() 213 | torch_train_output = torch.from_numpy(train_output).long().cuda() 214 | logits = net(torch_train_input) 215 | loss = criteon(logits, torch_train_output) 216 | optimizer.zero_grad() 217 | loss.backward() 218 | optimizer.step() 219 | # 得到关系预测的数值 3 这里计算不知道对不对 220 | pre_tuple = torch.max(logits, 1)[1].cuda() 221 | true_pre = (numpy.fromiter(pre_tuple.cpu(), dtype=numpy.int32) == train_output).sum() 222 | acc = true_pre / torch_train_output.size()[0] 223 | accuracy += acc 224 | index = batch_index 225 | accuracy /= index + 1 226 | train_acc.append(accuracy) 227 | 228 | print("当前迭代次数为:{},训练过程准确率为::{}".format(epoch, accuracy)) 229 | # 测试 230 | accuracy = 0 231 | index = 1 232 | for batch_index in range(0, math.ceil(test_len / test_epoch)): 233 | index_begin = test_epoch * batch_index 234 | index_end = test_epoch * (batch_index + 1) 235 | if index_end < test_len: 236 | test_input = words_test[index_begin:index_end] 237 | test_output = labels_test[index_begin:index_end] 238 | elif index_begin == test_len: 239 | # 恰好整除 240 | continue 241 | else: 242 | test_input = words_test[index_begin:] 243 | test_output = labels_test[index_begin:] 244 | # numpy转torch 245 | torch_test_input = torch.from_numpy( 246 | test_input.reshape(-1, 1, args['max_len'], args['word_dim'])).float().cuda() 247 | torch_test_output = torch.from_numpy(test_output).cuda() 248 | # net = net.cuda() 249 | logits = net(torch_test_input) 250 | # 得到关系预测的数值 251 | pre_tuple = torch.max(logits, 1)[1].cuda() 252 | acc = (numpy.fromiter(pre_tuple.cpu(), 253 | dtype=numpy.int32) == torch_test_output.cpu().numpy()).sum() / \ 254 | torch_test_output.size()[0] 255 | accuracy += acc 256 | index = batch_index 257 | accuracy /= index + 1 258 | test_acc.append(accuracy) 259 | if best_acc < accuracy: 260 | best_acc = accuracy 261 | # 保存网络参数 262 | print("save this model") 263 | torch.save(net, "bestmodel/cnnModel.pth") 264 | print("当前迭代次数为:{},测试过程准确率为::{}".format(epoch, accuracy)) 265 | return train_acc, test_acc, range(1, len(train_acc) + 1) 266 | 267 | 268 | def draw(train_acc, test_acc, epoch, stage, index): 269 | plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 270 | plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 271 | plt.title('自优化模型结果分析') 272 | plt.plot(epoch, train_acc, 'g-', label='training accuracy') 273 | plt.plot(epoch, test_acc, 'r--', label='testing accuracy') 274 | plt.legend() # 显示图例 275 | plt.xlabel('迭代次数') 276 | plt.ylabel('准确率') 277 | plt.savefig("more_pic/model_result" + str(index) + stage + ".png") 278 | plt.close() 279 | # plt.show() 280 | 281 | 282 | def draw_more(best_accs, epoch): 283 | plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 284 | plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 285 | plt.title('样本准确率曲线') 286 | plt.plot(epoch, best_accs, color='green', label='epoch acc') 287 | plt.legend() # 显示图例 288 | plt.xlabel('样本源编号') 289 | plt.ylabel('准确率') 290 | plt.savefig("model_result_final.png") 291 | # plt.show() 292 | 293 | 294 | def process(): 295 | global time_train 296 | global save_true_predict 297 | global best_acc 298 | best_accs = [] 299 | bookPath = "datas/tempBook" 300 | numpySavePath = "datas/numpy" 301 | dictPath = "datas/all_word_dict.txt" 302 | word2vec_path = "datas/word2vec126.pkl" 303 | old_train_numpy = "datas/numpy.npz" 304 | # 最多保留的中间三元组数量 305 | MAX_SAVE = 40 306 | unit_datas = dataHelper(entity_path=dictPath, word2vec_path=word2vec_path) 307 | # unit_datas.bookHelper(bookPath, numpySavePath=numpySavePath) 308 | index = 0 309 | for fileName in os.listdir(numpySavePath): 310 | filePath = numpySavePath + "/" + fileName 311 | print("当前文件:", filePath) 312 | for _ in range(5): 313 | print("当前迭代过程:", _) 314 | train_acc, test_acc, epoch, count = train_unit(unit_datas, old_train_numpy, filePath) 315 | # 如果现在的中间范围三元组比较小,则退出循环并画图 316 | # if count < MAX_SAVE: 317 | # draw(train_acc, test_acc, epoch, str(_)) 318 | # break 319 | print(train_acc, "/", test_acc) 320 | draw(train_acc, test_acc, epoch, str(_), index) 321 | # 循环结束,将仍处于中间范围的predict写入文件 322 | time_train = {} 323 | save_true_vectors = [] 324 | for item in save_true_predict.items(): 325 | save_true_vectors.append(item[-1][0]) 326 | numpy.savez("datas/numpy_middle/" + fileName, predict_sentences=save_true_vectors) 327 | save_true_predict = {} 328 | best_accs.append(best_acc) 329 | index += 1 330 | draw_more(best_accs, index) 331 | 332 | 333 | def predict_books(): 334 | # 需要预测的书的目录 335 | bookPath = "datas/predictBook" 336 | # 预测产生的临时文件夹 337 | numpySavePath = "datas/tempNumpy" 338 | dictPath = "datas/all_word_dict.txt" 339 | word2vec_path = "datas/word2vec126.pkl" 340 | old_train_numpy = "datas/numpy.npz" 341 | # 最多保留的中间三元组数量 342 | MAX_SAVE = 40 343 | unit_datas = dataHelper(entity_path=dictPath, word2vec_path=word2vec_path) 344 | unit_datas.bookHelper(bookPath, numpySavePath=numpySavePath) 345 | # relationName对应label的反转 346 | labels_relation = {v: k for k, v in unit_datas.relations.items()} 347 | for fileName in os.listdir(numpySavePath): 348 | filePath = numpySavePath + "/" + fileName 349 | # 加载预训练参数 350 | args = {} 351 | read_numpy = numpy.load(filePath) 352 | predict_sentences = read_numpy['predict_sentences'] 353 | tuple_words = read_numpy['tuple_words'] 354 | tuple_sentences = read_numpy['tuple_sentences'] 355 | # 模型加载与参数初始化 356 | max_len = predict_sentences.shape[1] 357 | word_dim = predict_sentences.shape[-1] 358 | args['max_len'] = max_len 359 | args['word_dim'] = word_dim 360 | args['n_class'] = 5 361 | net = TextCNN(max_len=max_len, word_dim=word_dim, n_class=6) 362 | net.cuda() 363 | net = torch.load("bestmodel/cnnModel.pth") 364 | net.eval() 365 | # 预测批次大小 366 | predict_epoch = 300 367 | predict_len = predict_sentences.shape[0] 368 | # 对得到的句子向量进行预测 369 | last_logits = predict(predict_epoch=predict_epoch, 370 | predict_sentences=predict_sentences, args=args, net=net) 371 | # 最大概率对应index 372 | max_logits_index = torch.max(last_logits, 1)[1] 373 | max_logits = torch.max(last_logits, 1)[0] 374 | # 待写入的三元组 375 | tuples = [] 376 | for index, tuple_word in enumerate(tuple_words): 377 | relation_name = labels_relation[max_logits_index[index].cpu().item()] 378 | if relation_name == '未知' or max_logits[index].cpu().item() < 0.8: 379 | continue 380 | # 拼接为 r,s,t,sentence 381 | str = tuple_word[0] + ',' + tuple_word[1] + ',' + \ 382 | relation_name + ',' + \ 383 | tuple_sentences[index] 384 | tuples.append(str) 385 | filePath = "datas/final_predict/predict.txt" 386 | write_file = open(filePath, encoding='utf8', mode='w') 387 | for tuple in tuples: 388 | write_file.write(tuple + '\n') 389 | 390 | 391 | def predict_sentences(sentence_path): 392 | # 预测产生的临时文件夹 393 | numpySavePath = "datas/numpy_sentences" 394 | dictPath = "datas/all_word_dict.txt" 395 | word2vec_path = "datas/word2vec126.pkl" 396 | unit_datas = dataHelper(entity_path=dictPath, word2vec_path=word2vec_path) 397 | unit_datas.sentenceHelper(sentence_path, numpySavePath+"/numpy.npz") 398 | # relationName对应label的反转 399 | labels_relation = {v: k for k, v in unit_datas.relations.items()} 400 | for fileName in os.listdir(numpySavePath): 401 | filePath = numpySavePath + "/" + fileName 402 | # 加载预训练参数 403 | args = {} 404 | read_numpy = numpy.load(filePath) 405 | predict_sentences = read_numpy['words_predict'] 406 | print(predict_sentences.shape) 407 | tuple_sentences = read_numpy['tuple_sentences'] 408 | # 模型加载与参数初始化 409 | max_len = predict_sentences.shape[1] 410 | word_dim = predict_sentences.shape[-1] 411 | args['max_len'] = max_len 412 | args['word_dim'] = word_dim 413 | args['n_class'] = 5 414 | net = TextCNN(max_len=max_len, word_dim=word_dim, n_class=6) 415 | net.cuda() 416 | net = torch.load("bestmodel/cnnModel.pth") 417 | net.eval() 418 | # 预测批次大小 419 | predict_epoch = 300 420 | predict_len = predict_sentences.shape[0] 421 | # 对得到的句子向量进行预测 422 | last_logits = predict(predict_epoch=predict_epoch, 423 | predict_sentences=predict_sentences, args=args, net=net) 424 | # 最大概率对应index 425 | max_logits_index = torch.max(last_logits, 1)[1] 426 | max_logits = torch.max(last_logits, 1)[0] 427 | # 待写入的三元组 428 | tuples = [] 429 | for index, sentence in enumerate(tuple_sentences): 430 | part_triple = sentence.split(',', 2) 431 | relation_name = labels_relation[max_logits_index[index].cpu().item()] 432 | # 拼接为 r,s,t,sentence 433 | str = part_triple[0] + ',' + part_triple[1] + ',' + \ 434 | relation_name + ',' + \ 435 | part_triple[-1] 436 | tuples.append(str) 437 | filePath = "datas/final_predict/predict.txt" 438 | write_file = open(filePath, encoding='utf8', mode='w') 439 | for tuple in tuples: 440 | write_file.write(tuple + '\n') 441 | 442 | 443 | # process() 444 | # predict_books() 445 | predict_sentences(sentence_path="datas/predictBook/predict.txt") 446 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # relationExtraction 2 | 3 | 本项目的中文实体关系抽取,是基于人力资源领域的关系抽取,其主要工作包括:[基于模板匹配的无监督关系抽取]()、[基于CNN实现的有监督关系抽取](https://github.com/Erisu0014/relationExtraction/tree/master/CNNmodel)。 4 | 5 | ## 模板匹配的无监督关系抽取 6 | 7 | 由于领域词和实体有少许错误,及定义的模板相对简单,无监督关系抽取效果达到的可预期如下图所示。 8 | 9 | ![](https://puu.sh/DFiy8/84a89e7ef7.png) 10 | 11 | 【注】:由于对于抽取结果的划分是外行人做的,所以相关精准率可能稍有偏差,实际效果并没有这么低。 12 | 13 | 14 | 15 | ## 基于CNN实现的有监督关系抽取 16 | 17 | 基于TextCNN实现的有监督关系抽取 18 | 19 | ![](https://puu.sh/DFiDQ/fc7e14232c.png) 20 | 21 | 由于数据量太小,所以效果并不理想,但方法上应没有太大过错。 22 | 23 | 本项目还基于[NELL理论](https://puu.sh/DFiGD/97190e6f91.pdf)进行了[模型自优化](https://github.com/Erisu0014/relationExtraction/blob/master/CNNmodel/train_more.py)和关系预测,是以哪种输入集预测以及是进行自优化还是预测需要对于主函数进行相应的注释(这很容易做到)。 24 | 25 | 自优化简易算法流程图 26 | 27 | ![](https://puu.sh/DFiKG/1693e04d09.png) 28 | 29 | ## 结语 30 | 31 | 本科生毕业设计,甲方数据源给的太少,人力资源相关领域爬虫获取到的数据源有限,没有足够的人力做支持,难以得到良好的实验结果,同时,TextCNN结构设计的过于简单,也是导致最终结果差的一个原因。而以上多是因为自己对NLP的认知不足。 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Utils/RelationUtils.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/3/20 19:30 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : RelationUtils.py 8 | @Software: PyCharm 9 | @Desc: 10 | ''' 11 | import pickle 12 | 13 | -------------------------------------------------------------------------------- /Utils/duplicate_removal.py: -------------------------------------------------------------------------------- 1 | # if __name__ == '__main__': 2 | # read_file = open("../data/relation_words.txt", "r", encoding='utf8') 3 | # write_file = open("../data/relation_words2.txt", "w", encoding='utf8') 4 | # lines_seen = set() 5 | # count = 0; 6 | # for line in read_file: 7 | # if line not in lines_seen: 8 | # count += 1 9 | # write_file.write(line) 10 | # lines_seen.add(line) 11 | # print(count) 12 | # write_file.close() 13 | # print("success") 14 | -------------------------------------------------------------------------------- /data/key_word.txt: -------------------------------------------------------------------------------- 1 | 包含 包含 部分 包括 构成 分解成 组合 纳入 分量 由以下 最重要的是 组成部分 组成中 2 | 依据 依据 而定 依赖于 取决于 3 | 等价 又称 也叫 又叫 称之为 也称 4 | 正相关 提高 越大 越好 增加 越高 有利于 促进 增强 加强 5 | 因果 随着 造成 原因 是由 引起 6 | 负相关 越小 越少 减少 减小 越低 降低 制约 限制 控制 减弱 不利于 -------------------------------------------------------------------------------- /data/relation/依据.csv: -------------------------------------------------------------------------------- 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 | 员工的收入,员工对企业的贡献,依据,5.基于业绩与能力的薪酬分配系统:员工的收入直接取决于员工对企业的贡献 34 | 培训人员,组织环境,依据,培训人员必须依据组织环境寻找真正的组织问题 35 | 培训内容,培训与开发的项目目标,依据,(1)培训与开发的项目目标是确定培训内容与培训方法的基本依据。 36 | 培训开发活动效果,培训与开发的项目目标,依据,(2)培训与开发的项目目标是对培训开发活动效果进行评估的主要依据。 37 | 培训开发的力度,人力资源现状,依据,这种培训开发的力度取决于其人力资源现状与企业未来战略对人才素质要求的差距有多大;当然 38 | 培训成果,培训任务,依据,培训成果转化取决于培训任务、材料、设备和其他学习环境与工作环境的相似性。 39 | 培训成果,学习环境,依据,培训成果转化取决于培训任务、材料、设备和其他学习环境与工作环境的相似性。 40 | 培训效果的好坏,整个培训项目的设计,依据,培训效果的好坏取决于整个培训项目的设计和安排。 41 | 基本工资,员工从业经验,依据,基本工资的确定主要依据市场供需量、岗位对公司效益产生的重要性、员工从业经验和学历水平 42 | 基本工资,学历水平,依据,基本工资的确定主要依据市场供需量、岗位对公司效益产生的重要性、员工从业经验和学历水平 43 | 基本工资,岗位,依据,基本工资的确定主要依据市场供需量、岗位对公司效益产生的重要性、员工从业经验和学历水平 44 | 基本工资,市场供需量,依据,基本工资的确定主要依据市场供需量、岗位对公司效益产生的重要性、员工从业经验和学历水平 45 | 外包服务商,评价指标,依据,该评价指标一方面可以作为企业评选外包服务商的依据 46 | 奖励薪酬,企业年终的经济效益,依据,奖励薪酬应视企业年终的经济效益而定。 47 | 奖金,员工个人业绩,依据,而个人奖励则是根据员工个人业绩作为奖金发放依据。 48 | 奖金,奖励措施,依据,记功3次相当于记大功一次;这些奖励措施通常可以作为绩效加分或增发奖金的依据或者晋升参考 49 | 奖金,惩罚措施,依据,这种惩罚措施也可以作为减发奖金的依据;(2)降级:即降低受惩罚者的薪酬等级 50 | 奖金发放,员工个人的工作业绩,依据,主要是根据员工个人的工作业绩来作为奖金发放的依据。 51 | 奖金发放,组织奖励,依据,组织奖励是根据组织整体业绩来确定奖金发放的依据和标准;因此 52 | 奖金数额,员工,依据,奖金数额依据员工超过标准绩效的多少而支付 53 | 好的顾客服务,人际关系质量,依据,(6)顾客服务;好的顾客服务也取决于人际关系质量 54 | 实际工资率的确定,劳资谈判双方的力量,依据,实际工资率的确定将取决于劳资谈判双方的力量对比。 55 | 岗位工资标准,反映的工作内容,依据,岗位工资标准应依据工作说明书中所反映的工作内容 56 | 岗位需求,职位说明书,依据,①定义岗位需求:这个环节主要是依据职位说明书或人力资源规划的内容 57 | 工作分析人员的数量,任务,依据,而工作分析人员的数量和专业知识、经验结构则视工作分析的目的、任务、工作量而定。 58 | 工作分析人员的数量,工作分析的目的,依据,而工作分析人员的数量和专业知识、经验结构则视工作分析的目的、任务、工作量而定。 59 | 工作分析的内容,工作分析的目的,依据,工作分析的内容取决于工作分析的目的与用途 60 | 工作时数,收入效应的相对强度,依据,工作时数实际上是增加还是减少依赖于替代效应与收入效应的相对强度或大小。 61 | 工作群体,资源条件,依据,一个工作群体所能做的事情在很大程度上取决于其资源条件的充足与否。 62 | 工作职责描述,绩效评估,依据,绩效评估又是以工作职责描述为核心依据的 63 | 工作说明书,同样的工作分析,依据,虽然工作说明书和测试都依赖于同样的工作分析和数据 64 | 巨大成功的企业家,有限资源条件下,依据,凡是获得巨大成功的企业家都依赖于有限资源条件下的有限决策 65 | 市场上,企业的财力,依据,企业的薪酬标准在市场上应该处于一个什么位置要视企业的财力、所需要人才的可获得性等具体条件而定 66 | 市场导向,业绩考评,依据,市场导向;·以企业战略、职务分析与业绩考评为依据;·以法律和契约为基础; 67 | 市场导向,企业战略,依据,市场导向;·以企业战略、职务分析与业绩考评为依据;·以法律和契约为基础; 68 | 年功序列制,员工的工龄,依据,实行年功序列制的依据是:员工的工龄越长 69 | 建立工资范围时,市场工资,依据,建立工资范围时会依据事先已确定的每一工资等级的市场工资。 70 | 开发职能的完成,人力资源开发部门,依据,人力资源开发职能的完成将依赖于一个精简、高效的人力资源开发部门的组织结构。 71 | 心理测验,评判标准,依据,才能使心理测验有一些相对固定的出发点、依据、程序、工具手段和评判标准 72 | 成功的监护模式,经济来源,依据,一个成功的监护模式依赖于经济来源。 73 | 我国职业的现状,国家职业分类,依据,体现我国职业的现状与发展趋势;以国家标准——《国家职业分类和代码》为依据 74 | 报酬要素的选择,组织的战略导向,依据,因为报酬要素的选择取决于职位本身和组织的战略导向。 75 | 报酬要素的选择,职位,依据,因为报酬要素的选择取决于职位本身和组织的战略导向。 76 | 招聘,工作分析中的岗位关键职责,依据,(1)为招聘提供依据;通过工作分析中的岗位关键职责 77 | 招聘,招聘计划,依据,招聘计划是招聘的主要依据 78 | 搜寻的时间长度,工资分布频率之间,依据,搜寻的时间长度取决于最低可接受工资水平与企业提供的工资分布频率之间的联系。 79 | 支付方式,伤残程度,依据,支付方式视伤残程度而定 80 | 支持组织,组织人力资源实务的悉心设计,依据,支持组织规范的创造取决于组织人力资源实务的悉心设计。 81 | 收入政策曲线,公司支付战略,依据,③收入政策曲线取决于市场工资率和公司支付战略。 82 | 有效的管理幅度,影响因素,依据,有效的管理幅度要取决于各种影响因素。 83 | 测评与选拔主体,价值标准,依据,但作为测评与选拔主体依据的考评价值标准与选择的考评内容却又是抽象与无形的主观形式。 84 | 测评目标,职位的要求,依据,测评目标确定主要依据测评的目的与工作职位的要求。 85 | 现有或预期的人力资源,劳动力市场的结构,依据,企业的人员结构、人员素质水平、工作结构、现有或预期的人力资源最终取决于劳动力市场的结构和作用。 86 | 目标体系,企业的战略,依据,确立目标体系的主要依据是企业的战略 87 | 相关劳动力市场的界定,薪酬调查,依据,相关劳动力市场的界定取决于薪酬调查的目的。 88 | 社会保障制度,法制规范,依据,法制规范是社会保障制度赖以建立的客观基础与依据。 89 | 社会保障制度,社会保障体系,依据,社会保障体系有无漏洞通常是衡量社会保障制度完备与否的基本依据。 90 | 社会保障项目,社会保障法律,依据,以社会保障法律作为实施社会保障项目的依据 91 | 社会成员,安全保障,依据,但制度化的社会保障让社会成员依赖一种制度来获得安全保障 92 | 社会救助,法律规定,依据,社会救助是指国家和社会依据法律规定 93 | 社会福利的项目,国家的经济文化,依据,社会福利的项目、范围和水平取决于各个国家的经济文化发展水平和受益者的需求程度。 94 | 竞业限制,工作职责描述,依据,商业秘密和竞业限制的设定均须依据工作职责描述而进行。 95 | 管理者的能力,群体的工作环境,依据,管理者的能力取决于群体的工作环境、领导者的风格和个性以及领导方法对群体的适合程度。 96 | 管理者的能力,领导方法,依据,管理者的能力取决于群体的工作环境、领导者的风格和个性以及领导方法对群体的适合程度。 97 | 组织奖励,指标库中,依据,从这个指标库中提炼出少数几个对企业成功至关重要的关键性指标来作为组织奖励的依据。 98 | 组织成员思想,企业文化,依据,企业文化是组织成员思想、行为的依据 99 | 组织战略目标的贡献,人力资本存量,依据,它对组织战略目标的贡献不仅取决于人力资本存量 100 | 经营者奖励,经济增加值,依据,越来越多的企业集团采用经济增加值作为下属子公司业绩评估和经营者奖励的依据。 101 | 绩效奖金,员工个人的绩效,依据,绩效奖金是企业依据员工个人的绩效评价结果 102 | 绩效的薪酬,员工,依据,先于绩效的薪酬支付是依据职位价值和员工本身所拥有的能力 103 | 绩效的薪酬,职位价值,依据,先于绩效的薪酬支付是依据职位价值和员工本身所拥有的能力 104 | 绩效考核,目标管理所,依据,仅仅以目标管理所确定的目标作为绩效考核的依据 105 | 绩效考核指标的提取,绩效目标,依据,而绩效考核指标的提取同样要依据绩效目标 106 | 绩效评价指标,绩效评价的目的,依据,绩效评价的目的是选择绩效评价指标的一个非常重要的依据。 107 | 绩效过程的指导,设定的绩效目标,依据,(2)绩效过程的指导;绩效过程的指导的依据是设定的绩效目标和达成的具体方法 108 | 缴费水平,个人的健康状况,依据,缴费水平通常取决于参保时年龄、性别以及个人的健康状况 109 | 群体绩效,带来的人力资源,依据,群体绩效的潜在水平很大程度上取决于成员个人给群体带来的人力资源。 110 | 考核指标的提取,工作分析的结果,依据,考核指标的提取依据工作分析的结果 111 | 考核者,考核者日常行为,依据,考核者总是依据自己对被考核者日常行为及工作表现的观察进行判断和评价。 112 | 职业,从事的工作性质同一性,依据,其划分职业的依据是以在业人口本人所从事的工作性质同一性进行职业分类。 113 | 职业动机,员工个人的工作,依据,虽然职业动机在很大程度上取决于员工个人的工作和生活经历 114 | 职业动机,生活经历,依据,虽然职业动机在很大程度上取决于员工个人的工作和生活经历 115 | 职业角色,劳动者社会经济地位,依据,为社会公众所认可;最早以职业角色为依据确定劳动者社会经济地位的 116 | 职位相对价值,职位特性,依据,报酬要素指的是能够为各种职位相对价值的比较提供客观依据的职位特性。 117 | 职位评价,企业的战略,依据,职位评价的依据是企业的战略和具体的工作职责 118 | 职位评价,具体的工作职责,依据,职位评价的依据是企业的战略和具体的工作职责 119 | 薪酬制度的特点,职务,依据,这种薪酬制度的特点是在依据职务确定薪酬的同时 120 | 薪酬的确定,岗位要求,依据,薪酬的确定同样是依据岗位要求而定的;实行一岗数薪制 121 | 薪酬设计,员工能力,依据,基于能力的基于薪酬设计是指组织依据员工能力的高低从而支付其报酬的方法设计。 122 | 薪酬设计的目标,团队任务,依据,薪酬设计的目标应以团队任务的完成效率和效果为依据来制定 123 | 薪酬调整,管理中绩效考核的目的,依据,但是国际人力资源管理中绩效考核的目的不仅仅是为员工薪酬调整和晋升提供依据 124 | 血亲家庭,不同的血统继嗣原则,依据,血亲家庭依据不同的血统继嗣原则而承续 125 | 评定者,工作绩效,依据,简单排序要求评定者依据工作绩效将员工从最好到最差排序。 126 | 跨文化管理,高素质的跨文化管理人员,依据,成功实现跨文化管理依赖于一批高素质的跨文化管理人员。 127 | 远距离转化,培训项目的设计,依据,受训者进行近距离转化还是远距离转化取决于培训项目的设计和实施是依据何种理论进行的。 128 | 雷斯特测验的评分,重要性排列部分,依据,雷斯特测验的评分是依据被测者在重要性排列部分的解答 129 | 顾客服务,人际关系质量,依据,(6)顾客服务;好的顾客服务也取决于人际关系质量 130 | 高级经理的奖金的发放,做出的工作业绩,依据,高级经理的奖金的发放原来主要依据他们在各自部门所做出的工作业绩。 131 | -------------------------------------------------------------------------------- /data/relation/正相关.csv: -------------------------------------------------------------------------------- 1 | 头实体,尾实体,关系,例句 2 | 人体工程学,工作分析方法的发展,正相关,另一方面,残疾人就业问题和人体工程学都促进了工作分析方法的发展。 3 | 人才招募网站,网络招募的针对性,正相关,目前,各类人才招募网站都具备了快捷搜索、条件搜索功能,进一步加强了网络招募的针对性。 4 | 企业年金,企业凝聚力,正相关,(4)企业年金是提高劳动生产率和增强企业凝聚力的重要手段。 5 | 企业能力理论,“动态能力”战略观,正相关,而企业能力理论与演化经济学相结合,促进了“动态能力”战略观的出现和发展。 6 | 信度系数,信度,正相关,信度系数是衡量信度大小的指标,信度系数越大,说明信度越高,亦即测评与选拔的可靠程度越高。 7 | 信度系数,测评信度,正相关,数据分布范围越大,变异程度越高,相关系数越大,即信度系数越大,从而测评信度越高。 8 | 公共就业服务系统,劳动力市场供求匹配,正相关,公共就业服务系统在发达国家已经相当成熟,并且在促进劳动力市场供求匹配方面效果显著。 9 | 动态的职业生涯,员工职业化水平,正相关,企业通过动态的职业生涯发展机制来促进员工职业能力持续增强,提升员工职业化水平(见图9-3)。 10 | 劳动人口,消费需求,正相关,因为伴随着劳动人口的增加,消费需求也增加了。 11 | 劳资关系的全面合作,员工对企业的忠诚度,正相关,而且劳资关系的全面合作也增强了员工的安全感和归属感,提高了员工对企业的忠诚度。 12 | 支付的薪酬,成本支出,正相关,在人数不变的情况下,给员工支付的薪酬越高,其成本支出就越大。 13 | 员工福利,企业的人工成本,正相关,(5)员工福利有利于节省企业的人工成本。 14 | 员工福利,知识型企业核心能力,正相关,员工福利可以使企业获得人才竞争优势、低成本优势并且特别能促进知识型企业核心能力的增加。 15 | 周边绩效管理,组织核心价值观,正相关,第四,周边绩效管理有利于组织的长远发展和组织核心价值观的建立。 16 | 培训与开发项目,受训者,正相关,(3)明确的培训与开发项目目标有利于引导受训者集中精力完成培训与学习任务。 17 | 培训环境,培训成果,正相关,也就是说,培训环境和工作环境完全吻合,这样很有利于飞行员培训成果在实际工作中的应用。 18 | 奖金支付,绩效管理,正相关,同时,奖金支付也成为促进绩效管理的各个环节得以有效运转的有力手段。 19 | 小单元内的目标责任,个人绩效计划的设定,正相关,团队这种形式的采用使得小单元内的目标责任更加明确和具体,这也更有利于个人绩效计划的设定。 20 | 工作分析,人力资源管理活动,正相关,可以说,工作分析是促进所有人力资源管理活动高效开展的核心因素。 21 | 工作分析,组织价值的工具,正相关,从组织角度说,工作分析是提高工作效率、增强组织价值的工具。 22 | 工作行为的难度,工作者职能等级,正相关,工作行为的难度越大,所需的能力越高,也就说明了工作者职能等级越高。 23 | 工作设计,人际关系,正相关,④工作设计有利于改善人际关系。 24 | 总成本中劳动成本,劳动需求的工资弹性,正相关,如果总成本中劳动成本所占的比例越高,那么,劳动需求的工资弹性就越大。 25 | 战略方向,企业的长远发展,正相关,这与一般企业通常关注业绩有很大的差别,特别突出了战略方向,有利于实现企业的长远发展。 26 | 人才,企业竞争力,正相关,招聘到合适的人才是保证员工素质,增强企业竞争力的关键。 27 | 收入要求,劳动力参与率,正相关,不论男女,所有人就业机会越大,收入要求越高,则劳动力参与率也越高。 28 | 无固定期限劳动合同,保护劳动者,正相关,与固定期限劳动合同相比,无固定期限劳动合同更有利于保护劳动者权益,更有利于保护劳动者就业稳定。 29 | 日本的组织管理,成员的契约关系,正相关,而日本的组织管理则着力于加强组织与成员的契约关系及规章制度的进一步完善。 30 | 星光计划,老年人福利事业,正相关,实施“星光计划”,是应对人口老龄化挑战,提高老年人生活质量,促进老年人福利事业发展的重大举措。 31 | 测量系统的长度,信度,正相关,一般而言,测量系统的长度越高,其信度就越高。 32 | 特定的模拟环境,培训效果,正相关,(2)特定的模拟环境和主题有利于增强培训效果; 33 | 福利,员工之间的合作,正相关,所以,对于一个团队来说,福利更加能够促进员工之间的合作,构造和谐的氛围。 34 | 福利管理,人力资源管理,正相关,福利管理越人性化,越能增加广大员工的凝聚力,进而就越有利于人力资源管理核心目标的实现。 35 | 积极的工作关系,员工的自尊,正相关,如今的管理者必须培养积极的工作关系以加强员工的自尊。 36 | 管理者职位,胜任能力,正相关,管理者职位越高,业务胜任能力要求越高,反之则越低。 37 | 精神奖励,员工,正相关,许多事实证明精神奖励比物质奖励更能促进员工作出成绩,是一种更巧妙、更灵活的方式。 38 | 组织发展,员工满意度,正相关,(3)组织发展是通过有计划的干预来增强组织的有效性和员工满意度的。 39 | 组织发展,组织运行的有效性,正相关,(1)组织发展可以增强组织运行的有效性。 40 | 沟通制度,组织沟通,正相关,对于组织管理者来说,设计和建立一个有效的沟通制度是促进组织沟通的有为之举。 41 | 绩效反馈,企业的核心竞争力,正相关,(3)绩效反馈可以排除目标冲突,有利于增强企业的核心竞争力。 42 | 绩效管理,员工发展,正相关,从这一点出发我们也可以这样认为:绩效管理是一种为促进员工发展而进行的人力资本投资。 43 | 绩效管理,员工的发展,正相关,6.绩效管理可以促进员工的发展 44 | 绩效管理,质量管理,正相关,2.绩效管理可以有效地促进质量管理 45 | 薪酬调查,企业薪酬决策的针对性,正相关,薪酬调查还能使企业了解竞争对手的薪酬策略,增强企业薪酬决策的针对性。 46 | 一裁终局制度,劳动争议仲裁的权威性,正相关,一裁终局制度有利于提升劳动争议处理工作效率,减轻当事人负担,提高劳动争议仲裁的权威性和法律效力。 47 | 跨文化的国际化专家,国际竞争实力,正相关,通过这种制度,三星培养了几千名跨文化的国际化专家,从而进一步增强了其国际竞争实力。 48 | 随意的沟通方式,员工之间的信任,正相关,看似随意的沟通方式,却能促进员工之间的信任,在谈笑间解决了问题。 49 | 雇佣关系的稳定性,员工对企业的归属感,正相关,这种雇佣关系的稳定性促进了员工对企业的归属感和忠诚心。 50 | 信度系数,信度,正相关,信度系数是衡量信度大小的指标,信度系数越大,说明信度越高,亦即测评与选拔的可靠程度越高。 51 | 信度系数,测评信度,正相关,数据分布范围越大,变异程度越高,相关系数越大,即信度系数越大,从而测评信度越高。 52 | 劳动人口,消费需求,正相关,因为伴随着劳动人口的增加,消费需求也增加了。 53 | 工作行为的难度,职能等级,正相关,工作行为的难度越大,所需的能力越高,也就说明了工作者职能等级越高。 54 | 总成本中劳动成本,劳动需求的工资弹性,正相关,如果总成本中劳动成本所占的比例越高,那么,劳动需求的工资弹性就越大。 55 | 支付的薪酬,成本支出,正相关,在人数不变的情况下,给员工支付的薪酬越高,其成本支出就越大。 56 | 收入要求,劳动力参与率,正相关,不论男女,所有人就业机会越大,收入要求越高,则劳动力参与率也越高。 57 | 测量系统的长度,信度,正相关,一般而言,测量系统的长度越高,其信度就越高。 58 | 管理者职位,胜任能力,正相关,管理者职位越高,业务胜任能力要求越高,反之则越低。 59 | 能力差距,浮动幅度,正相关,能力差距越大,任职者所须付出的努力越大,浮动幅度就越大。 60 | 能力跨度,薪酬区间,正相关,能力跨度越大,向上晋升所需的时间越长,薪酬区间就应当越大。 61 | 薪酬水平,劳动力成本,正相关,在其他条件相同的情况下,薪酬水平越高,劳动力成本就越高。 62 | -------------------------------------------------------------------------------- /data/relation/等价.csv: -------------------------------------------------------------------------------- 1 | 头实体,尾实体,关系,例句 2 | 交易费用,交易成本,等价,交易费用(又称交易成本)是市场机制的运行成本 3 | 企业年金,承办的年金计划,等价,企业年金(又称职业年金、企业补充养老金、超级年金、私人养老金计划、雇主承办的年金计划等) 4 | 企业年金,私人养老金计划,等价,企业年金(又称职业年金、企业补充养老金、超级年金、私人养老金计划、雇主承办的年金计划等) 5 | 企业年金,职业年金,等价,企业年金(又称职业年金、企业补充养老金、超级年金、私人养老金计划、雇主承办的年金计划等) 6 | 企业年金,补充养老金,等价,企业年金(又称职业年金、企业补充养老金、超级年金、私人养老金计划、雇主承办的年金计划等) 7 | 企业年金,超级年金,等价,企业年金(又称职业年金、企业补充养老金、超级年金、私人养老金计划、雇主承办的年金计划等) 8 | 图尺度评价法,等级评价法,等价,图尺度评价法也可以称之为等级评价法 9 | 基本劳动标准,核心劳动标准,等价,有8个“基本劳动标准”(又称核心劳动标准)是不论成员国经济发展水平如何 10 | 工作环境,劳动环境测定,等价,工作环境测定又称劳动环境测定 11 | 文化人类学,社会人类学,等价,它分析体质人类学、文化人类学(又称社会人类学)和考古学。 12 | 文化过程,文化变迁过程,等价,而文化过程又称“文化变迁过程”(Culture Process) 13 | 晕轮效应,光环效应,等价,(4)晕轮效应;晕轮效应又称光环效应 14 | 权变理论,情境理论,等价,权变理论又称情境理论 15 | 核心竞争力,核心能力,等价,核心竞争力(Core Competence)又称核心能力 16 | 结构化面试,标准化面试,等价,结构化面试(Structured Interview)又称结构化面谈或标准化面试 17 | 结构效度,构思效度,等价,结构效度又称作构想效度、构思效度、建构效度等 18 | 结构效度,构想效度,等价,结构效度又称作构想效度、构思效度、建构效度等 19 | 绩效工资,绩效调薪,等价,绩效工资又称绩效调薪 20 | 职业发展,职业生涯规划,等价,职业发展又称职业生涯规划 21 | 职位评价,职位评估,等价,职位评价又称职位评估 22 | 行为事件访谈法,关键事件访谈法,等价,1.行为事件访谈法(又称“关键事件访谈法”)的优劣 23 | 弹性福利计划,自助餐式的福利计划,等价,20世纪70年代诞生的弹性福利计划又称“自助餐式的福利计划” 24 | 趋势外推法,时间序列预测法,等价,趋势外推法又称时间序列预测法。 25 | 跨文化管理,交叉文化管理,等价,跨文化管理又称交叉文化管理 26 | -------------------------------------------------------------------------------- /data/result.csv: -------------------------------------------------------------------------------- 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 | 激励与组织绩效,X理论与Y理论,包含 31 | 激励与组织绩效,组织体系Ⅰ与组织体系Ⅳ,包含 32 | 激励与组织绩效,激励-保健理论,包含 33 | 激励与组织绩效,ERG理论,包含 34 | 激励与组织绩效,麦克莱兰德需要理论,包含 35 | 激励与组织绩效,期望理论,包含 36 | 激励与组织绩效,公平理论,包含 37 | 激励与组织绩效,强化理论,包含 38 | 激励与组织绩效,波特-劳勒期望机率理论,包含 39 | 人力资源环境与策略,人力资源环境,包含 40 | 人力资源环境,人力资源法律环境,包含 41 | 人力资源法律环境,公平就业机会,包含 42 | 人力资源法律环境,公平就业机会委员会,包含 43 | 人力资源法律环境,实际职业资格,包含 44 | 人力资源法律环境,经营必需,包含 45 | 人力资源法律环境,反优先雇佣行动,包含 46 | 人力资源法律环境,善意势力战略,包含 47 | 人力资源法律环境,定额战略,包含 48 | 人力资源法律环境,差别性对待,包含 49 | 人力资源法律环境,差别性影响,包含 50 | 人力资源法律环境,性骚扰,包含 51 | 人力资源环境,内部和外部环境,包含 52 | 内部和外部环境,人力资源环境外部环境,包含 53 | 内部和外部环境,劳动力市场,包含 54 | 内部和外部环境,社会责任,包含 55 | 内部和外部环境,组织重组,包含 56 | 内部和外部环境,管理多样化,包含 57 | 内部和外部环境,人力资源内部环境,包含 58 | 内部和外部环境,玻璃天花板,包含 59 | 内部和外部环境,工作与家庭,包含 60 | 人力资源环境与策略,人力资源研究,包含 61 | 内部和外部环境,1.人力资源有效性的衡量,包含 62 | 内部和外部环境,人力资源管理功能,包含 63 | 内部和外部环境,人力资源管理角色,包含 64 | 内部和外部环境,审计法,包含 65 | 内部和外部环境,分析法,包含 66 | 内部和外部环境,人力资源研究,包含 67 | 内部和外部环境,人力资源研究过程,包含 68 | 人力资源研究,人力资源研究方法,包含 69 | 人力资源研究方法,案例研究,包含 70 | 人力资源研究方法,调查反馈法,包含 71 | 人力资源研究方法,相关分析,包含 72 | 人力资源研究方法,回归分析,包含 73 | 人力资源研究方法,判别分析,包含 74 | 人力资源研究方法,专家系统,包含 75 | 人力资源研究方法,集成软件,包含 76 | 人力资源,工作分析与人力规划,包含 77 | 工作分析与人力规划,工作分析与工作设计,包含 78 | 工作分析与工作设计,工作分析基础概念,包含 79 | 工作分析基础概念,职业、工作与职位,包含 80 | 工作分析基础概念,职责、任务与工作元素,包含 81 | 工作分析基础概念,工作背景,包含 82 | 工作分析基础概念,工作分析,包含 83 | 工作分析基础概念,工作分析流程,包含 84 | 工作分析基础概念,工作说明,包含 85 | 工作分析基础概念,工作识别,包含 86 | 工作分析基础概念,工作规范,包含 87 | 工作分析基础概念,工作分析信息,包含 88 | 工作分析与工作设计,工作分析的方法与技术,包含 89 | 工作分析的方法与技术,问卷调查法,包含 90 | 工作分析的方法与技术,访谈法,包含 91 | 工作分析的方法与技术,观察法,包含 92 | 工作分析的方法与技术,现场工作日记(日志法),包含 93 | 工作分析的方法与技术,工作分析程序法,包含 94 | 工作分析的方法与技术,工作分析计划表,包含 95 | 工作分析的方法与技术,功能性工作分析法,包含 96 | 工作分析的方法与技术,职位分析问卷法,包含 97 | 工作分析的方法与技术,管理职位描述问卷调查法,包含 98 | 工作分析的方法与技术,关键事变技术,包含 99 | 工作分析的方法与技术,工作分析专业指南,包含 100 | 工作分析的方法与技术,职业测定系统,包含 101 | 工作分析与工作设计,工作设计与丰富化,包含 102 | 工作设计与丰富化,工作设计,包含 103 | 工作设计与丰富化,工作丰富化,包含 104 | 工作设计与丰富化,工作扩大化,包含 105 | 工作设计与丰富化,以员工为中心的工作再设计,包含 106 | 工作设计与丰富化,激励型工作设计法,包含 107 | 工作设计与丰富化,机械型工作设计法,包含 108 | 工作设计与丰富化,生物型工作设计法,包含 109 | 工作设计与丰富化,知觉运动型工作设计法,包含 110 | 工作分析与人力规划,人力资源规划,包含 111 | 人力资源规划,人力资源规划基础,包含 112 | 人力资源规划基础,人力资源规划,包含 113 | 人力资源规划基础,人力资源规划流程,包含 114 | 人力资源规划基础,人力资源调查,包含 115 | 人力资源规划基础,人力资源信息系统,包含 116 | 人力资源规划基础,员工过剩,包含 117 | 人力资源规划基础,裁减,包含 118 | 人力资源规划,人力资源需求预测,包含 119 | 人力资源需求预测,人力资源需求预测,包含 120 | 人力资源需求预测,长期趋势,包含 121 | 人力资源需求预测,循环变动,包含 122 | 人力资源需求预测,季节变动,包含 123 | 人力资源需求预测,趋势分析,包含 124 | 人力资源需求预测,比率分析,包含 125 | 人力资源需求预测,零基预测,包含 126 | 人力资源需求预测,模拟方法,包含 127 | 人力资源需求预测,计算机预测系统,包含 128 | 人力资源规划,人力资源供给预测,包含 129 | 人力资源供给预测,供给预测,包含 130 | 人力资源供给预测,内部供给,包含 131 | 人力资源供给预测,资格数据库,包含 132 | 人力资源供给预测,技能储备,包含 133 | 人力资源供给预测,继任计划,包含 134 | 人力资源供给预测,外部供给,包含 135 | 人力资源,人力资源选拔与预测,包含 136 | 人力资源选拔与预测,人力资源招聘,包含 137 | 人力资源招聘,招聘环境与来源,包含 138 | 招聘环境与来源,招聘,包含 139 | 招聘环境与来源,招聘来源,包含 140 | 招聘环境与来源,外部招聘环境,包含 141 | 招聘环境与来源,内部招聘环境,包含 142 | 招聘环境与来源,招聘方法,包含 143 | 招聘环境与来源,招聘备择方案,包含 144 | 招聘环境与来源,核心人员和应急人员,包含 145 | 人力资源招聘,外部招聘的方法,包含 146 | 外部招聘的方法,广告招聘,包含 147 | 外部招聘的方法,职业介绍所,包含 148 | 外部招聘的方法,校园招聘,包含 149 | 外部招聘的方法,特殊事件,包含 150 | 外部招聘的方法,实习招聘,包含 151 | 外部招聘的方法,主管人员代理招聘机构,包含 152 | 外部招聘的方法,员工推荐,包含 153 | 外部招聘的方法,求职者自荐式招聘,包含 154 | 外部招聘的方法,简历数据库,包含 155 | 外部招聘的方法,自动求职跟踪系统,包含 156 | 人力资源招聘,内部招聘的方法,包含 157 | 内部招聘的方法,电脑化职业生涯行进系统,包含 158 | 内部招聘的方法,内部提升,包含 159 | 内部招聘的方法,主管推荐,包含 160 | 内部招聘的方法,工作公告和工作投标,包含 161 | 内部招聘的方法,职业生涯开发系统,包含 162 | 人力资源选拔与预测,人力资源选拔,包含 163 | 人力资源选拔,影响选拔的因素,包含 164 | 影响选拔的因素,员工选拔,包含 165 | 影响选拔的因素,决策速度,包含 166 | 影响选拔的因素,选拔等级,包含 167 | 影响选拔的因素,候选人数量,包含 168 | 影响选拔的因素,选拔率,包含 169 | 影响选拔的因素,试用期,包含 170 | 影响选拔的因素,拒绝求职者,包含 171 | 影响选拔的因素,选拔决策,包含 172 | 影响选拔的因素,光环与触角效应,包含 173 | 影响选拔的因素,体检,包含 174 | 影响选拔的因素,录用,包含 175 | 人力资源选拔,选拔中的面试方法,包含 176 | 选拔中的面试方法,简历,包含 177 | 选拔中的面试方法,申请表,包含 178 | 选拔中的面试方法,面试计划清单,包含 179 | 选拔中的面试方法,初步面试,包含 180 | 选拔中的面试方法,求职面试,包含 181 | 选拔中的面试方法,面试目标,包含 182 | 选拔中的面试方法,面试内容,包含 183 | 选拔中的面试方法,非结构化面试,包含 184 | 选拔中的面试方法,结构化面试,包含 185 | 选拔中的面试方法,情景面试,包含 186 | 选拔中的面试方法,模式化行为描述面试,包含 187 | 选拔中的面试方法,基于能力的面试,包含 188 | 选拔中的面试方法,系列式面试,包含 189 | 选拔中的面试方法,小组面试,包含 190 | 选拔中的面试方法,会议型面试,包含 191 | 选拔中的面试方法,压力面试,包含 192 | 选拔中的面试方法,实际岗位演习,包含 193 | 选拔中的面试方法,个人证明材料检查,包含 194 | 选拔中的面试方法,背景调查,包含 195 | 选拔中的面试方法,证明人,包含 196 | 人力资源选拔,选拔中的测试方法,包含 197 | 选拔中的测试方法,标准化,包含 198 | 选拔中的测试方法,客观性与规划,包含 199 | 选拔中的测试方法,测试信度,包含 200 | 选拔中的测试方法,测试效应,包含 201 | 选拔中的测试方法,标准关联有效性,包含 202 | 选拔中的测试方法,内容有效性,包含 203 | 选拔中的测试方法,结构有效性,包含 204 | 选拔中的测试方法,录用分数线,包含 205 | 选拔中的测试方法,认知能力测试,包含 206 | 选拔中的测试方法,运动神经能力测试,包含 207 | 选拔中的测试方法,人格投射测试,包含 208 | 选拔中的测试方法,主题统觉测试,包含 209 | 选拔中的测试方法,个性测试,包含 210 | 选拔中的测试方法,兴趣测试,包含 211 | 选拔中的测试方法,业务知识测试,包含 212 | 选拔中的测试方法,工作样本测试,包含 213 | 选拔中的测试方法,管理评价中心,包含 214 | 选拔中的测试方法,测谎测试,包含 215 | 选拔中的测试方法,笔迹分析法,包含 216 | 人力资源,人力资源培训与评价,包含 217 | 人力资源培训与评价,人力资源培训与开发,包含 218 | 人力资源培训与开发,组织变化与员工适应,包含 219 | 组织变化与员工适应,组织变化,包含 220 | 组织变化与员工适应,变化阻力,包含 221 | 组织变化与员工适应,减少阻力,包含 222 | 组织变化与员工适应,员工上岗引导,包含 223 | 组织变化与员工适应,现实冲击,包含 224 | 组织变化与员工适应,上岗引导阶段,包含 225 | 组织变化与员工适应,重新导向,包含 226 | 组织变化与员工适应,适应组织,包含 227 | 组织变化与员工适应,上岗引导目标,包含 228 | 人力资源培训与开发,人力资源开发实践,包含 229 | 人力资源开发实践,人力资源开发,包含 230 | 人力资源开发实践,开发影响因素,包含 231 | 人力资源开发实践,人力资源开发目标,包含 232 | 人力资源开发实践,人力资源开发过程,包含 233 | 人力资源开发实践,人力资源开发需求,包含 234 | 人力资源开发实践,人力资源开发分析,包含 235 | 人力资源开发实践,管理层开发,包含 236 | 人力资源开发实践,外部与内部开发,包含 237 | 人力资源开发实践,人力资源开发媒介,包含 238 | 人力资源开发实践,人力资源开发评价,包含 239 | 人力资源开发实践,柯氏模式,包含 240 | 人力资源开发实践,控制实验法,包含 241 | 人力资源开发实践,《工作培训合作法》,包含 242 | 人力资源开发实践,内部开发中心,包含 243 | 人力资源培训与开发,培训与开发方法,包含 244 | 培训与开发方法,培训,包含 245 | 培训与开发方法,教练方法,包含 246 | 培训与开发方法,辅导方法,包含 247 | 培训与开发方法,行为建模,包含 248 | 培训与开发方法,角色扮演,包含 249 | 培训与开发方法,初级董事会,包含 250 | 培训与开发方法,行动学习,包含 251 | 培训与开发方法,工作轮换,包含 252 | 培训与开发方法,文件筐训练,包含 253 | 培训与开发方法,管理游戏,包含 254 | 培训与开发方法,领导者匹配培训,包含 255 | 培训与开发方法,会议方法,包含 256 | 培训与开发方法,程序化教学,包含 257 | 培训与开发方法,基于计算机的培训,包含 258 | 培训与开发方法,远程教育,包含 259 | 培训与开发方法,IBM的管理层开发,包含 260 | 培训与开发方法,课堂教学,包含 261 | 培训与开发方法,实习,包含 262 | 培训与开发方法,在职培训,包含 263 | 培训与开发方法,学徒培训,包含 264 | 培训与开发方法,工作指导培训,包含 265 | 培训与开发方法,模拟培训,包含 266 | 培训与开发方法,技工学校培训,包含 267 | 人力资源培训与评价,组织发展与职业规划,包含 268 | 组织发展与职业规划,组织特征与管理风格,包含 269 | 组织特征与管理风格,组织气候,包含 270 | 组织特征与管理风格,组织特征,包含 271 | 组织特征与管理风格,管理流程,包含 272 | 组织特征与管理风格,管理风格,包含 273 | 组织特征与管理风格,问题求解,包含 274 | 组织特征与管理风格,文化类型,包含 275 | 组织特征与管理风格,参与文化,包含 276 | 组织特征与管理风格,工作系统,包含 277 | 组织发展与职业规划,组织发展的方法,包含 278 | 组织发展的方法,组织发展,包含 279 | 组织发展的方法,组织发展的方法,包含 280 | 组织发展的方法,调查反馈,包含 281 | 组织发展的方法,质量图,包含 282 | 组织发展的方法,充实工作内容,包含 283 | 组织发展的方法,交流分析,包含 284 | 组织发展的方法,工作期质量,包含 285 | 组织发展的方法,敏感性训练,包含 286 | 组织发展的方法,全面质量管理,包含 287 | 组织发展的方法,团队建设,包含 288 | 组织发展的方法,组织发展评价,包含 289 | 组织发展与职业规划,职业规划与发展,包含 290 | 职业规划与发展,职业规划,包含 291 | 职业规划与发展,职业规划影响因素,包含 292 | 职业规划与发展,人生阶段,包含 293 | 职业规划与发展,职业动机,包含 294 | 职业规划与发展,职业性向测试,包含 295 | 职业规划与发展,通用资质测验组系,包含 296 | 职业规划与发展,自我评价,包含 297 | 职业规划与发展,强(弱)平衡表,包含 298 | 职业规划与发展,好恶调查表,包含 299 | 职业规划与发展,组织职业规划,包含 300 | 职业规划与发展,职业途径,包含 301 | 职业规划与发展,传统职业途径,包含 302 | 职业规划与发展,网状职业途径信息,包含 303 | 职业规划与发展,横向职业途径,包含 304 | 职业规划与发展,双重职业途径,包含 305 | 职业规划与发展,职业途径信息,包含 306 | 职业规划与发展,停滞,包含 307 | 职业规划与发展,职业发展,包含 308 | 职业规划与发展,职业发展方法,包含 309 | 人力资源培训与评价,人力资源进行考评,包含 310 | 人力资源进行考评,绩效考评与改进,包含 311 | 绩效考评与改进,绩效考评,包含 312 | 绩效考评与改进,绩效考评目的,包含 313 | 绩效考评与改进,绩效考评原则,包含 314 | 绩效考评与改进,绩效考评应用,包含 315 | 绩效考评与改进,绩效考评流程,包含 316 | 绩效考评与改进,考评的限制因素,包含 317 | 绩效考评与改进,考评期,包含 318 | 绩效考评与改进,上级考评,包含 319 | 绩效考评与改进,同事考评,包含 320 | 绩效考评与改进,小组考评,包含 321 | 绩效考评与改进,自我考评,包含 322 | 绩效考评与改进,下级考评,包含 323 | 绩效考评与改进,360°反馈,包含 324 | 绩效考评与改进,绩效考评标准不清,包含 325 | 绩效考评与改进,晕轮效应,包含 326 | 绩效考评与改进,个人偏见,包含 327 | 绩效考评与改进,近因性错误,包含 328 | 绩效考评与改进,居中趋势,包含 329 | 绩效考评与改进,偏松或偏紧倾向,包含 330 | 绩效考评与改进,考评标准化,包含 331 | 绩效考评与改进,考评反馈,包含 332 | 绩效考评与改进,考评者培训,包含 333 | 绩效考评与改进,考评面谈,包含 334 | 绩效考评与改进,评价中心,包含 335 | 人力资源进行考评,绩效考评的方法,包含 336 | 绩效考评的方法,叙述法,包含 337 | 绩效考评的方法,作业标准法,包含 338 | 绩效考评的方法,图解式考评,包含 339 | 绩效考评的方法,强制分布法,包含 340 | 绩效考评的方法,排序考评法,包含 341 | 绩效考评的方法,交替排序法,包含 342 | 绩效考评的方法,员工比较系统,包含 343 | 绩效考评的方法,配对比较法,包含 344 | 绩效考评的方法,目标管理法,包含 345 | 绩效考评的方法,关键事件法,包含 346 | 绩效考评的方法,行为锚定等级法,包含 347 | 绩效考评的方法,行为观察量表,包含 348 | 人力资源,薪资方案与福利计划,包含 349 | 薪资方案与福利计划,薪资结构与方案,包含 350 | 薪资结构与方案,员工报酬与公平,包含 351 | 员工报酬与公平,员工报酬,包含 352 | 员工报酬与公平,直接和间接经济报酬,包含 353 | 员工报酬与公平,非经济报酬,包含 354 | 员工报酬与公平,报酬公平,包含 355 | 员工报酬与公平,外部公平,包含 356 | 员工报酬与公平,内部公平,包含 357 | 员工报酬与公平,员工公平,包含 358 | 员工报酬与公平,团队公平,包含 359 | 员工报酬与公平,报酬政策,包含 360 | 薪资结构与方案,薪资调查与报酬因素,包含 361 | 薪资调查与报酬因素,薪资调查,包含 362 | 薪资调查与报酬因素,基准工作,包含 363 | 薪资调查与报酬因素,生活费用,包含 364 | 薪资调查与报酬因素,豁免员工,包含 365 | 薪资调查与报酬因素,工作评价,包含 366 | 薪资调查与报酬因素,报酬因素,包含 367 | 薪资调查与报酬因素,排序法,包含 368 | 薪资调查与报酬因素,分类法,包含 369 | 薪资调查与报酬因素,计点法,包含 370 | 薪资调查与报酬因素,因素比较法,包含 371 | 薪资结构与方案,薪资结构与方法,包含 372 | 薪资结构与方法,工作定价,包含 373 | 薪资结构与方法,工资等级,包含 374 | 薪资结构与方法,工资曲线,包含 375 | 薪资结构与方法,工资幅度,包含 376 | 薪资结构与方法,工资率调整,包含 377 | 薪资结构与方法,计时工资制,包含 378 | 薪资结构与方法,计件工资制,包含 379 | 薪资结构与方法,标准工时制,包含 380 | 薪资结构与方法,技能工资制,包含 381 | 薪资结构与方法,市场定价工资制,包含 382 | 薪资结构与方法,管理层薪资水平,包含 383 | 薪资结构与方法,专业人员报酬制度,包含 384 | 薪资结构与方法,可比价值,包含 385 | 薪资结构与方法,工资保密,包含 386 | 薪资结构与方法,压缩工资,包含 387 | 薪资方案与福利计划,激励性报酬与福利,包含 388 | 激励性报酬与福利,激励性报酬方案,包含 389 | 激励性报酬方案,团队或班组激励计划,包含 390 | 激励性报酬方案,年终分红,包含 391 | 激励性报酬方案,分红制,包含 392 | 激励性报酬方案,资本积累方案,包含 393 | 激励性报酬方案,股票期权,包含 394 | 激励性报酬方案,绩效工资,包含 395 | 激励性报酬方案,利润分享计划,包含 396 | 激励性报酬方案,员工持股计划,包含 397 | 激励性报酬方案,斯坎伦计划,包含 398 | 激励性报酬方案,收益分享计划,包含 399 | 激励性报酬方案,风险工资计划,包含 400 | 激励性报酬方案,奖金,包含 401 | 激励性报酬方案,佣金计划,包含 402 | 激励性报酬与福利,间接报酬与福利计划,包含 403 | 间接报酬与福利计划,福利,包含 404 | 间接报酬与福利计划,补充性工资福利,包含 405 | 间接报酬与福利计划,精神健康的福利,包含 406 | 间接报酬与福利计划,社会保障,包含 407 | 间接报酬与福利计划,失业保险,包含 408 | 间接报酬与福利计划,病假,包含 409 | 间接报酬与福利计划,补充失业福利,包含 410 | 间接报酬与福利计划,工伤补偿,包含 411 | 间接报酬与福利计划,团体人寿保险,包含 412 | 间接报酬与福利计划,养老金计划,包含 413 | 间接报酬与福利计划,个人养老金账户,包含 414 | 间接报酬与福利计划,固定收益制,包含 415 | 间接报酬与福利计划,固定缴款机,包含 416 | 间接报酬与福利计划,401(k)计划,包含 417 | 间接报酬与福利计划,提前退休窗口,包含 418 | 间接报酬与福利计划,额外酬劳,包含 419 | 间接报酬与福利计划,“金降落伞”合同,包含 420 | 激励性报酬与福利,服务福利与分经济报酬,包含 421 | 服务福利与分经济报酬,员工服务,包含 422 | 服务福利与分经济报酬,员工咨询服务,包含 423 | 服务福利与分经济报酬,儿童照顾,包含 424 | 服务福利与分经济报酬,老年照顾,包含 425 | 服务福利与分经济报酬,教育津贴,包含 426 | 服务福利与分经济报酬,工作环境,包含 427 | 服务福利与分经济报酬,弹性工作时间,包含 428 | 服务福利与分经济报酬,压缩工作周,包含 429 | 服务福利与分经济报酬,工作分担,包含 430 | 服务福利与分经济报酬,弹性报酬计划,包含 431 | 服务福利与分经济报酬,在家工作,包含 432 | 服务福利与分经济报酬,修订的退休制度,包含 433 | 人力资源,员工健康与劳资关系斯,包含 434 | 服务福利与分经济报酬,十三章员工安全与健康,包含 435 | 激励性报酬与福利,员工安全与事故处理,包含 436 | 员工安全与事故处理,员工安全与健康,包含 437 | 员工安全与事故处理,职业安全与健康法案,包含 438 | 员工安全与事故处理,OSHA标准OSHA standard,包含 439 | 员工安全与事故处理,事故损失,包含 440 | 员工安全与事故处理,安全方案,包含 441 | 员工安全与事故处理,安全诱因方案,包含 442 | 员工安全与事故处理,安全委员会,包含 443 | 员工安全与事故处理,安全负责人,包含 444 | 员工安全与事故处理,事故调查,包含 445 | 员工安全与事故处理,事故频率,包含 446 | 员工安全与事故处理,事故严重率,包含 447 | 员工安全与事故处理,安全方案评价,包含 448 | 员工安全与事故处理,不安全条件,包含 449 | 员工安全与事故处理,不安全行为,包含 450 | 员工安全与事故处理,事故倾向,包含 451 | 员工安全与事故处理,事故预防,包含 452 | 员工安全与事故处理,减少事故,包含 453 | 员工安全与事故处理,累计创伤失调,包含 454 | 员工安全与事故处理,工作场所暴力,包含 455 | 激励性报酬与福利,工作压力与员工健康,包含 456 | 工作压力与员工健康,压力,包含 457 | 工作压力与员工健康,工作(组织)压力,包含 458 | 工作压力与员工健康,精力衰弱,包含 459 | 工作压力与员工健康,减少衰弱,包含 460 | 工作压力与员工健康,压力来源,包含 461 | 工作压力与员工健康,文化冲击,包含 462 | 工作压力与员工健康,角色模糊(冲突),包含 463 | 工作压力与员工健康,克服压力,包含 464 | 工作压力与员工健康,催眠,包含 465 | 工作压力与员工健康,生物反馈,包含 466 | 工作压力与员工健康,超自然冥想,包含 467 | 工作压力与员工健康,人类工程学,包含 468 | 工作压力与员工健康,酗酒,包含 469 | 工作压力与员工健康,药物滥用,包含 470 | 工作压力与员工健康,工作场所的吸烟问题,包含 471 | 工作压力与员工健康,工作场所的艾滋病,包含 472 | 工作压力与员工健康,身体健康方案,包含 473 | 工作压力与员工健康,员工援助方案,包含 474 | 工作压力与员工健康,施乐方案,包含 475 | 员工健康与劳资关系斯,员工与劳动关系,包含 476 | 员工与劳动关系,工会运动与法律,包含 477 | 工会运动与法律,劳工运动,包含 478 | 工会运动与法律,工会,包含 479 | 工会运动与法律,密谋原理,包含 480 | 工会运动与法律,禁止令(“黄狗合同”),包含 481 | 工会运动与法律,工会保障,包含 482 | 工会运动与法律,地方工会,包含 483 | 工会运动与法律,全国工会,包含 484 | 工会运动与法律,劳联-产联,包含 485 | 工会运动与法律,《反禁令法》,包含 486 | 工会运动与法律,《国家劳工关系法》,包含 487 | 工会运动与法律,国家劳动关系委员会,包含 488 | 工会运动与法律,《劳资关系法》,包含 489 | 工会运动与法律,《劳资报告和揭发法案》,包含 490 | 工会运动与法律,资方不正当劳动行为,包含 491 | 工会运动与法律,工会不正当劳动行为,包含 492 | 工会运动与法律,劳工关系顾问,包含 493 | 工会运动与法律,授权卡,包含 494 | 工会运动与法律,选举申请,包含 495 | 工会运动与法律,选举活动,包含 496 | 员工与劳动关系,劳资谈判与无工会组织,包含 497 | 劳资谈判与无工会组织,劳资谈判,包含 498 | 劳资谈判与无工会组织,谈判单位,包含 499 | 劳资谈判与无工会组织,劳资关系,包含 500 | 劳资谈判与无工会组织,谈判建议,包含 501 | 劳资谈判与无工会组织,谈判问题,包含 502 | 劳资谈判与无工会组织,谈判准备,包含 503 | 劳资谈判与无工会组织,谈判破裂,包含 504 | 劳资谈判与无工会组织,僵持,包含 505 | 劳资谈判与无工会组织,第三方介入,包含 506 | 劳资谈判与无工会组织,罢工,包含 507 | 劳资谈判与无工会组织,抵制,包含 508 | 劳资谈判与无工会组织,联合抵制(闭厂),包含 509 | 劳资谈判与无工会组织,协议内容,包含 510 | 劳资谈判与无工会组织,协议批准,包含 511 | 劳资谈判与无工会组织,协议执行,包含 512 | 劳资谈判与无工会组织,抱怨程序,包含 513 | 劳资谈判与无工会组织,无工会政策,包含 514 | 劳资谈判与无工会组织,开放政策,包含 515 | 劳资谈判与无工会组织,有效的交流,包含 516 | 劳资谈判与无工会组织,督查专员,包含 517 | 劳资谈判与无工会组织,解除认证,包含 518 | 员工与劳动关系,员工内部关系,包含 519 | 员工内部关系,内部员工关系,包含 520 | 员工内部关系,纪律处分,包含 521 | 员工内部关系,热炉规则,包含 522 | 员工内部关系,渐进纪律处分,包含 523 | 员工内部关系,无惩罚的纪律处分,包含 524 | 员工内部关系,终止合同,包含 525 | 员工内部关系,解雇理由,包含 526 | 员工内部关系,自由就业,包含 527 | 员工内部关系,临时解雇,包含 528 | 员工内部关系,工作替换(临时解雇)程序,包含 529 | 员工内部关系,岗外安置,包含 530 | 员工内部关系,调动,包含 531 | 员工内部关系,降职(晋升),包含 532 | 员工内部关系,辞职,包含 533 | 员工内部关系,退休,包含 534 | 公式,新进员工比率,包含 535 | -------------------------------------------------------------------------------- /k-means-relation/Candidate.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/2/15 14:17 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : Candidate.py 8 | @Software: PyCharm 9 | @Desc: 候选词 10 | ''' 11 | 12 | 13 | class Candidate: 14 | def __init__(self, distance, vector): 15 | self.distance = distance 16 | self.vector = vector 17 | -------------------------------------------------------------------------------- /k-means-relation/Node.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2018/11/26 16:02 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : Node.py 8 | @Software: PyCharm 9 | @Desc: 节点类 10 | ''' 11 | 12 | 13 | class Node: 14 | 15 | def __init__(self, word, index): 16 | self.word = word 17 | self._i = 0 18 | self.order = index # 序列号 19 | self.inputMap = dict() 20 | self.outputMap = dict() 21 | self.part = "" # 词标 22 | 23 | def input_update(self, key, value): 24 | if key in self.inputMap.keys(): 25 | temp_list = self.inputMap[key] 26 | temp_list.append(value) 27 | self.inputMap[key] = temp_list 28 | else: 29 | temp_list = list() 30 | temp_list.append(value) 31 | self.inputMap[key] = temp_list 32 | 33 | def output_update(self, key, value): 34 | if key in self.outputMap.keys(): 35 | temp_list = self.outputMap[key] 36 | temp_list.append(value) 37 | self.outputMap[key] = temp_list 38 | else: 39 | temp_list = list() 40 | temp_list.append(value) 41 | self.outputMap[key] = temp_list 42 | 43 | def print_self(self): 44 | print("*" * 20) 45 | print(str(self.order) + ':' + self.word + '(' + self.part + ')') 46 | print('inputMap:') 47 | tempx = "" 48 | for key, value in self.inputMap.items(): 49 | tempx = key + ':[' 50 | for val in value: 51 | tempx = tempx + str(val.order) + ',' 52 | tempx = tempx + ']' 53 | print(tempx) 54 | tempx = "" 55 | print('outputMap:') 56 | for key, value in self.outputMap.items(): 57 | tempx = key + ':[' 58 | for val in value: 59 | tempx = tempx + str(val.order) + ',' 60 | tempx = tempx + ']' 61 | print(tempx) 62 | 63 | 64 | -------------------------------------------------------------------------------- /k-means-relation/ReCluster.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/2/16 1:12 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : ReCluster.py 8 | @Software: PyCharm 9 | @Desc: 存放k-means clusters及相邻k-means的inertia差值 10 | ''' 11 | 12 | 13 | class ReCluster: 14 | 15 | def __init__(self, cluster, distance): 16 | self.cluster = cluster 17 | self.distance = distance 18 | -------------------------------------------------------------------------------- /k-means-relation/find_tuple.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/1/25 11:48 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : find_tuple.py 8 | @Software: PyCharm 9 | @Desc: 三元组发现(基于词性) 10 | ''' 11 | import re 12 | import os 13 | import sys as sys 14 | import synonyms 15 | from pyltp import SentenceSplitter 16 | from pyltp import Segmentor 17 | from pyltp import Postagger 18 | from pyltp import Parser 19 | import warnings 20 | 21 | warnings.filterwarnings("ignore") 22 | LTP_DATA_DIR = 'D:/python/project/ltpModel/ltp_data_v3.4.0' # ltp路径 23 | sentences = set() # 分离出的句子组 24 | relations = dict() # 关系组 25 | entity_words = set() # 用以后续词扩展的初始词 26 | tuple = set() # 最后得到的三元组结果 27 | wrong_relation = ("工作") 28 | 29 | 30 | def listdir(path, list_name): # 传入存储的list 31 | for file in os.listdir(path): 32 | file_path = os.path.join(path, file) 33 | if os.path.isdir(file_path): 34 | listdir(file_path, list_name) 35 | else: 36 | list_name.append(file_path) 37 | 38 | 39 | def initialize(entity_file): 40 | """ 领域词存储 41 | 42 | :param entity_file: 领域词文件(包括扩展词) 43 | :return: 44 | """ 45 | for word in entity_file.readlines(): 46 | if word.strip() != '': 47 | entity_words.add(word.strip()) 48 | str = "领域词存储完成" 49 | print("=" * 10, str, "=" * 10) 50 | return str 51 | 52 | 53 | def deal_data(sentence): 54 | """ 对于明显无法确定关系的段落删除。 55 | 56 | :param sentence: 57 | :return: 58 | """ 59 | # 1.去除括号中的内容(因为多半为补充声明没什么大用) 60 | sentence = re.sub("(.*)\.*|\(.*\)\.*", "", sentence) 61 | # 2.去除例如:"图1-6 2006年的总体报酬模型"这样的句子 62 | # paragraph = re.sub("图\d+-\d+.+ ", "", paragraph) 63 | # 3.去除文献 64 | pattern = re.compile("\[.*\]") 65 | m = pattern.match(sentence) 66 | if m: 67 | if m.span(0)[0] == 0: 68 | sentence = "" 69 | # 4.判断一段话是否全是英文 70 | if re.sub(' ', "", sentence).encode('UTF-8').isalpha(): 71 | sentence = "" 72 | # 5.判断是否为三元组候选句(遍历关系数组) 73 | # count = 0 74 | # for key in relations: 75 | # if sentence.find(key) != -1: 76 | # count = 1 77 | # break 78 | # if count == 0: 79 | # for values in relations.values(): 80 | # for relation in values: 81 | # if sentence.find(relation) != -1: 82 | # count = 1 83 | # break 84 | # if count == 0: 85 | # sentence = "" 86 | # 条件判断结束,sentence 87 | return sentence 88 | 89 | 90 | def sentence_split(read_file): 91 | """ 对段落中的句子进行基于符号的划分 92 | 93 | :param read_file: 文件txt 94 | :return: 分好的句子存入到sequences了,所以只需要返回状态信息就好了 95 | """ 96 | for paragraph in read_file.readlines(): 97 | # 太短的段落(词?)没有分的必要了 98 | if paragraph == '' or len(paragraph) <= 4: 99 | continue 100 | sentence_splitter = SentenceSplitter.split(paragraph) 101 | for sequence in sentence_splitter: 102 | # 去除空行 103 | if sequence == '': 104 | continue 105 | # 二次分隔 106 | second_sentences = re.split('[,,]', sequence) 107 | for second_sentence in second_sentences: 108 | # 对于句子的筛选工作 109 | second_sentence = deal_data(second_sentence) 110 | if second_sentence == '' or len(second_sentence) <= 4: 111 | continue 112 | sentences.add(second_sentence) 113 | str = "分句步骤已完成" 114 | print("=" * 10, str, "=" * 10) 115 | return str 116 | 117 | 118 | def if_has_relation(words): 119 | """ 判断是否句子中有关系词的出现 120 | 121 | :param words: 122 | :return: 123 | """ 124 | # 一句话抽象提取出的关系是否只有一个呢?下面的方法是按一个来做的 125 | relation_word = "" 126 | index = -1 127 | for word in words: 128 | for key in relations: 129 | if synonyms.compare(word, key) > 0.98 and key not in wrong_relation: 130 | index = 0 131 | relation_word = key 132 | break 133 | if index == -1: 134 | for values in relations.values(): 135 | for relation in values: 136 | if synonyms.compare(word, relation) > 0.98 and relation not in wrong_relation: 137 | index = 0 138 | relation_word = word 139 | break 140 | if index != -1: 141 | break 142 | if index != -1: 143 | break 144 | return index, relation_word 145 | 146 | 147 | def has_same(s1, s2): 148 | """ 判断两个字符串是否有相同部分 149 | 150 | :param s1: 151 | :param s2: 152 | :return: 153 | """ 154 | str_first = "" 155 | for temp in s1: 156 | str_first += temp 157 | if s2.find(temp) != -1: 158 | return True 159 | if str_first == s1: 160 | return False 161 | str_second = "" 162 | for temp in s2: 163 | str_second += temp 164 | if s1.find(temp) != -1: 165 | return True 166 | if str_second == s2: 167 | return False 168 | 169 | 170 | def new_relation_find(words, sentence): 171 | """ 新关系发现 172 | 173 | :param words: 174 | :param sentence: 175 | :return: 176 | """ 177 | # 存放三元组的字典 178 | tuple_dict = dict() 179 | index0 = -1 180 | index1 = -1 181 | bool = False 182 | for entity_word in entity_words: 183 | if sentence.find(entity_word) != -1: 184 | if tuple_dict: 185 | # 返回为true说明有重复部分 186 | if has_same(tuple_dict[index0], entity_word): 187 | continue 188 | index1 = sentence.find(entity_word) 189 | tuple_dict[index1] = entity_word 190 | bool = True 191 | break 192 | else: 193 | index0 = sentence.find(entity_word) 194 | tuple_dict[index0] = entity_word 195 | if bool is False: 196 | return "", "", "" 197 | # 排序结果为list 198 | # tuple_dict = sorted(tuple_dict.items(), key=lambda d: d[0]) 199 | words = "/".join(words).split("/") 200 | for key, value in tuple_dict.items(): 201 | tuple_word = value 202 | words = init_words(tuple_word, words) 203 | # 对于已经重构的词进行词标注 204 | postagger = Postagger() # 初始化实例 205 | pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model` 206 | postagger.load_with_lexicon(pos_model_path, 'data/postagger.txt') # 加载模型 207 | postags = postagger.postag(words) # 词性标注 208 | print('\t'.join(postags)) 209 | postagger.release() # 释放模型 210 | # 发现新关系 211 | relation_word = "" 212 | index_word = 0 213 | for index, postag in enumerate('\t'.join(postags).split('\t')): 214 | index_word += len(words[index]) 215 | if index_word >= len(sentence): 216 | break 217 | if postag == 'v' and index_word - min(index0, index1) <= 2 and max(index0, index1) - index_word <= 2 \ 218 | and not has_same(tuple_dict[index0], words[index]) and not has_same(tuple_dict[index1], 219 | words[index]) \ 220 | and words[index] not in wrong_relation: 221 | relation_word = words[index] 222 | break 223 | if relation_word == "": 224 | return "", "", "" 225 | return tuple_dict[min(index0, index1)], tuple_dict[max(index0, index1)], relation_word 226 | 227 | 228 | def init_words(tuple_word, words): 229 | """ 词重构的过程 230 | 231 | :param tuple_word: 三元组的关键词 232 | :param words: 分词任务产生的词 233 | :return: 234 | """ 235 | oldIndex = tuple_word 236 | new_words = list() 237 | for word in words: 238 | if tuple_word.find(word) == -1: 239 | new_words.append(word) 240 | elif tuple_word.find(word) == 0: 241 | tuple_word = tuple_word[len(word):] 242 | if len(tuple_word) == 0: 243 | new_words.append(oldIndex) 244 | return new_words 245 | 246 | 247 | def tuple_get(words, sentence): 248 | """ 249 | :param words: 待抽取的三元组关系词 250 | :param sentence: 待抽取的句子 251 | :return: 252 | """ 253 | # 判断是否有关系词 254 | index, relation_word = if_has_relation(words) 255 | t1 = '' 256 | t2 = '' 257 | if index != -1: 258 | for entity_word in entity_words: 259 | if sentence.find(entity_word) != -1: 260 | if t1 != '': 261 | if has_same(t1, entity_word) or has_same(relation_word, entity_word): 262 | continue 263 | t2 = entity_word 264 | break 265 | else: 266 | if has_same(relation_word, entity_word): 267 | continue 268 | t1 = entity_word 269 | # index=-1 根据动词规则视图发现新关系 270 | else: 271 | t1, t2, relation_word = new_relation_find(words, sentence) 272 | 273 | if t1 != '' and t2 != '': 274 | print("得到三元组关系为{t1},{t2},{relation},{sentence}".format(t1=t1, t2=t2, relation=relation_word, sentence=sentence)) 275 | tuple.add(t1 + '\t' + t2 + '\t' + relation_word + '\t' + sentence) 276 | 277 | 278 | def words_split(): 279 | """ 对于句子进行分词 280 | 281 | :return: 282 | """ 283 | segmentor = Segmentor() 284 | cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') 285 | segmentor.load_with_lexicon(cws_model_path, 'data/all_word_dict.txt') 286 | for sequence in sentences: 287 | words = segmentor.segment(sequence) 288 | tuple_get(words, sequence) 289 | segmentor.release() 290 | 291 | 292 | def create_relation(relation_file): 293 | for line in relation_file.readlines(): 294 | words = line.strip("\n").split(" ") 295 | if words[1]: 296 | relations[words[0]] = words[1:] 297 | str = "关系字典已经创建" 298 | print("=" * 10, str, "=" * 10) 299 | return str 300 | 301 | 302 | def write_to_file(): 303 | file = open("result/result.txt", 'w', encoding='utf8') 304 | for singal_tuple in tuple: 305 | file.write(singal_tuple + '\n') 306 | 307 | 308 | if __name__ == '__main__': 309 | entity_file = open('../data/all_word_dict.txt', 'r', encoding='utf8') 310 | # 初始化读词 311 | initialize(entity_file) 312 | # 读取关系词 313 | relation_file = open("../data/key_word.txt", "r", encoding="utf8") 314 | create_relation(relation_file) 315 | # 文件夹下读取待扩展的文件路径 316 | bookList = list() 317 | listdir("../book", bookList) 318 | for i in range(len(bookList)): 319 | read_file = open(bookList[i], "r", encoding='utf-8') 320 | # 分句 321 | sentence_split(read_file) 322 | # 分词 323 | words_split() 324 | # 写入文件 325 | write_to_file() 326 | -------------------------------------------------------------------------------- /k-means-relation/kmeans_relation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/2/13 18:45 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : kmeans_relation.py 8 | @Software: PyCharm 9 | @Desc: 通过kmeans做关系词聚类 10 | ''' 11 | from sklearn.cluster import KMeans 12 | from sklearn import linear_model 13 | import pickle 14 | from sklearn.externals import joblib 15 | from Candidate import Candidate 16 | import numpy as np 17 | from matplotlib import pyplot as plt 18 | from ReCluster import ReCluster 19 | import time 20 | 21 | plt.rcParams['font.sans-serif'] = ['SimHei'] 22 | plt.rcParams['axes.unicode_minus'] = False 23 | 24 | # 词到向量的映射表 25 | word_vector = dict() 26 | # 聚类准则的变化趋势 27 | inertias = list() 28 | 29 | 30 | def deal_word(): 31 | # 得到去重的关系词汇 32 | relation_file = open("../wordsEmbedding/relation_words.txt", "r", encoding="utf8") 33 | nonredundancy_words = set() 34 | for line in relation_file: 35 | # 判断一个词是否含英文 36 | line = line.strip('\n') 37 | bool = False 38 | for ch in line: 39 | if '\u4e00' <= ch <= '\u9fff': 40 | continue 41 | else: 42 | bool = True 43 | break 44 | if line not in nonredundancy_words and not bool: 45 | nonredundancy_words.add(line) 46 | # 得到模型训练的词向量 47 | word2vec_file = open('../wordsEmbedding/result/word2vec_xinchou.pkl', 'rb') 48 | all_data = pickle.load(word2vec_file) 49 | # 将词向量用list暂时存储起来 50 | list_data = list() 51 | for word in nonredundancy_words: 52 | # try: 53 | # list_data.append(all_data[word]) 54 | # word_vector[word] = np.reshape(list_data[-1], newshape=[-1, 128]) 55 | # except: 56 | # continue 57 | list_data.append(all_data[word]) 58 | word_vector[word] = np.reshape(list_data[-1], newshape=[-1, 128]) 59 | return list_data 60 | 61 | 62 | def get_words(centroids, list_data, labels, k): 63 | """ 得到聚类中心的相关候选词(最多5个) 64 | 65 | :param centroids: 聚类中心 66 | :param list_data: not numpy 67 | :param labels: labels数据集 68 | :param k: 聚类簇数 69 | :return: 70 | """ 71 | classify_words = list() 72 | # 用以存放候选词的的list 73 | for i in range(0, k): 74 | classify_word = list() 75 | classify_words.append(classify_word) 76 | for index, label in enumerate(labels): 77 | classify_words[label].append(list_data[index]) 78 | # print(classify_words) 79 | # 候选词距离计算 80 | candidate_words = list() 81 | for classify_word in classify_words: 82 | temp_candidates = [None] * 5 83 | index = 0 84 | for item in classify_word: 85 | numpy_item = np.asarray(item).reshape(1, 128) 86 | numpy_centroid = np.asarray(centroids[index]).reshape(1, 128) 87 | temp_distance = np.linalg.norm(numpy_centroid - numpy_item) 88 | bool = False 89 | for distance_order, candidate in enumerate(temp_candidates): 90 | if not candidate: 91 | temp_candidates[distance_order] = Candidate(vector=item, distance=temp_distance) 92 | bool = True 93 | break 94 | # 如果temp_candidates已经被填满 95 | if not bool: 96 | for distance_order, candidate in enumerate(temp_candidates): 97 | if candidate.distance > temp_distance: 98 | temp_candidates[distance_order] = Candidate(vector=item, distance=temp_distance) 99 | index_distance = distance_order 100 | break 101 | candidate_words.append(temp_candidates) 102 | index += 1 103 | # print(candidate_words) 104 | # 从word_vec映射中找到word 105 | output_words = list() 106 | for candidate_word_set in candidate_words: 107 | for candidate_word in candidate_word_set: 108 | for key, value in word_vector.items(): 109 | if candidate_word: 110 | if (candidate_word.vector == value).all(): 111 | print(key, end='\t') 112 | output_words.append(key) 113 | output_words.append("/") 114 | # 以文件形式输出 115 | write_file = open("../data/output_relation" + str(time.time())[8:-1] + ".txt", encoding="utf8", mode='w') 116 | for output_word in output_words: 117 | if output_word != "/": 118 | write_file.write(output_word + '\t') 119 | else: 120 | write_file.write("\n") 121 | 122 | 123 | def train(num_clusters): 124 | list_data = deal_word() 125 | data = np.asarray(list_data).reshape(-1, 128) 126 | # print(data.shape) 127 | km_cluster = KMeans(n_clusters=num_clusters, max_iter=300, n_init=40, init='k-means++', n_jobs=-1) 128 | km_cluster.fit(data) 129 | # result = km_cluster.fit_predict(data) 130 | # [centroid, label] = cluster.dbscan(data, eps=0.2, min_samples=10) 131 | # print("聚类中心:", km_cluster.cluster_centers_) 132 | # print("聚类标签;", km_cluster.labels_) 133 | # # inertias:是K-Means模型对象的属性,它作为没有真实分类结果标签下的非监督式评估指标。 134 | # # 表示样本到最近的聚类中心的距离总和。距离越小越好,越小表示样本在类间的分布越集中。 135 | # print("聚类准则", km_cluster.inertia_) 136 | return km_cluster 137 | 138 | 139 | def train_more(num_clusters, loop): 140 | """ 141 | 142 | :param num_clusters: 聚类簇数 143 | :param loop: 训练循环次数 144 | :return: 145 | """ 146 | k_means_list = list() 147 | for i in range(0, loop): 148 | km_cluster = train(num_clusters + i) 149 | k_means_list.append(km_cluster) 150 | # bool = False 151 | # # 判断是否有空 152 | # for (index, cluster) in enumerate(k_means_list): 153 | # if not cluster: 154 | # k_means_list[index] = km_cluster 155 | # bool = True 156 | # break 157 | # # 如果k_means_list不为空则进行inertia比较 158 | # if not bool: 159 | # for (index, cluster) in enumerate(k_means_list): 160 | # if km_cluster.inertia_ < cluster.inertia_: 161 | # k_means_list[index] = km_cluster 162 | # break 163 | # inertias.append(km_cluster.inertia_) 164 | # print(k_means_list) 165 | for (index, km_cluster) in enumerate(k_means_list): 166 | joblib.dump(km_cluster, '../kmeans_model/kmeans_relation' + str(index) + '.pkl') 167 | 168 | 169 | def find_best_model(loop): 170 | all_km_clusters = list() 171 | for index in range(0, loop): 172 | km_cluster = joblib.load('../kmeans_model/kmeans_relation' + str(index) + '.pkl') 173 | distance = 1 174 | if index != 0: 175 | old_inertia = all_km_clusters[index - 1].cluster.inertia_ 176 | recluster = ReCluster(km_cluster, abs(float(km_cluster.inertia_) - old_inertia)) 177 | all_km_clusters.append(recluster) 178 | else: 179 | recluster = ReCluster(km_cluster, distance) 180 | all_km_clusters.append(recluster) 181 | # 对于头距离重定义 182 | all_km_clusters[0].distance = all_km_clusters[1].distance 183 | k_means_list = [None] * 5 184 | for recluster in all_km_clusters: 185 | bool = False 186 | # 判断是否有空 187 | for (index, cluster) in enumerate(k_means_list): 188 | if not cluster: 189 | k_means_list[index] = recluster 190 | bool = True 191 | break 192 | # 如果k_means_list不为空则进行inertia_distance比较 193 | if not bool: 194 | for (index, cluster) in enumerate(k_means_list): 195 | if recluster.distance > cluster.distance: 196 | k_means_list[index] = recluster 197 | break 198 | 199 | # for (index, inertia) in enumerate(inertias): 200 | # if index != 0: 201 | # print(float(inertia) - float(inertias[index - 1]), end='\t') 202 | return k_means_list, all_km_clusters 203 | 204 | 205 | def show_inertia(num_clusters, loop): 206 | all_km_clusters = list() 207 | inertias = list() 208 | for index in range(0, loop): 209 | km_cluster = joblib.load('../kmeans_model/kmeans_relation' + str(index) + '.pkl') 210 | distance = 1 211 | if index != 0: 212 | old_inertia = all_km_clusters[index - 1].cluster.inertia_ 213 | recluster = ReCluster(km_cluster, abs(float(km_cluster.inertia_) - old_inertia)) 214 | all_km_clusters.append(recluster) 215 | else: 216 | recluster = ReCluster(km_cluster, distance) 217 | all_km_clusters.append(recluster) 218 | inertias.append(km_cluster.inertia_) 219 | # 对于头距离重定义 220 | all_km_clusters[0].distance = all_km_clusters[1].distance 221 | # 横坐标 222 | x_np = np.arange(start=num_clusters, stop=num_clusters + loop) 223 | x = x_np.tolist() 224 | # print(x) 225 | # 聚类准则指数 226 | # 图1.inertia之间的距离绝对值 227 | distances = list() 228 | for recluster in all_km_clusters: 229 | distances.append(recluster.distance) 230 | print(distances) 231 | plt.subplot(3, 1, 1) 232 | plt.title('inertia之间的距离绝对值') 233 | plt.plot(x, distances, color="red", linewidth=1) 234 | 235 | print(inertias) 236 | # 图2.每个model的inertia 237 | plt.subplot(3, 1, 3) 238 | plt.title('每个model的inertia') 239 | plt.plot(x, inertias, color="green", linewidth=1) 240 | plt.show() 241 | 242 | 243 | if __name__ == '__main__': 244 | num_clusters = 10 245 | loop = 60 246 | # train_more(num_clusters, loop) 247 | # # # 将聚类准则写入文件 248 | # # inertia_file = open("../data/k-means-inertia.txt", encoding='utf8', mode='w') 249 | # # for item in inertias: 250 | # # inertia_file.write(str(item) + '\n') 251 | # # 找到最好的几个模型 252 | # km_clusters, all_km_clusters = find_best_model(loop) 253 | # # 对于找到的比较好的k-means模型进行再存储 254 | # for (index, km_cluster) in enumerate(km_clusters): 255 | # joblib.dump(km_cluster.cluster, '../data/kmeans_relation' + str(index) + '.pkl') 256 | # # 得到少数的关系候选词 257 | # for km_cluster in km_clusters: 258 | # cluster = km_cluster.cluster 259 | # get_words(cluster.cluster_centers_, deal_word(), cluster.labels_, len(cluster.cluster_centers_)) 260 | show_inertia(num_clusters, loop) 261 | -------------------------------------------------------------------------------- /k-means-relation/readme.md: -------------------------------------------------------------------------------- 1 | 通过对关系进行聚类,进而进行关系泛化和三元组发现 -------------------------------------------------------------------------------- /k-means-relation/result/test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/10 11:02 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : test.py 7 | # @Software: PyCharm 8 | # @Desc : 测试词向量 9 | import pickle 10 | 11 | f = open('word2vec.pkl', 'rb') 12 | wordsEmbedding = pickle.load(f) 13 | print(wordsEmbedding.wv["的"]) 14 | f.close() 15 | -------------------------------------------------------------------------------- /pattern-relation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Erisu0014/relationExtraction/4604a4645ea2f321bf28c9844f762780401d6e0b/pattern-relation/__init__.py -------------------------------------------------------------------------------- /pattern-relation/all.txt: -------------------------------------------------------------------------------- 1 | 员工,企业的战略目标,依据,它大致的理念是员工依据企业的战略目标对自己的年度业绩目标作出承诺 2 | 分析方法的目的,能力,依据,资源(能力)分析方法的目的是让企业根据自己的能力或者资源 3 | 工作年的薪酬福利,工作评估的结果,依据,而第二个工作年的薪酬福利就根据工作评估的结果而定。 4 | 年度目标,考核指标,依据,考核指标依据年度目标而来 5 | 组织的未来发展方向,公司战略,依据,公司战略就是依据组织所拥有的资源勾画出组织的未来发展方向 6 | 赛季的收入,计算方法,依据,它的计算方法首先是在每年6月依据近几年篮球事业收入(BRI)预测下一赛季的收入 7 | 战略,竞争方式的方法,决定,战略是确定并实施行业选择、产品和业务选择、定位和关键竞争方式的方法; 8 | 战略,行业选择,决定,战略是确定并实施行业选择、产品和业务选择、定位和关键竞争方式的方法; 9 | 业务战略,产业选择,包含,(2)业务战略(Business Strategy):包括产业选择及在产品领域内的竞争方式选择 10 | 公司战略,产业选择,包含,(1)公司战略(Corporate Strategy):包括产业选择及在产业内的扩张方案的选择; 11 | 战略,内部管理优化,包含,战略是内部管理优化和外部竞争策略的组合。 12 | 战略,外部竞争策略,包含,战略是内部管理优化和外部竞争策略的组合。 13 | 资源,有形资源,包含,而资源一般可分为有形资源和无形资源。 14 | 资源,无形资源,包含,而资源一般可分为有形资源和无形资源。 15 | 战略,产品与市场范围,包含,认为战略的构成要素包括产品与市场范围、增长向量、协同效应和竞争优势。 16 | 战略,增长向量,包含,认为战略的构成要素包括产品与市场范围、增长向量、协同效应和竞争优势。 17 | 战略,协同效应,包含,认为战略的构成要素包括产品与市场范围、增长向量、协同效应和竞争优势。 18 | 战略,竞争优势,包含,认为战略的构成要素包括产品与市场范围、增长向量、协同效应和竞争优势。 19 | 无形资源,人力资源,包含,无形资源包括人力资源、品牌和文化资源等。 20 | 无形资源,文化资源,包含,无形资源包括人力资源、品牌和文化资源等。 21 | 有形资源,生产设备,包含,有形资源包括财务资本、生产设备等 22 | 有形资源,财务资本,包含,有形资源包括财务资本、生产设备等 23 | 福利,法定福利,包含,对应于福利的两个组成部分——法定福利与企业自主福利 24 | 福利,企业自主福利,包含,对应于福利的两个组成部分——法定福利与企业自主福利 25 | 总体报酬,认可激励,包含,认可激励是总体报酬中的一个构成部分 26 | 企业的特殊资源能力,存在业绩差异的重要原因,因果,进一步证实了企业的特殊资源能力是造成它们存在业绩差异的重要原因。 27 | 我国的许多社会经济问题,薪酬问题,因果,我国的许多社会经济问题都是由薪酬问题引起的 -------------------------------------------------------------------------------- /pattern-relation/create_pro.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/2/27 21:28 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : create_pro.py 8 | @Software: PyCharm 9 | @Desc: 10 | ''' 11 | import jieba 12 | 13 | # from config import FLAGS 14 | 15 | # test_file_name=FLAGS.test_data_path.split("/")[-1] 16 | # f = open(FLAGS.data_path+test_file_name+"_unique_result.txt",encoding='utf-8') 17 | # f_z = open(FLAGS.data_path+"z_"+test_file_name+"_unique_result.txt",encoding='utf-8') 18 | f_n = open("real_data.txt", encoding='utf-8') 19 | f_w = open("my_dict.txt", "w", encoding='utf-8') 20 | 21 | m_list = set() 22 | # for i in f: 23 | # i=i.strip() 24 | # m_list.add(i) 25 | 26 | for j in f_n: 27 | m_list.add(j.strip()) 28 | 29 | # for j in f_z: 30 | # m_list.add(j.strip()) 31 | 32 | for j in m_list: 33 | fre = jieba.suggest_freq(j, tune=True) 34 | f_w.write(j + ' ' + str(fre) + " pro\n") 35 | 36 | # f.close() 37 | f_n.close() 38 | f_w.close() 39 | # f_z.close() 40 | -------------------------------------------------------------------------------- /pattern-relation/deal_data.py: -------------------------------------------------------------------------------- 1 | # _*_ encoding:utf-8 _*_ 2 | import re 3 | import os 4 | 5 | 6 | def cut_sent(para): 7 | para = re.sub('([。!?\?])([^”’])', r"\1\n\2", para) # 单字符断句符 8 | para = re.sub('(\.{6})([^”’])', r"\1\n\2", para) # 英文省略号 9 | para = re.sub('(\…{2})([^”’])', r"\1\n\2", para) # 中文省略号 10 | para = re.sub('([。!?\?][”’])([^,。!?\?])', r'\1\n\2', para) 11 | # 如果双引号前有终止符,那么双引号才是句子的终点,把分句符\n放到双引号后,注意前面的几句都小心保留了双引号 12 | para = para.rstrip() # 段尾如果有多余的\n就去掉它 13 | # 很多规则中会考虑分号;,但是这里我把它忽略不计,破折号、英文双引号等同样忽略,需要的再做些简单调整即可。 14 | return para.split("\n") 15 | 16 | 17 | for i in os.listdir("../book"): 18 | f = open("../book/"+i, "r", encoding='utf-8') 19 | # for i in os.listdir("../testBook"): 20 | # f = open("../testBook/"+i, "r", encoding='utf-8') 21 | if ".txt" not in i: 22 | continue 23 | f_w = open("../deal_book/" + i, "w", encoding='utf-8') 24 | baizhi = ["●", "·", "一、", "二、", "三、", "四、", "五、", "六、", "七、", "八、", "九、", 25 | "十、", "十一、", "十二、", "十三、", "十四、", "十五、", "十六、", "十七、", "十八、", 26 | "十九、", "二十、", "二十一、", "二十二、", "二十三、", "二十四、", "二十五", 27 | "(1)", "(2)", "(3)", "(4)", "(5)", "(6)", "(7)", "(8)", "(9)", "(10)", "(11)", "(12)", 28 | "(13)", "(14)", "(15)", "(16)", "(17)", "(19)", "(20)"] 29 | zhong_fu = ["。", "!", "!", "?", "?"] 30 | tt = [m for m in f.readlines() if m.strip()] 31 | paragraph = [] 32 | for i, line in enumerate(tt): 33 | is_find = False 34 | for bz in baizhi: 35 | if bz in line: 36 | for zf in zhong_fu: 37 | line = line.replace(zf, ";") 38 | is_find = True 39 | break 40 | if i < len(tt) - 2: 41 | jishu = 0 42 | for bz in baizhi: 43 | if bz in tt[i + 1]: 44 | jishu += 1 45 | break 46 | for bz in baizhi: 47 | if bz in tt[i + 2]: 48 | jishu += 1 49 | break 50 | if jishu == 2 or (jishu == 1 and is_find == True): 51 | for zf in zhong_fu: 52 | line = line.replace(zf, ";") 53 | line = line.replace("\n", "") 54 | paragraph.append(line) 55 | paragraph = "".join(paragraph) 56 | 57 | sentences = cut_sent(paragraph) 58 | 59 | for se in sentences: 60 | # print(se) 61 | if "\n" in se: 62 | for bz in baizhi: 63 | if bz in se: 64 | se = se.replace("\n", "") 65 | break 66 | f_w.write(se + "\n") 67 | f_w.close() 68 | f.close() 69 | -------------------------------------------------------------------------------- /pattern-relation/find_tuple.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/2/27 11:19 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : find_tuple.py 8 | @Software: PyCharm 9 | @Desc: 无监督的方法进行关系抽取 10 | ''' 11 | import jieba.posseg as pseg 12 | import synonyms 13 | import os 14 | import jieba 15 | import re 16 | 17 | jieba.load_userdict("../data/my_dict.txt") 18 | # segmentor = Segmentor() 19 | # LTP_DATA_DIR = 'D:/python/project/ltpModel/ltp_data_v3.4.0' # ltp路径 20 | # cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') 21 | # # my_dict中有词标和词频 22 | # segmentor.load_with_lexicon(cws_model_path, 'my_dict.txt') 23 | # postagger = Postagger() # 初始化实例 24 | # pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model` 25 | # postagger.load(pos_model_path) # 加载模型 26 | expand_all_words = [] 27 | 28 | 29 | def findindex(org, x): 30 | result = [] 31 | for k, v in enumerate(org): 32 | if v == x: 33 | result.append(k) 34 | return result 35 | 36 | 37 | # 连接词 38 | correlation_words = ["和", "●", "、", "以及", "还有", ";", "及", "或"] 39 | # 忽略词 40 | ignore_words = ['不是', '并非', '能否', '避免', '可能', '大概', '是否'] 41 | # 近义词的临近概率 42 | near_probability = 0.9 43 | # 标注数组 44 | labelB = ['n', 'nz', 'nt', 'ni', 'a', 'b', 'pro', 'j', 'i', 'nd'] 45 | labelE = ['n', 'nz', 'nt', 'ni', 'pro', 'j', 'i', 'nd'] 46 | connect_head_end = ['nd', 'u'] 47 | 48 | # 关系模板 49 | templet = {} 50 | entity_words = [] 51 | 52 | 53 | 54 | def initialize(entity_file): 55 | """ 领域词存储 56 | 57 | :param entity_file: 领域词文件(包括扩展词) 58 | :return: 59 | """ 60 | for word in entity_file.readlines(): 61 | if word.strip() != '': 62 | entity_words.append(word.strip()) 63 | entity_words.sort(key=lambda x: (len(x), x), reverse=True) 64 | str = "领域词存储完成" 65 | print("=" * 10, str, "=" * 10) 66 | return str 67 | 68 | 69 | def sort_by_something(words_file): 70 | words = [] 71 | for line in words_file.readlines(): 72 | line = line.strip('\n') 73 | words.append(line) 74 | words.sort(key=lambda x: (len(x), x), reverse=True) 75 | f2 = open('sorted_words', 'w', encoding='utf8') 76 | for word in words: 77 | f2.write(word + '\n') 78 | return words 79 | 80 | 81 | def expand_words(t_i, flags, words): 82 | """ 单词扩展 83 | 84 | :param t_i: 领域词index 85 | :param flags: 词性数组 86 | :param words: 词数组 87 | :return: 88 | """ 89 | t_c = words[t_i] 90 | temp_str = "" 91 | begin = t_i 92 | end = t_i 93 | while begin > 0: 94 | if flags[begin - 1] in labelB: 95 | temp_str = words[begin - 1] + temp_str 96 | begin = begin - 1 97 | else: 98 | break 99 | t_c = temp_str + t_c 100 | temp_str = "" 101 | 102 | # 对于‘u’的处理 103 | if begin > 0: 104 | if flags[begin - 1] in connect_head_end: 105 | temp_str = words[begin - 1] 106 | begin = begin - 1 107 | while begin > 0: 108 | if flags[begin - 1] in labelB: 109 | temp_str = words[begin - 1] + temp_str 110 | begin = begin - 1 111 | else: 112 | break 113 | # 说明不只放入了一个u,u前有修饰 114 | if flags[begin] not in connect_head_end: 115 | t_c = temp_str + t_c 116 | temp_str = "" 117 | 118 | while end < len(flags) - 1: 119 | if flags[end + 1] in labelE: 120 | temp_str = temp_str + words[end + 1] 121 | end = end + 1 122 | else: 123 | break 124 | t_c = t_c + temp_str 125 | temp_str = "" 126 | 127 | # 对于'u'的镜像处理 128 | if end < len(flags) - 1: 129 | if flags[end + 1] in connect_head_end: 130 | temp_str = words[end + 1] 131 | end = end + 1 132 | while end < len(flags) - 1: 133 | if flags[end + 1] in labelE: 134 | temp_str = temp_str + words[end + 1] 135 | end = end + 1 136 | else: 137 | break 138 | # 说明不只放入了一个uj,uj前有修饰 139 | if flags[end] not in connect_head_end: 140 | t_c = t_c + temp_str 141 | temp_str = "" 142 | t_c = t_c.strip() 143 | 144 | return t_c 145 | 146 | 147 | def is_expanded(words, t_i, short_part, flags): 148 | bool = False 149 | t_c_entity = "" 150 | t_c_expand = "" 151 | t_c = None 152 | for entity_word in entity_words: 153 | if short_part.find(entity_word) != -1: 154 | if entity_word.find(words[t_i]) != -1: 155 | t_c_entity = entity_word 156 | bool = True 157 | break 158 | for expand_word in expand_all_words: 159 | if short_part.find(expand_word) != -1: 160 | if expand_word.find(words[t_i]) != -1: 161 | t_c_expand = expand_word 162 | bool = True 163 | break 164 | if not bool: 165 | t_c = expand_words(t_i, flags, words) 166 | else: 167 | if len(t_c_expand) >= len(t_c_entity): 168 | return t_c_expand 169 | else: 170 | return t_c_entity 171 | return t_c 172 | 173 | 174 | def templet_get(): 175 | # 读取关系模板的内容 176 | gui = open("rule", "r", encoding='utf-8') 177 | for i in gui: 178 | i = i.strip().split() 179 | templet.setdefault(i[0], []) 180 | templet[i[0]].append(i[1:]) 181 | return templet 182 | 183 | 184 | def write_to_file(f_three): 185 | # 排序 186 | tuple_list = sorted(all_three) 187 | for nn in tuple_list: 188 | # 长度限制 189 | if len(nn[0]) >= 2 and len(nn[1]) >= 2 and len(nn[3]) < 50: 190 | f_three.write( 191 | nn[0].strip('\n') + "," + nn[1].strip('\n') + "," + nn[2].strip('\n') + "," + nn[3].strip('\n') + "\n") 192 | f_three.close() 193 | return "success" 194 | 195 | 196 | def tuple_get(group, part_index, entity_index, pattern_part, file_name, sentence): 197 | # 存放的头实体 198 | heads = [] 199 | # 存放的尾实体 200 | ends = [] 201 | my_r = [] 202 | if group: 203 | for t in group: 204 | my_r.append(re.split("|".join(correlation_words), t)) 205 | for i, short_sentence in enumerate(my_r): 206 | # 循环的原因是因为my_r可能在append的时候加入的是一个list,比如 水和地球,那么就是my_r[?]={水,地球} 207 | 208 | for short_part in short_sentence: 209 | 210 | # word_flag = pseg.lcut(short_part) 211 | # word_vector = segmentor.segment(short_part) 212 | # flag_vector = postagger.postag(word_vector) # 词性标注 213 | # words = '\t'.join(word_vector).split('\t') 214 | # flags = '\t'.join(flag_vector).split('\t') 215 | # # 重定义flag 216 | # for index, word in enumerate(words): 217 | # if word in entity_words: 218 | # flags[index] = 'pro' 219 | word_flags = pseg.lcut(short_part) 220 | words = [] 221 | flags = [] 222 | for word, flag in word_flags: 223 | words.append(word) 224 | flags.append(flag) 225 | t_c = "" 226 | # 如果只有一个领域词 227 | if flags.count("pro") == 1: 228 | t_i = flags.index("pro") 229 | t_c = expand_words(t_i, flags, words) 230 | # 判断是否已经有是当前领域词的扩展词 231 | t_c = is_expanded(words, t_i, short_part, flags) 232 | # # 不扩展词 233 | # t_c=words[t_i] 234 | 235 | # 如果没有领域词 236 | elif flags.count("pro") == 0: 237 | # t_i = -1 238 | # for index_d, d in enumerate(flags): 239 | # if "n" in d and len(d) > 1 and d != "nr": 240 | # # 因为没有领域词于是强行加了一个n当领域词 241 | # t_i = index_d 242 | # break 243 | # if t_c == "": 244 | # for index_d, d in enumerate(flags): 245 | # if "n" in d: 246 | # t_i = index_d 247 | # break 248 | # if t_c == "": 249 | # for i_d, d in enumerate(flags): 250 | # if d == "v": 251 | # t_i = i_d 252 | # break 253 | # # 看起来又像是词扩展 254 | # if t_i > 0: 255 | # if flags[t_i - 1] == "n" or flags[t_i - 1] == "a": 256 | # t_c += words[t_i - 1] 257 | # if t_i != -1: 258 | # t_c += words[t_i] 259 | # if t_i < len(flags) - 1: 260 | # if flags[t_i + 1] == "n": 261 | # t_c += words[t_i + 1] 262 | continue 263 | else: 264 | if part_index[i] == 0: 265 | # # 尾临近原则 266 | # t_i = findindex(flags, "pro")[-1] 267 | # 尾疏远原则 268 | t_i = findindex(flags, "pro")[-1] 269 | elif part_index[i] == len(pattern_part) - 1: 270 | # 头临近原则 271 | t_i = findindex(flags, "pro")[0] 272 | else: 273 | # 总之还是临近 274 | f_n = findindex(flags, "pro") 275 | if f_n[0] < len(flags) - f_n[-1] - 1: 276 | t_i = f_n[0] 277 | else: 278 | t_i = f_n[-1] 279 | # 总之又是词扩展 280 | t_c = is_expanded(words, t_i, short_part, flags) 281 | # 不扩展词 282 | # t_c = words[t_i] 283 | # 判断是不是要倒序,也就是谁是头实体,谁是尾实体 284 | if entity_index[i] == "A": 285 | heads.append(t_c) 286 | else: 287 | ends.append(t_c) 288 | # 如果都有了,那是好事 289 | old_length = len(all_three) 290 | if heads and ends: 291 | for head in heads: 292 | for end in ends: 293 | if head and end: 294 | if head == end: 295 | continue 296 | else: 297 | all_three.add(tuple([head, end, file_name, sentence])) 298 | if len(all_three) > old_length: 299 | return "success" 300 | else: 301 | return "fail" 302 | 303 | 304 | def change_to_regular(relation_part): 305 | """ 306 | 关系模板转正则表达式 307 | :param relation_part: 308 | :return: 309 | """ 310 | index = 0 311 | temp_pattern = "" 312 | entity_dict = {} 313 | part_dict = [] 314 | for k, c in enumerate(relation_part): 315 | if c == "A": 316 | entity_dict[index] = "A" 317 | index += 1 318 | temp_pattern += "(.*)" 319 | part_dict.append(k) 320 | elif c == "B": 321 | entity_dict[index] = "B" 322 | index += 1 323 | temp_pattern += "(.*)" 324 | part_dict.append(k) 325 | else: 326 | temp_pattern += c 327 | return temp_pattern, entity_dict, part_dict 328 | 329 | 330 | def change_to_regular_next(relation_part): 331 | """ 332 | 关系模板转正则表达式(近义词部分) 333 | :param relation_part: 334 | :return: 335 | """ 336 | index = 0 337 | temp_pattern = "" 338 | entity_dict = {} 339 | part_dict = list() 340 | for k, c in enumerate(relation_part): 341 | if c == "A": 342 | entity_dict[index] = "A" 343 | index += 1 344 | temp_pattern += "(.*)" 345 | part_dict.append(k) 346 | elif c == "B": 347 | entity_dict[index] = "B" 348 | index += 1 349 | temp_pattern += "(.*)" 350 | part_dict.append(k) 351 | else: 352 | # 因为上面的过程抽取的词可能是有近义词情况的,所以对其近义词进行适度抽取 353 | jin = synonyms.nearby(c) 354 | if jin[0]: 355 | temp = [] 356 | for w, x in zip(jin[0], jin[1]): 357 | if x > near_probability: 358 | temp.append(w) 359 | if len(temp) > 1: 360 | temp_pattern += "(" + "|".join(temp) + ")" 361 | else: 362 | temp_pattern += c 363 | else: 364 | temp_pattern += c 365 | return temp_pattern, entity_dict, part_dict 366 | 367 | 368 | if __name__ == '__main__': 369 | f_r = open("key_word.txt", "r", encoding='utf-8') 370 | # 存储关系词 371 | key_word = {} 372 | for i in f_r: 373 | i = i.strip().split() 374 | key_word[i[0]] = i[1:] 375 | templet_get() 376 | entity_file = open('../data/all_word_dict.txt', 'r', encoding='utf8') 377 | initialize(entity_file) 378 | expand_file = open('../data/expand_words.txt', 'r', encoding='utf8') 379 | expand_all_words = sort_by_something(expand_file) 380 | # 已经分类筛选出的关键句路径 381 | classify_path = os.listdir("pp/") 382 | for classify_file in classify_path: 383 | file_name = classify_file.split(".")[0] 384 | if file_name in templet: 385 | # 用以存放所有的三元组 386 | all_three = set() 387 | f_r = open("pp/" + classify_file, "r", encoding='utf-8') 388 | f_three = open("three_zu/" + file_name, "w", encoding='utf-8') 389 | dai_chou = [] 390 | for sentence in f_r.readlines(): 391 | # 第一种pattern发现的三元组 392 | # 如果存在非关系,则先不进行处理 393 | ignore = False 394 | for ignore_word in ignore_words: 395 | if sentence.find(ignore_word) != -1: 396 | ignore = True 397 | break 398 | if ignore: 399 | continue 400 | for small_sentence in sentence.strip('。').split(","): 401 | # 通过bool判断那第一种情况是否成立 402 | bool = False 403 | # 第一种情况,直接可以根据templet找到三元组 404 | for relation_part in templet[file_name]: 405 | # 将关系模板改成正则表达式 406 | temp_pattern, entity_index, part_index = change_to_regular(relation_part) 407 | r = re.search(temp_pattern, small_sentence) 408 | # 如果未成功匹配就继续 409 | try: 410 | t_r = r.groups() 411 | if t_r: 412 | state = tuple_get(t_r, part_index, entity_index, relation_part, file_name, 413 | small_sentence) 414 | if state == "success": 415 | bool = bool | True 416 | break 417 | else: 418 | bool = bool | False 419 | except: 420 | continue 421 | # 第二种pattern发现的三元组 422 | if not bool: 423 | for relation_part in templet[file_name]: 424 | # 将关系模板改成正则表达式 425 | temp_pattern, entity_index, part_index = change_to_regular_next(relation_part) 426 | r = re.search(temp_pattern, small_sentence) 427 | try: 428 | group = r.groups() 429 | if group: 430 | state = tuple_get(group, part_index, entity_index, relation_part, file_name, 431 | small_sentence) 432 | except: 433 | continue 434 | # 写入文件 435 | write_to_file(f_three) 436 | f_r.close() 437 | # postagger.release() 438 | # segmentor.release() 439 | -------------------------------------------------------------------------------- /pattern-relation/find_tuple_correlation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/3/11 11:47 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : find_tuple_correlation.py 8 | @Software: PyCharm 9 | @Desc: 发现相关关系 10 | ''' 11 | 12 | import jieba.posseg as pseg 13 | import synonyms 14 | import os 15 | import jieba 16 | import re 17 | 18 | jieba.load_userdict("../data/my_dict.txt") 19 | # segmentor = Segmentor() 20 | # LTP_DATA_DIR = 'D:/python/project/ltpModel/ltp_data_v3.4.0' # ltp路径 21 | # cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') 22 | # # my_dict中有词标和词频 23 | # segmentor.load_with_lexicon(cws_model_path, '../data/my_dict.txt') 24 | # postagger = Postagger() # 初始化实例 25 | # pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model` 26 | # postagger.load(pos_model_path) # 加载模型 27 | expand_all_words = [] 28 | 29 | 30 | def findindex(org, x): 31 | result = [] 32 | for k, v in enumerate(org): 33 | if v == x: 34 | result.append(k) 35 | return result 36 | 37 | 38 | # 连接词 39 | correlation_words = ["和", "●", "、", "以及", "还有", ";", "及"] 40 | # 忽略词 41 | ignore_words = ['不是', '并非', '能否', '避免', '可能', '大概', '是否'] 42 | # 近义词的临近概率 43 | near_probability = 0.9 44 | # 标注数组 45 | labelB = ['n', 'nz', 'nt', 'ni', 'a', 'b', 'pro', 'j', 'i', 'nd'] 46 | labelE = ['n', 'nz', 'nt', 'ni', 'pro', 'j', 'i', 'nd'] 47 | connect_head_end = ['nd', 'u'] 48 | # 存之前的头实体 49 | old_entity = [] 50 | 51 | # 关系模板 52 | templet = {} 53 | entity_words = [] 54 | 55 | 56 | def initialize(entity_file): 57 | """ 领域词存储 58 | 59 | :param entity_file: 领域词文件(包括扩展词) 60 | :return: 61 | """ 62 | for word in entity_file.readlines(): 63 | if word.strip() != '': 64 | entity_words.append(word.strip()) 65 | entity_words.sort(key=lambda x: (len(x), x), reverse=True) 66 | str = "领域词存储完成" 67 | print("=" * 10, str, "=" * 10) 68 | return str 69 | 70 | 71 | def sort_by_something(words_file): 72 | words = [] 73 | for line in words_file.readlines(): 74 | line = line.strip('\n') 75 | words.append(line) 76 | words.sort(key=lambda x: (len(x), x), reverse=True) 77 | # f2 = open('sorted_words', 'w', encoding='utf8') 78 | # for word in words: 79 | # f2.write(word + '\n') 80 | return words 81 | 82 | 83 | def expand_words(t_i, flags, words): 84 | """ 单词扩展 85 | 86 | :param t_i: 领域词index 87 | :param flags: 词性数组 88 | :param words: 词数组 89 | :return: 90 | """ 91 | t_c = words[t_i] 92 | temp_str = "" 93 | begin = t_i 94 | end = t_i 95 | while begin > 0: 96 | if flags[begin - 1] in labelB: 97 | temp_str = words[begin - 1] + temp_str 98 | begin = begin - 1 99 | else: 100 | break 101 | t_c = temp_str + t_c 102 | temp_str = "" 103 | 104 | # 对于‘u’的处理 105 | if begin > 0: 106 | if flags[begin - 1] in connect_head_end: 107 | temp_str = words[begin - 1] 108 | begin = begin - 1 109 | while begin > 0: 110 | if flags[begin - 1] in labelB: 111 | temp_str = words[begin - 1] + temp_str 112 | begin = begin - 1 113 | else: 114 | break 115 | # 说明不只放入了一个u,u前有修饰 116 | if flags[begin] not in connect_head_end: 117 | t_c = temp_str + t_c 118 | temp_str = "" 119 | 120 | while end < len(flags) - 1: 121 | if flags[end + 1] in labelE: 122 | temp_str = temp_str + words[end + 1] 123 | end = end + 1 124 | else: 125 | break 126 | t_c = t_c + temp_str 127 | temp_str = "" 128 | 129 | # 对于'u'的镜像处理 130 | if end < len(flags) - 1: 131 | if flags[end + 1] in connect_head_end: 132 | temp_str = words[end + 1] 133 | end = end + 1 134 | while end < len(flags) - 1: 135 | if flags[end + 1] in labelE: 136 | temp_str = temp_str + words[end + 1] 137 | end = end + 1 138 | else: 139 | break 140 | # 说明不只放入了一个uj,uj前有修饰 141 | if flags[end] not in connect_head_end: 142 | t_c = t_c + temp_str 143 | temp_str = "" 144 | t_c = t_c.strip() 145 | 146 | return t_c 147 | 148 | 149 | def is_expanded(words, t_i, short_part, flags): 150 | bool = False 151 | t_c_entity = "" 152 | t_c_expand = "" 153 | t_c = None 154 | for entity_word in entity_words: 155 | if short_part.find(entity_word) != -1: 156 | if entity_word.find(words[t_i]) != -1: 157 | t_c_entity = entity_word 158 | bool = True 159 | break 160 | for expand_word in expand_all_words: 161 | if short_part.find(expand_word) != -1: 162 | if expand_word.find(words[t_i]) != -1: 163 | t_c_expand = expand_word 164 | bool = True 165 | break 166 | if not bool: 167 | t_c = expand_words(t_i, flags, words) 168 | else: 169 | if len(t_c_expand) >= len(t_c_entity): 170 | return t_c_expand 171 | else: 172 | return t_c_entity 173 | return t_c 174 | 175 | 176 | def templet_get(): 177 | # 读取关系模板的内容 178 | gui = open("rule_correlation", "r", encoding='utf-8') 179 | for i in gui: 180 | i = i.strip().split() 181 | templet.setdefault(i[0], []) 182 | templet[i[0]].append(i[1:]) 183 | return templet 184 | 185 | 186 | def write_to_file(f_three): 187 | # 排序 188 | tuple_list = sorted(all_three) 189 | for nn in tuple_list: 190 | # 长度限制 191 | if len(nn[0]) >= 2 and len(nn[1]) >= 2 and len(nn[3]) < 50: 192 | f_three.write( 193 | nn[0].strip('\n') + "," + nn[1].strip('\n') + "," + nn[2].strip('\n') + "," + nn[3].strip('\n') + "\n") 194 | f_three.close() 195 | return "success" 196 | 197 | 198 | def tuple_get(group, part_index, entity_index, pattern_part, file_name, sentence): 199 | # 存放的头实体 200 | heads = [] 201 | # 存放的尾实体 202 | ends = [] 203 | my_r = [] 204 | if group: 205 | for t in group: 206 | # my_r.append(re.split("|".join(correlation_words), t)) 207 | my_r.append(t) 208 | for i, short_part in enumerate(my_r): 209 | # 循环的原因是因为my_r可能在append的时候加入的是一个list,比如 水和地球,那么就是my_r[?]={水,地球} 210 | # word_flag = pseg.lcut(short_part) 211 | word_flags = pseg.lcut(short_part) 212 | words = [] 213 | flags = [] 214 | for word, flag in word_flags: 215 | words.append(word) 216 | flags.append(flag) 217 | # word_vector = segmentor.segment(short_part) 218 | # flag_vector = postagger.postag(word_vector) # 词性标注 219 | # words = '\t'.join(word_vector).split('\t') 220 | # flags = '\t'.join(flag_vector).split('\t') 221 | # # 重定义flag 222 | # for index, word in enumerate(words): 223 | # if word in entity_words: 224 | # flags[index] = 'pro' 225 | t_c = "" 226 | # 如果只有一个领域词 227 | if flags.count("pro") == 1: 228 | t_i = flags.index("pro") 229 | # t_c = expand_words(t_i, flags, words) 230 | # 判断是否已经有是当前领域词的扩展词 231 | t_c = is_expanded(words, t_i, short_part, flags) 232 | # t_c = words[t_i] 233 | # 如果没有领域词 234 | elif flags.count("pro") == 0: 235 | # t_i = -1 236 | # for index_d, d in enumerate(flags): 237 | # if "n" in d and len(d) > 1 and d != "nr": 238 | # # 因为没有领域词于是强行加了一个n当领域词 239 | # t_i = index_d 240 | # break 241 | # if t_c == "": 242 | # for index_d, d in enumerate(flags): 243 | # if "n" in d: 244 | # t_i = index_d 245 | # break 246 | # if t_c == "": 247 | # for i_d, d in enumerate(flags): 248 | # if d == "v": 249 | # t_i = i_d 250 | # break 251 | # # 看起来又像是词扩展 252 | # if t_i > 0: 253 | # if flags[t_i - 1] == "n" or flags[t_i - 1] == "a": 254 | # t_c += words[t_i - 1] 255 | # if t_i != -1: 256 | # t_c += words[t_i] 257 | # if t_i < len(flags) - 1: 258 | # if flags[t_i + 1] == "n": 259 | # t_c += words[t_i + 1] 260 | continue 261 | else: 262 | if part_index[i] == 0: 263 | # # 头临近原则 264 | # t_i = findindex(flags, "pro")[-1] 265 | # 头疏远原则 266 | t_i = findindex(flags, "pro")[0] 267 | elif part_index[i] == len(pattern_part) - 1: 268 | # 尾临近原则 269 | t_i = findindex(flags, "pro")[0] 270 | else: 271 | # 总之还是临近 272 | f_n = findindex(flags, "pro") 273 | if f_n[0] < len(flags) - f_n[-1] - 1: 274 | t_i = f_n[0] 275 | else: 276 | t_i = f_n[-1] 277 | # 总之又是词扩展 278 | t_c = is_expanded(words, t_i, short_part, flags) 279 | # t_c=words[t_i] 280 | # 判断是不是要倒序,也就是谁是头实体,谁是尾实体 281 | if entity_index[i] == "A": 282 | heads.append(t_c) 283 | else: 284 | ends.append(t_c) 285 | # 如果都有了,那是好事 286 | old_length = len(all_three) 287 | if heads and ends: 288 | for head in heads: 289 | # 如果头实体不是在原来的尾实体组中 290 | if head not in old_entity: 291 | for end in ends: 292 | if head and end: 293 | if head == end: 294 | continue 295 | else: 296 | old_entity.append(end) 297 | all_three.add(tuple([head, end, file_name, sentence])) 298 | if len(all_three) > old_length: 299 | return "success" 300 | else: 301 | return "fail" 302 | 303 | 304 | def change_to_regular(relation_part): 305 | """ 306 | 关系模板转正则表达式 307 | :param relation_part: 308 | :return: 309 | """ 310 | index = 0 311 | temp_pattern = "" 312 | entity_dict = {} 313 | part_dict = [] 314 | for k, c in enumerate(relation_part): 315 | if c == "A": 316 | entity_dict[index] = "A" 317 | index += 1 318 | temp_pattern += "(.*)" 319 | part_dict.append(k) 320 | elif c == "B": 321 | entity_dict[index] = "B" 322 | index += 1 323 | temp_pattern += "(.*)" 324 | part_dict.append(k) 325 | else: 326 | temp_pattern += c 327 | return temp_pattern, entity_dict, part_dict 328 | 329 | 330 | def change_to_regular_next(relation_part): 331 | """ 332 | 关系模板转正则表达式(近义词部分) 333 | :param relation_part: 334 | :return: 335 | """ 336 | index = 0 337 | temp_pattern = "" 338 | entity_dict = {} 339 | part_dict = list() 340 | for k, c in enumerate(relation_part): 341 | if c == "A": 342 | entity_dict[index] = "A" 343 | index += 1 344 | temp_pattern += "(.*)" 345 | part_dict.append(k) 346 | elif c == "B": 347 | entity_dict[index] = "B" 348 | index += 1 349 | temp_pattern += "(.*)" 350 | part_dict.append(k) 351 | else: 352 | # 因为上面的过程抽取的词可能是有近义词情况的,所以对其近义词进行适度抽取 353 | jin = synonyms.nearby(c) 354 | if jin[0]: 355 | temp = [] 356 | for w, x in zip(jin[0], jin[1]): 357 | if x > near_probability: 358 | temp.append(w) 359 | if len(temp) > 1: 360 | temp_pattern += "(" + "|".join(temp) + ")" 361 | else: 362 | temp_pattern += c 363 | else: 364 | temp_pattern += c 365 | return temp_pattern, entity_dict, part_dict 366 | 367 | 368 | if __name__ == '__main__': 369 | f_r = open("key_word.txt", "r", encoding='utf-8') 370 | # 存储关系词 371 | key_word = {} 372 | for i in f_r: 373 | i = i.strip().split() 374 | key_word[i[0]] = i[1:] 375 | templet_get() 376 | entity_file = open('../data/all_word_dict.txt', 'r', encoding='utf8') 377 | initialize(entity_file) 378 | expand_file = open('../data/expand_words.txt', 'r', encoding='utf8') 379 | expand_all_words = sort_by_something(expand_file) 380 | # 已经分类筛选出的关键句路径 381 | classify_path = os.listdir("pp/") 382 | for classify_file in classify_path: 383 | file_name = classify_file.split(".")[0] 384 | if file_name in templet: 385 | # 用以存放所有的三元组 386 | all_three = set() 387 | f_r = open("pp/" + classify_file, "r", encoding='utf-8') 388 | f_three = open("three_zu/" + file_name, "a", encoding='utf-8') 389 | dai_chou = [] 390 | for sentence in f_r.readlines(): 391 | # 第一种pattern发现的三元组 392 | # 如果存在非关系,则先不进行处理 393 | ignore = False 394 | for ignore_word in ignore_words: 395 | if sentence.find(ignore_word) != -1: 396 | ignore = True 397 | break 398 | if ignore: 399 | continue 400 | # 通过bool判断那第一种情况是否成立 401 | bool = False 402 | # 第一种情况,直接可以根据templet找到三元组 403 | for relation_part in templet[file_name]: 404 | # 将关系模板改成正则表达式 405 | temp_pattern, entity_index, part_index = change_to_regular(relation_part) 406 | r = re.search(temp_pattern, sentence) 407 | # 如果未成功匹配就继续 408 | try: 409 | t_r = r.groups() 410 | if t_r: 411 | state = tuple_get(t_r, part_index, entity_index, relation_part, file_name, 412 | sentence) 413 | if state == "success": 414 | bool = bool | True 415 | else: 416 | bool = bool | False 417 | except: 418 | continue 419 | old_entity = [] 420 | # 第二种pattern发现的三元组 421 | if not bool: 422 | for relation_part in templet[file_name]: 423 | # 将关系模板改成正则表达式 424 | temp_pattern, entity_index, part_index = change_to_regular_next(relation_part) 425 | r = re.search(temp_pattern, sentence) 426 | try: 427 | group = r.groups() 428 | if group: 429 | state = tuple_get(group, part_index, entity_index, relation_part, file_name, 430 | sentence) 431 | except: 432 | continue 433 | # 写入文件 434 | write_to_file(f_three) 435 | f_r.close() 436 | # postagger.release() 437 | # segmentor.release() 438 | -------------------------------------------------------------------------------- /pattern-relation/key_word.txt: -------------------------------------------------------------------------------- 1 | 包含 包含 部分 包括 构成 分解成 组合 纳入 分量 由以下 最重要的是 组成部分 组成中 2 | 依据 依据 根据 3 | 正相关 提高 越大 越好 增加 越高 有利于 促进 增强 加强 4 | 因果 随着 造成 原因 是由 引起 5 | 负相关 越小 越少 减少 减小 越低 降低 制约 限制 控制 减弱 不利于 6 | 决定 而定 确定 取决 -------------------------------------------------------------------------------- /pattern-relation/readme.md: -------------------------------------------------------------------------------- 1 | 基于模板匹配方法的关系抽取 -------------------------------------------------------------------------------- /pattern-relation/rule: -------------------------------------------------------------------------------- 1 | 包含 A 的构成要素 B 2 | 包含 A 的 组成部分 B 3 | 包含 A 的 构成部分 B 4 | 包含 B 是 A 的组成部分 5 | 包含 B 由 A 的构成部分 6 | 包含 B 是 A 的构成部分 7 | 包含 B 是作为 A 部分 8 | 包含 B 在 A 之中 9 | 包含 A 由 B 构成 10 | 包含 A 是 B 构成 11 | 包含 B 构成 A 12 | 包含 A 包括 B 13 | 包含 A 包含 B 14 | 包含 B 组成 A 15 | 包含 A 由以下 B 16 | 包含 A 形式有 B 17 | 包含 A 分解成 B 18 | 包含 A 主要有 B 19 | 包含 B 是 A 的重点 20 | 包含 B 是 A 的难点 21 | 包含 A 最重要的是 B 22 | 包含 A 是 B 组合 23 | 包含 B 纳入 A 24 | 包含 B 组成 A 25 | 包含 A 划分 B 26 | 包含 认为 B 是 A 组成部分 27 | 依据 A 以 B 为依据 28 | 依据 A 以 B 为根据 29 | 依据 B 作为 A 依据 30 | 依据 A 依据 B 31 | 依据 A 根据 B 32 | 依据 B 作为 A 根据 33 | 依据 B 是 A 根据 34 | 依据 B 是 A 依据 35 | 决定 B 取决于 A 36 | 决定 B 看 A 而定 37 | 决定 B 视 A 而定 38 | 决定 A 决定 B 39 | 决定 A 取决于 B 40 | 决定 B 由 A 决定 41 | 决定 B 按 A 决定 42 | 决定 A 确定 B 43 | 决定 B 是基于 A 确定的 44 | 正相关 A 有利于 B 45 | 正相关 A 促进 B 46 | 正相关 A 增强 B 47 | 正相关 A 加强 B 48 | 正相关 A 越高, B 越高 49 | 正相关 A 越高, B 越好 50 | 正相关 A 越高, B 越大 51 | 正相关 A 越好, B 越高 52 | 正相关 A 越好, B 越好 53 | 正相关 A 越好, B 越大 54 | 正相关 A 越大, B 越高 55 | 正相关 A 越大, B 越好 56 | 正相关 A 越大, B 越大 57 | 正相关 A 增加, B 增加 58 | 因果 A 原因是 B 59 | 因果 A 是由 B 引起 60 | 因果 B 是 A 的原因 61 | 因果 A 引起 B 62 | 因果 A 造成 B 63 | 因果 随着 A , B 64 | 负相关 A 和 B 负相关 65 | 负相关 以 A , 减小 B 66 | 负相关 A 越多, B 就越少 67 | 负相关 A 越大, B 就越小 68 | 负相关 A 越少, B 就越多 69 | 负相关 A 越小, B 就越大 70 | 负相关 A 减少, B 提高 71 | 负相关 A 越高, B 越小 72 | 负相关 A 越低, B 就越高 73 | 负相关 A 越高,越利于控制 B 74 | 负相关 A 减弱 B 75 | 负相关 B 受 A 的制约 76 | 负相关 A 限制在 B 上 77 | 负相关 A 受到 B 的限制 78 | 负相关 A 使 B 降低 79 | 负相关 A 降低 B 80 | 负相关 A 减少 B 81 | 负相关 A 制约 B 82 | 负相关 A 限制 B -------------------------------------------------------------------------------- /pattern-relation/rule.py: -------------------------------------------------------------------------------- 1 | # _*_ encoding:utf-8 _*_ 2 | 3 | import jieba 4 | 5 | jieba.load_userdict("../data/my_dict.txt") 6 | import re 7 | import jieba.posseg as pseg 8 | import operator 9 | import os 10 | 11 | # fa_zhi = 0.35 12 | f_r = open("key_word.txt", "r", encoding='utf-8') 13 | key_word = {} 14 | fa_dict = {} 15 | guan_dict = {} 16 | for i in f_r: 17 | i = i.strip().split() 18 | key_word[i[0]] = i[1:] 19 | if len(i[1:]) >= 5: 20 | fa_dict[i[0]] = 1 21 | else: 22 | fa_dict[i[0]] = 1 23 | guan_dict[i[0]] = [] 24 | # fa_dict["正相关"] = 1 25 | # fa_dict["负相关"] = 1 26 | fa_dict["包含"] = 1 27 | f_r.close() 28 | 29 | 30 | def cut_sent(para): 31 | para = re.sub('([。!?\?])([^”’])', r"\1\n\2", para) # 单字符断句符 32 | para = re.sub('(\.{6})([^”’])', r"\1\n\2", para) # 英文省略号 33 | para = re.sub('(\…{2})([^”’])', r"\1\n\2", para) # 中文省略号 34 | para = re.sub('([。!?\?][”’])([^,。!?\?])', r'\1\n\2', para) 35 | # 如果双引号前有终止符,那么双引号才是句子的终点,把分句符\n放到双引号后,注意前面的几句都小心保留了双引号 36 | para = para.rstrip() # 段尾如果有多余的\n就去掉它 37 | # 很多规则中会考虑分号;,但是这里我把它忽略不计,破折号、英文双引号等同样忽略,需要的再做些简单调整即可。 38 | return para.split("\n") 39 | 40 | 41 | for i in os.listdir("./../deal_book/"): 42 | f = open("./../deal_book/" + i, "r", encoding='utf-8') 43 | new_sents = [m for m in f.readlines() if m.strip()] 44 | for se in new_sents: 45 | se = se.strip() 46 | if not se: 47 | continue 48 | sen = jieba.lcut(se) 49 | temp_v = {} 50 | for g in key_word: 51 | temp = 0 52 | for w in sen: 53 | if w in key_word[g]: 54 | temp += 1 55 | temp_v[g] = temp 56 | # temp_v[g]/=len(key_word[g]) 57 | sorted_t = sorted(temp_v.items(), key=operator.itemgetter(1), reverse=True) 58 | for jj in sorted_t: 59 | if jj[1] >= fa_dict[jj[0]]: 60 | guan_dict[jj[0]].append(se) 61 | break 62 | f.close() 63 | 64 | for k in guan_dict: 65 | f_w = open("pp/" + k + ".txt", "w", encoding='utf-8') 66 | for j in guan_dict[k]: 67 | word_ci = pseg.cut(j.strip()) 68 | words = [] 69 | for word, flag in word_ci: 70 | words.append([word, flag]) 71 | shu = 0 72 | for word, flag in words: 73 | if flag == "pro": 74 | shu += 1 75 | if shu > 1 and "?" not in j: 76 | f_w.write(j + "\n") 77 | f_w.close() 78 | -------------------------------------------------------------------------------- /pattern-relation/rule_correlation: -------------------------------------------------------------------------------- 1 | 正相关 A 有利于 B 2 | 正相关 A 促进 B 3 | 正相关 A 增强 B 4 | 正相关 A 加强 B 5 | 正相关 A 越高, B 越高 6 | 正相关 A 越高, B 越好 7 | 正相关 A 越高, B 越大 8 | 正相关 A 越好, B 越高 9 | 正相关 A 越好, B 越好 10 | 正相关 A 越好, B 越大 11 | 正相关 A 越大, B 越高 12 | 正相关 A 越大, B 越好 13 | 正相关 A 越大, B 越大 14 | 正相关 A 增加, B 增加 15 | 负相关 A 和 B 负相关 16 | 负相关 以 A , 减小 B 17 | 负相关 A 越多, B 越少 18 | 负相关 A 越大, B 越小 19 | 负相关 A 越少, B 越多 20 | 负相关 A 越小, B 越大 21 | 负相关 A 减少, B 提高 22 | 负相关 A 越高, B 越低 23 | 负相关 A 越高, B 越小 24 | 负相关 A 越低, B 越高 25 | 负相关 A 增加, B 减少 26 | 负相关 A 减少, B 增加 27 | 负相关 A 有降低 B 的功能 28 | 负相关 A 越高,越利于控制 B 29 | 负相关 B 受 A 的制约 30 | 负相关 A 限制在 B 上 31 | 负相关 A 受到 B 的限制 32 | 负相关 A 使 B 降低 33 | 负相关 A 降低 B 34 | 负相关 A 减少 B 35 | 负相关 A 制约 B 36 | 负相关 A 限制 B 37 | 负相关 A 减弱 B 38 | 负相关 A 不利于 B 39 | 因果 A 原因是 B 40 | 因果 A 是由 B 引起 41 | 因果 A 是 B 的原因 42 | 因果 A 引起 B 43 | 因果 A 造成 B 44 | 因果 随着 A , B -------------------------------------------------------------------------------- /pattern-relation/rule_old: -------------------------------------------------------------------------------- 1 | 包含 B 是作为 A 部分 2 | 包含 A 包括 B 3 | 包含 A 由 B 组成 4 | 包含 A 是 B 组成 5 | 包含 A 由 B 构成 6 | 包含 A 是 B 构成 7 | 包含 A 由以下 B 8 | 包含 A 形式有 B 9 | 包含 A 分解成 B 10 | 包含 A 主要有 B 11 | 包含 A 主要有 B 构成 12 | 包含 B 是 A 的重点 13 | 包含 B 是 A 的难点 14 | 包含 A 最重要的是 B 15 | 包含 A ( B 、 16 | 包含 B 在 A 占的 17 | 包含 B 在 A 中 的 18 | 包含 B , 属于 A 19 | 包含 A , 如 B 20 | 包含 A : B 21 | 包含 A 是 B 组合 22 | 包含 A 组成中 B 23 | 包含 A 是 B 形式 24 | 包含 A 具有 B 25 | 包含 B 纳入 A 26 | 包含 B 组成 A 27 | 包含 A , 即 B 28 | 包含 A 划分 B 29 | 包含 认为 B 是 A 组成部分 30 | 补充 B 是 A 的补充 31 | 补充 B 都是 A 的补充 32 | 承担 A 承担 B 33 | 承担 A 承担着 B 34 | 等价 A , B 等价 35 | 等价 A 也是一种 B 36 | 等价 A 就是一种 B 37 | 等价 A 即 B 38 | 等价 A 又称 B 39 | 等价 A ( B , 40 | 等价 A 定义为 B 41 | 等价 A 主要指 B 42 | 等价 A 也叫 B 43 | 等价 A 又叫 B 44 | 等价 A 对应的是 B 45 | 等价 A 表现为 B 46 | 等价 A 也称之为 B 47 | 等价 A 或 B 48 | 辅助 B 辅助 A 49 | 辅助 B 和 B 辅助 A 50 | 负相关 A 和 B 负相关 51 | 负相关 A 越多, B 就越少 52 | 负相关 A 越大, B 就越小 53 | 负相关 A 越少, B 就越多 54 | 负相关 A 越小, B 就越大 55 | 负相关 A 有降低 B 的功能 56 | 负相关 A 越高,越利于控制 B 57 | 顾及 A 顾及 B 58 | 顾及 A 顾及了 B 59 | 挂钩 A 和 B 挂钩 60 | 挂钩 A 和 B 挂钩 61 | 挂钩 A 和 B 紧密地联系 62 | 挂钩 考虑到 A 而调整 B 63 | 挂钩 A 与 B 挂钩 64 | 关联 A 与 B 关联 65 | 关联 A 与 B 相联系 66 | 关联 考虑 A 而调整 B 67 | 关联 A 与 B 挂钩 68 | 关联 A 与 B 结合 69 | 关联 A 与 B 相关 70 | 关联 A 与 B 有关 71 | 关联 A 是 B 的结果 72 | 合作 A 和 B 合作 73 | 合作 A 需要 B 的合作 74 | 衡量 A 衡量 B 75 | 衡量 A 用于衡量 B 76 | 决定 A 决定 B 77 | 决定 A 决定了 B 78 | 决定 B 不是,而是按 A 决定 79 | 决定 B 由 A 决定 80 | 决定 B 按 A 决定 81 | 决定 A 确定了 B 82 | 决定 A 用于决定 B 83 | 决定 B 的确定取决于 A 84 | 决定 以 A 为决定 B 的依据, 85 | 决定 B 是基于 A 确定的 86 | 目标 A 是 B 的目标 87 | 目标 B 的一个重要目标是 A 88 | 前提条件 A 是 B 的前提条件 89 | 前提条件 B 需要 A 90 | 强调 A 强调 B 91 | 强调 A 强调的是 B 92 | 驱动 A 驱动 B 93 | 取代 A 取代 B 94 | 取代 经历了由 B 到 A 的过程 95 | 取代 A 是对 B 的改进 96 | 涉及 A 涉及 B 97 | 同属 B 同属 A 98 | 同属 A 可以分为两类,一是 B ,二是 B 99 | 同属 A 可以分为 B 100 | 同属 B 是一种新的 A 101 | 同属 B 可以作为 A 的一种类型 102 | 依据 A 依据 B 103 | 依据 A 要按 B 而定 104 | 依据 A 要视 B 而定 105 | 依据 通过 B 确定 A 106 | 依据 A 的依据是: B 107 | 依据 确定 A 时,要结合 B 108 | 依据 选择 A 时,要结合 B 109 | 依据 A 以 B 为依据 110 | 依据 A 以 B 为基础 111 | 依据 A 是根据 B 确定的 112 | 依据 确定 A 考虑 B 113 | 依据 确定 A 要看 B 114 | 依据 A 的基础有 B 115 | 依据 以 B 为确定 A 的依据 116 | 依据 B 是 A 的主要依据 117 | 依据 A 的依据—— B 118 | 依据 B 为 A 提供了依据 119 | 因果 A 是 B 的原因 120 | 因果 B 的第一个原因是 A 121 | 因果 随着 A , B 122 | 因果 A 导致 B 123 | 影响 A 影响 B 124 | 影响 A 影响 B 125 | 影响 A 在 B 中的作用 126 | 影响 A 使 B 127 | 影响 不同的 A 会导致不同的 B 128 | 影响 A 对 B 的影响 129 | 影响 A 会对 B 产生影响 130 | 影响 A 对 B 的作用 131 | 影响 A 使 B 132 | 影响 B 由 A 引起 133 | 影响 A 导致 B 变化 134 | 影响 A 可以帮助 B 135 | 影响 A 诱导 B 136 | 影响 B 受 A 的影响 137 | 影响 A 是 B 的驱动因素 138 | 载体 A 是 B 的载体 139 | 载体 A 是 B 和 B 的载体 140 | 载体 B 的载体是 A 141 | 正相关 A 和 B 正相关 142 | 正相关 A 有助于 B 143 | 正相关 A 较高时, B 就较高 144 | 正相关 较高的 A 会增加 B 145 | 正相关 高 A 会提高 B 146 | 正相关 A 越多, B 就越多 147 | 正相关 A 越大, B 就越大 148 | 正相关 A 越小, B 就越小 149 | 正相关 A 越少, B 就越少 150 | 正相关 A 有提高 B 151 | 正相关 A 会引发 B 152 | 正相关 A 会增加 B 153 | 正相关 A 与 B 紧密相关 154 | 正相关 B 视 A 而定 155 | 正相关 以高 A 提高 B 156 | 正相关 A 能鼓励 B 157 | 正相关 A 和 B 有正相关关系 158 | 正相关 A 越大说明 B 越好 159 | 正相关 A 增加, B 随之增加 160 | 正相关 A 可以直接增加 B 161 | 正相关 A 对 B 有积极作用 162 | 正相关 B 受 A 的激励 163 | 支付 A 支付 B 164 | 支付 A 支付给 B 165 | 制约 A 制约 B 166 | 制约 B 受 A 的制约 167 | -------------------------------------------------------------------------------- /pattern-relation/tupleUtils.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | os.system("python deal_data.py") 4 | os.system("python rule.py") 5 | os.system("python find_tuple.py") 6 | os.system("python find_tuple_correlation.py") 7 | 8 | 9 | def duplicate_remove(): 10 | classify_path = os.listdir("three_zu/") 11 | for classify_file in classify_path: 12 | duplicate_list = list() 13 | f_r = open("three_zu/" + classify_file, "r", encoding='utf-8') 14 | for line in f_r.readlines(): 15 | words = line.strip('\n').split(',') 16 | if len(words) == 4: 17 | bool = False 18 | for words_list in duplicate_list: 19 | if words[0] == words_list[0] and words[1] == words_list[1] and words[2] == words_list[2]: 20 | bool = True 21 | break 22 | else: 23 | continue 24 | if not bool: 25 | duplicate_list.append(words) 26 | f_r.close() 27 | f_w = open("three_zu/" + classify_file, "w", encoding='utf-8') 28 | for words_list in duplicate_list: 29 | words = ",".join(words_list) 30 | f_w.write(words.strip('\n') + '\n') 31 | 32 | 33 | def save_to_one(base_path, out_path): 34 | write_file = open(out_path, encoding='utf8', mode='w') 35 | for i in os.listdir(base_path + "/three_zu"): 36 | file = open(base_path + "/three_zu/" + i, encoding="utf8", mode='r') 37 | for line in file.readlines(): 38 | write_file.write(line.strip('\n') + '\n') 39 | 40 | 41 | duplicate_remove() 42 | save_to_one(".", "relation_test.txt") 43 | -------------------------------------------------------------------------------- /spiderDance/HRwords.txt: -------------------------------------------------------------------------------- 1 | 人力资源管理 2 | 人力资源管理目标 3 | 人力资源管理职责 4 | 人力资源管理任务 5 | 战略性人力资源管理 6 | 人力资源政策 7 | 人力资源哲学 8 | 精神契约 9 | 企业认同感 10 | 正式组织 11 | 非正式组织 12 | 组织文化 13 | 角色行为 14 | 个人主义 15 | 集体主义 16 | 不确定性规避 17 | 权力距离 18 | 直线和职能职权 19 | 需要层次理论 20 | 组织体系 21 | 期望理论 22 | 公平理论 23 | 强化理论 24 | 公平就业机会 25 | 实际职业资格 26 | 反优先雇佣行动 27 | 善意势力战略 28 | 定额战略 29 | 差别性对待 30 | 差别性影响 31 | 性骚扰 32 | 人力资源环境外部环境 33 | 劳动力市场 34 | 社会责任 35 | 组织重组 36 | 管理多样化 37 | 人力资源内部环境 38 | 工作与家庭 39 | 人力资源管理功能 40 | 人力资源管理角色 41 | 审计法 42 | 分析法 43 | 人力资源研究 44 | 人力资源研究过程 45 | 案例研究 46 | 调查反馈法 47 | 相关分析 48 | 回归分析 49 | 判别分析 50 | 专家系统 51 | 集成软件 52 | 工作背景 53 | 工作分析 54 | 工作分析流程 55 | 工作说明 56 | 工作识别 57 | 工作规范 58 | 工作分析信息 59 | 问卷调查法 60 | 访谈法 61 | 观察法 62 | 现场工作日记 63 | 日志法 64 | 工作分析程序法 65 | 工作分析计划表 66 | 功能性工作分析法 67 | 职位分析问卷法 68 | 关键事变技术 69 | 工作分析专业指南 70 | 职业测定系统 71 | 工作设计 72 | 工作丰富化 73 | 工作扩大化 74 | 以员工为中心的工作再设计 75 | 激励型工作设计法 76 | 机械型工作设计法 77 | 生物型工作设计法 78 | 知觉运动型工作设计法 79 | 人力资源规划 80 | 人力资源规划流程 81 | 人力资源调查 82 | 人力资源信息系统 83 | 人力资源需求预测 84 | 长期趋势 85 | 循环变动 86 | 季节变动 87 | 趋势分析 88 | 比率分析 89 | 零基预测 90 | 模拟方法 91 | 计算机预测系统 92 | 供给预测 93 | 内部供给 94 | 资格数据库 95 | 技能储备 96 | 继任计划 97 | 外部招聘环境 98 | 内部招聘环境 99 | 招聘方法 100 | 招聘备择方案 101 | 核心人员和应急人员 102 | 广告招聘 103 | 职业介绍所 104 | 校园招聘 105 | 特殊事件 106 | 实习招聘 107 | 主管人员代理招聘机构 108 | 员工推荐 109 | 求职者自荐式招聘 110 | 简历数据库 111 | 自动求职跟踪系统 112 | 电脑化职业生涯行进系统 113 | 内部提升 114 | 主管推荐 115 | 工作公告和工作投标 116 | 职业生涯开发系统 117 | 员工选拔 118 | 决策速度 119 | 选拔等级 120 | 候选人数量 121 | 选拔率 122 | 试用期 123 | 拒绝求职者 124 | 选拔决策 125 | 光环与触角效应 126 | 申请表 127 | 面试计划清单 128 | 初步面试 129 | 求职面试 130 | 面试目标 131 | 面试内容 132 | 非结构化面试 133 | 结构化面试 134 | 情景面试 135 | 基于能力的面试 136 | 系列式面试 137 | 小组面试 138 | 会议型面试 139 | 压力面试 140 | 实际岗位演习 141 | 个人证明材料检查 142 | 背景调查 143 | 证明人 144 | 标准化 145 | 客观性与规划 146 | 测试信度 147 | 测试效应 148 | 标准关联有效性 149 | 内容有效性 150 | 结构有效性 151 | 录用分数线 152 | 认知能力测试 153 | 运动神经能力测试 154 | 人格投射测试 155 | 主题统觉测试 156 | 个性测试 157 | 兴趣测试 158 | 业务知识测试 159 | 工作样本测试 160 | 管理评价中心 161 | 测谎测试 162 | 笔迹分析法 163 | 组织变化 164 | 变化阻力 165 | 减少阻力 166 | 员工上岗引导 167 | 现实冲击 168 | 上岗引导阶段 169 | 重新导向 170 | 适应组织 171 | 上岗引导目标 172 | 人力资源开发 173 | 开发影响因素 174 | 人力资源开发目标 175 | 人力资源开发过程 176 | 人力资源开发需求 177 | 人力资源开发分析 178 | 管理层开发 179 | 外部与内部开发 180 | 人力资源开发媒介 181 | 人力资源开发评价 182 | 柯氏模式 183 | 控制实验法 184 | 工作培训合作法 185 | 内部开发中心 186 | 教练方法 187 | 辅导方法 188 | 行为建模 189 | 角色扮演 190 | 初级董事会 191 | 行动学习 192 | 工作轮换 193 | 文件筐训练 194 | 管理游戏 195 | 领导者匹配培训 196 | 会议方法 197 | 程序化教学 198 | 基于计算机的培训 199 | 远程教育 200 | 的管理层开发 201 | 课堂教学 202 | 在职培训 203 | 学徒培训 204 | 工作指导培训 205 | 模拟培训 206 | 技工学校培训 207 | 组织气候 208 | 组织特征 209 | 管理流程 210 | 管理风格 211 | 问题求解 212 | 文化类型 213 | 参与文化 214 | 工作系统 215 | 组织发展 216 | 组织发展的方法 217 | 调查反馈 218 | 质量图 219 | 充实工作内容 220 | 交流分析 221 | 工作期质量 222 | 敏感性训练 223 | 全面质量管理 224 | 团队建设 225 | 组织发展评价 226 | 职业规划 227 | 职业规划影响因素 228 | 人生阶段 229 | 职业动机 230 | 职业性向测试 231 | 通用资质测验组系 232 | 自我评价 233 | 强 弱 平衡表 234 | 好恶调查表 235 | 组织职业规划 236 | 职业途径 237 | 传统职业途径 238 | 网状职业途径信息 239 | 横向职业途径 240 | 双重职业途径 241 | 职业途径信息 242 | 停滞 243 | 职业发展 244 | 职业发展方法 245 | 绩效考评 246 | 绩效考评目的 247 | 绩效考评原则 248 | 绩效考评应用 249 | 绩效考评流程 250 | 考评的限制因素 251 | 考评期 252 | 上级考评 253 | 同事考评 254 | 小组考评 255 | 自我考评 256 | 下级考评 257 | 绩效考评标准不清 258 | 晕轮效应 259 | 个人偏见 260 | 近因性错误 261 | 居中趋势 262 | 偏松或偏紧倾向 263 | 考评标准化 264 | 考评反馈 265 | 考评者培训 266 | 考评面谈 267 | 评价中心 268 | 叙述法 269 | 作业标准法 270 | 图解式考评 271 | 强制分布法 272 | 排序考评法 273 | 交替排序法 274 | 员工比较系统 275 | 配对比较法 276 | 目标管理法 277 | 关键事件法 278 | 行为锚定等级法 279 | 行为观察量表 280 | 员工报酬 281 | 直接和间接经济报酬 282 | 非经济报酬 283 | 报酬公平 284 | 外部公平 285 | 内部公平 286 | 员工公平 287 | 团队公平 288 | 报酬政策 289 | 薪资调查 290 | 基准工作 291 | 生活费用 292 | 豁免员工 293 | 工作评价 294 | 报酬因素 295 | 排序法 296 | 分类法 297 | 计点法 298 | 因素比较法 299 | 工作定价 300 | 工资等级 301 | 工资曲线 302 | 工资幅度 303 | 工资率调整 304 | 计时工资制 305 | 计件工资制 306 | 标准工时制 307 | 技能工资制 308 | 市场定价工资制 309 | 管理层薪资水平 310 | 专业人员报酬制度 311 | 可比价值 312 | 工资保密 313 | 压缩工资 314 | 团队或班组激励计划 315 | 年终分红 316 | 分红制 317 | 资本积累方案 318 | 股票期权 319 | 绩效工资 320 | 利润分享计划 321 | 员工持股计划 322 | 斯坎伦计划 323 | 收益分享计划 324 | 风险工资计划 325 | 奖金 326 | 佣金计划 327 | 福利 328 | 补充性工资福利 329 | 精神健康的福利 330 | 社会保障 331 | 失业保险 332 | 病假 333 | 解雇补贴 334 | 补充失业福利 335 | 工伤补偿 336 | 团体人寿保险 337 | 养老金计划 338 | 个人养老金账户 339 | 固定收益制 340 | 固定缴款机 341 | 提前退休窗口 342 | 额外酬劳 343 | 员工服务 344 | 员工咨询服务 345 | 儿童照顾 346 | 老年照顾 347 | 教育津贴 348 | 工作环境 349 | 弹性工作时间 350 | 压缩工作周 351 | 工作分担 352 | 弹性报酬计划 353 | 在家工作 354 | 修订的退休制度 355 | 员工安全与健康 356 | 职业安全与健康法案 357 | 事故损失 358 | 安全方案 359 | 安全诱因方案 360 | 安全委员会 361 | 安全负责人 362 | 事故调查 363 | 事故频率 364 | 事故严重率 365 | 安全方案评价 366 | 不安全条件 367 | 不安全行为 368 | 事故倾向 369 | 事故预防 370 | 精力衰弱 371 | 减少衰弱 372 | 压力来源 373 | 文化冲击 374 | 克服压力 375 | 生物反馈 376 | 超自然冥想 377 | 人类工程学 378 | 身体健康方案 379 | 员工援助方案 380 | 施乐方案 381 | 382 | 383 | -------------------------------------------------------------------------------- /spiderDance/pattern_chinese.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/15 14:08 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : pattern_chinese.py 7 | # @Software: PyCharm 8 | # @Desc : 对中文的正则匹配及词汇查找 9 | import re 10 | 11 | def filter(string): 12 | if not re.search('([1-9])+', string): 13 | filtrate = re.compile(u'[^\u4E00-\u9FA5]') # 非中文 14 | filtered_str = filtrate.sub(r' ', string) # replace 15 | return filtered_str.strip('\n') 16 | 17 | 18 | file = open("HRwordsCE.txt", encoding='utf8', mode='r') 19 | entitys = [] 20 | for line in file.readlines(): 21 | new_str = filter(line) 22 | # for batch in line.strip('\n'): 23 | # if batch.isspace() or ord(batch) in range(97, 123) or ord(batch) in range(65, 91): 24 | # continue 25 | # else: 26 | # new_str.append(batch) 27 | # new_str = "".join(new_str) 28 | if new_str and not new_str.isspace(): 29 | entitys.append(new_str.strip(' ')) 30 | print(entitys) 31 | file2 = open("HRwords.txt", encoding='utf8', mode='w') 32 | for entity in entitys: 33 | file2.write(entity + '\n') 34 | file2.close() 35 | 36 | 37 | -------------------------------------------------------------------------------- /spiderDance/spider_test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2019/4/15 13:24 4 | # @Author : Erisu 5 | # @contact : guoyu01988@163.com 6 | # @File : spider_test.py 7 | # @Software: PyCharm 8 | # @Desc : 9 | 10 | from requests_html import HTMLSession 11 | 12 | 13 | file = open("HRwords.txt", encoding='utf8') 14 | file2 = open("spider_result.txt", mode='a', encoding='utf8') 15 | entity_words = [] 16 | for line in file.readlines(): 17 | entity_words.append(line.strip('\n')) 18 | 19 | ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3514.0 Safari/537.36" 20 | 21 | words = [] 22 | for word in entity_words: 23 | session = HTMLSession() 24 | url = "https://baike.baidu.com/item/" + word 25 | try: 26 | print(word) 27 | r = session.get(url, headers={'user-agent': ua}) 28 | sel = 'body > div.body-wrapper > div.content-wrapper > div > div.main-content > div.para' 29 | finds = r.html.find(sel) 30 | if finds: 31 | for find in finds: 32 | # print(find.text) 33 | file2.write(find.text.strip('\n') + '\n') 34 | session.close() 35 | # time.sleep(5) 36 | except Exception as e: 37 | print(e) 38 | words.append(word) 39 | finally: 40 | session.close() 41 | print("*" * 100) 42 | while words: 43 | print(words) 44 | for word in words: 45 | session = HTMLSession() 46 | url = "https://baike.baidu.com/item/" + word 47 | try: 48 | r = session.get(url, headers={'user-agent': ua}) 49 | sel = 'body > div.body-wrapper > div.content-wrapper > div > div.main-content > div.para' 50 | finds = r.html.find(sel) 51 | if finds: 52 | print(word) 53 | file2.write(finds.text.strip('\n') + '\n') 54 | session.close() 55 | words.remove(word) 56 | # time.sleep(5) 57 | finally: 58 | session.close() 59 | file2.close() 60 | -------------------------------------------------------------------------------- /test/test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/3/20 14:15 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : test.py 8 | @Software: PyCharm 9 | @Desc: 10 | ''' 11 | import jieba 12 | import jieba.posseg as posseg 13 | import numpy 14 | import pickle 15 | import torch 16 | import argparse 17 | import sys 18 | 19 | # MAX_LEN = 35 20 | # index = 5 21 | # word2vec_file = open('../wordsEmbedding/result/word2vec_xinchou.pkl', 'rb') 22 | # all_word_vec = pickle.load(word2vec_file) 23 | # a = numpy.append(all_word_vec["薪酬"], [20], axis=0) 24 | # print(a.shape) 25 | # triple_vec = numpy.empty(shape=MAX_LEN, dtype=numpy.float) 26 | # triple_vec = numpy.append(triple_vec, a, axis=0) 27 | # lista = [] 28 | # lista.append(triple_vec) 29 | # tri = numpy.asarray(lista, dtype=numpy.float) 30 | # tri = numpy.expand_dims(tri, axis=0) 31 | # 32 | # print(tri.shape) 33 | # print(tri[0][:]) 34 | # a = numpy.arange(100).reshape(10, -1) 35 | # b = torch.from_numpy(a) 36 | # pred = torch.max(b, 1)[1] 37 | # # print(pred) 38 | # a = (3, 4, 6, 5, 7, 8) 39 | # b = torch.arange(3, 9) 40 | # pred = numpy.fromiter(a, dtype=numpy.int) 41 | # acc = (pred == b.numpy()).sum()/b.size(0) 42 | # print(acc) 43 | # print(sys.argv[-1]) 44 | # if sys.argv[-1] == "False": 45 | # print("false") 46 | import jieba.posseg as posseg 47 | 48 | # import itertools 49 | # 50 | # list1 = ['a', 'b', 'cc', 'd', 'e'] 51 | # list2 = [] 52 | # # for i in range(1, len(list1) + 1): 53 | # i=2 54 | # iter = itertools.permutations(list1, i) 55 | # list2.append(list(iter)) 56 | # print(list2[0]) 57 | # print(list2[0][0]) 58 | # print(list2[0][0][0]) 59 | 60 | # import torch 61 | # 62 | # tensor = torch.rand(2, 3) 63 | # print(tensor) 64 | # print(torch.max(tensor, 1)[0], torch.max(tensor, 1)[1]) 65 | # print(torch.max(tensor, 1)[0][0]) 66 | # if torch.max(tensor, 1)[0][0] > 0.3: 67 | # print("zz") 68 | 69 | # import uuid 70 | # 71 | # print(uuid.uuid4()) 72 | # print(uuid.uuid4()) 73 | # a={} 74 | # a[uuid.uuid4()] = uuid.uuid4() 75 | 76 | # D1 = {'name': 'Bob', 'age': [10, 20]} 77 | # D3 = {'name': 'tom', 'height': '10px', 'born': '1997'} 78 | # D1.update(D3) 79 | # for key, value in D1.items(): 80 | # print(key, ":", value) 81 | # 82 | # sorted_dict = sorted(D1.items(), key=lambda x: x[0]) 83 | # print(type(sorted_dict)) 84 | # print(sorted_dict[0][-1][-1]) 85 | # import torch 86 | # 87 | # tensor = torch.arange(10).view(-1, 5) 88 | # for mm in tensor: 89 | # print(mm[-1]) 90 | # for _ in range(50): 91 | # print("hello world") 92 | # a = torch.rand(4, 2, 28, 28) 93 | # # 增加一个组 94 | # print(a.unsqueeze(-1).shape) 95 | # a = numpy.random.rand(10) 96 | # print(a) 97 | # print(a.shape) 98 | # file = open("../CNNmodel/datas/word2vec.pkl",'rb') 99 | # aa = pickle.load(file) 100 | # print(aa['员工关系']) 101 | 102 | # a = [1, 2, 3, 4, 5, 6, 8] 103 | # print(type(numpy.array(a))) 104 | # print(a[1:]) 105 | # import torch.nn as nn 106 | # 107 | # layer = nn.Conv2d(1, 64, kernel_size=(5, 128), stride=1, padding=(2, 0)) 108 | # print(layer.forward(torch.ones(10, 1, 20, 128)).size()) 109 | # import torch, numpy 110 | # 111 | # a = torch.ones(10, 3, 3) 112 | # b = torch.ones(5, 3, 3) 113 | # c = torch.ones(7, 3, 3) 114 | # x = torch.cat((a, b, c), dim=0) 115 | # s = x.view(x.shape[0], -1) 116 | # print(s.shape) 117 | import torch.nn as nn 118 | 119 | file1 = open("正确.txt", encoding='UTF8', mode='r') 120 | file2 = open("错误.txt", encoding='UTF8', mode='r') 121 | a = {} 122 | b = {} 123 | a.setdefault('依据', []) 124 | a.setdefault('决定', []) 125 | a.setdefault('包含', []) 126 | a.setdefault('正相关', []) 127 | a.setdefault('负相关', []) 128 | a.setdefault('因果', []) 129 | b.setdefault('依据', []) 130 | b.setdefault('决定', []) 131 | b.setdefault('包含', []) 132 | b.setdefault('正相关', []) 133 | b.setdefault('负相关', []) 134 | b.setdefault('因果', []) 135 | for line in file1.readlines(): 136 | if line.strip('\n') == '': 137 | continue 138 | line_parts = line.strip('\n').split(',') 139 | if line_parts[2] in a.keys(): 140 | a[line_parts[2]].append(line.strip('\n')) 141 | for line in file2.readlines(): 142 | if line.strip('\n') == '': 143 | continue 144 | line_parts = line.strip('\n').split(',') 145 | if line_parts[2] in b.keys(): 146 | b[line_parts[2]].append(line.strip('\n')) 147 | file1.close() 148 | file2.close() 149 | for key, values in a.items(): 150 | print("正确:" + key + ":", len(a[key])) 151 | print("错误:" + key + ":", len(b[key])) 152 | print("准确率:", len(a[key]) / (len(a[key]) + len(b[key]))) 153 | file_temp = open("../temp/" + key + ".csv", encoding='utf8', mode='w') 154 | for value in values: 155 | file_temp.write(value + '\n') 156 | file_temp.close() 157 | -------------------------------------------------------------------------------- /test/test2.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | @Time : 2019/2/27 19:52 5 | @Author : Erisu- 6 | @contact: guoyu01988@163.com 7 | @File : test2.py 8 | @Software: PyCharm 9 | @Desc: 10 | ''' 11 | 12 | file = open("../deal_book/spider_result.txt", encoding='utf8', mode='r') 13 | length = len(file.readlines()) // 30 14 | file.close() 15 | len_dict = {} 16 | len_dict[0] = [] 17 | count = 0 18 | index = 0 19 | file = open("../deal_book/spider_result.txt", encoding='utf8', mode='r') 20 | for line in file.readlines(): 21 | if line.strip('\n') == "": 22 | continue 23 | if index <= length: 24 | len_dict[count].append(line) 25 | index += 1 26 | else: 27 | index = 0 28 | count += 1 29 | len_dict[count] = [] 30 | len_dict[count].append(line) 31 | for key, values in len_dict.items(): 32 | temp_file = open("../CNNmodel/datas/tempBook/sp" + str(key) + ".txt", encoding='utf8', mode='w') 33 | for value in values: 34 | temp_file.write(value.strip('\n') + '\n') 35 | file.close() 36 | --------------------------------------------------------------------------------