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

编程入门 行业动态 更新时间:2024-10-12 01:25:42

将“万词王”<a href=https://www.elefans.com/category/jswz/34/1767604.html style=离线转化为“文络之心“插件之一:复现 wantwords Python/Pytorch 开源项目"/>

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

在电影里,无限之书,每一页都是不一样的内容。简单的随机算法其实有点无聊,但借助深度学习技术,化王为心,实现心灵大道的转换,可以让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.0Could 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 

成功安装。

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 仍然失败。用cygwin的环境试试,接着失败,cygwin 的python3.9无法安装pytorch1.2。

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

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

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

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

  1. 安装子系统
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 
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.11pip3 install uWSGI==2.0.18
pip3 install torch==1.2.0pip3 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 小时

更多推荐

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

本文发布于:2024-03-23 01:40:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738959.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:离线   之心   转化为   开源   插件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!