Word2vec代码解析3--模型构建

Word2vec代码解析3–模型构建

代码在最后

1.1InPut[3]解析;

函数原型:numpy.around(a, decimals=0, out=None)
参数解析:

   a为输入列表或矩阵;

   decimals为n对输入近似后保留小数点后n位,默认为0,若值为-n,则对小数点左边第n位近似;

   out为可选参数,一般不用,用于保存近似返回结果。
1.2InPut[4]解析;

shape函数的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度,相当于行数。数组有两个维度(即行和列)时,和我们的逻辑思维一样,a.shape返回的元组表示该数组的行数与列数。根据输出结果我们可以发现X_train是一个三维矩阵阵

1.3InPut[5]解析:

详见1.1

1.4InPut[6]解析:

t_y=pd.read_csv(‘w_Y.csv’, header=None, index_col=None)
pandas的read_csv函数会自动将该文件进行读取
index_col:我们在读取文件之后所得到的DataFrame的索引默认是0、1、2……,我们可以通过set_index设定索引,但是也可以在读取的时候就指定某列为索引。
index_col:我们在读取文件之后所得到的DataFrame的索引默认是0、1、2……,我们可以通过set_index设定索引,但是也可以在读取的时候就指定某列为索引。

1.5InPut[7]解析:

求各种评价指标,包括recall,SN,SP,GM,TP,TN,FP,FN

参考文献

[1]Mikolov, T., Chen, K., Corrado, G., and Dean, J. (2013a) “Efficient estimation of word representations in vector space.” arXiv preprintarXiv:1301.3781.
[2]https://blog.csdn.net/runmin1/article/details/89174511
[3]https://blog.csdn.net/jiaxinhong/article/details/81771885
[4]https://zhuanlan.zhihu.com/p/340441922

代码在这里

InPut[3]:


X_train=[]
for i in range(0,17808):
    s=[]
#     for word in document3[i]:
#         s.append(model3.wv[word])
    
    for word in document3[i]:
        s.append(model3.wv[word])

#     for word in document5[i]:
#         s.append(model5.wv[word])
        
        
        
    X_train.append(s)
    
    
    
    
# print(np.shape(X_train))

# for word2 in document4:
#     s=[]
#     for i2 in word2:
#         s.append(model4.wv[i2])
#     X_train.append(s)
# print(np.shape(X_train))

# for word3 in document5:
#     s=[]
#     for i3 in word3:
#         s.append(model5.wv[i3])
#     X_train.append(s)
# print(np.shape(X_train))

InPut[4]:

np.shape(X_train)

输出

(17808, 39, 150)

InPut[5]:

import numpy as around
X_train=np.around(X_train,4)

InPut[6]:

import pandas as pd
import numpy as np

#t_x=pd.read_csv('wanmeir.csv', header=None, index_col=None)
t_y=pd.read_csv('w_Y.csv', header=None, index_col=None)

xx= np.array(X_train)
xx_y=t_y.values


#xx = np.expand_dims(xx, axis=2)



#tt_x=pd.read_csv('fufufud.csv', header=None, index_col=None)
#tt_y=pd.read_csv('fuy.csv', header=None, index_col=None)

#test_x=tt_x.values
#test_y=tt_y.values


#test_x = np.expand_dims(test_x, axis=2)

InPut[7]:

import pandas as pd
import numpy as np
from sklearn import metrics
from sklearn.metrics import roc_curve, auc
import math
def performance(labelArr, predictArr):
    #labelArr[i] is actual value,predictArr[i] is predict value
    TP = 0.; TN = 0.; FP = 0.; FN = 0.
    for i in range(len(labelArr)):
        if labelArr[i] == 1 and predictArr[i] == 1:
            TP += 1.
        if labelArr[i] == 1 and predictArr[i] == 0:
            FN += 1.
        if labelArr[i] == 0 and predictArr[i] == 1:
            FP += 1.
        if labelArr[i] == 0 and predictArr[i] == 0:
            TN += 1.
    if (TP + FN)==0:
        SN=0
    else:
        SN = TP/(TP + FN) #Sensitivity = TP/P  and P = TP + FN
    if (FP+TN)==0:
        SP=0
    else:
        SP = TN/(FP + TN) #Specificity = TN/N  and N = TN + FP
    if (TP+FP)==0:
        precision=0
    else:
        precision=TP/(TP+FP)
    if (TP+FN)==0:
        recall=0
    else:
        recall=TP/(TP+FN)
    GM=math.sqrt(recall*SP)
    #MCC = (TP*TN-FP*FN)/math.sqrt((TP+FP)*(TP+FN)*(TN+FP)*(TN+FN))
    return precision,recall,SN,SP,GM,TP,TN,FP,FN
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Word2vec-BiLSTM-CRF是一种用于命名实体识别(NER)的神经网络模型。它结合了三个不同的层:Word2vec嵌入层、双向长短时记忆网络(BiLSTM)层和条件随机场(CRF)层。Word2vec嵌入层将每个单词转换为向量表示,BiLSTM层将这些向量作为输入并学习上下文信息,最后CRF层将BiLSTM层的输出作为输入并进行标记预测。 以下是Word2vec-BiLSTM-CRF模型的基本步骤: 1. 将每个单词转换为向量表示,这可以使用预训练的Word2vec模型来完成。 2. 将这些向量作为输入传递给BiLSTM层,该层将学习上下文信息并生成相应的输出。 3. 将BiLSTM层的输出作为输入传递给CRF层,该层将对每个标记进行预测,并使用Viterbi算法来找到最佳标记序列。 以下是一个使用Python和Keras实现Word2vec-BiLSTM-CRF模型的示例: ```python from keras.models import Model, Input from keras.layers import LSTM, Embedding, Dense, TimeDistributed, Dropout, Bidirectional from keras_contrib.layers import CRF import numpy as np # 定义模型输入 input = Input(shape=(MAX_LEN,)) # 添加Word2vec嵌入层 model = Embedding(input_dim=len(word2idx), output_dim=EMBEDDING_DIM, input_length=MAX_LEN, weights=[embedding_matrix], trainable=False)(input) # 添加双向LSTM层 model = Bidirectional(LSTM(units=HIDDEN_UNITS, return_sequences=True, recurrent_dropout=0.1))(model) # 添加Dropout层 model = Dropout(0.1)(model) # 添加全连接层 model = TimeDistributed(Dense(units=NUM_TAGS, activation="relu"))(model) # 添加CRF层 crf = CRF(NUM_TAGS) out = crf(model) # 定义模型 model = Model(input, out) # 编译模型 model.compile(optimizer="rmsprop", loss=crf.loss_function, metrics=[crf.accuracy]) # 训练模型 model.fit(X_train, np.array(y_train), batch_size=BATCH_SIZE, epochs=EPOCHS, validation_split=0.1, verbose=1) # 预测标记 y_pred = model.predict(X_test) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值