python-pytorch实现lstm模型预测中文文本输出0.1.02

python-pytorch实现lstm模型预测中文文本输出0.1.02

    • 数据
    • 参考
    • 效果
    • 分词到数组
    • 获取word2index和word2index
    • 查看频次
    • 获取vacab
    • 生成训练数据
    • 训练
    • 测试
    • 连续预测

记录
2024年4月14日15:36:28----0.1.02

有问题还需要完善,会重复生成一句话

数据

一篇新闻:https://news.sina.com.cn/c/2024-04-12/doc-inarqiev0222543.shtml

参考

https://blog.csdn.net/qq_19530977/article/details/120936391

# https://blog.csdn.net/qq_19530977/article/details/120936391

效果

"""
布林肯国务卿
布林肯国务卿同王毅
布林肯国务卿同王毅主任
布林肯国务卿同王毅主任以及
布林肯国务卿同王毅主任以及其他
布林肯国务卿同王毅主任以及其他国家
布林肯国务卿同王毅主任以及其他国家敦促
布林肯国务卿同王毅主任以及其他国家敦促伊朗
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全不容
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全不容侵犯
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全不容侵犯,
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全不容侵犯,布
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全不容侵犯,布林肯
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全不容侵犯,布林肯国务卿
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全不容侵犯,布林肯国务卿同王毅
布林肯国务卿同王毅主任以及其他国家敦促伊朗驻叙利亚使馆的安全不容侵犯,布林肯国务卿同王毅主任
"""

导入包

import torch
import torch.nn as nn
import torch.optim as optim
import torch.utils.data as Data
from torch.autograd import Variable
import jieba

分词到数组

复制文章到txt文档

allarray=[]
with open("./howtousercbow/data/news.txt",encoding="utf-8") as afterjieba:lines=afterjieba.readlines()print(lines)for line in lines:result=list(jieba.cut(line,False))for r in result:allarray.append(r.replace("\n",""))allarray,len(allarray)

获取word2index和word2index

word2index={one:i for i,one in enumerate(allarray)}
index2word={i:one for i,one in enumerate(allarray)}
word2index[" "]=len(allarray)-1
index2word[len(allarray)-1]=" "
word2index[" "]

查看频次

from collections import Counter
Counter(allarray)

获取vacab

vocab_size = len(allarray)
vocab_size

生成训练数据

# 生成输入数据
batch_x = []
batch_y = []
window=1
seq_length=vocab_size
for i in range(seq_length - window + 1):x = word2index[allarray[i]]if i + window >= seq_length:y = word2index[" "]else:y = word2index[allarray[i + 1]]batch_x.append([x])batch_y.append(y)# 训练数据
batch_x, batch_y = Variable(torch.LongTensor(batch_x)), Variable(torch.LongTensor(batch_y))# 参数
embedding_size = 100
n_hidden = 32
batch_size = 10
num_classes = vocab_sizedataset = Data.TensorDataset(batch_x, batch_y)
loader = Data.DataLoader(dataset, batch_size, shuffle=True)# 建立模型
class BiLSTM(nn.Module):def __init__(self):super(BiLSTM, self).__init__()self.word_vec = nn.Embedding(vocab_size, embedding_size)# bidirectional双向LSTMself.bilstm = nn.LSTM(embedding_size, n_hidden, 1, bidirectional=True)self.lstm = nn.LSTM(2 * n_hidden, 2 * n_hidden, 1, bidirectional=False)self.fc = nn.Linear(n_hidden * 2, num_classes)def forward(self, input):# embedding_input是10x1x100embedding_input = self.word_vec(input)# embedding_input调换后的size是1x10x100embedding_input = embedding_input.permute(1, 0, 2)bilstm_output, (h_n1, c_n1) = self.bilstm(embedding_input)lstm_output, (h_n2, c_n2)= self.lstm(bilstm_output)fc_out = self.fc(lstm_output[-1])return fc_outmodel = BiLSTM()

训练

