├── LICENSE ├── README.md ├── emotion_LSTM.py ├── process_text.py ├── stop_words.txt ├── test_data ├── neg.txt ├── neg.xls ├── pos.txt └── pos.xls └── word2vex.py /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 sph116 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # lstm_emotion 3 | word2vec+lstm情感分析 4 | ## 训练步骤: 5 | 1.使用谭松波酒店评论数据集进行word2vec训练,word2vec参数为size=150,min_count=1,window=5 6 | 2.根据训练完成的词向量模型提取词向量与索引字典,利用pickle存储为序列化数据。 7 | 3.根据索引字典提取每句特征 传入分类器进行训练,对训练过程的验证集与训练集的acc与loss进行可视化。 8 | 4.训练相关参数为 vocab_dim=100,maxlen=150,batch_size=100,n_epoch=4,input_length=150 9 | 5.最终训练效果acc=88.6% 效果较差,只做demo用。 10 | 11 | ## 结构: 12 | 1. emotion_LSTM.py lstm模型训练 13 | 2. process_text.py 文本处理 14 | 3. word2vex.py 训练 15 | 4. stop_words.txt 停用词 16 | 5. test_data 训练数据 正负面样本 17 | 18 | ## 注: 19 | 1.后续优化可增加word2vec的文本训练数量,本文只将情感分析语料作为词向量训练集,效果较差。 20 | 2.process_txt作为文本处理用,未开源,需要自己重写。文本至少需要简单的去停用词。 21 | -------------------------------------------------------------------------------- /emotion_LSTM.py: -------------------------------------------------------------------------------- 1 | """ 2 | 功能:利用词向量+LSTM进行文本分类 3 | """ 4 | 5 | import numpy as np 6 | np.random.seed(1337) # For Reproducibility 7 | import pickle 8 | from keras.preprocessing import sequence 9 | from keras.models import Sequential 10 | from keras.layers.embeddings import Embedding 11 | from keras.layers.recurrent import LSTM 12 | from keras.layers.core import Dense, Dropout, Activation 13 | from process_text import del_stopwords 14 | from sklearn.cross_validation import train_test_split 15 | import matplotlib.pyplot as plt #可视化类 16 | from keras.models import load_model 17 | import keras 18 | 19 | 20 | 21 | # 参数设置 22 | vocab_dim = 100 # 向量维度 23 | maxlen = 150 # 文本保留的最大长度 24 | batch_size = 100 25 | n_epoch = 4 26 | input_length = 150 27 | 28 | f = open("./model/评价语料索引及词向量2.pkl", 'rb') # 预先训练好的 29 | index_dict = pickle.load(f) # 索引字典,{单词: 索引数字} 30 | word_vectors = pickle.load(f) # 词向量, {单词: 词向量(100维长的数组)} 31 | 32 | def show_train_history(train_history,train, velidation): 33 | """ 34 | 可视化训练过程 对比 35 | :param train_history: 36 | :param train: 37 | :param velidation: 38 | :return: 39 | """ 40 | plt.plot(train_history.history[train]) 41 | plt.plot(train_history.history[velidation]) 42 | plt.title("Train History") #标题 43 | plt.xlabel('Epoch') #x轴标题 44 | plt.ylabel(train) #y轴标题 45 | plt.legend(['train', 'test'], loc='upper left') #图例 左上角 46 | plt.show() 47 | 48 | def text_to_index_array(p_new_dic, p_sen): # 文本转为索引数字模式 49 | """ 50 | 文本或列表转换为索引数字 51 | :param p_new_dic: 52 | :param p_sen: 53 | :return: 54 | """ 55 | if type(p_sen) == list: 56 | new_sentences = [] 57 | for sen in p_sen: 58 | new_sen = [] 59 | for word in sen: 60 | try: 61 | new_sen.append(p_new_dic[word]) # 单词转索引数字 62 | except: 63 | new_sen.append(0) # 索引字典里没有的词转为数字0 64 | new_sentences.append(new_sen) 65 | return np.array(new_sentences) 66 | else: 67 | new_sentences = [] 68 | sentences = [] 69 | p_sen = p_sen.split(" ") 70 | for word in p_sen: 71 | try: 72 | sentences.append(p_new_dic[word]) # 单词转索引数字 73 | except: 74 | sentences.append(0) # 索引字典里没有的词转为数字0 75 | new_sentences.append(sentences) 76 | return new_sentences 77 | 78 | # else: 79 | # print(p_sen) 80 | # p_sen = p_sen.split(" ") 81 | # new_sentences = [] 82 | # for sen in p_sen: 83 | # try: 84 | # new_sentences.append(p_new_dic[word]) # 单词转索引数字 85 | # except: 86 | # new_sentences.append(0) # 索引字典里没有的词转为数字0 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | # 定义网络结构 96 | def train_lstm(p_n_symbols, p_embedding_weights, p_X_train, p_y_train, p_X_test, p_y_test, X_test_l): 97 | print('创建模型...') 98 | model = Sequential() 99 | model.add(Embedding(output_dim=vocab_dim, 100 | input_dim=p_n_symbols, 101 | mask_zero=True, 102 | weights=[p_embedding_weights], 103 | input_length=input_length)) 104 | 105 | model.add(LSTM(output_dim=100, 106 | activation='sigmoid', 107 | inner_activation='hard_sigmoid')) 108 | model.add(Dropout(0.5)) 109 | model.add(Dense(units=512, 110 | activation='relu')) 111 | model.add(Dropout(0.5)) 112 | model.add(Dense(units=1, # 输出层1个神经元 1代表正面 0代表负面 113 | activation='sigmoid')) 114 | model.summary() 115 | 116 | print('编译模型...') 117 | model.compile(loss='binary_crossentropy', 118 | optimizer='adam', 119 | metrics=['accuracy']) 120 | 121 | print("训练...") 122 | train_history = model.fit(p_X_train, p_y_train, batch_size=batch_size, nb_epoch=n_epoch, 123 | validation_data=(p_X_test, p_y_test)) 124 | 125 | print("评估...") 126 | score, acc = model.evaluate(p_X_test, p_y_test, batch_size=batch_size) 127 | label = model.predict(p_X_test) 128 | print('Test score:', score) 129 | print('Test accuracy:', acc) 130 | for (a, b, c) in zip(p_y_test, X_test_l, label): 131 | print("原文为:"+ "".join(b)) 132 | print("预测倾向为", a) 133 | print("真实倾向为", c) 134 | 135 | show_train_history(train_history, 'acc', 'val_acc') # 训练集准确率与验证集准确率 折线图 136 | show_train_history(train_history, 'loss', 'val_loss') # 训练集误差率与验证集误差率 折线图 137 | 138 | """保存模型""" 139 | model.save('./model/emotion_model_LSTM.h5') 140 | print("模型保存成功") 141 | 142 | def prodection(new_dic, test_txt): 143 | # 读取大语料文本 144 | 145 | 146 | """加载训练模型""" 147 | keras.backend.clear_session() 148 | model = load_model('./model/emotion_model_LSTM.h5') 149 | 150 | test_txt = del_stopwords(test_txt) 151 | 152 | test_txt = text_to_index_array(new_dic, test_txt) 153 | 154 | test_txt = sequence.pad_sequences(test_txt, maxlen=maxlen) 155 | 156 | 157 | predect = model.predict_classes(test_txt) 158 | # print(predect) 159 | item = {0: "负面", 1: "正面"} 160 | print(item[predect[0][0]]) 161 | # return predect[0][0] 162 | 163 | 164 | if __name__ == "__main__": 165 | 166 | try: 167 | model = load_model('./model/emotion_model_LSTM.h5') 168 | # 读取大语料文本 169 | 170 | new_dic = index_dict 171 | 172 | test_txt = input("请输入要预测的内容") 173 | prodection(new_dic, test_txt) 174 | 175 | except Exception as e: 176 | print(e) 177 | 178 | print("Setting up Arrays for Keras Embedding Layer...") 179 | n_symbols = len(index_dict) + 1 # 索引数字的个数,因为有的词语索引为0,所以+1 180 | embedding_weights = np.zeros((n_symbols, 100)) # 创建一个n_symbols * 100的0矩阵 181 | 182 | 183 | for w, index in index_dict.items(): # 从索引为1的词语开始,用词向量填充矩阵 184 | embedding_weights[index, :] = word_vectors[w] # 词向量矩阵,第一行是0向量(没有索引为0的词语,未被填充) 185 | 186 | 187 | # 读取语料分词文本,转为句子列表(句子为词汇的列表) 188 | with open("./原始语料/neg.txt", "r", encoding='UTF-8') as f: 189 | neg_data1 = f.readlines() 190 | 191 | with open("./原始语料/pos.txt", "r", encoding='UTF-8') as g: 192 | pos_data1 = g.readlines() 193 | 194 | neg_data = sorted(set(neg_data1), key=neg_data1.index) #列表去重 保持原来的顺序 195 | pos_data = sorted(set(pos_data1), key=pos_data1.index) 196 | 197 | neg_data = [del_stopwords(data) for data in neg_data] 198 | pos_data = [del_stopwords(data) for data in pos_data] 199 | data = neg_data + pos_data 200 | 201 | 202 | # 读取语料类别标签 203 | label_list = ([0] * len(neg_data) + [1] * len(pos_data)) 204 | 205 | 206 | # 划分训练集和测试集,此时都是list列表 207 | X_train_l, X_test_l, y_train_l, y_test_l = train_test_split(data, label_list, test_size=0.2) 208 | 209 | # 转为数字索引形式 210 | 211 | # token = Tokenizer(num_words=3000) #字典数量 212 | # token.fit_on_texts(train_text) 213 | 214 | X_train = text_to_index_array(index_dict, X_train_l) 215 | X_test = text_to_index_array(index_dict, X_test_l) 216 | 217 | print("训练集shape: ", X_train.shape) 218 | print("测试集shape: ", X_test.shape) 219 | 220 | 221 | y_train = np.array(y_train_l) # 转numpy数组 222 | y_test = np.array(y_test_l) 223 | 224 | 225 | 226 | # 将句子截取相同的长度maxlen,不够的补0 227 | X_train = sequence.pad_sequences(X_train, maxlen=maxlen) 228 | 229 | X_test = sequence.pad_sequences(X_test, maxlen=maxlen) 230 | print('X_train shape:', X_train.shape) 231 | print('X_test shape:', X_test.shape) 232 | # print(type(X_train), X_train[0: 5]) 233 | print(type(y_train), y_train[0: 5]) 234 | 235 | 236 | train_lstm(n_symbols, embedding_weights, X_train, y_train, X_test, y_test, X_test_l) 237 | 238 | test_txt = input("请输入要预测的内容") 239 | prodection(index_dict, test_txt) 240 | 241 | 242 | 243 | -------------------------------------------------------------------------------- /process_text.py: -------------------------------------------------------------------------------- 1 | # from TextUtils import get_text 2 | # from Deal import DealWithText 3 | import jieba 4 | import os 5 | 6 | stop_words = open("./stop_words.txt", "r", encoding="utf-8") 7 | stop_words = [word.replace("\n", "") for word in stop_words] 8 | 9 | def del_stop_words(text): 10 | """ 11 | 删除每个文本中的停用词 12 | :param text: 13 | :return: 14 | """ 15 | word_ls = jieba.lcut(text) 16 | word_ls = [i for i in word_ls if i not in stopwords] 17 | return word_ls 18 | -------------------------------------------------------------------------------- /stop_words.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 | 0 27 | 1 28 | 2 29 | 3 30 | 4 31 | 5 32 | 6 33 | 7 34 | 8 35 | 9 36 | : 37 | :// 38 | :: 39 | ; 40 | < 41 | = 42 | > 43 | >> 44 | ? 45 | @ 46 | A 47 | Lex 48 | [ 49 | \ 50 | ] 51 | ^ 52 | _ 53 | ` 54 | exp 55 | sub 56 | sup 57 | | 58 | } 59 | ~ 60 | ~~~~ 61 | · 62 | × 63 | ××× 64 | Δ 65 | Ψ 66 | γ 67 | μ 68 | φ 69 | φ. 70 | В 71 | — 72 | —— 73 | ——— 74 | ‘ 75 | ’ 76 | ’‘ 77 | “ 78 | ” 79 | ”, 80 | … 81 | …… 82 | …………………………………………………③ 83 | ′∈ 84 | ′| 85 | ℃ 86 | Ⅲ 87 | ↑ 88 | → 89 | ∈[ 90 | ∪φ∈ 91 | ≈ 92 | ① 93 | ② 94 | ② 95 | ③ 96 | ③] 97 | ④ 98 | ⑤ 99 | ⑥ 100 | ⑦ 101 | ⑧ 102 | ⑨ 103 | ⑩ 104 | ── 105 | ■ 106 | ▲ 107 |   108 | 、 109 | 。 110 | 〈 111 | 〉 112 | 《 113 | 》 114 | 》), 115 | 」 116 | 『 117 | 』 118 | 【 119 | 】 120 | 〔 121 | 〕 122 | 〕〔 123 | ㈧ 124 | 一 125 | 一. 126 | 一一 127 | 一下 128 | 一个 129 | 一些 130 | 一何 131 | 一切 132 | 一则 133 | 一则通过 134 | 一天 135 | 一定 136 | 一方面 137 | 一旦 138 | 一时 139 | 一来 140 | 一样 141 | 一次 142 | 一片 143 | 一番 144 | 一直 145 | 一致 146 | 一般 147 | 一起 148 | 一转眼 149 | 一边 150 | 一面 151 | 七 152 | 万一 153 | 三 154 | 三天两头 155 | 三番两次 156 | 三番五次 157 | 上 158 | 上下 159 | 上升 160 | 上去 161 | 上来 162 | 上述 163 | 上面 164 | 下 165 | 下列 166 | 下去 167 | 下来 168 | 下面 169 | 不 170 | 不一 171 | 不下 172 | 不久 173 | 不了 174 | 不亦乐乎 175 | 不仅 176 | 不仅...而且 177 | 不仅仅 178 | 不仅仅是 179 | 不会 180 | 不但 181 | 不但...而且 182 | 不光 183 | 不免 184 | 不再 185 | 不力 186 | 不单 187 | 不变 188 | 不只 189 | 不可 190 | 不可开交 191 | 不可抗拒 192 | 不同 193 | 不外 194 | 不外乎 195 | 不够 196 | 不大 197 | 不如 198 | 不妨 199 | 不定 200 | 不对 201 | 不少 202 | 不尽 203 | 不尽然 204 | 不巧 205 | 不已 206 | 不常 207 | 不得 208 | 不得不 209 | 不得了 210 | 不得已 211 | 不必 212 | 不怎么 213 | 不怕 214 | 不惟 215 | 不成 216 | 不拘 217 | 不择手段 218 | 不敢 219 | 不料 220 | 不断 221 | 不日 222 | 不时 223 | 不是 224 | 不曾 225 | 不止 226 | 不止一次 227 | 不比 228 | 不消 229 | 不满 230 | 不然 231 | 不然的话 232 | 不特 233 | 不独 234 | 不由得 235 | 不知不觉 236 | 不管 237 | 不管怎样 238 | 不经意 239 | 不胜 240 | 不能 241 | 不能不 242 | 不至于 243 | 不若 244 | 不要 245 | 不论 246 | 不起 247 | 不足 248 | 不过 249 | 不迭 250 | 不问 251 | 不限 252 | 与 253 | 与其 254 | 与其说 255 | 与否 256 | 与此同时 257 | 专门 258 | 且 259 | 且不说 260 | 且说 261 | 两者 262 | 严格 263 | 严重 264 | 个 265 | 个人 266 | 个别 267 | 中小 268 | 中间 269 | 丰富 270 | 串行 271 | 临 272 | 临到 273 | 为 274 | 为主 275 | 为了 276 | 为什么 277 | 为什麽 278 | 为何 279 | 为止 280 | 为此 281 | 为着 282 | 主张 283 | 主要 284 | 举凡 285 | 举行 286 | 乃 287 | 乃至 288 | 乃至于 289 | 么 290 | 之 291 | 之一 292 | 之前 293 | 之后 294 | 之後 295 | 之所以 296 | 之类 297 | 乌乎 298 | 乎 299 | 乒 300 | 乘 301 | 乘势 302 | 乘机 303 | 乘胜 304 | 乘虚 305 | 乘隙 306 | 九 307 | 也 308 | 也好 309 | 也就是说 310 | 也是 311 | 也罢 312 | 了 313 | 了解 314 | 争取 315 | 二 316 | 二来 317 | 二话不说 318 | 二话没说 319 | 于 320 | 于是 321 | 于是乎 322 | 云云 323 | 云尔 324 | 互 325 | 互相 326 | 五 327 | 些 328 | 交口 329 | 亦 330 | 产生 331 | 亲口 332 | 亲手 333 | 亲眼 334 | 亲自 335 | 亲身 336 | 人 337 | 人人 338 | 人们 339 | 人家 340 | 人民 341 | 什么 342 | 什么样 343 | 什麽 344 | 仅 345 | 仅仅 346 | 今 347 | 今后 348 | 今天 349 | 今年 350 | 今後 351 | 介于 352 | 仍 353 | 仍旧 354 | 仍然 355 | 从 356 | 从不 357 | 从严 358 | 从中 359 | 从事 360 | 从今以后 361 | 从优 362 | 从古到今 363 | 从古至今 364 | 从头 365 | 从宽 366 | 从小 367 | 从新 368 | 从无到有 369 | 从早到晚 370 | 从未 371 | 从来 372 | 从此 373 | 从此以后 374 | 从而 375 | 从轻 376 | 从速 377 | 从重 378 | 他 379 | 他人 380 | 他们 381 | 他是 382 | 他的 383 | 代替 384 | 以 385 | 以上 386 | 以下 387 | 以为 388 | 以便 389 | 以免 390 | 以前 391 | 以及 392 | 以后 393 | 以外 394 | 以後 395 | 以故 396 | 以期 397 | 以来 398 | 以至 399 | 以至于 400 | 以致 401 | 们 402 | 任 403 | 任何 404 | 任凭 405 | 任务 406 | 企图 407 | 伙同 408 | 会 409 | 伟大 410 | 传 411 | 传说 412 | 传闻 413 | 似乎 414 | 似的 415 | 但 416 | 但凡 417 | 但愿 418 | 但是 419 | 何 420 | 何乐而不为 421 | 何以 422 | 何况 423 | 何处 424 | 何妨 425 | 何尝 426 | 何必 427 | 何时 428 | 何止 429 | 何苦 430 | 何须 431 | 余外 432 | 作为 433 | 你 434 | 你们 435 | 你是 436 | 你的 437 | 使 438 | 使得 439 | 使用 440 | 例如 441 | 依 442 | 依据 443 | 依照 444 | 依靠 445 | 便 446 | 便于 447 | 促进 448 | 保持 449 | 保管 450 | 保险 451 | 俺 452 | 俺们 453 | 倍加 454 | 倍感 455 | 倒不如 456 | 倒不如说 457 | 倒是 458 | 倘 459 | 倘使 460 | 倘或 461 | 倘然 462 | 倘若 463 | 借 464 | 借以 465 | 借此 466 | 假使 467 | 假如 468 | 假若 469 | 偏偏 470 | 做到 471 | 偶尔 472 | 偶而 473 | 傥然 474 | 像 475 | 儿 476 | 允许 477 | 元/吨 478 | 充其极 479 | 充其量 480 | 充分 481 | 先不先 482 | 先后 483 | 先後 484 | 先生 485 | 光 486 | 光是 487 | 全体 488 | 全力 489 | 全年 490 | 全然 491 | 全身心 492 | 全部 493 | 全都 494 | 全面 495 | 八 496 | 八成 497 | 公然 498 | 六 499 | 兮 500 | 共 501 | 共同 502 | 共总 503 | 关于 504 | 其 505 | 其一 506 | 其中 507 | 其二 508 | 其他 509 | 其余 510 | 其后 511 | 其它 512 | 其实 513 | 其次 514 | 具体 515 | 具体地说 516 | 具体来说 517 | 具体说来 518 | 具有 519 | 兼之 520 | 内 521 | 再 522 | 再其次 523 | 再则 524 | 再有 525 | 再次 526 | 再者 527 | 再者说 528 | 再说 529 | 冒 530 | 冲 531 | 决不 532 | 决定 533 | 决非 534 | 况且 535 | 准备 536 | 凑巧 537 | 凝神 538 | 几 539 | 几乎 540 | 几度 541 | 几时 542 | 几番 543 | 几经 544 | 凡 545 | 凡是 546 | 凭 547 | 凭借 548 | 出 549 | 出于 550 | 出去 551 | 出来 552 | 出现 553 | 分别 554 | 日电 555 | 部门 556 | 负责人 557 | 分头 558 | 分期 559 | 分期分批 560 | 切 561 | 切不可 562 | 切切 563 | 切勿 564 | 切莫 565 | 则 566 | 则甚 567 | 刚 568 | 刚好 569 | 刚巧 570 | 刚才 571 | 初 572 | 别 573 | 别人 574 | 别处 575 | 别是 576 | 别的 577 | 别管 578 | 别说 579 | 到 580 | 到了儿 581 | 到处 582 | 到头 583 | 到头来 584 | 到底 585 | 到目前为止 586 | 前后 587 | 前此 588 | 前者 589 | 前进 590 | 前面 591 | 加上 592 | 加之 593 | 加以 594 | 加入 595 | 加强 596 | 动不动 597 | 动辄 598 | 勃然 599 | 匆匆 600 | 十分 601 | 千 602 | 千万 603 | 千万千万 604 | 半 605 | 单 606 | 单单 607 | 单纯 608 | 即 609 | 即令 610 | 即使 611 | 即便 612 | 即刻 613 | 即如 614 | 即将 615 | 即或 616 | 即是说 617 | 即若 618 | 却 619 | 却不 620 | 历 621 | 原来 622 | 去 623 | 又 624 | 又及 625 | 及 626 | 及其 627 | 及时 628 | 及至 629 | 双方 630 | 反之 631 | 反之亦然 632 | 反之则 633 | 反倒 634 | 反倒是 635 | 反应 636 | 反手 637 | 反映 638 | 反而 639 | 反过来 640 | 反过来说 641 | 取得 642 | 取道 643 | 受到 644 | 变成 645 | 古来 646 | 另 647 | 另一个 648 | 另一方面 649 | 另外 650 | 另悉 651 | 另方面 652 | 另行 653 | 只 654 | 只当 655 | 只怕 656 | 只是 657 | 只有 658 | 只消 659 | 只要 660 | 只限 661 | 叫 662 | 叫做 663 | 召开 664 | 叮咚 665 | 叮当 666 | 可 667 | 可以 668 | 可好 669 | 可是 670 | 可能 671 | 可见 672 | 各 673 | 各个 674 | 各人 675 | 各位 676 | 各地 677 | 各式 678 | 各种 679 | 各级 680 | 各自 681 | 合理 682 | 同 683 | 同一 684 | 同时 685 | 同样 686 | 后 687 | 后来 688 | 后者 689 | 后面 690 | 向 691 | 向使 692 | 向着 693 | 吓 694 | 吗 695 | 否则 696 | 吧 697 | 吧哒 698 | 吱 699 | 呀 700 | 呃 701 | 呆呆地 702 | 呐 703 | 呕 704 | 呗 705 | 呜 706 | 呜呼 707 | 呢 708 | 周围 709 | 呵 710 | 呵呵 711 | 呸 712 | 呼哧 713 | 呼啦 714 | 咋 715 | 和 716 | 咚 717 | 咦 718 | 咧 719 | 咱 720 | 咱们 721 | 咳 722 | 哇 723 | 哈 724 | 哈哈 725 | 哉 726 | 哎 727 | 哎呀 728 | 哎哟 729 | 哗 730 | 哗啦 731 | 哟 732 | 哦 733 | 哩 734 | 哪 735 | 哪个 736 | 哪些 737 | 哪儿 738 | 哪天 739 | 哪年 740 | 哪怕 741 | 哪样 742 | 哪边 743 | 哪里 744 | 哼 745 | 哼唷 746 | 唉 747 | 唯有 748 | 啊 749 | 啊呀 750 | 啊哈 751 | 啊哟 752 | 啐 753 | 啥 754 | 啦 755 | 啪达 756 | 啷当 757 | 喀 758 | 喂 759 | 喏 760 | 喔唷 761 | 喽 762 | 嗡 763 | 嗡嗡 764 | 嗬 765 | 嗯 766 | 嗳 767 | 嘎 768 | 嘎嘎 769 | 嘎登 770 | 嘘 771 | 嘛 772 | 嘻 773 | 嘿 774 | 嘿嘿 775 | 四 776 | 因 777 | 因为 778 | 因了 779 | 因此 780 | 因着 781 | 因而 782 | 固 783 | 固然 784 | 在 785 | 在下 786 | 在于 787 | 地 788 | 均 789 | 坚决 790 | 坚持 791 | 基于 792 | 基本 793 | 基本上 794 | 处在 795 | 处处 796 | 处理 797 | 复杂 798 | 多 799 | 多么 800 | 多亏 801 | 多多 802 | 多多少少 803 | 多多益善 804 | 多少 805 | 多年前 806 | 多年来 807 | 多数 808 | 多次 809 | 够瞧的 810 | 大 811 | 大不了 812 | 大举 813 | 大事 814 | 大体 815 | 大体上 816 | 大凡 817 | 大力 818 | 大多 819 | 大多数 820 | 大大 821 | 大家 822 | 大张旗鼓 823 | 大批 824 | 大抵 825 | 大概 826 | 大略 827 | 大约 828 | 大致 829 | 大都 830 | 大量 831 | 大面儿上 832 | 失去 833 | 奇 834 | 奈 835 | 奋勇 836 | 她 837 | 她们 838 | 她是 839 | 她的 840 | 好 841 | 好在 842 | 好的 843 | 好象 844 | 如 845 | 如上 846 | 如上所述 847 | 如下 848 | 如今 849 | 如何 850 | 如其 851 | 如前所述 852 | 如同 853 | 如常 854 | 如是 855 | 如期 856 | 如果 857 | 如次 858 | 如此 859 | 如此等等 860 | 如若 861 | 始而 862 | 姑且 863 | 存在 864 | 存心 865 | 孰料 866 | 孰知 867 | 宁 868 | 宁可 869 | 宁愿 870 | 宁肯 871 | 它 872 | 它们 873 | 它们的 874 | 它是 875 | 它的 876 | 安全 877 | 完全 878 | 完成 879 | 定 880 | 实现 881 | 实际 882 | 宣布 883 | 容易 884 | 密切 885 | 对 886 | 对于 887 | 对应 888 | 对待 889 | 对方 890 | 对比 891 | 将 892 | 将才 893 | 将要 894 | 将近 895 | 小 896 | 少数 897 | 尔 898 | 尔后 899 | 尔尔 900 | 尔等 901 | 尚且 902 | 尤其 903 | 就 904 | 就地 905 | 就是 906 | 就是了 907 | 就是说 908 | 就此 909 | 就算 910 | 就要 911 | 尽 912 | 尽可能 913 | 尽如人意 914 | 尽心尽力 915 | 尽心竭力 916 | 尽快 917 | 尽早 918 | 尽然 919 | 尽管 920 | 尽管如此 921 | 尽量 922 | 局外 923 | 居然 924 | 届时 925 | 属于 926 | 屡 927 | 屡屡 928 | 屡次 929 | 屡次三番 930 | 岂 931 | 岂但 932 | 岂止 933 | 岂非 934 | 川流不息 935 | 左右 936 | 巨大 937 | 巩固 938 | 差一点 939 | 差不多 940 | 己 941 | 已 942 | 已矣 943 | 已经 944 | 巴 945 | 巴巴 946 | 带 947 | 帮助 948 | 常 949 | 常常 950 | 常言说 951 | 常言说得好 952 | 常言道 953 | 平素 954 | 年复一年 955 | 并 956 | 并不 957 | 并不是 958 | 并且 959 | 并排 960 | 并无 961 | 并没 962 | 并没有 963 | 并肩 964 | 并非 965 | 广大 966 | 广泛 967 | 应当 968 | 应用 969 | 应该 970 | 庶乎 971 | 庶几 972 | 开外 973 | 开始 974 | 开展 975 | 引起 976 | 弗 977 | 弹指之间 978 | 强烈 979 | 强调 980 | 归 981 | 归根到底 982 | 归根结底 983 | 归齐 984 | 当 985 | 当下 986 | 当中 987 | 当儿 988 | 当前 989 | 当即 990 | 当口儿 991 | 当地 992 | 当场 993 | 当头 994 | 当庭 995 | 当时 996 | 当然 997 | 当真 998 | 当着 999 | 形成 1000 | 彻夜 1001 | 彻底 1002 | 彼 1003 | 彼时 1004 | 彼此 1005 | 往 1006 | 往往 1007 | 待 1008 | 待到 1009 | 很 1010 | 很多 1011 | 很少 1012 | 後来 1013 | 後面 1014 | 得 1015 | 得了 1016 | 得出 1017 | 得到 1018 | 得天独厚 1019 | 得起 1020 | 心里 1021 | 必 1022 | 必定 1023 | 必将 1024 | 必然 1025 | 必要 1026 | 必须 1027 | 快 1028 | 快要 1029 | 忽地 1030 | 忽然 1031 | 怎 1032 | 怎么 1033 | 怎么办 1034 | 怎么样 1035 | 怎奈 1036 | 怎样 1037 | 怎麽 1038 | 怕 1039 | 急匆匆 1040 | 怪 1041 | 怪不得 1042 | 总之 1043 | 总是 1044 | 总的来看 1045 | 总的来说 1046 | 总的说来 1047 | 总结 1048 | 总而言之 1049 | 恍然 1050 | 恐怕 1051 | 恰似 1052 | 恰好 1053 | 恰如 1054 | 恰巧 1055 | 恰恰 1056 | 恰恰相反 1057 | 恰逢 1058 | 您 1059 | 您们 1060 | 您是 1061 | 惟其 1062 | 惯常 1063 | 意思 1064 | 愤然 1065 | 愿意 1066 | 慢说 1067 | 成为 1068 | 成年 1069 | 成年累月 1070 | 成心 1071 | 我 1072 | 我们 1073 | 我是 1074 | 我的 1075 | 或 1076 | 或则 1077 | 或多或少 1078 | 或是 1079 | 或曰 1080 | 或者 1081 | 或许 1082 | 战斗 1083 | 截然 1084 | 截至 1085 | 所 1086 | 所以 1087 | 所在 1088 | 所幸 1089 | 所有 1090 | 所谓 1091 | 才 1092 | 才能 1093 | 扑通 1094 | 打 1095 | 打从 1096 | 打开天窗说亮话 1097 | 扩大 1098 | 把 1099 | 抑或 1100 | 抽冷子 1101 | 拦腰 1102 | 拿 1103 | 按 1104 | 按时 1105 | 按期 1106 | 按照 1107 | 按理 1108 | 按说 1109 | 挨个 1110 | 挨家挨户 1111 | 挨次 1112 | 挨着 1113 | 挨门挨户 1114 | 挨门逐户 1115 | 换句话说 1116 | 换言之 1117 | 据 1118 | 据实 1119 | 据悉 1120 | 据我所知 1121 | 据此 1122 | 据称 1123 | 据说 1124 | 掌握 1125 | 接下来 1126 | 接着 1127 | 接著 1128 | 接连不断 1129 | 放量 1130 | 故 1131 | 故意 1132 | 故此 1133 | 故而 1134 | 敞开儿 1135 | 敢 1136 | 敢于 1137 | 敢情 1138 | 数/ 1139 | 整个 1140 | 断然 1141 | 方 1142 | 方便 1143 | 方才 1144 | 方能 1145 | 方面 1146 | 旁人 1147 | 无 1148 | 无宁 1149 | 无法 1150 | 无论 1151 | 既 1152 | 既...又 1153 | 既往 1154 | 既是 1155 | 既然 1156 | 日复一日 1157 | 日渐 1158 | 日益 1159 | 日臻 1160 | 日见 1161 | 时候 1162 | 昂然 1163 | 明显 1164 | 明确 1165 | 是 1166 | 是不是 1167 | 是以 1168 | 是否 1169 | 是的 1170 | 显然 1171 | 显著 1172 | 普通 1173 | 普遍 1174 | 暗中 1175 | 暗地里 1176 | 暗自 1177 | 更 1178 | 更为 1179 | 更加 1180 | 更进一步 1181 | 曾 1182 | 曾经 1183 | 替 1184 | 替代 1185 | 最 1186 | 最后 1187 | 最大 1188 | 最好 1189 | 最後 1190 | 最近 1191 | 最高 1192 | 有 1193 | 有些 1194 | 有关 1195 | 有利 1196 | 有力 1197 | 有及 1198 | 有所 1199 | 有效 1200 | 有时 1201 | 有点 1202 | 有的 1203 | 有的是 1204 | 有着 1205 | 有著 1206 | 望 1207 | 朝 1208 | 朝着 1209 | 末##末 1210 | 本 1211 | 本人 1212 | 本地 1213 | 本着 1214 | 本身 1215 | 权时 1216 | 来 1217 | 来不及 1218 | 来得及 1219 | 来看 1220 | 来着 1221 | 来自 1222 | 来讲 1223 | 来说 1224 | 极 1225 | 极为 1226 | 极了 1227 | 极其 1228 | 极力 1229 | 极大 1230 | 极度 1231 | 极端 1232 | 构成 1233 | 果然 1234 | 果真 1235 | 某 1236 | 某个 1237 | 某些 1238 | 某某 1239 | 根据 1240 | 根本 1241 | 格外 1242 | 梆 1243 | 概 1244 | 次第 1245 | 欢迎 1246 | 欤 1247 | 正值 1248 | 正在 1249 | 正如 1250 | 正巧 1251 | 正常 1252 | 正是 1253 | 此 1254 | 此中 1255 | 此后 1256 | 此地 1257 | 此处 1258 | 此外 1259 | 此时 1260 | 此次 1261 | 此间 1262 | 殆 1263 | 毋宁 1264 | 每 1265 | 每个 1266 | 每天 1267 | 每年 1268 | 每当 1269 | 每时每刻 1270 | 每每 1271 | 每逢 1272 | 比 1273 | 比及 1274 | 比如 1275 | 比如说 1276 | 比方 1277 | 比照 1278 | 比起 1279 | 比较 1280 | 毕竟 1281 | 毫不 1282 | 毫无 1283 | 毫无例外 1284 | 毫无保留地 1285 | 汝 1286 | 沙沙 1287 | 没 1288 | 没奈何 1289 | 没有 1290 | 沿 1291 | 沿着 1292 | 注意 1293 | 活 1294 | 深入 1295 | 清楚 1296 | 满 1297 | 满足 1298 | 漫说 1299 | 焉 1300 | 然 1301 | 然则 1302 | 然后 1303 | 然後 1304 | 然而 1305 | 照 1306 | 照着 1307 | 牢牢 1308 | 特别是 1309 | 特殊 1310 | 特点 1311 | 犹且 1312 | 犹自 1313 | 独 1314 | 独自 1315 | 猛然 1316 | 猛然间 1317 | 率尔 1318 | 率然 1319 | 现代 1320 | 现在 1321 | 理应 1322 | 理当 1323 | 理该 1324 | 瑟瑟 1325 | 甚且 1326 | 甚么 1327 | 甚或 1328 | 甚而 1329 | 甚至 1330 | 甚至于 1331 | 用 1332 | 用来 1333 | 甫 1334 | 甭 1335 | 由 1336 | 由于 1337 | 由是 1338 | 由此 1339 | 由此可见 1340 | 略 1341 | 略为 1342 | 略加 1343 | 略微 1344 | 白 1345 | 白白 1346 | 的 1347 | 的确 1348 | 的话 1349 | 皆可 1350 | 目前 1351 | 直到 1352 | 直接 1353 | 相似 1354 | 相信 1355 | 相反 1356 | 相同 1357 | 相对 1358 | 相对而言 1359 | 相应 1360 | 相当 1361 | 相等 1362 | 省得 1363 | 看 1364 | 看上去 1365 | 看出 1366 | 看到 1367 | 看来 1368 | 看样子 1369 | 看看 1370 | 看见 1371 | 看起来 1372 | 真是 1373 | 真正 1374 | 眨眼 1375 | 着 1376 | 着呢 1377 | 矣 1378 | 矣乎 1379 | 矣哉 1380 | 知道 1381 | 砰 1382 | 确定 1383 | 碰巧 1384 | 社会主义 1385 | 离 1386 | 种 1387 | 积极 1388 | 移动 1389 | 究竟 1390 | 穷年累月 1391 | 突出 1392 | 突然 1393 | 窃 1394 | 立 1395 | 立刻 1396 | 立即 1397 | 立地 1398 | 立时 1399 | 立马 1400 | 竟 1401 | 竟然 1402 | 竟而 1403 | 第 1404 | 第二 1405 | 等 1406 | 等到 1407 | 等等 1408 | 策略地 1409 | 简直 1410 | 简而言之 1411 | 简言之 1412 | 管 1413 | 类如 1414 | 粗 1415 | 精光 1416 | 紧接着 1417 | 累年 1418 | 累次 1419 | 纯 1420 | 纯粹 1421 | 纵 1422 | 纵令 1423 | 纵使 1424 | 纵然 1425 | 练习 1426 | 组成 1427 | 经 1428 | 经常 1429 | 经过 1430 | 结合 1431 | 结果 1432 | 给 1433 | 绝 1434 | 绝不 1435 | 绝对 1436 | 绝非 1437 | 绝顶 1438 | 继之 1439 | 继后 1440 | 继续 1441 | 继而 1442 | 维持 1443 | 综上所述 1444 | 缕缕 1445 | 罢了 1446 | 老 1447 | 老大 1448 | 老是 1449 | 老老实实 1450 | 考虑 1451 | 者 1452 | 而 1453 | 而且 1454 | 而况 1455 | 而又 1456 | 而后 1457 | 而外 1458 | 而已 1459 | 而是 1460 | 而言 1461 | 而论 1462 | 联系 1463 | 联袂 1464 | 背地里 1465 | 背靠背 1466 | 能 1467 | 能否 1468 | 能够 1469 | 腾 1470 | 自 1471 | 自个儿 1472 | 自从 1473 | 自各儿 1474 | 自后 1475 | 自家 1476 | 自己 1477 | 自打 1478 | 自身 1479 | 臭 1480 | 至 1481 | 至于 1482 | 至今 1483 | 至若 1484 | 致 1485 | 般的 1486 | 良好 1487 | 若 1488 | 若夫 1489 | 若是 1490 | 若果 1491 | 若非 1492 | 范围 1493 | 莫 1494 | 莫不 1495 | 莫不然 1496 | 莫如 1497 | 莫若 1498 | 莫非 1499 | 获得 1500 | 藉以 1501 | 虽 1502 | 虽则 1503 | 虽然 1504 | 虽说 1505 | 蛮 1506 | 行为 1507 | 行动 1508 | 表明 1509 | 表示 1510 | 被 1511 | 要 1512 | 要不 1513 | 要不是 1514 | 要不然 1515 | 要么 1516 | 要是 1517 | 要求 1518 | 见 1519 | 规定 1520 | 觉得 1521 | 譬喻 1522 | 譬如 1523 | 认为 1524 | 认真 1525 | 认识 1526 | 让 1527 | 许多 1528 | 论 1529 | 论说 1530 | 设使 1531 | 设或 1532 | 设若 1533 | 诚如 1534 | 诚然 1535 | 话说 1536 | 该 1537 | 该当 1538 | 说明 1539 | 说来 1540 | 说说 1541 | 请勿 1542 | 诸 1543 | 诸位 1544 | 诸如 1545 | 谁 1546 | 谁人 1547 | 谁料 1548 | 谁知 1549 | 谨 1550 | 豁然 1551 | 贼死 1552 | 赖以 1553 | 赶 1554 | 赶快 1555 | 赶早不赶晚 1556 | 起 1557 | 起先 1558 | 起初 1559 | 起头 1560 | 起来 1561 | 起见 1562 | 起首 1563 | 趁 1564 | 趁便 1565 | 趁势 1566 | 趁早 1567 | 趁机 1568 | 趁热 1569 | 趁着 1570 | 越是 1571 | 距 1572 | 跟 1573 | 路经 1574 | 转动 1575 | 转变 1576 | 转贴 1577 | 轰然 1578 | 较 1579 | 较为 1580 | 较之 1581 | 较比 1582 | 边 1583 | 达到 1584 | 达旦 1585 | 迄 1586 | 迅速 1587 | 过 1588 | 过于 1589 | 过去 1590 | 过来 1591 | 运用 1592 | 近 1593 | 近几年来 1594 | 近年来 1595 | 近来 1596 | 还 1597 | 还是 1598 | 还有 1599 | 还要 1600 | 这 1601 | 这一来 1602 | 这个 1603 | 这么 1604 | 这么些 1605 | 这么样 1606 | 这么点儿 1607 | 这些 1608 | 这会儿 1609 | 这儿 1610 | 这就是说 1611 | 这时 1612 | 这样 1613 | 这次 1614 | 这点 1615 | 这种 1616 | 这般 1617 | 这边 1618 | 这里 1619 | 这麽 1620 | 进入 1621 | 进去 1622 | 进来 1623 | 进步 1624 | 进而 1625 | 进行 1626 | 连 1627 | 连同 1628 | 连声 1629 | 连日 1630 | 连日来 1631 | 连袂 1632 | 连连 1633 | 迟早 1634 | 迫于 1635 | 适应 1636 | 适当 1637 | 适用 1638 | 逐步 1639 | 逐渐 1640 | 通常 1641 | 通过 1642 | 造成 1643 | 逢 1644 | 遇到 1645 | 遭到 1646 | 遵循 1647 | 遵照 1648 | 避免 1649 | 那 1650 | 那个 1651 | 那么 1652 | 那么些 1653 | 那么样 1654 | 那些 1655 | 那会儿 1656 | 那儿 1657 | 那时 1658 | 那末 1659 | 那样 1660 | 那般 1661 | 那边 1662 | 那里 1663 | 那麽 1664 | 部分 1665 | 都 1666 | 鄙人 1667 | 采取 1668 | 里面 1669 | 重大 1670 | 重新 1671 | 重要 1672 | 鉴于 1673 | 针对 1674 | 长期以来 1675 | 长此下去 1676 | 长线 1677 | 长话短说 1678 | 问题 1679 | 间或 1680 | 防止 1681 | 阿 1682 | 附近 1683 | 陈年 1684 | 限制 1685 | 陡然 1686 | 除 1687 | 除了 1688 | 除却 1689 | 除去 1690 | 除外 1691 | 除开 1692 | 除此 1693 | 除此之外 1694 | 除此以外 1695 | 除此而外 1696 | 除非 1697 | 随 1698 | 随后 1699 | 随时 1700 | 随着 1701 | 随著 1702 | 隔夜 1703 | 隔日 1704 | 难得 1705 | 难怪 1706 | 难说 1707 | 难道 1708 | 难道说 1709 | 集中 1710 | 零 1711 | 需要 1712 | 非但 1713 | 非常 1714 | 非徒 1715 | 非得 1716 | 非特 1717 | 非独 1718 | 靠 1719 | 顶多 1720 | 顷 1721 | 顷刻 1722 | 顷刻之间 1723 | 顷刻间 1724 | 顺 1725 | 顺着 1726 | 顿时 1727 | 颇 1728 | 风雨无阻 1729 | 饱 1730 | 首先 1731 | 马上 1732 | 高低 1733 | 高兴 1734 | 默然 1735 | 默默地 1736 | 齐 1737 | ︿ 1738 | ! 1739 | # 1740 | $ 1741 | % 1742 | & 1743 | ' 1744 | ( 1745 | ) 1746 | )÷(1- 1747 | )、 1748 | * 1749 | + 1750 | +ξ 1751 | ++ 1752 | , 1753 | ,也 1754 | - 1755 | -β 1756 | -- 1757 | -[*]- 1758 | . 1759 | / 1760 | 0 1761 | 0:2 1762 | 1 1763 | 1. 1764 | 12% 1765 | 2 1766 | 2.3% 1767 | 3 1768 | 4 1769 | 5 1770 | 5:0 1771 | 6 1772 | 7 1773 | 8 1774 | 9 1775 | : 1776 | ; 1777 | < 1778 | <± 1779 | <Δ 1780 | <λ 1781 | <φ 1782 | << 1783 | = 1784 | =″ 1785 | =☆ 1786 | =( 1787 | =- 1788 | =[ 1789 | ={ 1790 | > 1791 | >λ 1792 | ? 1793 | @ 1794 | A 1795 | LI 1796 | R.L. 1797 | ZXFITL 1798 | [ 1799 | [①①] 1800 | [①②] 1801 | [①③] 1802 | [①④] 1803 | [①⑤] 1804 | [①⑥] 1805 | [①⑦] 1806 | [①⑧] 1807 | [①⑨] 1808 | [①A] 1809 | [①B] 1810 | [①C] 1811 | [①D] 1812 | [①E] 1813 | [①] 1814 | [①a] 1815 | [①c] 1816 | [①d] 1817 | [①e] 1818 | [①f] 1819 | [①g] 1820 | [①h] 1821 | [①i] 1822 | [①o] 1823 | [② 1824 | [②①] 1825 | [②②] 1826 | [②③] 1827 | [②④ 1828 | [②⑤] 1829 | [②⑥] 1830 | [②⑦] 1831 | [②⑧] 1832 | [②⑩] 1833 | [②B] 1834 | [②G] 1835 | [②] 1836 | [②a] 1837 | [②b] 1838 | [②c] 1839 | [②d] 1840 | [②e] 1841 | [②f] 1842 | [②g] 1843 | [②h] 1844 | [②i] 1845 | [②j] 1846 | [③①] 1847 | [③⑩] 1848 | [③F] 1849 | [③] 1850 | [③a] 1851 | [③b] 1852 | [③c] 1853 | [③d] 1854 | [③e] 1855 | [③g] 1856 | [③h] 1857 | [④] 1858 | [④a] 1859 | [④b] 1860 | [④c] 1861 | [④d] 1862 | [④e] 1863 | [⑤] 1864 | [⑤]] 1865 | [⑤a] 1866 | [⑤b] 1867 | [⑤d] 1868 | [⑤e] 1869 | [⑤f] 1870 | [⑥] 1871 | [⑦] 1872 | [⑧] 1873 | [⑨] 1874 | [⑩] 1875 | [*] 1876 | [- 1877 | [] 1878 | ] 1879 | ]∧′=[ 1880 | ][ 1881 | _ 1882 | a] 1883 | b] 1884 | c] 1885 | e] 1886 | f] 1887 | ng昉 1888 | { 1889 | {- 1890 | | 1891 | } 1892 | }> 1893 | ~ 1894 | ~± 1895 | ~+ 1896 | ¥ 1897 | 中新网 1898 | 一打 1899 | 中新 1900 | 1901 | -------------------------------------------------------------------------------- /test_data/neg.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sph116/lstm_emotion/14b784d13c353d54563750620eccfa37c36d53a3/test_data/neg.xls -------------------------------------------------------------------------------- /test_data/pos.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sph116/lstm_emotion/14b784d13c353d54563750620eccfa37c36d53a3/test_data/pos.xls -------------------------------------------------------------------------------- /word2vex.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | import logging 3 | from process_text import del_stopwords 4 | import numpy as np 5 | import pandas as pd 6 | np.random.seed(1337) 7 | 8 | 9 | from gensim.models.word2vec import Word2Vec 10 | from gensim.corpora.dictionary import Dictionary 11 | 12 | # 创建词语字典,并返回word2vec模型中词语的索引,词向量 13 | def create_dictionaries(p_model): 14 | gensim_dict = Dictionary() 15 | gensim_dict.doc2bow(p_model.wv.vocab.keys(), allow_update=True) 16 | 17 | w2indx = {v: k + 1 for k, v in gensim_dict.items()} # 词语的索引,从1开始编号 18 | w2vec = {word: model[word] for word in w2indx.keys()} # 词语的词向量 19 | return w2indx, w2vec 20 | 21 | 22 | try: 23 | model = Word2Vec.load('./words2.model') 24 | 25 | # 索引字典、词向量字典 26 | index_dict, word_vectors= create_dictionaries(model) 27 | 28 | 29 | # 存储为pkl文件 30 | pkl_name = input("请输入保存的pkl文件名...\n") 31 | output = open(pkl_name + u".pkl", 'wb') 32 | pickle.dump(index_dict, output) # 索引字典 33 | pickle.dump(word_vectors, output) # 词向量字典 34 | output.close() 35 | 36 | except Exception as e: 37 | print(e) 38 | # 主程序 39 | logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) 40 | 41 | 42 | 43 | with open("./test_data/neg.txt", "r", encoding='UTF-8') as e: 44 | neg_data1 = e.readlines() 45 | 46 | 47 | with open("./test_data/pos.txt", "r", encoding='UTF-8') as s: 48 | pos_data1 = s.readlines() 49 | 50 | neg_data = sorted(set(neg_data1), key=neg_data1.index) #列表去重 保持原来的顺序 51 | pos_data = sorted(set(pos_data1), key=pos_data1.index) 52 | 53 | 54 | neg_data = [del_stop_words(data.replace("\n", "")) for data in neg_data] 55 | pos_data = [del_stop_words(data.replace("\n", "")) for data in pos_data] 56 | data = neg_data + pos_data 57 | # a = 0 58 | # for i in data: 59 | # a = a + len(i) 60 | # lang = a / len(data) 61 | # print(lang) #打印每个列表平均长度 62 | # print(data) 63 | 64 | # c = "" 65 | # for i in data: 66 | # for s in i: 67 | # c = c + " " + s 68 | # c = c.replace("\n", "") 69 | # print(c) 70 | 71 | 72 | sentences = data # 获取句子列表,每个句子又是词汇的列表 73 | 74 | print('训练Word2vec模型(可尝试修改参数)...') 75 | 76 | model = Word2Vec(sentences, 77 | size=150, # 词向量维度 78 | min_count=1, # 词频阈值 79 | window=5) # 窗口大小 80 | 81 | model_name = input("请输入保存的模型文件名...\n") 82 | model.save(model_name + '.model') # 保存模型 83 | 84 | if __name__ == "__main__": 85 | pass 86 | --------------------------------------------------------------------------------