将“万词王”离线转化为“文络之心“插件之一:复现 wantwords Python/Pytorch 开源项目

news2024/11/18 5:54:54

在电影里,无限之书,每一页都是不一样的内容。简单的随机算法其实有点无聊,但借助深度学习技术,化王为心,实现心灵大道的转换,可以让AI生成相互之间有所关联的无限词典之书

访问 wantwords开源仓库,发现这是个python / pytorch项目。其模型文件也是开放下载的。

一、复现 / Replicate

1.0 确定Python版本

全局搜索 print,发现都是带括号的,难道是python3?附pytorch版本对照表。

本文重新下载了个 python3.7 安装先,避免环境污染。(最后试用cygwin的时候还是污染了)

1.1 安装Python环境依赖

  • Django==2.2.5
  • django-cors-headers==3.5.0
  • numpy==1.17.2
  • pytorch-transformers==1.2.0
  • requests==2.22.0
  • scikit-learn==0.22.1
  • scipy==1.4.1
  • thulac==0.2.0
  • torch==1.2.0
  • urllib3==1.25.6
  • uWSGI==2.0.18
  • uwsgitop==0.11

Python 安装依赖是这样的,以等号隔开指定版本。实际命令行是这样的:

C:\WantsWords\P37\Scripts>pip3 install Django==2.2.5
……

下载速度太慢了,建议将命令连起来下载!

吾 python 水平停留在多年前为一款Minecraft风格的太空体素游戏创建建筑模板的水平,其最高科技水平是对于微积分的运用——以方块模拟出极其简陋的圆形图案……

所以这些库是干嘛用的?好在 python 不是 node,没有大爆炸似的 node_modules,我们得以逐一认识各个依赖库。


Django,查无此词。ODE2最靠近的词是:Djakarta /dʒəˈkɑːtə/ ,为Jakarta之同音异体拼写,为印度尼西亚首都。查外网:

Django 是吉卜赛语(Romany, 罗姆语,吉卜赛人的语言, 是与印地语相关的印欧语, 约有100万使用者,分布分散、 方言众多),意思是“我醒了”。它以比利时爵士乐吉他手让·巴蒂斯特·“姜戈”·莱因哈特 (Jean Baptiste “Django” Reinhardt) 的昵称而闻名,他的名气使它在音乐中广泛使用。Django 也是一个网络开发框架的名称。

查内网:Django是一个开放源代码的Web应用框架,由Python写成。numpy 是数值类型库 requestsurllib3 是网络库 。 Scikit-learn(以前称为scikits.learn,也称为sklearn)是针对Python 编程语言的免费软件机器学习库。 **SciPy是数学计算库 。THULAC**是一个高效的中文词法分析工具包(TsingHuaUniversity Lexical Analyzer for Chinese)

PyTorch 是从研究到产品的成熟的深度学习框架 、 PyTorch-Transformers (此前叫做pytorch-pretrained-bert)是面向自然语言处理,当前性能最高的预训练模型开源库,包含 BERT、OpenAI GPT2、Transformer-XL 等等……

uWSGI是一个全栈式Web服务器,它实现了WSGI协议、uwsgi、http等协议,WSGI协议(Web Server Gateway Interface,Web 服务器网关接口)是其最初所支持的,故名。uwsgitop 是 uWSGI 的监控程序(top-like,可能是悬浮显示的意思)。

1.2 安装报错

1.2.1 安装torch

错误信息:

pip3 install torch==1.2.0
Collecting torch==1.2.0
  Could not find a version that satisfies the requirement torch==1.2.0 (from versions: 1.7.0, 1.7.1, 1.8.0, 1.8.1, 1.9.0, 1.9.1, 1.10.0, 1.10.1, 1.10.2, 1.11.0, 1.12.0, 1.12.1, 1.13.0)
No matching distribution found for torch==1.2.0

