Python实现神经网络语言模型(代码详解)

目录 

一、原理图

二、代码

三、结果


引言

神经网络语言模型(Neural Network Language Model, NNLM)是利用神经网络计算词向量的方法,根据(w{t-n+1}...w{t-1})来预测(w{t})是什么词,即用前(n-1)个单词来预测第(n)个单词。


一、原理图


二、代码

参考TensorDataset和DataLoader解释

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
from tqdm import tqdm
import numpy as np
import re

sentences = ["我爱你", "喜羊羊", "灰太狼"]  # sentences = ['我爱你', '喜羊羊', '灰太狼']

# 将输入的句子进行中文分字处理。它首先使用正则表达式找到句子中的中文字符,并将句子按照中文字符进行分割。然后,去除分割后的结果中的空白字符,最后返回分割后的中文字符列表。
def seg_char(sent):
    pattern = re.compile(r'([\u4e00-\u9fa5])')
    chars = pattern.split(sent)
    chars = [w for w in chars if len(w.strip()) > 0]
    return chars

# 对给定的句子列表进行中文分字处理,得到一个包含所有句子中汉字的二维数组。
chars = np.array([seg_char(i) for i in sentences])  # chars = [['我' '爱' '你'], ['喜' '羊' '羊'], ['灰' '太' '狼']]

# 将二维数组展平为一个一维数组。
chars = chars.reshape(1, -1)  # chars = [['我' '爱' '你' '喜' '羊' '羊' '灰' '太' '狼']]

# 通过去除数组中的空白字符和重复项,得到汉字的列表。
word_list = np.squeeze(chars)  # word_list = ['我' '爱' '你' '喜' '羊' '羊' 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞雪兆我心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值