print(model)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)# 训练
for epoch in range(300):cost = 0for input_batch, target_batch in loader:pred = model(input_batch)
#         print("pred",pred)
#         print("target_batch",target_batch)loss = criterion(pred, target_batch)cost += loss.item()optimizer.zero_grad()loss.backward()optimizer.step()print("Epoch: %d,  loss: %.5f " % (epoch, cost))

测试

def test(str):test_text =strtest_batch = [word2index[str]]
#     print(test_batch)test_batch = torch.LongTensor([test_batch])
#     print("test_batch",test_batch)
#     print(test_batch)out = model(test_batch)predict = torch.max(out, 1)[1].item()
#     print(test_text,"后一个字母为:", index2word[predict])return index2word[predict]

连续预测

import time
s="布林肯"
while True:fenci=jieba.cut(s,False)fenciList=list(fenci)s=s+test(fenciList[-1:][0])time.sleep(1)print(s)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据结构]—二叉树基本概念

1.树概念及结构 1.树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&#xff…

20240412-算法复习打卡day52||● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300.最长递增子序列 从前往后遍历即可 class Solution { public:int lengthOfLIS(vector<int>& nums) {if (nums.size() < 1) return nums.size();vector<int> dp(nums.size(), 1);int result 0;for (int i 1; i < nums.size(); i) {for (int j 0; …

VS 2022部署HoloLens2 error: DEP0600: Deployment failed

一、报错信息 VS 2022 HoloLens 2 Deploy error: DEP0600: Deployment failed. Failed to deploy through new deployment pipeline 二、其它情况说明 1、设备和电脑处于同一网关&#xff0c;且已经联网 2、电脑从web可以访问HoloLens2设备 三、治病方法 在holoLens2上&am…

优秀文章收藏

&#xff08;一&#xff09;DirectUI 作者 Bjarke Viksoe 个人网站&#xff1a; DirectUI 作者 Bjarke Viksoe 个人网站&#xff1a;viksoe.dk - viksoe.dk 比较著名的文章&#xff0c;DirectUI思想做的一个程序&#xff1a;viksoe.dk - UI: Become windowless 还有一个自己…

Flutter问题:本地第三方库与pubspec.lock中的版本不同

问题前景&#xff1a; 不知道为什么flutter项目中的某几个包突然出现问题&#xff0c;提示出错&#xff0c;而本地第三方库与 pubspec.lock和pubspec.yaml 中的版本不同 搜索了一下&#xff0c;是因为我在添加这几个包时都在前面添加了 ^ 符 date_format: ^2.0.4 pubspec.lo…

适合 Python 入门的 8 款强大工具

Python是一种开源的编程语言&#xff0c;可用于Web编程、数据科学、人工智能以及许多科学应用。学习Python可以让程序员专注于解决问题&#xff0c;而不是语法。由于Python相对较小&#xff0c;且拥有各式各样的工具&#xff0c;因此比Java和C等语言更具优势&#xff0c;同时丰…

Fiddler工具的操作和功能时-----定位到步骤图(助力抓包)

前言&#xff1a; 继续上一篇&#xff0c;已经对fiddler的安装、配置和代理的问题进行了讲解&#xff1a; Fiddle配置代理&#xff0c;保手机模拟器访问外部网络-CSDN博客 本章&#xff0c;讲对一些fiddler的操作进行一系列讲解&#xff01;Fiddler作为一款网络调试工具&…

urllib爬虫案例(实战)

#urllib的爬虫案例&#xff0d;通过最原始的爬虫方式 爬虫之前如果抓包工具Fiddler证书安装失败&#xff0c;采用以下方法 1、打开cmd 2、进入fillder的目录 如下&#xff1a; 里面的路径改成你自己的安装路径 cd /d "D:\Program Files (x86)\Fiddler2" 然后再执行下…

16CFR1512测试标准儿童车电动车要求

16 CFR 1512的测试项目内容 欢迎咨询 逸散而雾散四物五一就把 Mechnical requiements 机械性能要求 (a) Assembly 装配 (b) Sharp edges 锐边 (c) Integrity 强度 (d) Attachment hardware 紧固件 (e)-(f) Reserved 保留 (g) Excluded Area 排除区域 (h) Reserved 保留 (i) Con…

知道做到 一篇总结学习方法的笔记

元数据 [!abstract] 知道做到&#xff1a;跃迁式学习 书名&#xff1a; 知道做到&#xff1a;跃迁式学习作者&#xff1a; 彼得•霍林斯简介&#xff1a; 学习是改善你的生活环境、成为你想成为的人的关键。科学的方法能加速学习进程&#xff0c;让你事半功倍。技能、信息和能力…

C 代码实现链栈

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h>#define MAXSIZE 100//链栈结点结构 typedef struct LinkStack {int val;struct LinkStack* next; }LinkStack;//打印所有栈中元素 void Print(LinkStack* s) {while…

Java后端HR面

文章目录 自我介绍项目介绍未来职业规划说一下所了解的数据结构和算法为什么选择javajava学习过程中印象最深的事情过去发生的最有挑战性的事、说说对你自己影响最大的事情介绍一下你的关系好的朋友们的性格社团学习生活&#xff0c;如何规划情景&#xff1a;leader给了陌生任务…

攻防世界13-simple_php

13-simple_php <?php show_source(*__FILE__*);//高亮文件 include("config.php");//文件包含在内 $a$_GET[a];//获得a $b$_GET[b];//获得b if($a0 and $a){ //判断a是否满足条件echo $flag1; //满足就输出flag1 } if(is_numeric($b)){ //判断b的条件&#x…

yolov8目标检测 部署瑞芯微rk3588记录

1. 前置条件 本地电脑系统&#xff0c;ubuntu20.04 训练代码&#xff1a; 训练代码下载的ultralytics官方代码 SHA&#xff1a;6a2fddfb46aea45dd26cb060157d22cf14cd8c64 训练代码仅做数据修改&#xff0c;类别修改&#xff0c;代码结构未做任何修改 需要准备的代码&#…

AppleScript初体验,让你的mac实现自动化UI操作

AppleScript 简介 AppleScript是苹果公司开发的一种脚本语言&#xff0c;用于操作MacOS及其应用程序&#xff0c;在实现MacOS自动化工作方面非常给力。 我们可以使用AppleScript用来完成一些重复琐碎的工作&#xff0c;AppleScript具有简单自然的语法&#xff0c;另外系统也提…

【DM8】ET SQL性能分析工具

通过统计SQL每个操作符的时间花费&#xff0c;从而定位到有性能问题的操作&#xff0c;指导用户去优化。 开启ET工具 INI参数&#xff1a; ENABLE_MONITOR1 MONITOR_SQL_EXEC1 查看参数 select * FROM v$dm_ini WHERE PARA_NAMEMONITOR_SQL_EXEC;SELECT * FROM v$dm_ini WH…

系统学c#:1、基础准备(软件下载与安装)

一、Vs软件下载与安装 访问Visual Studio官方网站&#xff1a; https://visualstudio.microsoft.com/zh-hans/downloads 下载Visual Studio 运行exe文件&#xff0c;点击“继续” 初始文件安装完成后选择我们需要安装的项&#xff0c;并勾选好必要的单个组件&#xff0c;设…

android热点名称的默认值

热点默认名称后面跟的随机数 WifiApConfigStore.java这儿可以设置热点的默认随机数&#xff0c;原生系统默认是4位 private static final int RAND_SSID_INT_MIN 1000; private static final int RAND_SSID_INT_MAX 9999; private static int getRandomIntForDefaultSsid() …

【Java框架】Spring框架(二)——Spring基本核心(AOP)

目录 面向切面编程AOPAOP的目标&#xff1a;让我们可以“专心做事”专心做事专心做事解决方案1.0专心做事解决方案2.0蓝图 AOP应用场景AOP原理AOP相关术语术语理解 AOP案例实现前置/后置/异常/最终增强的配置实现1.依赖2.业务类3.日志类4.配置切入点表达式匹配规则举例 环绕增强…

Java开发从入门到精通(二十):Java的面向对象编程OOP:泛型

Java大数据开发和安全开发 &#xff08;一&#xff09;Java的泛型 &#xff08;一&#xff09;Java的泛型