先尝试安装CUDA ,(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的GPU运算平台。

CUDA 11.6完毕,C盘没得8GB……

然后按照旧版PyTorch安装文档,安装PyTorch:

pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu116

成功安装。

1.2.2 重新安装uWSGI

  • 参考:Windows系统安装uWSGI报错的解法,需要魔改,最后无法成功,
    参考失败。
  • 参考: Stack Overflow高人回答,需要cygwin,最后也无法成功,
    还是安装失败。

好坑啊,要从头开始安装依赖,要用cygwin的python 3.9,可是pytorch 1.2最高支持python3.7?不管了,直接试试能不能运行。pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu116仍然失败。用cygwin的环境试试,接着失败,cygwin 的python3.9无法安装pytorch1.2。

换个思路,安装Ubuntu子系统。对路了,还是巨硬自家的编程服务舒服。什么cygwin,MingW上百个复选框,字还那么小,……

wsl开箱自带Python 3.10.6,好家伙越飘越远,不知道pytorch 1.2还驾驭得住否?

不管了,先试试能否下载。

最后换用win10子系统,全部指令如下:

  1. 安装子系统安装子系统并fix
wsl --set-default-version 1
  1. 更新源
  • 参考 参考一,必须操作
  • 参考 参考二,看看即可
  1. wsl bash shell 安装全部依赖,一步到胃!
pip install uwsgi
pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu116
pip3 install requests==2.22.0
pip3 install Cython
pip3 install scikit-learn==0.22.1
pip3 install scipy==1.4.1
pip3 install thulac==0.2.0
pip3 install urllib3==1.25.6
pip3 install uwsgitop==0.11

pip3 install uWSGI==2.0.18
pip3 install torch==1.2.0


pip3 install Django==2.2.5
pip3 install django-cors-headers==3.5.0
pip3 install numpy==1.17.2
pip3 install pytorch-transformers==1.2.0

终于把依赖项下载完毕,总时间:晚上 6:14 ~ 凌晨 1:16


1.3 运行万词王

是在 bash shell 中运行,启动服务器:

 python3 manage.py  runserver

1.3.1 解决运行失败

runserver报错:出现许多迁移警告,不知torch版本是否有误。访问http://127.0.0.1:8000/,发现不能正常查词,只加载出一个壳。

/home/u/.local/lib/python3.10/site-packages/torch/serialization.py:786: SourceChangeWarning: source code of class 'model_en.Encoder' has changed. you can retrieve the original source code by accessing the object's source attribute or set `torch.nn.Module.dump_patches = True` and use the patch tool to revert the changes.
  warnings.warn(msg, SourceChangeWarning)
System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

December 05, 2022 - 02:39:45
Django version 2.2.5, using settings 'website_RD.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[05/Dec/2022 02:40:05] "GET / HTTP/1.1" 200 72157
[05/Dec/2022 02:40:15] "GET /static/js/home.js HTTP/1.1" 404 77
[05/Dec/2022 02:40:15] "GET /static/image/zm2.ico HTTP/1.1" 404 77
[05/Dec/2022 02:40:29] "GET /static/images/clear.png HTTP/1.1" 404 77

按照警告中提示的指令:

python3 manage.py migrate

出现一排绿色的OK,再次启动服务器:torch仍然有许多SourceChangeWarning。访问网站,仍然不能加载静态资源。

发现需要修改uwsgi.ini配置文件:

# the base directory (full path)
chdir           = /mnt/d/Wantwords/WantWords/website_RD/

仍然不行,修改init文件没有任何作用

发现需要修改源码website_RD/settings.py,打开调试开关DEBUG = True,这次网站首页打开正常,但是仍然无法查词 ——

又出现错误:

AttributeError: module 'time' has no attribute 'clock'

出错包为 thulac,估计是python版本过高导致的。

参考 1.2.2.2 更新源中的“参考二,看看即可”,win+R打开wsl资源文件夹\\wsl$,定位thulac源码包:\\wsl$\Ubuntu\home\u\.local\lib\python3.10\site-packages\thulac,打开CBTaggingDecoder.py并替换time.clocktime.perf_counter()

发现命令行自动重启了:

/home/u/.local/lib/python3.10/site-packages/thulac/character/CBTaggingDecoder.py changed, reloading.

再次访问,查词正常!
请添加图片描述

总时间:1.5 小时

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

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

相关文章

python @ 装饰器(修饰器,语法糖)使用与不使用对比总结记录

由于看python代码里面函数上的 不爽很久了,为了避免自己又忘记了这里来记录下。 简单总结: 的作用就是在使用 下面的函数(如下图的cs2)的时候,会在该函数执行前将该函数作为参数扔到后跟着的处理函数先行处理&#x…

再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维护到2019年8月1日。 1.5.x 将会是 Spring Boot 1.0 系列的最后一个大版本。 如今…

[附源码]计算机毕业设计停车场管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

uniapp——uniapp基础知识

文章目录前言一、HBuilderX常用的快捷键?二、项目中的目录二、项目中的目录总结前言 提示:从0开始学习uniapp: uniapp 解决了什么问题? 1解决了跨端的问题,一端多用。并且可以通过条件编译来实现,不同平台…

【allegro 17.4软件操作保姆级教程九】布线后检查与调整

目录 1.1 PCB状态查看 1.2 添加背钻 1.3 隐藏铜皮检查走线 1.5 位号丝印调整 1.6 使用cut功能删除不需要的电气走线或非电气走线 1.7 走线参考层快速检查 1.8 添加MARK点 1.9 添加工艺边 1.10 尺寸标注 1.1 PCB状态查看 点击display-status可以查看状态: 各…

Spark VS Flink,大数据该学什么

Spark VS Flink:功能比较 Spark和Flink中的功能集在很多方面都不同,如下表所示: Flink特点 支持高吞吐、低延迟、高性能的流处理 有状态计算的Exactly-once语义,对于一条message,receiver确保只收到一次 支持带有事件时间&…

超声功率放大器在MEMS超声测试中的应用

MEMS(微机电系统)技术的不断发展,目前已经广泛应用在生物、航空、医学、航天等多领域。MEMS传感器即微机电系统(Micro-electroMechanicalSystems),是指精密机械系统和微电子电路技术结合发展出来的一项工程…

一文800字手把手教你使用Docker实现分布式Web自动化

01、前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述在docker中使用浏览器进行自动化测试如果可以实现可视化,同时可以对浏览器进行相关的操作。 02、开篇 首先我们先…

在RVIZ中进行可视化操作

文章目录可视化图片catkin新建工程主函数代码cmakelists.txt编译和运行在rviz中显示可视化realsense安装realsense SDK在ROS中安装realsense在rviz中显示参考可视化图片 catkin新建工程 mkdir -p rosopencv/srccd rosopencv/srccatkin_create_pkg rosopencv sensor_msgs cv_br…

Python中正则表达式的使用

正则表达式就是从字符串中发现规律,并通过“抽象”的符号表达出来。打个比方,对于2,5,10,17,26,37这样的数字序列,如何计算第7个值,肯定要先找该序列的规律,然后用n21这个表达式来描述其规律,进而得到第7个…

前端骨架屏应用

什么是骨架屏 骨架屏可以理解为在页面数据尚未返回或页面未完成完全渲染前,先给用户呈现一个由灰白块组成的当前页面大致结构,让用户产生页面正在逐渐渲染的感受,从而使加载过程从视觉上变得流畅。 生成后的骨架屏页面如下图所示&#xff1…

第二证券|沪指冲上3200点,中字头太火爆!

轿车整车概念股拉升,多要素共同刺激下,新能源车或将呈现一轮涨价潮。 今天早盘,三大股指走势分解,沪指拉升涨1.56%,站上3200点关口;创业板指则围绕平盘线展开震动,跌0.39%。 以稳妥股为首的大金…

将数据预处理嵌入AI模型的常见技巧

作者:战鹏州 英特尔物联网行业创新大使 目录 1.1 用模型优化器实现数据预处理 1.1.1 模型优化器预处理参数 1.1.2 将ResNet模型的预处理嵌入模型 1.2 用OpenVINO™ 预处理API实现数据预处理 1.3 使用模型缓存技术进一步缩短首次推理时延 1.4 总结 本文将介绍…

机器学习——评估和改进学习算法

0. 引言 当我们运用训练好了的模型来预测未知数据的时候发现有较大的误差,我们下一步可以做什么? 获得更多的训练样本——通常是有效的,但代价较大,下面的方法也可能有效,可考虑先采用下面的几种方法。尝试减少特征的…

2022年最新Android面试题整理,全网都在看,史上最全面试攻略

Android面试现在什么东西是必须考察的?专业素养还是面试技巧?四大组件还是Framework层源码?哪有什么必考的,可以说所有技术栈都不是必考,但又是必考。话虽看似矛盾,但却反映了当前国内互联网环境的现状&…

基于随机油漆优化器 (MOSPO)求解多目标优化问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

HTML刷题

HTML5 之前的版本是 HTML4.01 onblur 和 onfocus 属于焦点事件: onblur:失去焦点 onfocus:获取焦点 链接:为同一个文件添加多种文件格式的原因是什么 ?&l__牛客网 来源:牛客网 1.为同一个文件添…

vue提取字符串中中文汉字的大写首字母

vue提取字符串中中文汉字的大写首字母 1.需求背景 最近开发vue项目,在关于药品的项目中有个需求是要提取药品中文名称的首字母组成拼音码。 解决方案 这里需要用到pinyin-pro插件,参数介绍如下: 使用如下: // 1、安装piny…

OpenAI ChatGPT注册试用全攻略

OpenAI ChatGPT注册试用全攻略 最近ChatGPT很火,但是有人注册会经常出现不服务当前地区问题,现在手把手教你解决。 如何在中国试用ChatGPT? 这是ChatGPT给的回答 您好,ChatGPT是一种计算机程序,可以自动生成自然语…

C#大型外卖订单调度系统源码PC版 手机版 商户版

开发环境: VS2012 SQL2008R2 菜单功能 1、手机端功能模块 1)自动定位或者搜索地址:使用百度地图,实现自动定位,打开微信自动定位,搜索附件外卖商家 2)附近外卖商家展示&…