├── .gitignore
├── .python-version
├── LICENSE
├── README.md
├── main.py
├── pyproject.toml
├── uv.lock
├── 完整依赖包.txt
├── 生成器
├── .env.default
├── .gitignore
├── README.md
├── 数据库
│ ├── .gitignore
│ ├── README.md
│ ├── __init__.py
│ └── 数据库.py
├── 生成器.py
├── 相似度模型
│ ├── .gitignore
│ ├── README.md
│ ├── __init__.py
│ ├── random_similarity.py
│ ├── sbert_base_chinese_nli.py
│ ├── text_embedding_ada_002.py
│ └── 相似度模型.py
├── 笔记本
│ ├── POC_sbert_base_chinese_nli.ipynb
│ ├── POC_text_embedding_ada_002.ipynb
│ ├── README.md
│ └── vector_size.ipynb
└── 素材库
│ ├── README.md
│ ├── __init.py
│ ├── 模版库
│ ├── 时尚议论文.txt
│ └── 经典议论文.txt
│ ├── 示例库
│ └── 主题词示例.txt
│ ├── 素材库.py
│ └── 语料库
│ ├── 事例.txt
│ ├── 名言.txt
│ ├── 回扣中心论点.txt
│ ├── 回证分论点.txt
│ ├── 总结.txt
│ ├── 提出中心论点.txt
│ ├── 提出分论点.txt
│ ├── 点题.txt
│ ├── 绪论引言.txt
│ ├── 绪论本论过渡句.txt
│ └── 论证分论点.txt
├── 精简依赖包.txt
├── 统计.py
├── 网站服务器.py
├── 网站模版
├── 主页.html
├── 事例.html
├── 名言.html
└── 模版.html
└── 网站资源
├── ads.txt
├── robots.txt
├── 图片
├── android-chrome-192x192.png
├── android-chrome-512x512.png
├── apple-touch-icon.png
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── site.webmanifest
├── 二维码.png
├── 微信-272x272.jpg
├── 微信.jpg
├── 拷贝.svg
├── 拷贝成功.svg
├── 支付宝-272x272.jpg
└── 支付宝.jpg
├── 样式表
├── 事例.css
├── 初始化.css
├── 名言.css
└── 模版.css
└── 脚本.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # for Google credentials
2 | credentials.json
3 |
4 | # other venv folders
5 | venv-*/
6 |
7 | # VSCode
8 | .vscode
9 |
10 | # https://github.com/github/gitignore/blob/main/Global/macOS.gitignore
11 | # General
12 | .DS_Store
13 | .AppleDouble
14 | .LSOverride
15 |
16 | # Icon must end with two \r
17 | Icon
18 |
19 | # Thumbnails
20 | ._*
21 |
22 | # Files that might appear in the root of a volume
23 | .DocumentRevisions-V100
24 | .fseventsd
25 | .Spotlight-V100
26 | .TemporaryItems
27 | .Trashes
28 | .VolumeIcon.icns
29 | .com.apple.timemachine.donotpresent
30 |
31 | # Directories potentially created on remote AFP share
32 | .AppleDB
33 | .AppleDesktop
34 | Network Trash Folder
35 | Temporary Items
36 | .apdisk
37 |
38 | # https://github.com/github/gitignore/blob/main/Python.gitignore
39 |
40 | # Byte-compiled / optimized / DLL files
41 | __pycache__/
42 | *.py[cod]
43 | *$py.class
44 |
45 | # C extensions
46 | *.so
47 |
48 | # Distribution / packaging
49 | .Python
50 | build/
51 | develop-eggs/
52 | dist/
53 | downloads/
54 | eggs/
55 | .eggs/
56 | lib/
57 | lib64/
58 | parts/
59 | sdist/
60 | var/
61 | wheels/
62 | share/python-wheels/
63 | *.egg-info/
64 | .installed.cfg
65 | *.egg
66 | MANIFEST
67 |
68 | # PyInstaller
69 | # Usually these files are written by a python script from a template
70 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
71 | *.manifest
72 | *.spec
73 |
74 | # Installer logs
75 | pip-log.txt
76 | pip-delete-this-directory.txt
77 |
78 | # Unit test / coverage reports
79 | htmlcov/
80 | .tox/
81 | .nox/
82 | .coverage
83 | .coverage.*
84 | .cache
85 | nosetests.xml
86 | coverage.xml
87 | *.cover
88 | *.py,cover
89 | .hypothesis/
90 | .pytest_cache/
91 | cover/
92 |
93 | # Translations
94 | *.mo
95 | *.pot
96 |
97 | # Django stuff:
98 | *.log
99 | local_settings.py
100 | db.sqlite3
101 | db.sqlite3-journal
102 |
103 | # Flask stuff:
104 | instance/
105 | .webassets-cache
106 |
107 | # Scrapy stuff:
108 | .scrapy
109 |
110 | # Sphinx documentation
111 | docs/_build/
112 |
113 | # PyBuilder
114 | .pybuilder/
115 | target/
116 |
117 | # Jupyter Notebook
118 | .ipynb_checkpoints
119 |
120 | # IPython
121 | profile_default/
122 | ipython_config.py
123 |
124 | # pyenv
125 | # For a library or package, you might want to ignore these files since the code is
126 | # intended to run in multiple environments; otherwise, check them in:
127 | # .python-version
128 |
129 | # pipenv
130 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
131 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
132 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
133 | # install all needed dependencies.
134 | #Pipfile.lock
135 |
136 | # poetry
137 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
138 | # This is especially recommended for binary packages to ensure reproducibility, and is more
139 | # commonly ignored for libraries.
140 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
141 | #poetry.lock
142 |
143 | # pdm
144 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
145 | #pdm.lock
146 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
147 | # in version control.
148 | # https://pdm.fming.dev/#use-with-ide
149 | .pdm.toml
150 |
151 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
152 | __pypackages__/
153 |
154 | # Celery stuff
155 | celerybeat-schedule
156 | celerybeat.pid
157 |
158 | # SageMath parsed files
159 | *.sage.py
160 |
161 | # Environments
162 | .env
163 | .venv
164 | env/
165 | venv/
166 | ENV/
167 | env.bak/
168 | venv.bak/
169 |
170 | # Spyder project settings
171 | .spyderproject
172 | .spyproject
173 |
174 | # Rope project settings
175 | .ropeproject
176 |
177 | # mkdocs documentation
178 | /site
179 |
180 | # mypy
181 | .mypy_cache/
182 | .dmypy.json
183 | dmypy.json
184 |
185 | # Pyre type checker
186 | .pyre/
187 |
188 | # pytype static type analyzer
189 | .pytype/
190 |
191 | # Cython debug symbols
192 | cython_debug/
193 |
194 | # PyCharm
195 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
196 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
197 | # and can be added to the global gitignore or merged into this file. For a more nuclear
198 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
199 | #.idea/
200 |
--------------------------------------------------------------------------------
/.python-version:
--------------------------------------------------------------------------------
1 | 3.10
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | 图片图标, 版权所有 保留所有权利
2 | 项目代码,基于 MIT 开源许可协议发布
3 | 生成作文,基于 CC0 1.0 通用协议发布
4 |
5 | ########################################################################
6 |
7 | MIT 开源许可协议
8 |
9 | 版权所有 (c) 2019-2021, Yiqun (Jack) Jiang
10 |
11 | 特此向任何得到本软件副本或相关文档的人授权:被授权人有权使用、复制、修改、 合并、出版、发布、散布、再授权和/或贩售软件及软件的副本,及授予被供应人 同等权利,只需服从以下义务:
12 |
13 | 在软件和软件的所有副本中都必须包含以上版权声明和本许可声明。
14 |
15 | 该软件是"按原样"提供的,没有任何形式的明示或暗示,包括但不限于为特定目的和 不侵权的适销性和适用性的保证担保。在任何情况下,作者或版权持有人,都无权要求 任何索赔,或有关损害赔偿的其他责任。无论在本软件的使用上或其他买卖交易中, 是否涉及合同,侵权或其他行为。
16 |
17 | ########################################################################
18 |
19 | CC0 1.0 通用许可协议
20 |
21 | 公共领域贡献
22 |
23 | CREATIVE COMMONS不是一家律师事务所,也不对外提供法律服务。提供本文件并不导致“律师—当事人”关系的建立。CREATIVE COMMONS按其现状(As Is)提供这些信息。CREATIVE COMMONS对于使用本文件,或者使用依本文件而提供的信息或作品,不提供任何担保,也不对因使用本文件,或者使用依本文件而提供的信息或作品而造成的损失承担损害赔偿责任。
24 |
25 | 目的声明
26 |
27 | 全球大多数司法管辖区的法律,都自动将专属的著作权及相关权利(定义如下)授予原始作品或数据库(本文件中都称为“作品”)的原始创作者及后续权利人(个别及统称为“权利人”)。
28 |
29 | 某些权利人愿意永久地放弃其著作权,以便将其贡献到创意、文化及科学作品的共享领域(“共享领域”)。在此共享领域中,公众能够安心地、无惧未来侵权主张地、并以最大可能的自由形式或为任何目的(包括但不限于商业目的)地以该作品为基础进行创作、修改、汇编、再利用或者再传播该作品。这些权利人之所以放弃著作权并将作品贡献于共享领域,可能是为了推动自由文化的理念或者未来的创意、文化及科学作品的创作,也可能是为了通过他人的使用和投入以赢得声誉和作品更广泛的传播。
30 |
31 | 声明将CC0适用于某一特定作品的人(“声明人”),为了上述或者其他的目的和动机,并未预期任何进一步的对价或补偿,在其作为本作品著作权或相关权利权利人的权利范围内,自愿选择将CC0适用于该作品上并公开地依据CC0的条款来传播该作品。声明人理解其对本作品的著作权和相关权利,以及CC0对该权利将产生的意义和法律影响。
32 |
33 | 1. 著作权及相关权利。 CC0项下的作品可能受到著作权或者相关权利的保护。著作权和相关权利包括但不限于下列权利:
34 |
35 | 复制、演绎、传播、表演、展示和翻译该作品的权利;
36 | 原始作者或者表演者所保留的著作人身权;
37 | 与该作品所描绘的人物形象有关的形象权或隐私权;
38 | 在以下第4条(a)款限制下,保护本作品免受不正当竞争的权利;
39 | 保护该作品中数据的摘录、传播、使用和再使用的权利;
40 | 数据库权利(例如欧洲议会及理事会在1996年3月11日通过的《欧共体数据库法律保护指令》(96/9/EC) (包括对该指令的任何修改或后续版本)所规定的权利,及任何国家在实施该指令过程中产生的权利); 以及
41 | 全球范围内基于相关法律或条约及任何国家对该法律或条约的实施所产生的相似的、相等同的或一致的权利。
42 |
43 | 2. 权利放弃。 在法律允许的最大范围内,并且在不违反任何相关法律的情况下, 声明人在此公开地、完全地、永久地、不可撤销地并且无条件地放弃和让渡其对本作品的所有著作权、相关权利及任何相关的已知或未知的(包括现存的和未来的)权利主张或诉讼请求(“权利放弃”)。该权利放弃 (i)适用于全球范围; (ii) 适用于相关法律及条约规定的最长存续期间(包括未来的延长期间); (iii) 适用于任何现存的或未来的媒介,及任意数量的复制件;并且 (iv) 使用者对该作品的使用可以是为任何目的,包括但不限于商业、广告和促销的目的。声明人放弃权利,是为了社会公众每一个成员的利益,且会损害其继承人的利益,声明人完全了解并希望该权利放弃不会被撤回、撤销、取消、终止,或者成为其他任何影响公众按照上述目的声明使用该作品的法律措施或适当措施适用的对象。
44 |
45 | 3. 转变为公众许可。 若因为任何原因,上述权利放弃的任何部分依据可适用法律被认定为无效或未生效,该权利放弃应当在考虑声明人上述目的声明的情况下在法律允许的范围内最大程度得以保留。此外,在这种情况下,声明人在此授予每一位受影响的使用者免费的、不可转让的、不可再许可的、非独占性的、不可撤销的及无条件的许可以行使声明人对该作品的著作权和相关权利(“许可”)。该许可 (i) 适用于全球范围; (ii) 适用于相关法律及条约规定的最长存续期间(包括未来的延长期间); (iii) 适用于任何现存的或未来的媒介,及任意数量的复制件;并且(iv) 使用者对该作品的使用可以是为任何目的,包括但不限于商业、广告和促销的目的。该许可应被视为自声明人将CC0适用于本作品之日起生效。若因为任何原因使该许可的任一部分在相关法律下被认定为无效或者未生效, 该部分不会使许可的其他部分无效。且在这种情况下,声明人声明他将不会与目的声明相悖而采取下述行动: (i) 行使其保留的任何与该作品有关的著作权和相关权利;或(ii) 提起任何与该作品相关的权利主张或诉讼请求。
46 |
47 | 4. 限制及免责条款。
48 |
49 | 本声明不涉及声明人所拥有的商标权或专利权,上述权利不会因本声明而被放弃、让渡、授权或者受到其它影响。
50 | 声明人按其现状提供本作品,并且,在可适用法律允许的最大范围内,不提供与本作品相关的任何声明或保证,无论明示、默示或是否为法律所规定,包括但不限于关于本作品权利之担保、可商业性、是否符合某特定目的、未侵害他人权利、不具有潜在或其它缺陷、准确性、或者存在或不存在任何不论能否被发现之错误。
51 | 声明人没有责任排除他人可能对本作品或者对本作品的任何使用所主张的权利,包括但不限于任何人对本作品享有的著作权及相关权利。声明人也没有责任为使用本作品获取所需的任何同意、许可或其他权利。
52 | 声明人理解并认可CREATIVE COMMONS并非本文件之当事人,对于CC0或本作品的使用也没有任何责任或义务。
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 小嘿作文生成器
2 |
3 | 根据主题谓语、主题宾语,生成中学考试风格的作文。
4 |
5 | ## 开始使用
6 |
7 | [
](https://zuowen.jackjyq.com/)
8 |
9 | ## 效果展示
10 |
11 | > 莎士比亚写道:“即使被关在果壳之中,我仍自以为是无限宇宙之王。”人生在世,总会被一些东西束缚,只有勇于尝试,才能冲破障碍,向星辰大海进发。这样就要求我们勇于尝试,以此来丰富充实人生,增加其厚度。
12 | >
13 | > 在生命的河流中,每个人都想游得轻松,快捷,姿势优美。悠悠千年的人类历史,沉淀出了厚重的文化。勇于尝试的人是形成这种文化的骨干。
14 | >
15 | > 见义勇为英雄方俊明,勇于尝试,纵身一跃,却被命运撞得头破血流。在轮椅上度过青春,但你却固执地相信善良,丝毫不悔。今天你不能起身,但我们知道,你早已站立在所有人的面前。由此可见,勇于尝试方能让人生的鲜花绚丽多彩。只有勇于尝试,才能朝着目标奔跑。有了尝试,就不会在人生的道路上迷失自我。尝试是人生最重要的关键词之一。
16 | >
17 | > 袁隆平勇于尝试,以解决中国人的粮食问题为己任,头顶烈日,脚踩烂泥,研究杂交水稻的新品种,一次又一次的为科学作出的卓越的贡献。这足以说明,勇于尝试是帮助他登上生命巅峰的发动机。正确对待尝试,能够让我们不怕困难,披荆斩棘,攀登高峰。尝试对每个人来说都很重要。
18 | >
19 | > 千万捐赠的老人马旭,勇于尝试,少小离家乡音无改,曾经勇冠巾帼如今再让世人惊叹。以点滴积蓄汇成大河灌溉一世的乡愁,你毕生节俭只为一次奢侈,耐得清贫守得心灵的高贵。假如他勇于尝试,就不可能取得如此辉煌的成就。勇于尝试,才会有水滴石穿的精神,永不间断的前行。我们看重尝试,是因为它能成就我们。
20 | >
21 | > 滚滚长江东逝水,浪花流去时光。历史的经验启示我们:成功来自勇于尝试。
22 | >
23 | > 勇于尝试虽不容易,但并非无法做到。席慕蓉说:“生命是一条奔流不息的河,我们都是那个过河的人。”是的,要顺利地渡过这条河,必须勇于尝试。我们应当不忘初心,砥砺前行,才能在人生精神的天空中熠熠生辉。(共 717 字)
24 |
25 | ## 配置
26 |
27 | 请参考 [生成器/配置](./生成器/README.md)
28 |
29 | ## 运行
30 |
31 | ```zsh
32 | python3.10 -m venv venv
33 | source venv/bin/activate
34 | pip install -r 完整依赖包.txt
35 |
36 | python 网站服务器.py
37 | ```
38 |
39 | ## 部署
40 |
41 |
42 | 点击展开
43 |
44 | 假设服务器名 vultr, 可通过 `ssh vultr` 连接
45 |
46 | ### 1. 上传代码
47 |
48 | 在服务器创建仓库
49 |
50 | ```zsh
51 | cd ~
52 | git init zuowen.jackjyq.com
53 | cd zuowen.jackjyq.com
54 | git config --local receive.denyCurrentBranch updateInstead
55 | ```
56 |
57 | 在本地电脑,上传代码
58 |
59 | ```zsh
60 | git remote add vultr vultr:~/zuowen.jackjyq.com
61 | git push
62 | ```
63 |
64 | 在服务器安装依赖
65 |
66 | ```zsh
67 | python3.10 -m venv venv
68 | source venv/bin/activate
69 | pip install --no-cache-dir -r 精简依赖包.txt
70 |
71 | # 测试能否运行,测试完按 Ctrl+C 退出
72 | python 网站服务器.py
73 | ```
74 |
75 | ### 2. 配置 gunicorn 服务
76 |
77 | 在服务器配置 gunicorn
78 |
79 | ```zsh
80 | sudo vim /etc/systemd/system/zuowen.jackjyq.com.service
81 | ```
82 |
83 | 粘贴如下内容
84 |
85 | ```ini
86 | [Unit]
87 | Description=zuowen.jackjyq.com
88 | After=network.target
89 |
90 | [Service]
91 | User=jack
92 | Group=www-data
93 | WorkingDirectory=/home/jack/zuowen.jackjyq.com
94 | Environment="PATH=/home/jack/zuowen.jackjyq.com/venv/bin"
95 | ExecStart=/home/jack/zuowen.jackjyq.com/venv/bin/gunicorn --worker-class=gevent --workers 3 --bind unix:zuowen.jackjyq.com.sock -m 007 网站服务器:app
96 |
97 | [Install]
98 | WantedBy=multi-user.target
99 | ```
100 |
101 | 在服务器启动服务
102 |
103 | ```zsh
104 | sudo systemctl start zuowen.jackjyq.com
105 | sudo systemctl enable zuowen.jackjyq.com
106 | sudo systemctl status zuowen.jackjyq.com
107 | ```
108 |
109 | ### 3. 配置 Nginx 服务
110 |
111 | 在服务器配置 Nginx
112 |
113 | ```zsh
114 | sudo vim /etc/nginx/conf.d/jackjyq.com.conf
115 | ```
116 |
117 | 粘贴如下内容
118 |
119 | ```conf
120 | server {
121 | listen 80;
122 | server_name zuowen.jackjyq.com;
123 | location / {
124 | include proxy_params;
125 | proxy_pass http://unix:/home/jack/zuowen.jackjyq.com/zuowen.jackjyq.com.sock;
126 | }
127 | }
128 | ```
129 |
130 | 在服务器启动服务
131 |
132 | ```zsh
133 | sudo nginx -t
134 | sudo systemctl restart nginx
135 | ```
136 |
137 | ### 4. 配置 HTTPS
138 |
139 | 在服务器运行
140 |
141 | ```zsh
142 | sudo certbot --nginx
143 | ```
144 |
145 | ### 5. 升级
146 |
147 | 如代码修改,在本地运行
148 |
149 | ```zsh
150 | git push vultr & ssh -t vultr 'sudo systemctl restart zuowen.jackjyq.com'
151 | ```
152 |
153 | ### 参考
154 |
155 | - [How To Serve Flask Applications with Gunicorn and Nginx on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-20-04)
156 | - [connect() to unix:/run/gunicorn.sock failed (13: Permission denied)](https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-20-04)
157 |
158 |
159 |
160 | ## 文件结构
161 |
162 | ```
163 | 项目根目录
164 | ├── 网站服务器.py: 网站服务器程序
165 | ├── 网站模版/:网站服务器 HTML 文件
166 | ├── 网站资源/:网站服务器 CSS, JavaScript, 图片等文件
167 | ├── 生成器/
168 | │ ├── 生成器.py:生成器程序,可单独运行
169 | │ └── ...
170 | ├── 笔记本/:一些独立的笔记和脚本
171 | ├── 精简依赖包.txt:部署使用,可能不包含未使用的模型
172 | ├── 完整依赖包.txt:开发使用,包含所有模型,以及 Linter,Formatter,Jupyter Lab...
173 | └── ...
174 | ```
175 |
176 | 本文主要介绍`网站服务器`,有关`生成器`请参考[这里](./生成器/README.md)。
177 |
178 | ## 鸣谢
179 |
180 | - 受到 [文章生成器](https://github.com/suulnnka/BullshitGenerator) 启发
181 |
182 | ## [授权协议](./LICENSE)
183 |
184 | - 图片图标, 版权所有 保留所有权利
185 | - 项目代码,基于 MIT 开源许可协议发布
186 | - 生成作文,基于 CC0 1.0 通用协议发布
187 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | def main():
2 | print("Hello from xiaohei-zuowen!")
3 |
4 |
5 | if __name__ == "__main__":
6 | main()
7 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [project]
2 | name = "xiaohei-zuowen"
3 | version = "0.1.0"
4 | description = "Add your description here"
5 | readme = "README.md"
6 | requires-python = ">=3.10"
7 | dependencies = [
8 | "aiohttp==3.8.4",
9 | "aiosignal==1.3.1",
10 | "async-timeout==4.0.2",
11 | "attrs==22.2.0",
12 | "cachetools==5.3.0",
13 | "certifi==2022.12.7",
14 | "charset-normalizer==3.1.0",
15 | "click==8.1.3",
16 | "contourpy==1.0.7",
17 | "cycler==0.11.0",
18 | "editdistance==0.6.2",
19 | "et-xmlfile==1.1.0",
20 | "flask==2.2.3",
21 | "fonttools==4.39.3",
22 | "frozenlist==1.3.3",
23 | "gevent==22.10.2",
24 | "google-analytics-data==0.16.2",
25 | "google-api-core==2.11.0",
26 | "google-auth==2.17.3",
27 | "googleapis-common-protos==1.59.0",
28 | "greenlet==2.0.2",
29 | "grpcio==1.53.0",
30 | "grpcio-status==1.53.0",
31 | "gunicorn==20.1.0",
32 | "idna==3.4",
33 | "itsdangerous==2.1.2",
34 | "jinja2==3.1.2",
35 | "joblib==1.2.0",
36 | "kiwisolver==1.4.4",
37 | "markupsafe==2.1.2",
38 | "matplotlib==3.7.1",
39 | "multidict==6.0.4",
40 | "numpy==1.24.2",
41 | "openai==0.27.4",
42 | "openpyxl==3.1.2",
43 | "packaging==23.0",
44 | "pandas==2.0.0",
45 | "pandas-stubs==1.5.3.230321",
46 | "pillow==9.5.0",
47 | "plotly==5.14.1",
48 | "proto-plus==1.22.2",
49 | "protobuf==4.22.3",
50 | "pyasn1==0.4.8",
51 | "pyasn1-modules==0.2.8",
52 | "pyparsing==3.0.9",
53 | "python-dateutil==2.8.2",
54 | "python-dotenv==1.0.0",
55 | "pytz==2023.3",
56 | "requests==2.28.2",
57 | "rsa==4.9",
58 | "scikit-learn==1.2.2",
59 | "scipy==1.10.1",
60 | "six==1.16.0",
61 | "sqlalchemy==2.0.9",
62 | "tenacity==8.2.2",
63 | "threadpoolctl==3.1.0",
64 | "tqdm==4.65.0",
65 | "types-pytz==2023.3.0.0",
66 | "typing-extensions==4.5.0",
67 | "tzdata==2023.3",
68 | "urllib3==1.26.15",
69 | "werkzeug==2.2.3",
70 | "yarl==1.8.2",
71 | "zope-event==4.6",
72 | "zope-interface==6.0",
73 | ]
74 |
--------------------------------------------------------------------------------
/完整依赖包.txt:
--------------------------------------------------------------------------------
1 | aiofiles==22.1.0
2 | aiohttp==3.8.4
3 | aiosignal==1.3.1
4 | aiosqlite==0.18.0
5 | anyio==3.6.2
6 | appnope==0.1.3
7 | argon2-cffi==21.3.0
8 | argon2-cffi-bindings==21.2.0
9 | arrow==1.2.3
10 | asttokens==2.2.1
11 | async-timeout==4.0.2
12 | attrs==22.2.0
13 | Babel==2.12.1
14 | backcall==0.2.0
15 | beautifulsoup4==4.12.0
16 | black==23.3.0
17 | bleach==6.0.0
18 | cachetools==5.3.0
19 | certifi==2022.12.7
20 | cffi==1.15.1
21 | charset-normalizer==3.1.0
22 | click==8.1.3
23 | colorclass==2.2.2
24 | comm==0.1.3
25 | contourpy==1.0.7
26 | cycler==0.11.0
27 | debugpy==1.6.6
28 | decorator==5.1.1
29 | defusedxml==0.7.1
30 | docopt==0.6.2
31 | editdistance==0.6.2
32 | executing==1.2.0
33 | fastjsonschema==2.16.3
34 | filelock==3.10.7
35 | Flask==2.2.3
36 | fonttools==4.39.3
37 | fqdn==1.5.1
38 | frozenlist==1.3.3
39 | google-analytics-data==0.16.2
40 | google-api-core==2.11.0
41 | google-auth==2.17.3
42 | google-auth-httplib2==0.1.0
43 | googleapis-common-protos==1.59.0
44 | greenlet==2.0.2
45 | grpcio==1.53.0
46 | grpcio-status==1.53.0
47 | gunicorn==20.1.0
48 | httplib2==0.22.0
49 | huggingface-hub==0.13.3
50 | idna==3.4
51 | importlib-metadata==6.1.0
52 | importlib-resources==5.12.0
53 | ipykernel==6.22.0
54 | ipython==8.12.0
55 | ipython-genutils==0.2.0
56 | ipywidgets==8.0.6
57 | isoduration==20.11.0
58 | itsdangerous==2.1.2
59 | jedi==0.18.2
60 | Jinja2==3.1.2
61 | joblib==1.2.0
62 | json5==0.9.11
63 | jsonpointer==2.3
64 | jsonschema==4.17.3
65 | jupyter==1.0.0
66 | jupyter-console==6.6.3
67 | jupyter-events==0.6.3
68 | jupyter-ydoc==0.2.3
69 | jupyter_client==8.1.0
70 | jupyter_core==5.3.0
71 | jupyter_server==2.5.0
72 | jupyter_server_fileid==0.8.0
73 | jupyter_server_terminals==0.4.4
74 | jupyter_server_ydoc==0.8.0
75 | jupyterlab==3.6.3
76 | jupyterlab-pygments==0.2.2
77 | jupyterlab-widgets==3.0.7
78 | jupyterlab_server==2.22.0
79 | kiwisolver==1.4.4
80 | MarkupSafe==2.1.2
81 | matplotlib==3.7.1
82 | matplotlib-inline==0.1.6
83 | mistune==2.0.5
84 | mpmath==1.3.0
85 | multidict==6.0.4
86 | mypy==1.1.1
87 | mypy-extensions==1.0.0
88 | nbclassic==0.5.4
89 | nbclient==0.7.3
90 | nbconvert==7.2.10
91 | nbformat==5.8.0
92 | nest-asyncio==1.5.6
93 | networkx==3.0
94 | nltk==3.8.1
95 | notebook==6.5.3
96 | notebook_shim==0.2.2
97 | numpy==1.24.2
98 | openai==0.27.4
99 | packaging==23.0
100 | pandas==2.0.0
101 | pandocfilters==1.5.0
102 | parso==0.8.3
103 | pathspec==0.11.1
104 | pexpect==4.8.0
105 | pickleshare==0.7.5
106 | Pillow==9.5.0
107 | pip-upgrader==1.4.15
108 | pkgutil_resolve_name==1.3.10
109 | platformdirs==3.2.0
110 | plotly==5.14.1
111 | prometheus-client==0.16.0
112 | prompt-toolkit==3.0.38
113 | proto-plus==1.22.2
114 | protobuf==4.22.3
115 | psutil==5.9.4
116 | ptyprocess==0.7.0
117 | pure-eval==0.2.2
118 | pyasn1==0.4.8
119 | pyasn1-modules==0.2.8
120 | pycparser==2.21
121 | Pygments==2.14.0
122 | pyparsing==3.0.9
123 | pyrsistent==0.19.3
124 | python-dateutil==2.8.2
125 | python-dotenv==1.0.0
126 | python-json-logger==2.0.7
127 | pytz==2023.3
128 | PyYAML==6.0
129 | pyzmq==25.0.2
130 | qtconsole==5.4.2
131 | QtPy==2.3.1
132 | regex==2023.3.23
133 | requests==2.28.2
134 | rfc3339-validator==0.1.4
135 | rfc3986-validator==0.1.1
136 | rsa==4.9
137 | scikit-learn==1.2.2
138 | scipy==1.10.1
139 | Send2Trash==1.8.0
140 | sentence-transformers==2.2.2
141 | sentencepiece==0.1.97
142 | six==1.16.0
143 | sniffio==1.3.0
144 | soupsieve==2.4
145 | SQLAlchemy==2.0.9
146 | sqlalchemy-stubs==0.4
147 | stack-data==0.6.2
148 | sympy==1.11.1
149 | tenacity==8.2.2
150 | terminado==0.17.1
151 | terminaltables==3.1.10
152 | threadpoolctl==3.1.0
153 | tinycss2==1.2.1
154 | tokenizers==0.13.2
155 | tomli==2.0.1
156 | torch==2.0.0
157 | torchvision==0.15.1
158 | tornado==6.2
159 | tqdm==4.65.0
160 | traitlets==5.9.0
161 | transformers==4.27.4
162 | typing_extensions==4.5.0
163 | tzdata==2023.3
164 | uri-template==1.2.0
165 | uritemplate==4.1.1
166 | urllib3==1.26.15
167 | wcwidth==0.2.6
168 | webcolors==1.13
169 | webencodings==0.5.1
170 | websocket-client==1.5.1
171 | Werkzeug==2.2.3
172 | widgetsnbextension==4.0.7
173 | y-py==0.5.9
174 | yarl==1.8.2
175 | ypy-websocket==0.8.2
176 | zipp==3.15.0
177 |
--------------------------------------------------------------------------------
/生成器/.env.default:
--------------------------------------------------------------------------------
1 | # 相似度模型
2 | # 可选:
3 | # 1. "random_similarity",此为默认值
4 | # 2. "sbert_base_chinese_nli"
5 | # 3, "text_embedding_ada_002",需要同时提供 OPENAI_API_KEY
6 | #
7 | SIMILARITY_MODEL="random_similarity"
8 | OPENAI_API_KEY=""
9 | # credentials.json 文件路径
10 | GOOGLE_APPLICATION_CREDENTIALS=""
11 | # Google Analytics 的 property_id
12 | PROPERTY_ID=""
--------------------------------------------------------------------------------
/生成器/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 |
--------------------------------------------------------------------------------
/生成器/README.md:
--------------------------------------------------------------------------------
1 | # 生成器
2 |
3 | 根据[相似度模型](./相似度模型/README.md),在[素材库](./素材库/README.md)中选取适合素材,生成文章。
4 |
5 | ## 配置
6 |
7 | 可通过 `.env` 选择相似度模型。
8 |
9 | ```.env
10 | # 在
11 | cp .env.default .env
12 | ```
13 |
14 | 然后编辑 `.env` 文件。
15 |
16 | ## 运行
17 |
18 | 启动小嘿作文生成器命令行版
19 |
20 | ```zsh
21 | python3.10 -m venv venv
22 | source venv/bin/activate
23 | pip install -r 完整依赖包.txt
24 |
25 | python 生成器/生成器.py
26 | ```
27 |
--------------------------------------------------------------------------------
/生成器/数据库/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 | *.sqlite3
3 | *.sql
4 |
--------------------------------------------------------------------------------
/生成器/数据库/README.md:
--------------------------------------------------------------------------------
1 | # 数据库
2 |
3 | 参考[Importing and exporting data in SQLite](https://www.prisma.io/dataguide/sqlite/importing-and-exporting-data-in-sqlite)
4 |
--------------------------------------------------------------------------------
/生成器/数据库/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/生成器/数据库/__init__.py
--------------------------------------------------------------------------------
/生成器/数据库/数据库.py:
--------------------------------------------------------------------------------
1 | # -*- coding: UTF-8 -*-
2 | import pathlib
3 | import pickle
4 | import sys
5 | from datetime import datetime
6 | from typing import Optional
7 |
8 | # 把生成器目录加入系统路径,以便该文件可被其它文件调用
9 | 生成器目录 = str(pathlib.Path(__file__).parent.parent)
10 | if 生成器目录 not in sys.path:
11 | sys.path.insert(0, 生成器目录)
12 | from pathlib import Path
13 |
14 | from sqlalchemy import JSON, Column, DateTime, String, create_engine, LargeBinary
15 | from sqlalchemy.orm import declarative_base, sessionmaker
16 | from sqlalchemy.sql import func
17 |
18 | Base = declarative_base()
19 |
20 |
21 | class Sbert_base_chinese_nli_embeddings(Base):
22 | """
23 | 最长 512 Token
24 | https://www.sbert.net/examples/applications/computing-embeddings/README.html?highlight=encode#input-sequence-length
25 | """
26 |
27 | __tablename__ = "Sbert_base_chinese_nli_embeddings"
28 | sentense = Column(String(length=500), primary_key=True)
29 | embeddings = Column(JSON, nullable=False)
30 | timestamp = Column(
31 | DateTime(timezone=False),
32 | default=datetime.utcnow,
33 | onupdate=datetime.utcnow,
34 | nullable=False,
35 | )
36 |
37 |
38 | class Text_embedding_ada_002_embeddings(Base):
39 | """OpenAI Text Embedding
40 |
41 | 最长大约 8191 token, 设成500以避免消耗太多 API
42 | https://platform.openai.com/docs/guides/embeddings/what-are-embeddings
43 | """
44 |
45 | __tablename__ = "Text_embedding_ada_002_embeddings"
46 | sentense = Column(String(length=500), primary_key=True)
47 | embeddings = Column(LargeBinary)
48 | timestamp = Column(
49 | DateTime(timezone=False),
50 | default=datetime.utcnow,
51 | onupdate=datetime.utcnow,
52 | nullable=False,
53 | )
54 |
55 |
56 | class 数据库类:
57 | def __init__(self, database: str = "数据库.sqlite") -> None:
58 | self.数据库路径: Path = Path(__file__).parent / database
59 | self.engine = create_engine(f"sqlite+pysqlite:///{self.数据库路径}", echo=False)
60 | self.Session = sessionmaker(self.engine)
61 | Base.metadata.create_all(self.engine)
62 |
63 | def 读取特征向量_sbert_base_chinese_nli(self, 文本) -> Optional[list[float]]:
64 | # return None means not present in database
65 | with self.Session() as session:
66 | if result := session.get(Sbert_base_chinese_nli_embeddings, 文本):
67 | return result.embeddings # type: ignore
68 | return None
69 |
70 | def 插入特征向量_sbert_base_chinese_nli(self, 文本: str, 向量: list[float]):
71 | with self.Session() as session:
72 | session.add(Sbert_base_chinese_nli_embeddings(sentense=文本, embeddings=向量))
73 | session.commit()
74 |
75 | def 读取特征向量_text_embedding_ada_002(self, 文本) -> Optional[list[float]]:
76 | """二进制向量会转换成 object"""
77 | # return None means not present in database
78 | with self.Session() as session:
79 | if result := session.get(Text_embedding_ada_002_embeddings, 文本):
80 | return pickle.loads(result.embeddings) # type: ignore
81 | return None
82 |
83 | def 插入特征向量_text_embedding_ada_002(self, 文本: str, 向量: list[float]):
84 | """向量会转换成二进制保存,以节省空间"""
85 | with self.Session() as session:
86 | session.add(
87 | Text_embedding_ada_002_embeddings(
88 | sentense=文本, embeddings=pickle.dumps(向量)
89 | )
90 | )
91 | session.commit()
92 |
93 |
94 | if __name__ == "__main__":
95 | 数据库: 数据库类 = 数据库类()
96 | 特征向量 = 数据库.读取特征向量_text_embedding_ada_002("小嘿")
97 | print(type(特征向量), 特征向量)
98 |
--------------------------------------------------------------------------------
/生成器/生成器.py:
--------------------------------------------------------------------------------
1 | # -*- coding: UTF-8 -*-
2 | import pathlib
3 | import sys
4 |
5 | # 把生成器目录加入系统路径,以便该文件可被其它文件调用
6 | 生成器目录 = str(pathlib.Path(__file__).parent)
7 | if 生成器目录 not in sys.path:
8 | sys.path.insert(0, 生成器目录)
9 | import os
10 | import random
11 | from dataclasses import dataclass, field
12 | from pathlib import Path
13 | from typing import Any, Optional
14 | from datetime import datetime
15 | from dotenv import load_dotenv
16 | from tqdm import tqdm
17 | from 素材库.素材库 import 素材库类
18 |
19 |
20 | class InvalidSimilarityModel(Exception):
21 | pass
22 |
23 |
24 | @dataclass
25 | class 作文类:
26 | 文章: list[str] = field(default_factory=list)
27 | 段数: int = 0
28 | 字数: int = 0
29 | 谓语: str = ""
30 | 宾语: str = ""
31 |
32 |
33 | class 生成器类:
34 | """生成器使用示例:
35 |
36 | 作文: 作文类 = 生成器.生成作文(主题谓语=主题谓语, 主题宾语=主题宾语)
37 | """
38 |
39 | def __init__(self) -> None:
40 | # 载入 .env 文件
41 | load_dotenv(pathlib.Path(__file__).parent / ".env")
42 | self.相似度模型配置: Optional[str] = os.getenv(
43 | "SIMILARITY_MODEL", default="random_similarity"
44 | )
45 | self.相似度模型 = self._载入相似度模型(self.相似度模型配置)
46 | 素材库实例 = 素材库类()
47 | 素材库: dict[str, dict[str, list[Any]]] = 素材库实例.获取素材库()
48 | self.示例库: list[tuple[str, str]] = 素材库["示例库"]["主题词示例"]
49 | self.模版库: dict[str, list[str]] = 素材库["模版库"]
50 | self.语料库: dict[str, dict[str, Any]] = self._计算语料库特征向量(素材库["语料库"])
51 |
52 | def _载入相似度模型(self, 相似度模型配置: str):
53 | print(f"选取 {相似度模型配置} 相似度模型!")
54 | if 相似度模型配置 == "random_similarity":
55 | from 相似度模型.random_similarity import random_similarity as 相似度模型类
56 | elif 相似度模型配置 == "sbert_base_chinese_nli":
57 | from 相似度模型.sbert_base_chinese_nli import sbert_base_chinese_nli as 相似度模型类 # type: ignore
58 | elif 相似度模型配置 == "text_embedding_ada_002":
59 | from 相似度模型.text_embedding_ada_002 import text_embedding_ada_002 as 相似度模型类 # type: ignore
60 | else:
61 | raise InvalidSimilarityModel(f"不支持 {相似度模型配置} 相似度模型!")
62 | return 相似度模型类()
63 |
64 | def _计算语料库特征向量(self, 语料库: dict[str, list[str]]) -> dict[str, dict[str, Any]]:
65 | """在语料库上添加特征向量
66 | 输入格式:
67 | 语料库 = {
68 | 语料类别: [
69 | 语料
70 | ]
71 | }
72 | 输出格式:
73 | 语料库 = {
74 | 语料类别: {
75 | 语料: 特征向量
76 | }
77 | }
78 | """
79 |
80 | def 移除主题词占位符(语料: str) -> str:
81 | 语料 = 语料.replace("「主题宾语」", "")
82 | 语料 = 语料.replace("「主题宾语」", "")
83 | return 语料
84 |
85 | print("正在计算语料库的特征向量...")
86 | 语料总数: int = sum(len(语料列表) for 语料列表 in 语料库.values())
87 | 语料与向量库: dict[str, dict[str, Any]] = {}
88 | with tqdm(total=语料总数) as 进度条:
89 | for 语料类别 in 语料库.keys():
90 | 语料与向量列表: dict[str, Any] = {}
91 | for 语料 in 语料库[语料类别]:
92 | 语料与向量列表[语料] = self.相似度模型.计算特征向量(移除主题词占位符(语料))
93 | 进度条.update(1)
94 | 语料与向量库[语料类别] = 语料与向量列表
95 | return 语料与向量库
96 |
97 | def _生成类别相似度语料库(
98 | self, 主题词: str, 语料及特征向量: dict[str, float], 计算相似度并排序: bool
99 | ) -> list[tuple[str, float]]:
100 | """
101 | 计算相似度并排序 = True:
102 | 由 {语料: 特征向量 } 转换为 [(语料, 相似度)],并根据相似度排序
103 | 计算相似度并排序 = False:
104 | 由 {语料: 特征向量 } 转换为 [(语料, 0)],不排序
105 | """
106 | 语料及相似度: dict[str, float] = {}
107 | if 计算相似度并排序:
108 | 主题词特征向量 = self.相似度模型.计算特征向量(主题词)
109 | for 语料, 特征向量 in 语料及特征向量.items():
110 | 相似度 = self.相似度模型.计算相似度(主题词特征向量, 特征向量)
111 | 语料及相似度[语料] = 相似度
112 | return sorted(语料及相似度.items(), key=lambda item: item[1], reverse=True)
113 | else:
114 | return [(语料, 0) for 语料 in 语料及特征向量.keys()]
115 |
116 | def _生成相似度语料库(
117 | self,
118 | 主题谓语: str,
119 | 主题宾语: str,
120 | 语料库: dict[str, dict[str, Any]],
121 | ) -> dict[str, list[tuple[str, Any]]]:
122 | """生成针对该主题词的专用语料库,语料库输出格式:
123 | 专用语料库 = {
124 | 语料类别: [(语料, 相似度)]
125 | }
126 | """
127 | 相似度语料库: dict[str, list[tuple[str, Any]]] = {}
128 | 主题词 = f"{主题谓语}{主题宾语}"
129 | for 语料类别 in 语料库.keys():
130 | # 计算相似度、排序、并裁剪语料
131 | 相似度语料库[语料类别] = self._生成类别相似度语料库(主题词, 语料库[语料类别], 计算相似度并排序=True)[:10]
132 | return 相似度语料库
133 |
134 | def _替换语料(
135 | self, 文章: list[str], 专用语料库: dict[str, list[tuple[str, Any]]]
136 | ) -> list[str]:
137 | for 语料类别 in 专用语料库.keys():
138 | 待替换词 = f"「{语料类别}」"
139 | 语料索引 = 0
140 | for 段数 in range(len(文章)):
141 | while 文章[段数].find(待替换词) >= 0:
142 | # 若存在待替换词
143 | 文章[段数] = 文章[段数].replace(待替换词, 专用语料库[语料类别][语料索引][0], 1)
144 | 语料索引 += 1
145 | return 文章
146 |
147 | def _替换主题词(self, 文章: list[str], 主题谓语: str, 主题宾语: str) -> list[str]:
148 | for 段数 in range(len(文章)):
149 | 文章[段数] = 文章[段数].replace("「主题谓语」", 主题谓语)
150 | 文章[段数] = 文章[段数].replace("「主题宾语」", 主题宾语)
151 | return 文章
152 |
153 | def 生成作文(self, 主题谓语: str = "", 主题宾语: str = "") -> 作文类:
154 | # 第一步:选择模版
155 | 文章: list[str] = random.choice(list(self.模版库.values())).copy()
156 | # 第一步:替换语料
157 | 相似度语料库: dict[str, list[tuple[str, Any]]] = self._生成相似度语料库(主题谓语, 主题宾语, self.语料库)
158 | for 语料类别 in 相似度语料库.keys():
159 | random.shuffle(相似度语料库[语料类别])
160 | 文章 = self._替换语料(文章, 相似度语料库)
161 | # 第三步:替换主题词
162 | 文章 = self._替换主题词(文章, 主题谓语, 主题宾语)
163 | # 第四步: 生成统计信息
164 | 段数 = len(文章)
165 | 字数 = sum(len(段落) for 段落 in 文章)
166 | return 作文类(文章=文章, 段数=段数, 字数=字数, 谓语=主题谓语, 宾语=主题宾语)
167 |
168 | def 生成语料(self, 主题谓语: str = "", 主题宾语: str = "", 语料类别: str = "事例", 语料数量: int = 10):
169 | if 语料类别 not in self.语料库:
170 | return 作文类()
171 | # 第一步:生成素材列表
172 | 主题词 = f"{主题谓语}{主题宾语}"
173 | 素材与相似度列表: list[tuple[str, float]] = self._生成类别相似度语料库(
174 | 主题词, self.语料库[语料类别], 计算相似度并排序=True
175 | )[:语料数量]
176 | 素材列表: list[str] = [素材与相似度[0] for 素材与相似度 in 素材与相似度列表]
177 | # 第二步:替换主题词
178 | 素材列表 = self._替换主题词(素材列表, 主题谓语, 主题宾语)
179 | # 第三步: 生成统计信息
180 | 段数 = len(素材列表)
181 | 字数 = sum(len(段落) for 段落 in 素材列表)
182 | return 作文类(文章=素材列表, 段数=段数, 字数=字数, 谓语=主题谓语, 宾语=主题宾语)
183 |
184 | def 打印匹配素材列表(self):
185 | """打印成 markdown 格式"""
186 | print(f"# {self.相似度模型配置} 相似度模型报告:", end="\n\n")
187 | print(f"生成时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}", end="\n\n")
188 | for 语料类别 in self.语料库.keys():
189 | print(f"## 语料类别 {语料类别}:", end="\n")
190 | for 主题谓语, 主题宾语 in self.示例库:
191 | print(f"### 主题词: {主题谓语}{主题宾语}", end="\n\n")
192 | 匹配素材列表: list[tuple[str, float]] = self._生成类别相似度语料库(
193 | f"{主题谓语}{主题宾语}", self.语料库[语料类别], 计算相似度并排序=True
194 | )[:30]
195 | print("相似度 | 素材")
196 | print("-|-")
197 | for 素材, 相似度 in 匹配素材列表:
198 | print(f"{相似度} | {素材}")
199 | print()
200 |
201 |
202 | # 命令行界面
203 | if __name__ == "__main__":
204 | 生成器: 生成器类 = 生成器类()
205 | # 生成器.生成匹配素材列表()
206 | print("欢迎使用小嘿作文生成器!按 Ctrl+C 退出。")
207 | print("主题词示例:")
208 | print(", ".join([示例[0] + "|" + 示例[1] for 示例 in 生成器.示例库]))
209 | while True:
210 | print()
211 | 谓语 = input("请输入主题谓语: ")
212 | 宾语 = input("请输入主题宾语: ")
213 | 作文: 作文类 = 生成器.生成作文(谓语, 宾语)
214 | print(作文.谓语 + 作文.宾语)
215 | for 段落 in 作文.文章:
216 | print(段落)
217 | print(f"(共 {作文.段数} 段,{作文.字数} 字)")
218 |
--------------------------------------------------------------------------------
/生成器/相似度模型/.gitignore:
--------------------------------------------------------------------------------
1 | sbert_base_chinese_nli_model/
2 |
--------------------------------------------------------------------------------
/生成器/相似度模型/README.md:
--------------------------------------------------------------------------------
1 | # 相似度模型
2 |
3 | 计算素材与用户输入的相似度,以提高生成作文的质量。
4 |
5 | ## random_similarity(默认)
6 |
7 | 随机拼凑语料,资源占用最低。
8 |
9 | ## sbert_base_chinese_nli.py
10 |
11 | 使用 [sbert-base-chinese-nli](https://huggingface.co/uer/sbert-base-chinese-nli) 模型,内存占用大约 500 MB。
12 |
13 | ## text_embedding_ada_002
14 |
15 | 使用 OpenAI 的 [text_embedding_ada_002](https://platform.openai.com/docs/guides/embeddings) 模型,需要申请 [API Key](https://platform.openai.com/account/api-keys) ,并配置到 `.env` 中。
16 |
--------------------------------------------------------------------------------
/生成器/相似度模型/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/生成器/相似度模型/__init__.py
--------------------------------------------------------------------------------
/生成器/相似度模型/random_similarity.py:
--------------------------------------------------------------------------------
1 | # -*- coding: UTF-8 -*-
2 | import pathlib
3 | import sys
4 |
5 | # 把生成器目录加入系统路径,以便该文件可被其它文件调用
6 | 生成器目录 = str(pathlib.Path(__file__).parent.parent)
7 | if 生成器目录 not in sys.path:
8 | sys.path.insert(0, 生成器目录)
9 | import random
10 |
11 | from 相似度模型.相似度模型 import 相似度模型类模版
12 |
13 |
14 | class random_similarity(相似度模型类模版):
15 | def __init__(self) -> None:
16 | print("random_similarity 模型载入成功!")
17 |
18 | def 计算特征向量(self, 文本: str) -> list[float]:
19 | return [0]
20 |
21 | def 计算相似度(self, 向量1: list[float], 向量2: list[float]) -> float:
22 | return random.random()
23 |
24 |
25 | if __name__ == "__main__":
26 | 相似度模型 = random_similarity()
27 | 向量1 = 相似度模型.计算特征向量("你好")
28 | 向量2 = 相似度模型.计算特征向量("小嘿")
29 | 相似度 = 相似度模型.计算相似度(向量1, 向量2)
30 | print(向量1)
31 | print(向量2)
32 | print(相似度)
33 |
--------------------------------------------------------------------------------
/生成器/相似度模型/sbert_base_chinese_nli.py:
--------------------------------------------------------------------------------
1 | # -*- coding: UTF-8 -*-
2 | import pathlib
3 | import sys
4 |
5 | # 把生成器目录加入系统路径,以便该文件可被其它文件调用
6 | 生成器目录 = str(pathlib.Path(__file__).parent.parent)
7 | if 生成器目录 not in sys.path:
8 | sys.path.insert(0, 生成器目录)
9 |
10 | import os
11 | from pathlib import Path
12 |
13 | print("sbert_base_chinese_nli 模型加载中(1/2)...")
14 | # https://stackoverflow.com/questions/62691279/how-to-disable-tokenizers-parallelism-true-false-warning
15 | os.environ["TOKENIZERS_PARALLELISM"] = "false"
16 | from sentence_transformers import SentenceTransformer, util
17 |
18 | print("sbert_base_chinese_nli 模型载入成功(1/2)!")
19 | from 相似度模型.相似度模型 import 相似度模型类模版
20 | from 数据库.数据库 import 数据库类
21 |
22 |
23 | class sbert_base_chinese_nli(相似度模型类模版):
24 | # https://www.sbert.net/docs/quickstart.html
25 | def __init__(self) -> None:
26 | self.脚本所在路径: Path = Path(__file__).parent
27 | self.模型: SentenceTransformer = self._加载模型(
28 | self.脚本所在路径 / "sbert_base_chinese_nli_model"
29 | )
30 | self.模型.max_seq_length = 512
31 | self.数据库 = 数据库类()
32 |
33 | def _加载模型(self, 模型路径: Path) -> SentenceTransformer:
34 | if os.path.exists(模型路径):
35 | print(f"正在从 {模型路径} 加载 sbert_base_chinese_nli 模型(2/2)...")
36 | 模型: SentenceTransformer = SentenceTransformer(模型路径)
37 | else:
38 | print(f"正在下载 sbert_base_chinese_nli 模型(2/2)...")
39 | # https://huggingface.co/uer/sbert-base-chinese-nli
40 | 模型 = SentenceTransformer("uer/sbert-base-chinese-nli")
41 | 模型.save(模型路径)
42 | print("sbert_base_chinese_nli 模型载入成功(2/2)!")
43 | return 模型
44 |
45 | def 计算特征向量(self, 文本: str) -> list[float]:
46 | if 缓存特征向量 := self.数据库.读取特征向量_sbert_base_chinese_nli(文本):
47 | return 缓存特征向量
48 | 特征向量: list[float] = self.模型.encode(文本).tolist()
49 | self.数据库.插入特征向量_sbert_base_chinese_nli(文本, 特征向量)
50 | return 特征向量
51 |
52 | def 计算相似度(self, 向量1: list[float], 向量2: list[float]) -> float:
53 | return util.cos_sim(向量1, 向量2).item()
54 |
55 |
56 | if __name__ == "__main__":
57 | 相似度模型 = sbert_base_chinese_nli()
58 | 向量1 = 相似度模型.计算特征向量("你好")
59 | 向量2 = 相似度模型.计算特征向量("小嘿")
60 | 相似度 = 相似度模型.计算相似度(向量1, 向量2)
61 | print(向量1)
62 | print(向量2)
63 | print(相似度)
64 |
--------------------------------------------------------------------------------
/生成器/相似度模型/text_embedding_ada_002.py:
--------------------------------------------------------------------------------
1 | # -*- coding: UTF-8 -*-
2 | import pathlib
3 | import sys
4 |
5 | # 把生成器目录加入系统路径,以便该文件可被其它文件调用
6 | 生成器目录 = str(pathlib.Path(__file__).parent.parent)
7 | if 生成器目录 not in sys.path:
8 | sys.path.insert(0, 生成器目录)
9 |
10 | import os
11 | from pathlib import Path
12 |
13 | import openai
14 | from dotenv import load_dotenv
15 | from openai.embeddings_utils import cosine_similarity, get_embedding
16 | from 数据库.数据库 import 数据库类
17 | from 相似度模型.相似度模型 import 相似度模型类模版
18 |
19 |
20 | class OpenaiApiKeyNotFoundException(Exception):
21 | pass
22 |
23 |
24 | class text_embedding_ada_002(相似度模型类模版):
25 | # https://platform.openai.com/docs/guides/embeddings/use-cases
26 | def __init__(self) -> None:
27 | print(f"正在加载 text_embedding_ada_002 模型...")
28 | # 配置 API key
29 | self.脚本所在路径: Path = Path(__file__).parent
30 | 配置文件路径: Path = self.脚本所在路径.parent / ".env"
31 | load_dotenv(配置文件路径)
32 | if not os.getenv("OPENAI_API_KEY"):
33 | raise OpenaiApiKeyNotFoundException(f"无法找到 OPENAI_API_KEY, 请检查 {配置文件路径}!")
34 | openai.api_key = os.getenv("OPENAI_API_KEY")
35 | self.数据库 = 数据库类()
36 | print(f"text_embedding_ada_002 载入成功!")
37 |
38 | def 计算特征向量(self, 文本: str) -> list[float]:
39 | if 缓存特征向量 := self.数据库.读取特征向量_text_embedding_ada_002(文本):
40 | return 缓存特征向量
41 | # TODO https://platform.openai.com/docs/guides/rate-limits/retrying-with-exponential-backoff
42 | # TODO https://help.openai.com/en/articles/6897213-openai-library-error-types-guidance
43 | 特征向量: list[float] = get_embedding(文本, engine="text-embedding-ada-002")
44 | self.数据库.插入特征向量_text_embedding_ada_002(文本, 特征向量)
45 | return 特征向量
46 |
47 | def 计算相似度(self, 向量1: list[float], 向量2: list[float]) -> float:
48 | return float(cosine_similarity(向量1, 向量2))
49 |
50 |
51 | if __name__ == "__main__":
52 | 相似度模型 = text_embedding_ada_002()
53 | 向量1 = 相似度模型.计算特征向量("你好")
54 | 向量2 = 相似度模型.计算特征向量("小嘿")
55 | 相似度 = 相似度模型.计算相似度(向量1, 向量2)
56 | print(type(向量1[0]))
57 | print(相似度, type(相似度))
58 |
--------------------------------------------------------------------------------
/生成器/相似度模型/相似度模型.py:
--------------------------------------------------------------------------------
1 | # -*- coding: UTF-8 -*-
2 | from abc import ABC, abstractmethod
3 |
4 |
5 | class 相似度模型类模版(ABC):
6 | @abstractmethod
7 | def __init__(self) -> None:
8 | """载入模型"""
9 | pass
10 |
11 | @abstractmethod
12 | def 计算特征向量(self, 文本: str) -> list[float]:
13 | pass
14 |
15 | @abstractmethod
16 | def 计算相似度(self, 向量1: list[float], 向量2: list[float]) -> float:
17 | pass
18 |
--------------------------------------------------------------------------------
/生成器/笔记本/POC_sbert_base_chinese_nli.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "id": "8c89dfdd",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import copy\n",
11 | "import random\n",
12 | "import re\n",
13 | "import sqlite3\n",
14 | "from dataclasses import dataclass, field\n",
15 | "from os import listdir, path\n",
16 | "from typing import List, Dict, Tuple\n",
17 | "import sys\n",
18 | "import pathlib\n",
19 | "import pprint\n",
20 | "import time\n",
21 | "\n",
22 | "start = time.time()\n",
23 | "from sentence_transformers import SentenceTransformer, util\n",
24 | "print(f\"importing sentence_transformers takes {time.time() - start}\")\n",
25 | "\n",
26 | "start = time.time()\n",
27 | "model = SentenceTransformer(\"./model_cache\")\n",
28 | "print(f\"loading model takes {time.time() - start}\")\n",
29 | "基础路径 = (pathlib.Path.cwd() / '..').resolve()\n",
30 | "\n",
31 | "def 读取文件(文件路径: str) -> list:\n",
32 | " 数据 = []\n",
33 | " with open(文件路径, \"r\") as 文件:\n",
34 | " 原始数据 = 文件.readlines()\n",
35 | " # 去掉多余的换行符\n",
36 | " for 行 in 原始数据:\n",
37 | " 数据.append(行.strip())\n",
38 | " return 数据\n",
39 | "\n",
40 | "事例库 = 读取文件(基础路径 / \"语料库\" / \"事例.txt\")"
41 | ]
42 | },
43 | {
44 | "cell_type": "code",
45 | "execution_count": null,
46 | "id": "7cdf1556",
47 | "metadata": {},
48 | "outputs": [],
49 | "source": [
50 | "model.save(\"./model_cache\")"
51 | ]
52 | },
53 | {
54 | "cell_type": "code",
55 | "execution_count": null,
56 | "id": "dc1a6518",
57 | "metadata": {},
58 | "outputs": [],
59 | "source": [
60 | "事例库"
61 | ]
62 | },
63 | {
64 | "cell_type": "code",
65 | "execution_count": null,
66 | "id": "34fa40cd",
67 | "metadata": {},
68 | "outputs": [],
69 | "source": [
70 | "事例特征向量 = {}\n",
71 | "for 事例 in 事例库:\n",
72 | " 事例特征向量[事例] = model.encode(事例)"
73 | ]
74 | },
75 | {
76 | "cell_type": "code",
77 | "execution_count": null,
78 | "id": "c8fee31f",
79 | "metadata": {},
80 | "outputs": [],
81 | "source": [
82 | "事例特征向量"
83 | ]
84 | },
85 | {
86 | "cell_type": "code",
87 | "execution_count": null,
88 | "id": "290520a0",
89 | "metadata": {},
90 | "outputs": [],
91 | "source": [
92 | "主题谓语 = \"默默无闻\"\n",
93 | "主题宾语 = \"\""
94 | ]
95 | },
96 | {
97 | "cell_type": "code",
98 | "execution_count": null,
99 | "id": "dd0d2db4",
100 | "metadata": {},
101 | "outputs": [],
102 | "source": [
103 | "主题词特征向量 = model.encode(主题谓语 + 主题宾语)\n",
104 | "事例相似度: List[Tuple] = []\n",
105 | "for 事例, 特征向量 in 事例特征向量.items():\n",
106 | " 相似度 = util.cos_sim(主题词特征向量, 特征向量)\n",
107 | " 事例相似度.append((事例, 相似度))\n",
108 | "事例相似度 = sorted(事例相似度, key=lambda x: x[1], reverse=True)\n",
109 | "for item in 事例相似度:\n",
110 | " print(f\"{item[1].numpy()[0][0]:.2f} --> {item[0]}\")"
111 | ]
112 | },
113 | {
114 | "cell_type": "code",
115 | "execution_count": null,
116 | "id": "33e783ad",
117 | "metadata": {},
118 | "outputs": [],
119 | "source": [
120 | "事例特征向量 = {}\n",
121 | "for 事例 in 事例库:\n",
122 | " 事例 = 事例.replace(\"「主题谓语」「主题宾语」\", \"\")\n",
123 | " 事例特征向量[事例] = model.encode(事例)\n",
124 | "事例特征向量"
125 | ]
126 | },
127 | {
128 | "cell_type": "code",
129 | "execution_count": null,
130 | "id": "ff6a27c6",
131 | "metadata": {},
132 | "outputs": [],
133 | "source": [
134 | "主题词特征向量 = model.encode(主题谓语 + 主题宾语)\n",
135 | "事例相似度: List[Tuple] = []\n",
136 | "for 事例, 特征向量 in 事例特征向量.items():\n",
137 | " 相似度 = util.cos_sim(主题词特征向量, 特征向量)\n",
138 | " 事例相似度.append((事例, 相似度))\n",
139 | "事例相似度 = sorted(事例相似度, key=lambda x: x[1], reverse=True)\n",
140 | "for item in 事例相似度:\n",
141 | " print(f\"{item[1].numpy()[0][0]:.2f} --> {item[0]}\")"
142 | ]
143 | },
144 | {
145 | "cell_type": "code",
146 | "execution_count": null,
147 | "id": "7c30c25d",
148 | "metadata": {},
149 | "outputs": [],
150 | "source": []
151 | }
152 | ],
153 | "metadata": {
154 | "kernelspec": {
155 | "display_name": "Python 3 (ipykernel)",
156 | "language": "python",
157 | "name": "python3"
158 | },
159 | "language_info": {
160 | "codemirror_mode": {
161 | "name": "ipython",
162 | "version": 3
163 | },
164 | "file_extension": ".py",
165 | "mimetype": "text/x-python",
166 | "name": "python",
167 | "nbconvert_exporter": "python",
168 | "pygments_lexer": "ipython3",
169 | "version": "3.11.1"
170 | }
171 | },
172 | "nbformat": 4,
173 | "nbformat_minor": 5
174 | }
175 |
--------------------------------------------------------------------------------
/生成器/笔记本/POC_text_embedding_ada_002.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 4,
6 | "id": "f62158c4-a62d-4735-91de-de7655a2c696",
7 | "metadata": {
8 | "tags": []
9 | },
10 | "outputs": [
11 | {
12 | "name": "stdout",
13 | "output_type": "stream",
14 | "text": [
15 | "/Users/jackjyq/Github/xiaohei-zuowen/venv/bin/python\n"
16 | ]
17 | }
18 | ],
19 | "source": [
20 | "import os, sys\n",
21 | "print(sys.executable)\n",
22 | "from openai.embeddings_utils import get_embedding, cosine_similarity\n",
23 | "import openai\n",
24 | "openai.api_key = os.getenv(\"OPENAI_API_KEY\")"
25 | ]
26 | },
27 | {
28 | "cell_type": "code",
29 | "execution_count": 5,
30 | "id": "6a1755d0-494b-4156-8796-d3f80b33f52c",
31 | "metadata": {},
32 | "outputs": [
33 | {
34 | "data": {
35 | "text/plain": [
36 | "[-0.012610954232513905,\n",
37 | " -0.009982286021113396,\n",
38 | " -0.0034738352987915277,\n",
39 | " -0.014787092804908752,\n",
40 | " -0.024529803544282913,\n",
41 | " 0.01762206107378006,\n",
42 | " -0.0022876071743667126,\n",
43 | " -0.0012145114596933126,\n",
44 | " -0.013895341195166111,\n",
45 | " -0.03380667418241501,\n",
46 | " 0.03580313175916672,\n",
47 | " 0.021881170570850372,\n",
48 | " -0.010927275754511356,\n",
49 | " 0.00877110194414854,\n",
50 | " -0.0112600177526474,\n",
51 | " -3.8421399949584156e-05,\n",
52 | " 0.02373122051358223,\n",
53 | " 0.009356728754937649,\n",
54 | " 0.052067600190639496,\n",
55 | " -0.012378034181892872,\n",
56 | " 0.008464978076517582,\n",
57 | " 0.005164169240742922,\n",
58 | " -0.013509360142052174,\n",
59 | " -0.013136687688529491,\n",
60 | " -0.01782170683145523,\n",
61 | " 0.010508019477128983,\n",
62 | " 0.025062192231416702,\n",
63 | " -0.016091443598270416,\n",
64 | " 0.004655072465538979,\n",
65 | " -0.004675037227571011,\n",
66 | " 0.023797769099473953,\n",
67 | " 0.005856274161487818,\n",
68 | " -0.031091492623090744,\n",
69 | " -0.002537164371460676,\n",
70 | " -0.011932158842682838,\n",
71 | " -0.00819212943315506,\n",
72 | " 0.007366926874965429,\n",
73 | " -0.009123808704316616,\n",
74 | " 0.024929095059633255,\n",
75 | " 0.001301856362260878,\n",
76 | " 0.015479197725653648,\n",
77 | " 0.014720544219017029,\n",
78 | " 0.00607255706563592,\n",
79 | " 0.019911332055926323,\n",
80 | " -0.017755158245563507,\n",
81 | " 0.0026819074992090464,\n",
82 | " -0.0038631444331258535,\n",
83 | " -0.009536409750580788,\n",
84 | " -0.011579451151192188,\n",
85 | " 0.01570546254515648,\n",
86 | " -0.010002249851822853,\n",
87 | " -0.0022293771617114544,\n",
88 | " -0.00403284328058362,\n",
89 | " -0.009170393459498882,\n",
90 | " -0.012584335170686245,\n",
91 | " -0.002295925747603178,\n",
92 | " -0.012058600783348083,\n",
93 | " 0.008711207658052444,\n",
94 | " -0.010820797644555569,\n",
95 | " -0.007606501691043377,\n",
96 | " -0.005683247931301594,\n",
97 | " 0.019072819501161575,\n",
98 | " -0.03668157383799553,\n",
99 | " 0.014015128836035728,\n",
100 | " 0.006525087170302868,\n",
101 | " -0.010494709946215153,\n",
102 | " 0.024223679676651955,\n",
103 | " 0.019019581377506256,\n",
104 | " -0.000835184589959681,\n",
105 | " 0.0112600177526474,\n",
106 | " 0.003405623137950897,\n",
107 | " 0.012105184607207775,\n",
108 | " 0.01158610638231039,\n",
109 | " -0.005769761279225349,\n",
110 | " 0.02274630218744278,\n",
111 | " 0.004977833013981581,\n",
112 | " -0.025834154337644577,\n",
113 | " 0.01641087792813778,\n",
114 | " 0.006594963371753693,\n",
115 | " -0.01369569543749094,\n",
116 | " 0.014547517523169518,\n",
117 | " -0.019432183355093002,\n",
118 | " -0.011106956750154495,\n",
119 | " 0.010494709946215153,\n",
120 | " 0.014800402335822582,\n",
121 | " 0.004987815394997597,\n",
122 | " 0.005317230708897114,\n",
123 | " 0.03383329510688782,\n",
124 | " -0.010834107175469398,\n",
125 | " -0.006664839573204517,\n",
126 | " 0.010075453668832779,\n",
127 | " 0.014707233756780624,\n",
128 | " 0.023345239460468292,\n",
129 | " 0.013462775386869907,\n",
130 | " 0.0048447358421981335,\n",
131 | " 0.02021745592355728,\n",
132 | " -0.00247394316829741,\n",
133 | " 0.02471613883972168,\n",
134 | " 0.005942787509411573,\n",
135 | " -0.007952554151415825,\n",
136 | " -0.004944558721035719,\n",
137 | " -0.003999568987637758,\n",
138 | " -0.013296404853463173,\n",
139 | " 0.007939244620501995,\n",
140 | " -0.0006263884133659303,\n",
141 | " -0.004897974897176027,\n",
142 | " -0.008844304829835892,\n",
143 | " -0.015559055842459202,\n",
144 | " 0.02271968126296997,\n",
145 | " -0.003933020401746035,\n",
146 | " -0.023185521364212036,\n",
147 | " 0.024556422606110573,\n",
148 | " 0.001566387014463544,\n",
149 | " -0.022706372663378716,\n",
150 | " -0.002904845168814063,\n",
151 | " -0.0033324197866022587,\n",
152 | " 0.007034183945506811,\n",
153 | " 0.015479197725653648,\n",
154 | " -0.030692201107740402,\n",
155 | " -0.003972949460148811,\n",
156 | " -0.009795949794352055,\n",
157 | " 0.018207689747214317,\n",
158 | " 0.022400248795747757,\n",
159 | " -0.041313353925943375,\n",
160 | " 0.025687748566269875,\n",
161 | " 0.0016262807184830308,\n",
162 | " -0.01719615049660206,\n",
163 | " -0.0016129709547385573,\n",
164 | " 0.0013991836458444595,\n",
165 | " -0.0071606263518333435,\n",
166 | " 0.024596352130174637,\n",
167 | " -0.013476085849106312,\n",
168 | " 0.011153540574014187,\n",
169 | " 0.02976052090525627,\n",
170 | " -0.019205916672945023,\n",
171 | " 0.02074984461069107,\n",
172 | " -0.006668166723102331,\n",
173 | " 0.007626465987414122,\n",
174 | " -0.013815483078360558,\n",
175 | " -0.026952171698212624,\n",
176 | " 0.021774692460894585,\n",
177 | " 0.029627423733472824,\n",
178 | " -0.0117524778470397,\n",
179 | " -0.006874467246234417,\n",
180 | " 0.008870924822986126,\n",
181 | " 7.996226486284286e-05,\n",
182 | " 0.0323692262172699,\n",
183 | " 0.0021794657222926617,\n",
184 | " -0.027630966156721115,\n",
185 | " -0.007613156456500292,\n",
186 | " 0.0018583688652142882,\n",
187 | " -0.014720544219017029,\n",
188 | " 0.012777325697243214,\n",
189 | " 0.0099223917350173,\n",
190 | " -0.004069445189088583,\n",
191 | " 0.030133193358778954,\n",
192 | " -0.0004202958079986274,\n",
193 | " 0.02587408386170864,\n",
194 | " -0.006578326225280762,\n",
195 | " 0.0008900871616788208,\n",
196 | " -0.020656676962971687,\n",
197 | " 0.017209460958838463,\n",
198 | " 0.035403840243816376,\n",
199 | " -0.01369569543749094,\n",
200 | " 0.00043714093044400215,\n",
201 | " 0.025834154337644577,\n",
202 | " 0.019658448174595833,\n",
203 | " 0.002705199411138892,\n",
204 | " 0.031969934701919556,\n",
205 | " 0.004016206134110689,\n",
206 | " -0.00587623892351985,\n",
207 | " 0.015026667155325413,\n",
208 | " -0.011659309267997742,\n",
209 | " -0.0035503662656992674,\n",
210 | " -3.1116655009100214e-05,\n",
211 | " 0.008252022787928581,\n",
212 | " 0.002269306220114231,\n",
213 | " 0.0006634060409851372,\n",
214 | " 0.003876454196870327,\n",
215 | " -0.014321252703666687,\n",
216 | " -0.02668597735464573,\n",
217 | " 0.0020064394921064377,\n",
218 | " 0.00823205802589655,\n",
219 | " 0.018686838448047638,\n",
220 | " -0.010541293770074844,\n",
221 | " -0.0019448819803074002,\n",
222 | " 0.009576339274644852,\n",
223 | " -0.004781514871865511,\n",
224 | " -0.010454780422151089,\n",
225 | " -0.01368238590657711,\n",
226 | " 0.014374490827322006,\n",
227 | " 0.026047110557556152,\n",
228 | " -0.01120677962899208,\n",
229 | " -0.01756882295012474,\n",
230 | " -0.6231075525283813,\n",
231 | " -0.021748073399066925,\n",
232 | " -0.019192608073353767,\n",
233 | " -0.009443242102861404,\n",
234 | " 0.0050177620723843575,\n",
235 | " 0.028056876733899117,\n",
236 | " -0.013223201036453247,\n",
237 | " 0.01369569543749094,\n",
238 | " -0.004052808042615652,\n",
239 | " -0.00637535285204649,\n",
240 | " -0.01784832589328289,\n",
241 | " 0.026033800095319748,\n",
242 | " 0.015026667155325413,\n",
243 | " 0.009955666027963161,\n",
244 | " -0.004029516130685806,\n",
245 | " -0.0031677118968218565,\n",
246 | " -0.0010240161791443825,\n",
247 | " 0.004937903955578804,\n",
248 | " 0.008451668545603752,\n",
249 | " -0.0004329816438257694,\n",
250 | " -0.0009949011728167534,\n",
251 | " 0.009636232629418373,\n",
252 | " 0.005310575943440199,\n",
253 | " 0.018460573628544807,\n",
254 | " 0.03173035755753517,\n",
255 | " -0.008331880904734135,\n",
256 | " 0.01088069099932909,\n",
257 | " -0.015745392069220543,\n",
258 | " -0.00802575796842575,\n",
259 | " 0.013010245747864246,\n",
260 | " -0.008365155197679996,\n",
261 | " 0.003067889017984271,\n",
262 | " 0.0009566356893628836,\n",
263 | " -0.005766433663666248,\n",
264 | " 0.0577109195291996,\n",
265 | " -0.006378680467605591,\n",
266 | " -0.010002249851822853,\n",
267 | " 0.04413501173257828,\n",
268 | " 0.0007902642828412354,\n",
269 | " 0.019525351002812386,\n",
270 | " -0.031544022262096405,\n",
271 | " -0.0076797050423920155,\n",
272 | " 0.02184124104678631,\n",
273 | " -0.0002757606271188706,\n",
274 | " 0.004648417700082064,\n",
275 | " 0.00379659584723413,\n",
276 | " 0.0035337291192263365,\n",
277 | " -0.004066117573529482,\n",
278 | " -0.007832766510546207,\n",
279 | " 0.00041260113357566297,\n",
280 | " 0.005822999868541956,\n",
281 | " -0.0034472160041332245,\n",
282 | " -0.0016321036964654922,\n",
283 | " -0.0029314644634723663,\n",
284 | " -0.007739598862826824,\n",
285 | " -0.013016900047659874,\n",
286 | " 0.01838071458041668,\n",
287 | " -0.03944999352097511,\n",
288 | " 0.01804797165095806,\n",
289 | " 0.01051467377692461,\n",
290 | " 0.01744903437793255,\n",
291 | " -0.016397567465901375,\n",
292 | " -0.0018783333944156766,\n",
293 | " -0.010614496655762196,\n",
294 | " 0.01638425886631012,\n",
295 | " 0.010800832882523537,\n",
296 | " -0.027950400486588478,\n",
297 | " -0.01815444976091385,\n",
298 | " 0.020616747438907623,\n",
299 | " 0.0026918896473944187,\n",
300 | " -0.008751137182116508,\n",
301 | " 0.02128223329782486,\n",
302 | " 0.004561904352158308,\n",
303 | " -0.011772442609071732,\n",
304 | " 0.022227222099900246,\n",
305 | " 0.02193440869450569,\n",
306 | " -0.0019332360243424773,\n",
307 | " 0.004621798172593117,\n",
308 | " 0.005902858451008797,\n",
309 | " -0.006395317614078522,\n",
310 | " 0.007719634100794792,\n",
311 | " 0.011506248265504837,\n",
312 | " -0.007799492683261633,\n",
313 | " 0.009043950587511063,\n",
314 | " 0.013961889781057835,\n",
315 | " -0.020896250382065773,\n",
316 | " -0.025554651394486427,\n",
317 | " 0.004269090946763754,\n",
318 | " 0.005120912566781044,\n",
319 | " 0.018407335504889488,\n",
320 | " 0.014720544219017029,\n",
321 | " 0.024782687425613403,\n",
322 | " 0.011932158842682838,\n",
323 | " -0.009582994505763054,\n",
324 | " 0.0022027576342225075,\n",
325 | " -0.005946114659309387,\n",
326 | " -0.02733815275132656,\n",
327 | " 0.0009907418861985207,\n",
328 | " -0.0038032508455216885,\n",
329 | " -0.028509408235549927,\n",
330 | " -0.009782640263438225,\n",
331 | " 0.006238928530365229,\n",
332 | " 0.01678355038166046,\n",
333 | " 0.00969612691551447,\n",
334 | " -0.004801479168236256,\n",
335 | " 0.013882031664252281,\n",
336 | " 0.011273328214883804,\n",
337 | " -0.0025305093731731176,\n",
338 | " 0.015559055842459202,\n",
339 | " -0.0385715514421463,\n",
340 | " 0.02550141140818596,\n",
341 | " 0.007127352058887482,\n",
342 | " -0.007114042062312365,\n",
343 | " 0.010215205140411854,\n",
344 | " -0.010647770948708057,\n",
345 | " -0.026033800095319748,\n",
346 | " 0.01742241531610489,\n",
347 | " 0.023238761350512505,\n",
348 | " 0.030399387702345848,\n",
349 | " -0.011905538849532604,\n",
350 | " 0.03662833198904991,\n",
351 | " 0.0060625746846199036,\n",
352 | " 0.018979651853442192,\n",
353 | " 0.009582994505763054,\n",
354 | " 0.018340786918997765,\n",
355 | " 0.030239669606089592,\n",
356 | " -0.018314165994524956,\n",
357 | " 0.005989371333271265,\n",
358 | " -0.020616747438907623,\n",
359 | " -0.017635371536016464,\n",
360 | " 0.001720280502922833,\n",
361 | " -0.017009815201163292,\n",
362 | " 0.012151769362390041,\n",
363 | " -0.0164641160517931,\n",
364 | " 0.019325705245137215,\n",
365 | " -0.006758007220923901,\n",
366 | " 0.027737444266676903,\n",
367 | " -0.020643366500735283,\n",
368 | " -0.009097189642488956,\n",
369 | " -0.005922822747379541,\n",
370 | " -0.01762206107378006,\n",
371 | " 0.011592760682106018,\n",
372 | " 0.016796858981251717,\n",
373 | " -0.01349604967981577,\n",
374 | " 0.02572767809033394,\n",
375 | " -0.01925915665924549,\n",
376 | " 0.01064111664891243,\n",
377 | " -0.018447263166308403,\n",
378 | " -0.0007095741457305849,\n",
379 | " 0.009463206864893436,\n",
380 | " -0.01655728369951248,\n",
381 | " -0.023851007223129272,\n",
382 | " -0.010834107175469398,\n",
383 | " 0.008092306554317474,\n",
384 | " 0.00561669934540987,\n",
385 | " -0.0016187939327210188,\n",
386 | " -0.017608752474188805,\n",
387 | " -0.017076363787055016,\n",
388 | " 0.0015597321325913072,\n",
389 | " -0.00578639842569828,\n",
390 | " 0.014334562234580517,\n",
391 | " 0.02559458091855049,\n",
392 | " -0.02637985348701477,\n",
393 | " 2.7919204512727447e-05,\n",
394 | " -0.005476947408169508,\n",
395 | " -0.012883802875876427,\n",
396 | " -0.01878000609576702,\n",
397 | " 0.005370469763875008,\n",
398 | " -0.0016179621452465653,\n",
399 | " -0.051588453352451324,\n",
400 | " 0.010900655761361122,\n",
401 | " -0.004112701863050461,\n",
402 | " -0.00782611221075058,\n",
403 | " -0.006927706301212311,\n",
404 | " -0.00441217003390193,\n",
405 | " -0.005456982646137476,\n",
406 | " 0.0045086657628417015,\n",
407 | " -0.014148226007819176,\n",
408 | " -0.01923253759741783,\n",
409 | " -0.011027097702026367,\n",
410 | " -0.006515105254948139,\n",
411 | " -0.029733901843428612,\n",
412 | " -0.013489395380020142,\n",
413 | " 0.010674390941858292,\n",
414 | " 0.0018683511298149824,\n",
415 | " 0.01666376180946827,\n",
416 | " 0.014068367891013622,\n",
417 | " 0.014960118569433689,\n",
418 | " -0.027737444266676903,\n",
419 | " 0.003427251474931836,\n",
420 | " 0.0030545794870704412,\n",
421 | " 0.005320558324456215,\n",
422 | " -0.011619380675256252,\n",
423 | " 0.015053287148475647,\n",
424 | " 0.01307679433375597,\n",
425 | " -0.018793316558003426,\n",
426 | " 0.01754220388829708,\n",
427 | " 0.019126059487462044,\n",
428 | " 0.010814142413437366,\n",
429 | " 0.027737444266676903,\n",
430 | " 0.003670153673738241,\n",
431 | " 0.0008031580364331603,\n",
432 | " 0.0074600949883461,\n",
433 | " -0.0016878381138667464,\n",
434 | " 0.006149088032543659,\n",
435 | " -0.03242246434092522,\n",
436 | " 0.0039762770757079124,\n",
437 | " -0.008857614360749722,\n",
438 | " 0.004721621051430702,\n",
439 | " 0.016876718029379845,\n",
440 | " -0.013775554485619068,\n",
441 | " -0.003174366895109415,\n",
442 | " -0.0038997463416308165,\n",
443 | " -0.002646969398483634,\n",
444 | " 0.0017718557501211762,\n",
445 | " 0.03242246434092522,\n",
446 | " 0.0067946091294288635,\n",
447 | " 0.022852778434753418,\n",
448 | " -0.02072322554886341,\n",
449 | " -0.012890458106994629,\n",
450 | " 0.0106278071179986,\n",
451 | " -0.02004442922770977,\n",
452 | " -0.002059678314253688,\n",
453 | " -0.006238928530365229,\n",
454 | " -0.02938784845173359,\n",
455 | " -0.00768635980784893,\n",
456 | " 0.012431273236870766,\n",
457 | " 0.02181462198495865,\n",
458 | " 0.0012436264660209417,\n",
459 | " -0.012610954232513905,\n",
460 | " -0.035882990807294846,\n",
461 | " -0.006980944890528917,\n",
462 | " -0.0015089887892827392,\n",
463 | " -0.0066315652802586555,\n",
464 | " -0.033061329275369644,\n",
465 | " -0.023411788046360016,\n",
466 | " 0.012264901772141457,\n",
467 | " -0.021575046703219414,\n",
468 | " -0.006358715705573559,\n",
469 | " 0.01708967238664627,\n",
470 | " -0.013516014441847801,\n",
471 | " 0.02981375902891159,\n",
472 | " 0.015891797840595245,\n",
473 | " -0.009789294563233852,\n",
474 | " 0.026592809706926346,\n",
475 | " 0.04240474849939346,\n",
476 | " 0.033513858914375305,\n",
477 | " 0.004225834272801876,\n",
478 | " -0.015918418765068054,\n",
479 | " 0.035430457442998886,\n",
480 | " -0.005097620654851198,\n",
481 | " 0.04016871750354767,\n",
482 | " -0.00915042869746685,\n",
483 | " -0.0024140493478626013,\n",
484 | " 0.0133030591532588,\n",
485 | " -0.027604347094893456,\n",
486 | " 0.0007249634945765138,\n",
487 | " 0.008704553358256817,\n",
488 | " 0.012457892298698425,\n",
489 | " 0.023438407108187675,\n",
490 | " 0.01444103941321373,\n",
491 | " -0.0017751831328496337,\n",
492 | " -0.0013634138740599155,\n",
493 | " -0.0014890242600813508,\n",
494 | " 0.035403840243816376,\n",
495 | " 0.0053871069103479385,\n",
496 | " 0.0003009243228007108,\n",
497 | " -0.016264470294117928,\n",
498 | " -0.00488466490060091,\n",
499 | " -0.014906879514455795,\n",
500 | " 0.006225618999451399,\n",
501 | " 0.004185905214399099,\n",
502 | " 0.00029759688186459243,\n",
503 | " -0.005154186859726906,\n",
504 | " 0.02413051202893257,\n",
505 | " -0.008478287607431412,\n",
506 | " -0.008551491424441338,\n",
507 | " -0.009469861164689064,\n",
508 | " 0.015758700668811798,\n",
509 | " 0.008165509440004826,\n",
510 | " -0.010421506129205227,\n",
511 | " -0.03455201908946037,\n",
512 | " 0.011659309267997742,\n",
513 | " 0.010341648012399673,\n",
514 | " -0.002538827946409583,\n",
515 | " -0.014787092804908752,\n",
516 | " -0.021947719156742096,\n",
517 | " 0.007493369281291962,\n",
518 | " -0.009409967809915543,\n",
519 | " 0.01141307968646288,\n",
520 | " -0.004145976155996323,\n",
521 | " 0.027950400486588478,\n",
522 | " 0.013003590516746044,\n",
523 | " 2.1524303519981913e-05,\n",
524 | " -0.006501795258373022,\n",
525 | " 0.012098530307412148,\n",
526 | " 0.02890869975090027,\n",
527 | " 0.0004076100012753159,\n",
528 | " -0.02787054143846035,\n",
529 | " 0.012178388424217701,\n",
530 | " -0.0037766313180327415,\n",
531 | " -0.0005411230376921594,\n",
532 | " 0.002636987017467618,\n",
533 | " -0.03231598436832428,\n",
534 | " -0.00021503506286535412,\n",
535 | " -0.004458754323422909,\n",
536 | " -0.024809306487441063,\n",
537 | " -0.01996457204222679,\n",
538 | " -0.0030545794870704412,\n",
539 | " 0.004971178248524666,\n",
540 | " -0.03455201908946037,\n",
541 | " -0.014773782342672348,\n",
542 | " -0.01711629144847393,\n",
543 | " -0.011000478640198708,\n",
544 | " -0.012650882825255394,\n",
545 | " 0.0035803131759166718,\n",
546 | " -0.006508450023829937,\n",
547 | " -0.0076730502769351006,\n",
548 | " 0.00877110194414854,\n",
549 | " -0.014614066109061241,\n",
550 | " -0.023345239460468292,\n",
551 | " -0.011652654968202114,\n",
552 | " -0.03724057972431183,\n",
553 | " 0.002101271180436015,\n",
554 | " 0.053558290004730225,\n",
555 | " 0.021641595289111137,\n",
556 | " -0.00016990682343021035,\n",
557 | " 0.02327869087457657,\n",
558 | " -0.008105616085231304,\n",
559 | " -0.002334191231057048,\n",
560 | " -0.03625566139817238,\n",
561 | " -0.016756929457187653,\n",
562 | " 0.01686340756714344,\n",
563 | " 0.0033790036104619503,\n",
564 | " -0.005071001127362251,\n",
565 | " 0.007719634100794792,\n",
566 | " 0.004638435319066048,\n",
567 | " 0.019072819501161575,\n",
568 | " 0.014800402335822582,\n",
569 | " 0.0026270048692822456,\n",
570 | " -0.007806147448718548,\n",
571 | " -0.02499564364552498,\n",
572 | " 0.0029680661391466856,\n",
573 | " 0.017888255417346954,\n",
574 | " 0.002122899517416954,\n",
575 | " 0.005669938400387764,\n",
576 | " 0.025128740817308426,\n",
577 | " 0.021268922835588455,\n",
578 | " -0.0205501988530159,\n",
579 | " 0.0028499425388872623,\n",
580 | " 0.025301765650510788,\n",
581 | " 0.03921041637659073,\n",
582 | " 0.00930349063128233,\n",
583 | " -0.01028840895742178,\n",
584 | " 0.0054203812032938,\n",
585 | " -0.001482369378209114,\n",
586 | " -0.010188586078584194,\n",
587 | " -0.015292861498892307,\n",
588 | " 0.002475606743246317,\n",
589 | " -0.0022826159838587046,\n",
590 | " -0.0003984595532529056,\n",
591 | " 0.004558577202260494,\n",
592 | " 0.00786604080349207,\n",
593 | " 0.009350074455142021,\n",
594 | " 0.043709103018045425,\n",
595 | " 0.03899746388196945,\n",
596 | " 0.0027933763340115547,\n",
597 | " 0.0006825387827120721,\n",
598 | " 0.009463206864893436,\n",
599 | " -0.001301856362260878,\n",
600 | " 0.012883802875876427,\n",
601 | " 0.018207689747214317,\n",
602 | " -0.0019698375836014748,\n",
603 | " -0.0043256571516394615,\n",
604 | " 0.0343390628695488,\n",
605 | " 0.014960118569433689,\n",
606 | " -0.004631780553609133,\n",
607 | " -0.015066596679389477,\n",
608 | " 0.020909560844302177,\n",
609 | " 0.021268922835588455,\n",
610 | " -0.018114520236849785,\n",
611 | " -0.02519528940320015,\n",
612 | " 0.007400201167911291,\n",
613 | " -0.008518217131495476,\n",
614 | " -0.021215684711933136,\n",
615 | " -0.0259007029235363,\n",
616 | " -0.0008048217860050499,\n",
617 | " -0.02491578459739685,\n",
618 | " -0.010720974765717983,\n",
619 | " -0.019685067236423492,\n",
620 | " -0.014161535538733006,\n",
621 | " 0.00459517864510417,\n",
622 | " -0.03130444884300232,\n",
623 | " -0.009103844873607159,\n",
624 | " -0.02989361807703972,\n",
625 | " 0.010215205140411854,\n",
626 | " -0.013988509774208069,\n",
627 | " -0.028243213891983032,\n",
628 | " -0.00011323655053274706,\n",
629 | " 0.011073682457208633,\n",
630 | " 0.012311485596001148,\n",
631 | " -0.009336764924228191,\n",
632 | " 0.000511176185682416,\n",
633 | " 0.04240474849939346,\n",
634 | " 0.009017331525683403,\n",
635 | " -0.014627375639975071,\n",
636 | " -0.007054148707538843,\n",
637 | " -0.03367357701063156,\n",
638 | " 0.0041792504489421844,\n",
639 | " -0.000277840270427987,\n",
640 | " 0.0035803131759166718,\n",
641 | " 0.001953200437128544,\n",
642 | " -0.030452625826001167,\n",
643 | " -0.005573442671447992,\n",
644 | " 0.024024033918976784,\n",
645 | " 0.01812783069908619,\n",
646 | " 0.03409948945045471,\n",
647 | " -0.011339876800775528,\n",
648 | " -0.004502010997384787,\n",
649 | " -0.01570546254515648,\n",
650 | " -0.0028649158775806427,\n",
651 | " 0.0048647006042301655,\n",
652 | " -0.02302580513060093,\n",
653 | " -0.007732944097369909,\n",
654 | " 0.0016911654965952039,\n",
655 | " -0.026752525940537453,\n",
656 | " -0.005283956415951252,\n",
657 | " -0.008544836193323135,\n",
658 | " -0.011166850104928017,\n",
659 | " 0.00895078293979168,\n",
660 | " 0.01088069099932909,\n",
661 | " 0.011872264556586742,\n",
662 | " -0.007180590648204088,\n",
663 | " 0.005004452541470528,\n",
664 | " 0.043815579265356064,\n",
665 | " -0.0537712462246418,\n",
666 | " 0.030186431482434273,\n",
667 | " -0.0007948394631966949,\n",
668 | " 0.000744928081985563,\n",
669 | " 0.017222769558429718,\n",
670 | " 0.0006172379944473505,\n",
671 | " 0.023864317685365677,\n",
672 | " -0.0024722793605178595,\n",
673 | " -0.02156173624098301,\n",
674 | " -0.006767989601939917,\n",
675 | " -0.03228936716914177,\n",
676 | " 0.006887777242809534,\n",
677 | " 0.03175697848200798,\n",
678 | " -0.001053962972946465,\n",
679 | " 0.012464547529816628,\n",
680 | " -0.009988940320909023,\n",
681 | " -0.02781730331480503,\n",
682 | " -0.005323885474354029,\n",
683 | " 0.0014274668646976352,\n",
684 | " 0.015252931974828243,\n",
685 | " 0.00476487772539258,\n",
686 | " -0.015505816787481308,\n",
687 | " -0.01939225383102894,\n",
688 | " -0.025261837989091873,\n",
689 | " -0.01610475406050682,\n",
690 | " 0.003191004041582346,\n",
691 | " 0.007007564418017864,\n",
692 | " 0.010188586078584194,\n",
693 | " -0.025155359879136086,\n",
694 | " -0.022200603038072586,\n",
695 | " -0.014733853749930859,\n",
696 | " 0.012883802875876427,\n",
697 | " -0.010967204347252846,\n",
698 | " 0.02021745592355728,\n",
699 | " -0.03567003458738327,\n",
700 | " 0.0029347920790314674,\n",
701 | " 0.010807488113641739,\n",
702 | " -0.029201513156294823,\n",
703 | " 0.021894479170441628,\n",
704 | " 0.00038119853707030416,\n",
705 | " 0.007393546402454376,\n",
706 | " -0.024316847324371338,\n",
707 | " -0.00413932092487812,\n",
708 | " 0.012790635228157043,\n",
709 | " -0.03133106604218483,\n",
710 | " -0.002532173180952668,\n",
711 | " -0.010201895609498024,\n",
712 | " 0.005806362722069025,\n",
713 | " 0.00019070324196945876,\n",
714 | " 0.022732991725206375,\n",
715 | " -0.008291952311992645,\n",
716 | " 0.016424186527729034,\n",
717 | " 0.01310341339558363,\n",
718 | " -0.009709436446428299,\n",
719 | " 0.012517786584794521,\n",
720 | " -0.019977880641818047,\n",
721 | " 0.007546607870608568,\n",
722 | " -0.018740078434348106,\n",
723 | " 0.006159070413559675,\n",
724 | " 0.01272408664226532,\n",
725 | " 0.029015175998210907,\n",
726 | " -0.007599846925586462,\n",
727 | " 0.0066182552836835384,\n",
728 | " -0.016477426514029503,\n",
729 | " -0.0048746829852461815,\n",
730 | " -0.01182568073272705,\n",
731 | " 0.0012652546865865588,\n",
732 | " -0.010002249851822853,\n",
733 | " -0.036974385380744934,\n",
734 | " -0.013249820098280907,\n",
735 | " -0.011632690206170082,\n",
736 | " 0.013396227732300758,\n",
737 | " -0.016024895012378693,\n",
738 | " 0.017276009544730186,\n",
739 | " -0.003423923859372735,\n",
740 | " 0.0015613958239555359,\n",
741 | " -0.010348302312195301,\n",
742 | " 0.043309811502695084,\n",
743 | " -0.0050477092154324055,\n",
744 | " -0.0007536625489592552,\n",
745 | " -0.020709915086627007,\n",
746 | " 0.02060343697667122,\n",
747 | " -0.0288554597645998,\n",
748 | " 0.01708967238664627,\n",
749 | " 0.013948580250144005,\n",
750 | " -0.010348302312195301,\n",
751 | " 0.022280462086200714,\n",
752 | " -0.006578326225280762,\n",
753 | " 0.03332752361893654,\n",
754 | " 0.01658390462398529,\n",
755 | " 0.018447263166308403,\n",
756 | " 0.0090106762945652,\n",
757 | " -0.006787954363971949,\n",
758 | " 0.006704768631607294,\n",
759 | " -0.003553693648427725,\n",
760 | " -0.005453655496239662,\n",
761 | " -0.007326997816562653,\n",
762 | " -0.014773782342672348,\n",
763 | " -0.0062356009148061275,\n",
764 | " -0.022027576342225075,\n",
765 | " -0.024370087310671806,\n",
766 | " -0.00569323031231761,\n",
767 | " -0.04607823118567467,\n",
768 | " 0.017302628606557846,\n",
769 | " -0.013003590516746044,\n",
770 | " -0.024077272042632103,\n",
771 | " 0.021575046703219414,\n",
772 | " -0.026845693588256836,\n",
773 | " -0.0018067937344312668,\n",
774 | " -0.020204145461320877,\n",
775 | " 0.014560827054083347,\n",
776 | " 0.02632661536335945,\n",
777 | " -0.015399339608848095,\n",
778 | " 0.031011633574962616,\n",
779 | " 0.026898931711912155,\n",
780 | " 0.005114257801324129,\n",
781 | " -0.01850050315260887,\n",
782 | " -0.044720638543367386,\n",
783 | " 0.007353616878390312,\n",
784 | " 0.011446353979408741,\n",
785 | " 0.010554603300988674,\n",
786 | " 0.03511102497577667,\n",
787 | " 0.007706324569880962,\n",
788 | " 0.008924162946641445,\n",
789 | " -0.004375568591058254,\n",
790 | " 0.023118972778320312,\n",
791 | " 0.007693014573305845,\n",
792 | " -0.02933461032807827,\n",
793 | " 0.009968975558876991,\n",
794 | " 0.015465888194739819,\n",
795 | " -0.010374922305345535,\n",
796 | " -0.003843179903924465,\n",
797 | " -0.014015128836035728,\n",
798 | " -0.003853162284940481,\n",
799 | " 0.008471633307635784,\n",
800 | " -0.003766649169847369,\n",
801 | " -0.013762244023382664,\n",
802 | " -0.037932686507701874,\n",
803 | " -0.0119654331356287,\n",
804 | " -0.006189017090946436,\n",
805 | " -0.0018816608935594559,\n",
806 | " 0.0005897866794839501,\n",
807 | " 0.02218729257583618,\n",
808 | " 0.01342950202524662,\n",
809 | " 0.0015173073625192046,\n",
810 | " 0.01068104524165392,\n",
811 | " -0.005300593562424183,\n",
812 | " -0.028961937874555588,\n",
813 | " 0.006202326621860266,\n",
814 | " -0.01138646062463522,\n",
815 | " 0.018673529848456383,\n",
816 | " -0.006668166723102331,\n",
817 | " 0.007872696034610271,\n",
818 | " 0.0025737660471349955,\n",
819 | " -0.011446353979408741,\n",
820 | " -0.0016088116681203246,\n",
821 | " -0.005626681726425886,\n",
822 | " -0.020616747438907623,\n",
823 | " 0.044161632657051086,\n",
824 | " -0.03335414454340935,\n",
825 | " -0.014254704117774963,\n",
826 | " -0.017701920121908188,\n",
827 | " 0.007134006824344397,\n",
828 | " 0.010787523351609707,\n",
829 | " 0.002808349672704935,\n",
830 | " -0.004145976155996323,\n",
831 | " -0.016543975099921227,\n",
832 | " -0.020190836861729622,\n",
833 | " -0.010900655761361122,\n",
834 | " 0.019937951117753983,\n",
835 | " -0.005463637877255678,\n",
836 | " -0.026033800095319748,\n",
837 | " -0.016650453209877014,\n",
838 | " -0.026672666892409325,\n",
839 | " -0.02643309161067009,\n",
840 | " -0.032023172825574875,\n",
841 | " -0.011719203554093838,\n",
842 | " 0.014055058360099792,\n",
843 | " -0.008318571373820305,\n",
844 | " -0.021894479170441628,\n",
845 | " -0.007546607870608568,\n",
846 | " -0.01292373239994049,\n",
847 | " 0.015598985366523266,\n",
848 | " 0.004974505864083767,\n",
849 | " -0.03511102497577667,\n",
850 | " 0.0033490569330751896,\n",
851 | " 0.03412610664963722,\n",
852 | " -0.04543936252593994,\n",
853 | " 0.02443663589656353,\n",
854 | " -0.02381107769906521,\n",
855 | " 0.013036864809691906,\n",
856 | " -0.0016437496524304152,\n",
857 | " 0.007939244620501995,\n",
858 | " 0.016717001795768738,\n",
859 | " -0.01137315109372139,\n",
860 | " 0.017009815201163292,\n",
861 | " -0.008970747701823711,\n",
862 | " -0.016224540770053864,\n",
863 | " -0.008538181893527508,\n",
864 | " -0.0010897328611463308,\n",
865 | " 0.0076797050423920155,\n",
866 | " 0.0033008090686053038,\n",
867 | " 0.006342078559100628,\n",
868 | " 0.06931699067354202,\n",
869 | " -0.0010814142879098654,\n",
870 | " -0.008684588596224785,\n",
871 | " -0.013842103071510792,\n",
872 | " -0.012504476122558117,\n",
873 | " 0.02536831423640251,\n",
874 | " 0.008731172420084476,\n",
875 | " -9.280406084144488e-05,\n",
876 | " -0.008664623834192753,\n",
877 | " -0.008910853415727615,\n",
878 | " 0.013582563027739525,\n",
879 | " -0.00030341988895088434,\n",
880 | " 0.011566141620278358,\n",
881 | " -0.007493369281291962,\n",
882 | " -0.017409106716513634,\n",
883 | " -0.025008952245116234,\n",
884 | " -0.004482046235352755,\n",
885 | " 0.018420644104480743,\n",
886 | " -0.019179297611117363,\n",
887 | " -0.024569733068346977,\n",
888 | " -0.017382485792040825,\n",
889 | " -0.0142147745937109,\n",
890 | " -0.004545267205685377,\n",
891 | " 0.02128223329782486,\n",
892 | " -0.007666395511478186,\n",
893 | " 0.0198447834700346,\n",
894 | " -0.0056300088763237,\n",
895 | " 0.01948542147874832,\n",
896 | " -0.014281323179602623,\n",
897 | " 0.0006338751409202814,\n",
898 | " 0.0011995380045846105,\n",
899 | " -0.011106956750154495,\n",
900 | " 0.02454311214387417,\n",
901 | " -0.020483650267124176,\n",
902 | " -0.03428582474589348,\n",
903 | " 0.0003797427925746888,\n",
904 | " -0.017129601910710335,\n",
905 | " 0.031091492623090744,\n",
906 | " 0.0005789725692011416,\n",
907 | " -0.03087853640317917,\n",
908 | " -0.030159812420606613,\n",
909 | " 0.012258246541023254,\n",
910 | " -0.0216815248131752,\n",
911 | " -0.005789725575596094,\n",
912 | " 0.0048746829852461815,\n",
913 | " 0.01366907637566328,\n",
914 | " -0.009097189642488956,\n",
915 | " -0.004462081473320723,\n",
916 | " -0.015239622443914413,\n",
917 | " 0.0085847657173872,\n",
918 | " -0.010927275754511356,\n",
919 | " 0.015053287148475647,\n",
920 | " -0.010860727168619633,\n",
921 | " -0.026646047830581665,\n",
922 | " -0.001439112820662558,\n",
923 | " -0.004728275816887617,\n",
924 | " -0.0016645460855215788,\n",
925 | " 0.025235218927264214,\n",
926 | " -0.03090515546500683,\n",
927 | " -0.01518638338893652,\n",
928 | " 0.021521808579564095,\n",
929 | " 0.0312512069940567,\n",
930 | " -0.008105616085231304,\n",
931 | " 0.027737444266676903,\n",
932 | " -0.009197012521326542,\n",
933 | " -0.01948542147874832,\n",
934 | " -0.031011633574962616,\n",
935 | " -0.0007927598198875785,\n",
936 | " -0.0010531311854720116,\n",
937 | " 0.00803906749933958,\n",
938 | " 0.011759132146835327,\n",
939 | " 0.012211662717163563,\n",
940 | " -0.010947239585220814,\n",
941 | " -0.0019265811424702406,\n",
942 | " -0.0020729880779981613,\n",
943 | " -0.012850528582930565,\n",
944 | " -0.0013675731606781483,\n",
945 | " -0.019179297611117363,\n",
946 | " 0.014454349875450134,\n",
947 | " 0.009662852622568607,\n",
948 | " -0.02094949036836624,\n",
949 | " 0.006328769028186798,\n",
950 | " -0.005486929789185524,\n",
951 | " -0.01891310326755047,\n",
952 | " 0.0064252642914652824,\n",
953 | " -0.01762206107378006,\n",
954 | " -0.027244985103607178,\n",
955 | " 0.03628228232264519,\n",
956 | " -0.01248451229184866,\n",
957 | " -0.019605208188295364,\n",
958 | " -0.01582524925470352,\n",
959 | " 0.008178818970918655,\n",
960 | " -0.030931776389479637,\n",
961 | " 0.019405562430620193,\n",
962 | " 0.020403791218996048,\n",
963 | " -0.01182568073272705,\n",
964 | " -0.00768635980784893,\n",
965 | " -0.008478287607431412,\n",
966 | " 0.009090534411370754,\n",
967 | " -0.01928577572107315,\n",
968 | " -0.0008102288702502847,\n",
969 | " -0.009230286814272404,\n",
970 | " -0.018114520236849785,\n",
971 | " -0.008019102737307549,\n",
972 | " 0.004149303305894136,\n",
973 | " -0.01494680903851986,\n",
974 | " -0.009629578329622746,\n",
975 | " -0.0002901101834140718,\n",
976 | " 0.005716522224247456,\n",
977 | " -0.02744463086128235,\n",
978 | " -0.006415282376110554,\n",
979 | " -0.013123378157615662,\n",
980 | " 0.010687700472772121,\n",
981 | " -0.026020491495728493,\n",
982 | " 0.00578639842569828,\n",
983 | " -0.00487135536968708,\n",
984 | " 0.0020929526071995497,\n",
985 | " -0.04152630642056465,\n",
986 | " 0.009729401208460331,\n",
987 | " 0.005766433663666248,\n",
988 | " 0.009503135457634926,\n",
989 | " -0.01322985626757145,\n",
990 | " 0.28557321429252625,\n",
991 | " -0.0009483171161264181,\n",
992 | " 0.007014219183474779,\n",
993 | " 0.03383329510688782,\n",
994 | " 0.004195887595415115,\n",
995 | " 0.00027388895978219807,\n",
996 | " 0.0273115336894989,\n",
997 | " 0.009276870638132095,\n",
998 | " -0.014134916476905346,\n",
999 | " -0.0011537858517840505,\n",
1000 | " -0.025288457050919533,\n",
1001 | " 0.00025101288338191807,\n",
1002 | " -0.008298606611788273,\n",
1003 | " 0.004368913825601339,\n",
1004 | " 0.017475655302405357,\n",
1005 | " -0.04929918050765991,\n",
1006 | " -0.03569665178656578,\n",
1007 | " -0.006029300391674042,\n",
1008 | " -0.034951310604810715,\n",
1009 | " -0.04509331285953522,\n",
1010 | " 0.004309020005166531,\n",
1011 | " -0.013329679146409035,\n",
1012 | " -0.01855374127626419,\n",
1013 | " -0.0027418010868132114,\n",
1014 | " 0.012391343712806702,\n",
1015 | " -0.008145544677972794,\n",
1016 | " -0.02736477181315422,\n",
1017 | " 0.0016329356003552675,\n",
1018 | " 0.01863360032439232,\n",
1019 | " -0.009656197391450405,\n",
1020 | " -0.022812850773334503,\n",
1021 | " 0.009290180169045925,\n",
1022 | " -0.014720544219017029,\n",
1023 | " 0.0016728646587580442,\n",
1024 | " -0.007886005565524101,\n",
1025 | " -0.009043950587511063,\n",
1026 | " 0.004185905214399099,\n",
1027 | " 0.0031294466461986303,\n",
1028 | " 0.03756001219153404,\n",
1029 | " 0.012537750415503979,\n",
1030 | " -0.004452099557965994,\n",
1031 | " 0.010661081410944462,\n",
1032 | " 0.014707233756780624,\n",
1033 | " 0.006980944890528917,\n",
1034 | " -0.00802575796842575,\n",
1035 | " 0.02001781016588211,\n",
1036 | " ...]"
1037 | ]
1038 | },
1039 | "execution_count": 5,
1040 | "metadata": {},
1041 | "output_type": "execute_result"
1042 | }
1043 | ],
1044 | "source": [
1045 | "product_embedding = get_embedding(\n",
1046 | " \"小嘿\",\n",
1047 | " engine=\"text-embedding-ada-002\"\n",
1048 | ")\n",
1049 | "product_embedding"
1050 | ]
1051 | },
1052 | {
1053 | "cell_type": "code",
1054 | "execution_count": 6,
1055 | "id": "91721a66-1807-4a4d-9dcd-a8f8926284b6",
1056 | "metadata": {
1057 | "tags": []
1058 | },
1059 | "outputs": [
1060 | {
1061 | "data": {
1062 | "text/plain": [
1063 | "list"
1064 | ]
1065 | },
1066 | "execution_count": 6,
1067 | "metadata": {},
1068 | "output_type": "execute_result"
1069 | }
1070 | ],
1071 | "source": [
1072 | "type(product_embedding)"
1073 | ]
1074 | },
1075 | {
1076 | "cell_type": "code",
1077 | "execution_count": 7,
1078 | "id": "59c9fcf8-6c21-48d9-ac9f-154dbed06342",
1079 | "metadata": {
1080 | "tags": []
1081 | },
1082 | "outputs": [
1083 | {
1084 | "data": {
1085 | "text/plain": [
1086 | "1536"
1087 | ]
1088 | },
1089 | "execution_count": 7,
1090 | "metadata": {},
1091 | "output_type": "execute_result"
1092 | }
1093 | ],
1094 | "source": [
1095 | "len(product_embedding)"
1096 | ]
1097 | },
1098 | {
1099 | "cell_type": "code",
1100 | "execution_count": 13,
1101 | "id": "e2e1ce8d-f63b-44c8-b414-59c55420ba31",
1102 | "metadata": {
1103 | "tags": []
1104 | },
1105 | "outputs": [],
1106 | "source": [
1107 | "sentense_embedding = get_embedding(\n",
1108 | " \"无敌弟弟\",\n",
1109 | " engine=\"text-embedding-ada-002\"\n",
1110 | ")"
1111 | ]
1112 | },
1113 | {
1114 | "cell_type": "code",
1115 | "execution_count": 14,
1116 | "id": "e35abb3e-01d0-4e08-99fb-53a390f76fb7",
1117 | "metadata": {
1118 | "tags": []
1119 | },
1120 | "outputs": [
1121 | {
1122 | "data": {
1123 | "text/plain": [
1124 | "0.8129400049096872"
1125 | ]
1126 | },
1127 | "execution_count": 14,
1128 | "metadata": {},
1129 | "output_type": "execute_result"
1130 | }
1131 | ],
1132 | "source": [
1133 | "cosine_similarity(product_embedding, sentense_embedding)"
1134 | ]
1135 | },
1136 | {
1137 | "cell_type": "code",
1138 | "execution_count": null,
1139 | "id": "efa273c8-54bb-49e7-a83f-a85653742b6a",
1140 | "metadata": {},
1141 | "outputs": [],
1142 | "source": []
1143 | }
1144 | ],
1145 | "metadata": {
1146 | "kernelspec": {
1147 | "display_name": "Python 3 (ipykernel)",
1148 | "language": "python",
1149 | "name": "python3"
1150 | },
1151 | "language_info": {
1152 | "codemirror_mode": {
1153 | "name": "ipython",
1154 | "version": 3
1155 | },
1156 | "file_extension": ".py",
1157 | "mimetype": "text/x-python",
1158 | "name": "python",
1159 | "nbconvert_exporter": "python",
1160 | "pygments_lexer": "ipython3",
1161 | "version": "3.10.0"
1162 | }
1163 | },
1164 | "nbformat": 4,
1165 | "nbformat_minor": 5
1166 | }
1167 |
--------------------------------------------------------------------------------
/生成器/笔记本/README.md:
--------------------------------------------------------------------------------
1 | # 笔记本
2 |
3 | 一些独立的笔记与脚本
4 |
5 | ```
6 | python -m jupyter lab
7 | ```
8 |
9 | ### sbert_base_chinese_nli.py
10 |
11 | 计算特征向量大约需要 49 s
12 |
--------------------------------------------------------------------------------
/生成器/笔记本/vector_size.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "vector = [0.0055800676345825195, -0.0001933444436872378, 0.015911350026726723, -0.013522690162062645, -0.009848329238593578, 0.005351643543690443, -0.02301206812262535, 0.014371121302247047, -0.01239362359046936, -0.01845664344727993, -0.010363915003836155, 0.015611136332154274, -0.005165641196072102, -0.002065603854134679, -0.00898684561252594, 0.013966484926640987, 0.027071485295891762, -0.012165199965238571, 0.012047724798321724, 0.012994051910936832, -0.009104320779442787, -0.010279071517288685, 0.014371121302247047, -0.010461810976266861, -0.018508855253458023, 0.010905605740845203, 0.035895172506570816, -0.018887385725975037, 0.011701826006174088, 0.002179815899580717, 0.005208062939345837, 0.013072368688881397, -0.02333838678896427, -0.021445732563734055, -0.011362452991306782, 0.010226860642433167, -0.012680784799158573, 0.013150685466825962, 0.007831674069166183, -0.015441450290381908, 0.004588055424392223, -0.011271083727478981, 0.016785888001322746, -0.0008170230430550873, -0.014266698621213436, 0.003333355998620391, -0.013901220634579659, -0.032475341111421585, -0.03365009278059006, 0.014266698621213436, 0.02782854624092579, 0.033780619502067566, -0.03109174408018589, -0.037174344062805176, -0.013007104396820068, 0.024891668930649757, -0.026157790794968605, 0.012406676076352596, -0.0013713586376979947, -0.020962780341506004, 0.002933614421635866, 0.014749651774764061, -0.027097590267658234, 0.010018016211688519, -0.02269880101084709, 0.003667833749204874, -0.024565350264310837, -0.0036743602249771357, 0.020806146785616875, 0.014527754858136177, 0.02199395000934601, 0.017203576862812042, 0.006813555955886841, -0.008999898098409176, 0.035895172506570816, -0.004878479987382889, -0.009926646016538143, -0.011290662921965122, -0.013796798884868622, 0.010122437961399555, 0.002194500295445323, -0.01010938547551632, -0.019801082089543343, 0.035712432116270065, -0.004604371264576912, -0.000735035224352032, -0.005224378779530525, 0.022476904094219208, 0.0070680854842066765, -0.01531092170625925, -0.02188952825963497, 0.010657602921128273, 0.011434243991971016, 0.0013974643079563975, 0.00029042456299066544, 0.01994466222822666, -0.005155852064490318, 0.007661987561732531, -0.003162038279697299, -0.0362345427274704, 0.011721405200660229, 0.00035201740683987737, -0.03127448260784149, -0.008686630986630917, -0.005394065286964178, 0.0009520378080196679, -0.0034230940509587526, 0.006209864746779203, 0.015323975123465061, 0.0036547810304909945, -0.020505933091044426, 0.02072783000767231, 0.012184779159724712, -0.017451578751206398, 0.010318229906260967, -0.02427818812429905, -0.01109487097710371, 1.0401441613794304e-05, 0.0010589075973257422, -0.00321751250885427, 0.013124579563736916, 0.0064448146149516106, -0.004395526833832264, -0.0024408716708421707, 0.015232604928314686, 0.016420409083366394, -0.022790171205997467, 0.0035275162663310766, -0.01497154962271452, -0.008458207361400127, 0.010781603865325451, 0.007727251388132572, 0.01652483083307743, 0.009280533529818058, -0.0013452530838549137, 0.01134287379682064, -0.015506713651120663, -0.003596043447032571, 0.0031049323733896017, -0.01140813808888197, 0.010801183059811592, 0.0030249839182943106, -0.015363133512437344, -0.008138414472341537, 0.019983820617198944, 0.011786668561398983, -0.0018583908677101135, 0.006180495955049992, 0.01497154962271452, 0.007048506289720535, 0.027254223823547363, -0.010376967489719391, 0.040724702179431915, -0.004490159451961517, 0.039576057344675064, 0.029864782467484474, -0.0019252864876762033, 0.04140344634652138, 0.002809613011777401, 0.012008566409349442, 0.016107141971588135, 0.005978177767246962, 0.012165199965238571, -0.014945443719625473, 0.021628472954034805, 0.022933751344680786, 0.032449234277009964, 0.0071268230676651, 0.00842557568103075, 0.0028112444560974836, 0.0047120568342506886, 0.012817839160561562, -0.016733676195144653, 0.01497154962271452, 0.004630477167665958, 0.01892654411494732, -0.002884666435420513, 0.020140454173088074, -0.0052798534743487835, -0.0166684128344059, -0.022946804761886597, -0.001448043854907155, 0.0097243282943964, 0.014684388414025307, -0.01465828251093626, -0.0035503588151186705, 0.004620687570422888, 0.008751895278692245, 0.015428396873176098, -0.02102804370224476, 0.007342194207012653, 0.025700941681861877, 0.02494388073682785, 0.004548897035419941, -0.6327992081642151, -0.014384173788130283, 0.012491519562900066, -0.016407355666160583, 0.023129543289542198, -0.01230878010392189, 0.01190414372831583, 0.01827390491962433, -0.013457425870001316, -0.07194697856903076, -0.026758218184113503, -0.0015777559019625187, -0.0020949726458638906, -0.006017336156219244, 0.005452802870422602, -0.0011388559360057116, -0.0025534520391374826, 0.000566164730116725, -0.0021178151946514845, -0.009437167085707188, -0.014553859829902649, 0.009508957155048847, -0.009730855002999306, 0.010611917823553085, -0.011153608560562134, 0.007152928505092859, 0.017255786806344986, -0.014632176607847214, -0.015819981694221497, 0.012915735132992268, -0.03988932445645332, -0.009685169905424118, -0.007100717630237341, -0.015297869220376015, 0.058685339987277985, 0.008810632862150669, -0.02316870167851448, 0.0017980217235162854, 0.004620687570422888, 0.011649614199995995, 0.0024898196570575237, -6.939392915228382e-05, 0.021184677258133888, 0.010122437961399555, 0.012119514867663383, 0.008967266418039799, 0.032605867832899094, 0.0017392841400578618, 0.014710493385791779, 0.035242531448602676, -0.009991910308599472, 0.004020259249955416, 0.00961990561336279, 0.006702607497572899, 0.0044053164310753345, -0.0008631157106719911, 0.01076202467083931, -0.02153710275888443, -0.0072769299149513245, 0.01012896467000246, -0.01946171000599861, 0.00015286040434148163, -0.018378326669335365, 0.0038799417670816183, -0.012987525202333927, 0.008105781860649586, -0.0026725586503744125, 0.02575315348803997, 0.026027262210845947, 0.008693157695233822, -0.00916305836290121, 0.01927896961569786, -0.006386077031493187, -0.037148237228393555, -0.005798701662570238, 0.014736599288880825, 0.02480030059814453, -0.013914273120462894, -0.019161494448781013, -0.008471260778605938, 0.008047044277191162, -0.005381012335419655, 0.011532139033079147, 0.008125361055135727, 0.021406574174761772, 0.011878038756549358, -0.018352221697568893, -0.00043033415568061173, 0.02557041496038437, 0.013405214995145798, -0.01116666104644537, 0.030308576300740242, 0.008392944000661373, -0.006020599044859409, -0.011447296477854252, 0.00615112716332078, -0.00768809299916029, 0.005224378779530525, 0.016276828944683075, -0.018534960225224495, 0.002917298348620534, -0.035529691725969315, 0.005919440183788538, -0.00034304361906833947, 0.008079676888883114, -0.003498147474601865, -0.034563787281513214, 0.025061355903744698, 0.03581685572862625, -0.022646589204669, -0.006063020788133144, -0.01732105202972889, -0.0018926544580608606, 0.008216731250286102, -0.007792515214532614, -0.023703865706920624, 0.00501879770308733, 0.021014990285038948, 0.0019171284511685371, -0.011551718227565289, 0.02463061362504959, 0.02915993146598339, 0.002276080194860697, -0.026523267850279808, 0.006689554546028376, 0.021432681009173393, -0.01531092170625925, -0.017699582502245903, -0.011473402380943298, 0.026810429990291595, -0.010807709768414497, -0.022294163703918457, 0.032318707555532455, -0.011825826950371265, 0.04385737329721451, -0.0033251980785280466, 0.029682043939828873, -0.009737380780279636, 0.004437948577105999, -0.02298596315085888, -0.002018287545070052, -0.004212787840515375, 0.015767769888043404, -0.005097114481031895, -0.016759781166911125, -0.009104320779442787, -0.011630035005509853, -0.03192712366580963, -0.020532038062810898, -0.028428975492715836, 0.004571739584207535, -0.018091166391968727, -0.006275128573179245, 0.007857779040932655, 0.006800503470003605, 0.009593800641596317, 0.02087141014635563, 0.0003968863748013973, -0.014201435260474682, -0.001189435482956469, -0.005939019378274679, 0.0029352460987865925, -0.028115708380937576, -0.012928787618875504, 0.009854855947196484, -0.011258031241595745, -0.0015948876971378922, 0.024095449596643448, -0.03641728311777115, -0.028951086103916168, -0.013783745467662811, -0.0035536219365894794, 0.006539447698742151, -0.006177232600748539, 0.010794657282531261, 0.014788810163736343, -0.03137890622019768, -0.013901220634579659, 0.007400931790471077, -0.009678643196821213, 0.0005816649063490331, -0.017595160752534866, -0.015350080095231533, -0.011786668561398983, 0.013379109092056751, -0.014279752038419247, 0.03338903561234474, 0.015036813914775848, 0.009646011516451836, 0.009561168029904366, -0.004196472000330687, 0.012380571104586124, -0.008601788431406021, -0.01004412118345499, 0.018195588141679764, 0.018234746530652046, -0.0017719161696732044, 0.0012294095940887928, 0.005452802870422602, 0.0027198749594390392, -0.010076753795146942, 0.012171725742518902, 0.0006444815080612898, -0.011754036881029606, 0.021445732563734055, -0.025178831070661545, 0.006650396157056093, -0.00835378561168909, 0.019148442894220352, 0.0200490839779377, 0.0051884837448596954, -0.03451157361268997, -0.014514701440930367, -0.017569053918123245, -0.011114450171589851, 0.01993160881102085, -0.009495904669165611, -3.513036062940955e-05, -0.021602366119623184, -0.0023495021741837263, -0.009750433266162872, 0.00016815663548186421, -0.00558985723182559, 0.006696080788969994, -0.013033210299909115, 0.012739522382616997, -0.0017621265724301338, 0.0040072062984108925, 0.0009389850310981274, -0.012002039700746536, -0.016550937667489052, -0.02722811885178089, 0.02042761631309986, 0.02541378140449524, -0.03255365788936615, -0.010748972184956074, 0.01665535941720009, -0.026288317516446114, 0.020662564784288406, -0.016081036999821663, 0.008347258903086185, 0.0053288014605641365, -0.010631497018039227, -0.02010129578411579, 0.008047044277191162, 0.011949828825891018, 0.024721983820199966, -0.007355246692895889, -0.022946804761886597, 0.03205765038728714, 0.0013444373616948724, 0.017608212307095528, -0.016263775527477264, -0.02380828745663166, 0.01780400425195694, -0.025191884487867355, -0.009763486683368683, 0.02301206812262535, 0.018521908670663834, 0.024199871346354485, -0.0025599782820791006, 0.01993160881102085, 0.011447296477854252, 0.01553281955420971, -0.002509398851543665, -0.001390937832184136, -0.005524592939764261, -0.01133634801954031, -0.017725687474012375, 0.011995513923466206, -0.018861280754208565, -0.009985383599996567, 0.03398946300148964, -0.019827187061309814, -0.008778001181781292, -0.006474183406680822, -0.008040518499910831, -0.0023429756984114647, -0.0031147219706326723, 0.010435705073177814, -0.03688718378543854, 0.01010938547551632, -0.021406574174761772, 0.028455080464482307, -0.0009699854417704046, -0.025322411209344864, -0.040254801511764526, 0.019866345450282097, -0.02510051429271698, 0.02057119645178318, 0.0012065672781318426, -0.011042660102248192, 0.011767089366912842, -0.003330092877149582, -0.01912233605980873, 0.01213256735354662, 0.005818280857056379, -0.0073682996444404125, -0.009437167085707188, -0.006454604212194681, -0.028298446908593178, -0.013862062245607376, -0.021341310814023018, -0.026183895766735077, 0.027802441269159317, 0.015937454998493195, -0.024695876985788345, -0.006917978636920452, 0.026784323155879974, -0.0026692955289036036, -0.03372840955853462, -0.025518203154206276, -0.007420510984957218, -0.01619851216673851, 0.008033991791307926, 0.004408579785376787, -0.015049866400659084, 0.008556103333830833, 0.0550827719271183, -0.015780823305249214, 0.005005744751542807, -0.01729494519531727, -0.011754036881029606, 0.023599443957209587, 0.07664597779512405, 0.0012881471775472164, -0.008680105209350586, 0.00036405044374987483, 0.01717747002840042, 0.012902682647109032, -0.019187601283192635, -0.024343451485037804, 0.027593597769737244, 0.00022148952120915055, -0.003641728311777115, 0.006311023607850075, -0.010468336753547192, -0.004020259249955416, 0.005155852064490318, 0.012608994729816914, -0.027880758047103882, -0.004193208646029234, -0.03145722299814224, 0.017777899280190468, -0.03012583777308464, -0.002452292712405324, 0.026183895766735077, 0.01531092170625925, -0.02087141014635563, -0.006891872733831406, 0.017529895529150963, 0.018874334171414375, 0.008073150180280209, -0.016746729612350464, 0.0009145110379904509, 0.006219654344022274, -0.01245888788253069, 0.0026154527440667152, -0.018038954585790634, 0.019866345450282097, -0.017608212307095528, 0.025661783292889595, 0.023847445845603943, -0.003214249387383461, -0.00970474909991026, 0.0036319387145340443, 0.00875842198729515, -0.04894796013832092, 0.014553859829902649, -0.014358068816363811, -0.01246541365981102, 0.01621156372129917, -0.008477786555886269, -0.008471260778605938, 0.005540909245610237, -0.013548795133829117, -0.02494388073682785, -0.017216628417372704, -0.0008508787141181529, 0.014749651774764061, -0.020518984645605087, 0.01861327700316906, 0.009978857822716236, -0.017529895529150963, -0.002781875664368272, -0.036365073174238205, -0.011949828825891018, -0.015049866400659084, -0.017595160752534866, -0.007420510984957218, -0.024356504902243614, -0.014044801704585552, -0.01344437338411808, -0.01060539111495018, 0.014018695801496506, -0.031196167692542076, -0.005553961731493473, -0.022881539538502693, 0.026836534962058067, 0.024578401818871498, 0.01813032478094101, -0.006536184344440699, 0.008640946820378304, -0.006637343671172857, -0.0010515653993934393, -0.01973581686615944, -0.006696080788969994, -0.022281112149357796, -0.01862633042037487, 0.010507495142519474, -0.02560957334935665, -0.00272966455668211, -0.013835957273840904, 0.015780823305249214, 0.0026986643206328154, 0.007746830582618713, -0.005371222738176584, 0.007094190921634436, -0.008118835277855396, -0.009097794070839882, -0.004581529181450605, 0.0068592410534620285, 0.005462592467665672, -0.02315564826130867, 0.0025632416363805532, -0.04145566001534462, 0.009678643196821213, -0.024852510541677475, 0.018782963976264, 0.007812094409018755, 0.005198273342102766, -0.005116693675518036, -0.0003817940887529403, -0.00818409863859415, 0.02478724718093872, -0.01456691324710846, 0.018404433503746986, -0.010657602921128273, 0.005508277099579573, -2.280414082633797e-05, 0.013470478355884552, 0.032135967165231705, -0.006666711997240782, -0.004793636966496706, -0.008556103333830833, -0.04035922512412071, 0.011551718227565289, 0.028716137632727623, -0.006327339913696051, 0.028246236965060234, -0.008438628166913986, 0.012491519562900066, -0.011160135269165039, -0.002166762948036194, 0.0023462388198822737, 0.012197831645607948, -0.006157653406262398, 0.016263775527477264, -0.01989245042204857, 0.007055032532662153, 0.002786770462989807, 0.008536524139344692, -0.006774397566914558, 0.01570250652730465, -0.007694619242101908, -0.012021618895232677, -0.008347258903086185, -0.0207147765904665, 0.020284034311771393, -0.027645807713270187, -0.003648254554718733, -0.001923654810525477, 0.009437167085707188, 0.015010708011686802, -0.00566164730116725, -0.01172793097794056, -0.01295489352196455, 0.0194486565887928, -0.0030445631127804518, -0.01976192370057106, -0.03012583777308464, -0.01506291888654232, 0.017451578751206398, 0.003667833749204874, 0.027776336297392845, 0.0030070364009588957, -0.005325538106262684, 0.034563787281513214, 0.009026004001498222, 0.009110847488045692, 0.011238452047109604, -0.00851041916757822, -0.028637820854783058, 0.007087664678692818, 0.015976613387465477, 0.013137632980942726, -0.010305177420377731, -0.005403854884207249, 0.018391380086541176, -0.0008614840917289257, -0.014945443719625473, 0.017399368807673454, -0.006226180586963892, -0.030674055218696594, -0.012426255270838737, -0.010481390170753002, -0.013163737952709198, -0.0016789149958640337, -0.013326898217201233, -0.014867126941680908, 0.017699582502245903, -0.0070615592412650585, 0.008941160514950752, -0.020284034311771393, 0.030726267024874687, -0.01584608666598797, 0.02767191454768181, -0.0026121893897652626, 0.017438527196645737, -0.007205139845609665, -0.0007301404257304966, -0.00655576353892684, 0.00833420641720295, 0.029238248243927956, 0.031326696276664734, 0.00530269555747509, -0.02054509148001671, 0.0033072505611926317, -0.0017131785862147808, 0.013901220634579659, -0.018182536587119102, 0.011786668561398983, -0.012067303992807865, -0.02848118729889393, -0.0026921378448605537, -0.007766409777104855, -0.007120296824723482, -0.020793093368411064, 0.01512818317860365, 0.012034672312438488, -0.010853394865989685, 0.0014806757681071758, 0.010768551379442215, -0.023573337122797966, 0.004601108375936747, 0.02023182436823845, 0.019644448533654213, -0.010226860642433167, 0.011127502657473087, 0.027332540601491928, -0.0040626805275678635, -0.04923512041568756, -0.025674836710095406, -0.0015859139384701848, -0.007909990847110748, 0.0333368256688118, 0.0008508787141181529, 0.012994051910936832, 0.006490499712526798, 0.004754478577524424, -0.006356708239763975, -0.00835378561168909, -0.014423332177102566, -0.008556103333830833, -0.010324756614863873, 0.018391380086541176, -0.002212447812780738, -0.017229681834578514, 0.004082259722054005, 0.031509432941675186, -0.011264557018876076, -0.019030967727303505, -0.05550045892596245, -0.005191747099161148, -0.0062914444133639336, 0.0009161426569335163, -0.013627111911773682, 0.009783065877854824, -0.005403854884207249, 0.0014464121777564287, -0.0025142936501652002, -0.015337027609348297, -0.013470478355884552, 0.015663348138332367, 0.0006632448639720678, 0.009182637557387352, -0.010500969365239143, -0.014384173788130283, 0.012785207480192184, 0.026288317516446114, -0.009659064002335072, -0.009580747224390507, -0.03581685572862625, 0.04174282029271126, -0.02474808879196644, -0.0020949726458638906, -0.011466875672340393, 0.026105578988790512, 0.03354566916823387, 0.015154288150370121, 0.000877800106536597, -0.015806928277015686, -0.004278051666915417, 0.001057275920175016, 0.011734457686543465, 0.001830653753131628, 0.018704647198319435, 0.00025779259158298373, 0.0004466501413844526, -0.0208975151181221, -0.0057823858223855495, -0.00824936293065548, -0.008379890583455563, 0.018743805587291718, -0.013940379023551941, 0.0014863864053040743, -0.021458785980939865, 0.029055509716272354, -0.008941160514950752, -0.015010708011686802, -0.019161494448781013, 0.034093886613845825, -0.008040518499910831, 0.03740929439663887, 0.0015108603984117508, -0.019318128004670143, -0.011910670436918736, 0.005527856294065714, 0.014279752038419247, -0.02623610757291317, 0.02269880101084709, -0.01521955244243145, -0.010161596350371838, -0.01360100694000721, 0.011864985339343548, -0.0028455080464482307, -0.019305076450109482, 0.0040496280416846275, 0.02965593710541725, -0.0027394541539251804, 0.0016919678309932351, -0.007831674069166183, -0.03009973280131817, 0.014619124121963978, -0.021302152425050735, 0.03205765038728714, -0.0026578742545098066, -0.012080356478691101, 0.01862633042037487, 0.0029075087513774633, 0.005009008105844259, -0.023429756984114647, -0.02994309924542904, -0.013405214995145798, -0.008941160514950752, 0.029029402881860733, -0.011029606685042381, -0.0059422822669148445, -0.014188381843268871, -0.04772099852561951, -0.010226860642433167, 0.024813352152705193, 0.01172793097794056, -0.0013974643079563975, 0.010983922518789768, 0.017229681834578514, 0.02121078222990036, 0.004702267237007618, 0.00883021205663681, -0.024082396179437637, -0.015937454998493195, 0.0021210783161222935, -0.04051585868000984, -0.016120195388793945, 0.011701826006174088, 0.04080301895737648, -0.0017670213710516691, -0.023560285568237305, -0.013281213119626045, 0.004597845021635294, -0.0333368256688118, -0.03320629522204399, -0.0032011966686695814, 0.01441027969121933, -0.011316768825054169, 0.03234481066465378, 0.02413460798561573, 0.0013640165561810136, -0.012250042520463467, -0.004829532001167536, -0.01172793097794056, -0.02395186945796013, 0.004633740056306124, -0.022646589204669, -0.018534960225224495, 0.0097243282943964, -0.026914851740002632, -0.014958497136831284, 0.02978646568953991, 0.00542343407869339, -0.02460450865328312, 0.030856793746352196, 0.010820762254297733, -0.005553961731493473, -0.007120296824723482, -0.01158435083925724, -0.010820762254297733, 0.0016740201972424984, 0.008210204541683197, -0.03307576850056648, -0.008392944000661373, -0.0034818316344171762, -0.011421190574765205, -0.034407153725624084, 0.023899657651782036, -0.012158673256635666, -0.01909623108804226, 0.029186036437749863, -0.0011682246113196015, -0.010611917823553085, 0.024069344624876976, -0.012615521438419819, 0.02203310839831829, -0.0019040756160393357, -0.014110065065324306, 0.031013427302241325, -0.011199293658137321, -0.004451001062989235, -0.02218974195420742, -0.01587219163775444, -0.026784323155879974, 0.015323975123465061, 0.008471260778605938, -0.01876991055905819, 0.014436385594308376, 0.004281315021216869, 0.009763486683368683, -0.03077847696840763, -0.007394405081868172, -0.0002892008633352816, -0.01602882519364357, -0.017281893640756607, 0.019383393228054047, 0.04388347640633583, -0.024030186235904694, 0.006255549378693104, -0.017412420362234116, -0.026314424350857735, 0.0016136510530486703, -0.024043237790465355, 0.005697542801499367, -0.014723546802997589, -0.024369558319449425, 0.0003950508253183216, 0.0034067779779434204, -0.007237771525979042, -0.024878617376089096, -0.00020374589075800031, 0.007655460853129625, 0.004640266764909029, 0.28862327337265015, -0.018691593781113625, 0.00851041916757822, 0.01733410358428955, 0.0034361467696726322, 0.0031212482135742903, 0.02427818812429905, 0.00651986850425601, -0.012328359298408031, -0.011382032185792923, -0.02803739160299301, -0.013326898217201233, -0.004891532938927412, -0.004774057772010565, 0.006027125753462315, -0.058685339987277985, -0.037957511842250824, -0.018782963976264, -0.011773616075515747, -0.01683809794485569, 0.02380828745663166, -0.012759101577103138, 0.0014798600459471345, -0.03396335989236832, 0.006627554073929787, -0.020766988396644592, 0.0033137770369648933, -0.014671334996819496, 0.0013403582852333784, 0.011564771644771099, -0.016642305999994278, 0.015676399692893028, 0.009241375140845776, 0.02299901470541954, -0.02555736154317856, 0.021497944369912148, 0.024983039125800133, -0.014031748287379742, 0.027149802073836327, 0.009280533529818058, 0.004075733479112387, -0.01044875755906105, 0.007413984276354313, 0.016120195388793945, 0.015937454998493195, 0.019644448533654213, -0.015506713651120663, -0.012909208424389362, 0.003393725259229541, 0.050435978919267654, -0.014553859829902649, 0.0021324995905160904, 0.021576261147856712, 0.051558516919612885, 0.009450219571590424, 0.012909208424389362, 0.00424541998654604, -0.014645230025053024, 0.014057854190468788, 0.03130058944225311, 0.004734899383038282, 0.04730330780148506, 0.005289643071591854, 0.020192665979266167, 0.0008304837392643094, 0.02722811885178089, -0.02380828745663166, -0.0065100789070129395, 0.009841803461313248, -0.04098575934767723, 0.014449438080191612, -0.0096329590305686, -0.03325850889086723, 0.03111785091459751, -0.0017360210185870528, -0.016590096056461334, 0.01925286464393139, 0.017203576862812042, 0.010324756614863873, 0.028611714020371437, -0.013229002244770527, -0.018887385725975037, 0.001980760833248496, -0.018900439143180847, 0.0017148102633655071, -0.0385318361222744, 0.021184677258133888, 0.00015908086788840592, -0.022959856316447258, -0.003938679117709398, 0.004059417638927698, -0.025870628654956818, -0.0013623848790302873, 0.005361433140933514, 0.028585609048604965, 0.010298650711774826, 0.007446616422384977, 0.0058443862944841385, -0.02835065871477127, -0.007942622527480125, -0.03610401600599289, 0.013105000369250774, 0.01845664344727993, 0.036025699228048325, 0.004783847369253635, -0.006470920518040657, 0.00021190388360992074, -0.01237404439598322, 0.0015051497612148523, -0.0061380742117762566, -0.00412468146532774, -0.020166559144854546, 0.011956355534493923, -0.0006485604681074619, -0.0005180325824767351, 0.00594880897551775, 0.015167341567575932, -0.013875114731490612, 0.01908317767083645, -0.005658384412527084, 0.014475543051958084, -0.02688874676823616, 0.005358170252293348, 0.01781705766916275, 0.004020259249955416, -0.01584608666598797, -0.023873552680015564, 0.015950508415699005, -0.0036286753602325916, -0.029238248243927956, 0.003948468714952469, -0.04351799935102463, 0.017281893640756607, -0.026353582739830017, -0.020036032423377037, 0.03143111616373062, -0.013281213119626045, -0.012543730437755585, -0.01490628533065319, 0.006369761191308498, -0.006529658101499081, -0.02701927348971367, -0.014645230025053024, -0.009554642252624035, -0.007890411652624607, -0.012047724798321724, 0.010207281447947025, -0.00038934024632908404, 0.023064278066158295, -0.02704538032412529, -0.021119413897395134, 0.002174921100959182, -0.01973581686615944, -0.02298596315085888, 0.03594738245010376, -0.004075733479112387, -0.03153553977608681, -0.019357286393642426, 0.0018583908677101135, 0.016054930165410042, -0.03109174408018589, -0.02108025550842285, 0.03417220339179039, -0.020297087728977203, -0.005498487502336502, -0.014462490566074848, -0.1656137853860855, 0.007727251388132572, 0.015833033248782158, -0.021432681009173393, 0.026196949183940887, -0.009176110848784447, 0.014736599288880825, 0.021758999675512314, -0.000391991576179862, 0.009770012460649014, 0.022568272426724434, 0.006673238705843687, -0.03192712366580963, 0.007968727499246597, -0.00946327205747366, -0.023273123428225517, -0.019970767199993134, 0.008386417292058468, 0.025348518043756485, 0.004796900320798159, -0.011479928158223629, -0.016394304111599922, -0.02102804370224476, -0.019213706254959106, 0.022881539538502693, -0.019370339810848236, 0.010572759434580803, 0.016407355666160583, -0.008647472597658634, -0.027619702741503716, -0.016733676195144653, 0.00263340026140213, 0.012171725742518902, -0.012896155938506126, 0.005491961259394884, 0.032135967165231705, 0.0017507054144516587, -0.013457425870001316, -0.018548013642430305, -0.01302668359130621, 0.01059886533766985, 0.047355521470308304, 0.003263197373598814, 0.0010018015746027231, -0.005860702600330114, 0.008921581320464611, -0.01002454198896885, -0.006581868976354599, 0.009913593530654907, 0.012158673256635666, -0.013770692981779575, -0.006239233538508415, 0.015611136332154274, 0.012935314327478409, 0.030334683135151863, 0.018247799947857857, 0.009202216751873493, 0.022372480481863022, -0.011519086547195911, 0.022476904094219208, -0.00986790843307972, -0.020753934979438782, 0.004238893277943134, -0.00858220923691988, 0.0009463272290304303, 0.015363133512437344, -0.0023870288860052824, -0.014593018218874931, -0.011055712588131428, -0.0031000375747680664, 0.006369761191308498, -0.009345796890556812, 0.022476904094219208, -0.006359971594065428, 0.015506713651120663, 0.019030967727303505, -0.020662564784288406, 0.009874435141682625, -0.006545973941683769, -0.0038570992182940245, -0.016955573111772537, -0.002517556771636009, -0.01117971446365118, 0.0055311196483671665, 0.010135491378605366, -0.0020199192222207785, 0.005798701662570238, -0.032005440443754196, -0.013353003188967705, -0.014527754858136177, 0.015154288150370121, -0.03988932445645332, -0.024317346513271332, 0.00842557568103075, -0.005570278037339449, 0.016942521557211876, 0.019161494448781013, 0.009822224266827106, -0.016746729612350464, 0.003768992843106389, -0.006324076559394598, 0.009861382655799389, -0.010409599170088768, 0.02559651993215084, 0.02187647484242916, 0.0009030898800119758, 0.010983922518789768, 0.014136170968413353, 0.04012427479028702, 0.019722765311598778, -0.031039534136652946, 0.013222475536167622, 0.012250042520463467, 0.051271356642246246, 0.0020607090555131435, 0.03315408527851105, -0.0030967742204666138, -0.017947586253285408, 0.021602366119623184, 0.027567490935325623, 0.0064448146149516106, -0.006931031122803688, 0.009097794070839882, 0.00946327205747366, 0.023181753233075142, -0.002483293181285262, -0.08024854958057404, 0.004767531529068947, 0.027750229462981224, 0.015754716470837593, 0.014867126941680908, 0.03158774971961975, 0.007916516624391079, -0.005932492669671774, -0.014697440899908543, 0.02136741578578949, -0.013007104396820068, -0.03519032150506973, -0.010461810976266861, 0.013307319022715092, -0.004408579785376787, -0.014788810163736343, 0.0053777494467794895, -0.02108025550842285, -0.005570278037339449, 0.018704647198319435, 0.029212143272161484, -0.015180394053459167, 0.003488357877358794, 0.00044909754069522023, -0.011506034061312675, 0.043491896241903305, -0.019970767199993134, 0.023586390540003777, 0.027123697102069855, 0.0019252864876762033, 0.013013631105422974, -0.01409701257944107, -0.02285543456673622, -0.009763486683368683, 0.0257270485162735, 0.001962813315913081, -0.04537149518728256, 0.012315306812524796, 0.03218817710876465, -0.0010173018090426922, -0.0091500049456954, -0.0014113328652456403, 0.002732927678152919, -0.021667631343007088, 0.005204799585044384, -0.009371902793645859, -0.012791733257472515, -0.0016324145253747702, -0.003341514151543379, 0.005367959849536419, -0.030569633468985558, 0.028716137632727623, -0.020440667867660522, -0.019683606922626495, 0.016107141971588135, -0.010259492322802544, 0.0005298616597428918, 0.010592338629066944, 0.0054397499188780785, 0.01798674464225769, -0.011767089366912842, -0.0220461618155241, -0.024656718596816063, 0.004976375959813595, 0.00979611836373806, 0.004261735826730728, -0.008314627222716808, 0.00014623203605879098, 0.004506475757807493, -0.012315306812524796, -0.010474863462150097, 0.020975831896066666, -0.005332064349204302, 0.022372480481863022, -0.021772053092718124, -0.01632903888821602, -0.02493082731962204, 0.009776539169251919, 0.02104109711945057, -0.04900017008185387, 0.0027688229456543922, -0.01206077728420496, 0.008190625347197056, -0.03059573844075203, 0.01649872586131096, 0.029238248243927956, 0.021758999675512314, 0.0012742786202579737, 0.01960529014468193, 0.002573031233623624, -0.015154288150370121, 0.02751528099179268, 0.024330399930477142, -0.02104109711945057, 0.00287324539385736, 0.013333423994481564, -0.007818620651960373, 0.01158435083925724, -0.0005645331693813205, 0.005808491259813309, -0.010559706948697567, -0.026601584628224373, -0.05040987208485603, 0.015963561832904816, -0.008503892458975315, -0.015650294721126556, -0.002745980629697442, -0.01101002749055624, 0.009313165210187435, 0.0022532378789037466, -0.018038954585790634, 0.01028559822589159, -0.004679425153881311, 0.02186342142522335, 0.002917298348620534, 0.00016224209684878588, -0.014880180358886719, -0.0027100853621959686, 0.004039838444441557, 0.024030186235904694, -0.01548060867935419, 0.010520548559725285, 0.01263510063290596, 0.010233387351036072, -0.0017343893414363265, 0.018587172031402588, -0.005354906897991896, 0.0007831673719920218, -0.026027262210845947, 0.02866392582654953, -0.00956769473850727, -0.008151466958224773, 0.014292804524302483, -0.021341310814023018, -0.006673238705843687, 0.02074088156223297, -0.011956355534493923, -0.01940949819982052, 0.01912233605980873, 0.021745948120951653, 0.024695876985788345, 0.07074611634016037, -0.03009973280131817, -0.0141622768715024, 0.024865563958883286, 0.00029531936161220074, -0.013065841980278492, 0.013496584258973598, -0.027932969853281975, 0.018404433503746986, 0.03372840955853462, -0.010311704128980637, 0.028063496574759483, 0.02798517979681492, 0.0002218974259449169, -0.005899860989302397, -0.0010213807690888643, -0.03631285950541496, 0.008608314208686352, 0.008144940249621868, -0.0015108603984117508, -0.0239779744297266, 0.0034002517350018024, -0.008451681584119797, 0.022228900343179703, -0.0047610048204660416, 0.0036025699228048325, 0.01700778491795063, 0.0021259731147438288, 0.00793609581887722, -0.014671334996819496, -0.025309359654784203, -0.013953431509435177, 0.00246697710826993, 0.000339372520102188, 0.0003314184723421931, 0.004118155222386122, 0.00793609581887722, -0.008073150180280209, -0.008203677833080292, 0.002530609490349889, 0.03691328689455986, -0.015271763317286968, 0.01652483083307743, -0.02559651993215084, 0.019566131755709648, 0.009574221447110176, 0.02798517979681492, -0.01207383070141077, 0.014384173788130283, 0.006634080316871405, 0.012191304937005043, -0.0001070736616384238, 0.008960739709436893, 0.009097794070839882, 0.007479248568415642, -0.005655121058225632, 0.013255108147859573, -0.011173187755048275, 0.016459567472338676, 0.004640266764909029, 0.03174438327550888, 0.008086202666163445, -0.011329821310937405, -0.00033305009128525853, -0.003144090762361884, -0.0323709174990654, 0.026614638045430183, -0.008575682528316975, -0.01766042411327362, -0.006904925685375929, 0.024695876985788345, -0.006542710587382317, 0.015950508415699005, 0.019644448533654213, -0.0040006800554692745, -0.011473402380943298, 0.01562418881803751, 0.029499303549528122, -0.004235630389302969, -0.02023182436823845, 0.019722765311598778, 0.025935892015695572, -0.0018388116732239723, 0.02314259484410286, -0.012223937548696995, 0.018782963976264, 0.023351440206170082, -0.01230225432664156, -0.011708351783454418, 0.005651857703924179, 0.0020721303299069405, 0.005922703072428703, -0.01747768558561802, 0.014593018218874931, 0.0024310820735991, -0.0022907645907253027, -0.015585030429065228, -0.0027394541539251804, 0.0362345427274704, -0.015167341567575932, 0.02234637551009655, 0.0010474863229319453, -0.011806247755885124, 0.01686420477926731, -0.0070680854842066765, 0.023090384900569916, 0.0013362793251872063, 0.011884564533829689, -0.01084686815738678, -0.015806928277015686, 0.008751895278692245, -0.006219654344022274, -0.0005518882535398006, -0.03743540123105049, -0.03495537117123604, -0.006102179177105427, 0.01303973700851202, 0.008725789375603199, -0.03218817710876465, 0.028089603409171104, 0.04197777062654495, 0.000451952830189839, 0.008908528834581375, 0.009894014336168766, -0.0329713448882103, -0.03897562995553017, 0.015441450290381908, -0.004953533411026001, 0.00014358067710418254, -0.02087141014635563, 0.0189657025039196, -0.011055712588131428, -0.04273483157157898, -0.0014790442073717713, 0.0016903362702578306, -0.009215269237756729, 0.005165641196072102, 0.001312621170654893, 0.008667051792144775, 0.008693157695233822, 0.009652538225054741, 0.00530269555747509, -0.03800972178578377, -0.04069859907031059, 0.00851041916757822, 0.004092049319297075, 0.007753356825560331, -0.005116693675518036, -0.007883884944021702]"
10 | ]
11 | },
12 | {
13 | "cell_type": "code",
14 | "execution_count": 3,
15 | "metadata": {},
16 | "outputs": [
17 | {
18 | "data": {
19 | "text/plain": [
20 | "12344"
21 | ]
22 | },
23 | "execution_count": 3,
24 | "metadata": {},
25 | "output_type": "execute_result"
26 | }
27 | ],
28 | "source": [
29 | "from sys import getsizeof\n",
30 | "# 极限值\n",
31 | "getsizeof(vector)"
32 | ]
33 | },
34 | {
35 | "cell_type": "code",
36 | "execution_count": 6,
37 | "metadata": {},
38 | "outputs": [
39 | {
40 | "data": {
41 | "text/plain": [
42 | "34467"
43 | ]
44 | },
45 | "execution_count": 6,
46 | "metadata": {},
47 | "output_type": "execute_result"
48 | }
49 | ],
50 | "source": [
51 | "import json\n",
52 | "\n",
53 | "vector_json = json.dumps(vector)\n",
54 | "getsizeof(vector_json)"
55 | ]
56 | },
57 | {
58 | "cell_type": "code",
59 | "execution_count": 7,
60 | "metadata": {},
61 | "outputs": [
62 | {
63 | "data": {
64 | "text/plain": [
65 | "13875"
66 | ]
67 | },
68 | "execution_count": 7,
69 | "metadata": {},
70 | "output_type": "execute_result"
71 | }
72 | ],
73 | "source": [
74 | "import pickle\n",
75 | "vector_pickle = pickle.dumps(vector)\n",
76 | "getsizeof(vector_pickle)"
77 | ]
78 | }
79 | ],
80 | "metadata": {
81 | "kernelspec": {
82 | "display_name": "venv",
83 | "language": "python",
84 | "name": "python3"
85 | },
86 | "language_info": {
87 | "codemirror_mode": {
88 | "name": "ipython",
89 | "version": 3
90 | },
91 | "file_extension": ".py",
92 | "mimetype": "text/x-python",
93 | "name": "python",
94 | "nbconvert_exporter": "python",
95 | "pygments_lexer": "ipython3",
96 | "version": "3.10.0"
97 | },
98 | "orig_nbformat": 4
99 | },
100 | "nbformat": 4,
101 | "nbformat_minor": 2
102 | }
103 |
--------------------------------------------------------------------------------
/生成器/素材库/README.md:
--------------------------------------------------------------------------------
1 | # 素材库
2 |
3 | 生成器所需素材,方便手动阅读及编辑。
4 |
5 | ## 模板库/
6 |
7 | 作文模板,例如:
8 |
9 | ```txt
10 | 「名言」「提出中心论点」
11 | 「绪论引言」「绪论本论过渡句」
12 | 「事例」「回证分论点」「论证分论点」「提出分论点」
13 | 「事例」「回证分论点」「论证分论点」「提出分论点」
14 | 「事例」「回证分论点」「论证分论点」「提出分论点」
15 | 「绪论引言」「总结」
16 | 「点题」「名言」「回扣中心论点」
17 | ```
18 |
19 | ## 语料库/
20 |
21 | 语料模板,例如:
22 |
23 | ```txt
24 | 我们应当「主题谓语」「主题宾语」。
25 | 作为青年人,我们必须「主题谓语」「主题宾语」。
26 | 「主题谓语」「主题宾语」,是对我们对基本要求。
27 | 做到「主题谓语」「主题宾语」,非常必要。
28 | 能够「主题谓语」「主题宾语」,当是青年人的基本功。
29 | 「主题谓语」「主题宾语」虽不容易,但并非无法做到。
30 | 懂得「主题谓语」「主题宾语」,是青年人应该学习的。
31 | 如何「主题谓语」「主题宾语」,的确值得思考。
32 | 如何「主题谓语」「主题宾语」,任重而道远。
33 | 愿我们着眼未来,「主题谓语」「主题宾语」。
34 | ```
35 |
36 | ## 参考资料
37 |
38 | - [西华师范:感动中国颁奖词大合集(2002 ~ 2020)](https://xcb.cwnu.edu.cn/info/1007/3804.htm)
39 |
--------------------------------------------------------------------------------
/生成器/素材库/__init.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/生成器/素材库/__init.py
--------------------------------------------------------------------------------
/生成器/素材库/模版库/时尚议论文.txt:
--------------------------------------------------------------------------------
1 | 「名言」「提出中心论点」
2 | 「绪论引言」「绪论本论过渡句」
3 | 「事例」「回证分论点」「论证分论点」「提出分论点」
4 | 「事例」「回证分论点」「论证分论点」「提出分论点」
5 | 「事例」「回证分论点」「论证分论点」「提出分论点」
6 | 「绪论引言」「总结」
7 | 「点题」「名言」「回扣中心论点」
--------------------------------------------------------------------------------
/生成器/素材库/模版库/经典议论文.txt:
--------------------------------------------------------------------------------
1 | 「绪论引言」「提出中心论点」「名言」
2 | 「名言」「绪论本论过渡句」
3 | 「提出分论点」「论证分论点」「事例」「回证分论点」
4 | 「提出分论点」「论证分论点」「事例」「回证分论点」
5 | 「提出分论点」「论证分论点」「事例」「回证分论点」
6 | 「总结」「名言」「点题」「回扣中心论点」
--------------------------------------------------------------------------------
/生成器/素材库/示例库/主题词示例.txt:
--------------------------------------------------------------------------------
1 | 「勇于」「尝试」
2 | 「追求」「理想」
3 | 「敢于」「攀登高峰」
4 | 「善于」「观察细节」
5 | 「融入」「爱国主义洪流」
6 | 「热爱」「生命之美好」
7 | 「积极承担」「责任」
8 | 「主动做一位」「善读者」
9 | 「坚守」「内心的宁静」
10 | 「培养」「阳刚之气」
11 | 「学习」「雷锋精神」
12 | 「成为」「最真实的自己」
13 | 「传承」「中华文化」
14 | 「牢记」「使命」
15 | 「不忘」「初心」
16 | 「锐意」「进取」
17 | 「富有」「合作精神」
18 | 「艰苦」「奋斗」
--------------------------------------------------------------------------------
/生成器/素材库/素材库.py:
--------------------------------------------------------------------------------
1 | import re
2 | from pathlib import Path
3 | from pprint import pprint
4 | from typing import Any
5 |
6 | import editdistance
7 |
8 |
9 | class 素材库类:
10 | def __init__(self, 路径: Path = Path(__file__).parent) -> None:
11 | self.脚本所在路径 = 路径
12 |
13 | def _获取子类列表(self, 大类路径: Path) -> list[str]:
14 | return [
15 | 文件.stem
16 | for 文件 in 大类路径.iterdir()
17 | if 文件.is_file() and 文件.suffix == ".txt"
18 | ]
19 |
20 | def _获取素材列表(self, 子类路径: Path) -> list[str]:
21 | with open(子类路径, "r", encoding="utf-8") as 文件:
22 | # 去掉多余的换行符,跳过空行
23 | return [行.strip() for 行 in 文件.readlines() if 行.strip()]
24 |
25 | def _获取大类字典(self, 大类: str) -> dict[str, list[str]]:
26 | 大类字典: dict[str, list[str]] = {}
27 | for 子类 in self._获取子类列表(self.脚本所在路径 / 大类):
28 | 大类字典[子类] = self._获取素材列表(
29 | (self.脚本所在路径 / 大类 / 子类).with_suffix(".txt")
30 | )
31 | return 大类字典
32 |
33 | def 获取素材库(self) -> dict[str, dict[str, list[Any]]]:
34 | """素材库格式
35 | 素材库 = {
36 | "模版库": {
37 | 子类: [段落, ...],
38 | },
39 | "语料库": {
40 | 子类: [语料, ...],
41 | },
42 | "示例库": {
43 | 子类: [(主题谓语, 主题宾语), ...],
44 | },
45 | ...
46 | }
47 | """
48 | # 获取示例列表
49 | 示例列表: list[tuple] = []
50 | for 行 in self._获取大类字典("示例库")["主题词示例"]:
51 | if 匹配 := re.match(r"「(\w+)」「(\w+)」", 行):
52 | 示例列表.append(匹配.groups())
53 | # 生成素材库
54 | 素材库: dict[str, dict[str, list[Any]]] = {
55 | "模版库": self._获取大类字典("模版库"),
56 | "语料库": self._获取大类字典("语料库"),
57 | "示例库": {"主题词示例": 示例列表},
58 | }
59 | return 素材库
60 |
61 | @staticmethod
62 | def 检查语料库(语料库: dict[str, list[str]]):
63 | """检查语料库,并打印结果
64 | 检查语料列表(素材库实例.获取素材库()['语料库'])
65 | """
66 | for 语料类别 in 语料库.keys():
67 | print(f"\n{语料类别} 检查报告:\n")
68 | for i in range(len(语料库[语料类别])):
69 | 语料: str = 语料库[语料类别][i]
70 | # 检查非法标点
71 | for 字符 in 语料:
72 | if 字符 in ",.\"':?!":
73 | print(f"第 {i+1} 行存在英文标点 {字符}:{语料}")
74 | if 字符 in "[]【】()(){}*":
75 | print(f"第 {i+1} 行存在非法标点 {字符}:{语料}")
76 | # 检查句末标点
77 | if 语料[-1] not in "。!?":
78 | print(f"第 {i+1} 行未以。?!结尾:{语料}")
79 | # 检查方引号配对
80 | 待查语料 = 语料.replace("「主题谓语」", "").replace("「主题宾语」", "")
81 | if "「" in 待查语料 or "」" in 待查语料:
82 | print(f"第 {i+1} 行有未配对方引号:{语料}")
83 | # 检查相似语料
84 | for j in range(i):
85 | if (
86 | (语料 in 语料库[语料类别][j])
87 | or (语料库[语料类别][j] in 语料)
88 | or (editdistance.eval(语料, 语料库[语料类别][j]) < 4)
89 | ):
90 | print(f"第 {i+1} 行与第 {j+1} 行相似:{语料}")
91 |
92 |
93 | if __name__ == "__main__":
94 | 素材库实例 = 素材库类()
95 | 素材库 = 素材库实例.获取素材库()
96 | # pprint(素材库, indent=2)
97 | 素材库类.检查语料库(素材库["语料库"])
98 |
--------------------------------------------------------------------------------
/生成器/素材库/语料库/事例.txt:
--------------------------------------------------------------------------------
1 | 陈涉「主题谓语」「主题宾语」,敢为天下先,立志“伐无道,诛暴秦”,勇于反抗,不畏强暴,揭竿为旗,斩木为兵,燃起了农民起义的熊熊烈火,在中国的历史上写下了光辉的一页。
2 | 周恩来「主题谓语」「主题宾语」,许下“为中华之崛起而读书”的志愿,心怀祖国,发奋努力,远渡重洋,探求救国救民的道理,为建立新中国立下了不朽的功勋。
3 | 袁隆平「主题谓语」「主题宾语」,以解决中国人的粮食问题为己任,头顶烈日,脚踩烂泥,坚持不懈,笃行不怠,研究杂交水稻的新品种,一次又一次的为科学作出的卓越的贡献。
4 | 邓稼先「主题谓语」「主题宾语」,为了强大中国的国防事业,扎根西北大漠,深深隐藏着功与名,无私奉献了自己的一切。默默无闻是他的性格,忠厚平实是他的品质,成为了一个坚强的开拓者。
5 | “雪山信使”其美多吉「主题谓语」「主题宾语」,三十忠诚风与雪,万里邮路云和月。雪山可以崩塌,顽强的汉子不能倒下。雀儿山上流动的绿,生命禁区前行的旗,蜿蜒的邮路是雪山的旋律。坚强的多吉,你唱出高原上最深沉的歌。
6 | “海岛守卫者”王继才、王仕花夫妇,「主题谓语」「主题宾语」,心怀祖国,默默无闻,坚持不懈,具有浪的执著、礁的顽强、民的本分、兵的责任。三十二年驻守,三代人无言付出两百面旗帜收藏了太多风雨。涛拍孤岛岸、风颂赤子心。
7 | 两弹一星功勋程开甲,「主题谓语」「主题宾语」,为了国家的强大,戈壁寒暑成大器,于无声处起惊雷!一片赤诚、一生奉献,一切都和祖国紧紧相联。黄沙百战穿金甲,甲光向日金鳞开,成就了辉煌的业绩。
8 | 乡村教师张玉滚,「主题谓语」「主题宾语」,淡泊宁静,默默奉献。扁担窄窄,挑起山乡的未来;板凳宽宽,稳住孩子们的心。前一秒劈柴生火,下一秒执鞭上课。 艰难斑驳了岁月,风霜刻深了皱纹,有人看到你的沧桑,更多人看到你年轻的心。
9 | 扶贫局长张渠伟,「主题谓语」「主题宾语」,舍己为人,病情迫在眉睫,却一拖再拖。扎下帐篷,扎下了根,签上名字,就立下了军令状。没有硝烟的战场,你负了伤,泥泞的大山,你走出了路。山上的果实熟了,人们的心热了。
10 | 生物多样性研究专家钟扬,「主题谓语」「主题宾语」,献身科学事业,不畏艰难困苦,跋涉十六年,把论文写满高原。倒下的时候双肩包里藏着你的初心、誓言和未了的心愿。你热爱的藏波罗花,不屑于雕梁画栋,只绽放在高山砾石之间。
11 | 排雷战士杜富国,「主题谓语」「主题宾语」,勇敢无畏,以血肉挡住危险,哪怕自己坠入深渊。无法还给妈妈一个拥抱,无法再见妻子明媚的笑脸,与战友们拉着手趟过雷场。你听,那嘹亮的军歌是对英雄的礼赞。
12 | 勇斗歹徒的退伍军人吕保民,「主题谓语」「主题宾语」,身在市井未曾放下心中豪情,曾经军旅岂容凶残闹市横行。于人群中挺立,喝断暴徒的路,聚拢起民间的正气。侠隐于市见义而勇,勇不在于强悍,而在于无所畏惧。
13 | 千万捐赠的老人马旭,「主题谓语」「主题宾语」,少小离家乡音无改,曾经勇冠巾帼如今再让世人惊叹。以点滴积蓄汇成大河灌溉一世的乡愁,你毕生节俭只为一次奢侈,耐得清贫守得心灵的高贵。
14 | 刘传健——中国民航英雄机长,「主题谓语」「主题宾语」,危难时刻,敢于担当。仪表失灵,你越发清醒;乘客的心悬得越高,你肩上的责任越重。在万米高空的险情中如此从容。别问这是怎么做到的。每一个传奇背后,都隐藏着坚守和执着。
15 | 卢永根教授,「主题谓语」「主题宾语」,将毕生积蓄转入华南农业大学的账户,种得桃李满天下,心唯大我育青禾。是春风,是春蚕,更化作护花的春泥。热爱祖国,你要把自己燃烧。稻谷有根,深扎在泥土,你也有根扎根在人们心里。
16 | 人民的樵夫廖俊波,「主题谓语」「主题宾语」,始终不忘初心,一心为民。上山寻路,扎实工作,廉洁奉公,牢记党的话,温暖群众的心。春茶记住你的目光,青山留下你的足迹,谁把人民扛在肩上,人民就把谁装进心里。
17 | 灭火救援英雄杨科璋,「主题谓语」「主题宾语」,为了人民的利益,敢于献出满是激情的生命。热爱这岗位,几回回出生入死和死神争夺。这一次,身躯在黑暗中跌落,但你护住了怀抱中最珍爱的花朵。你在时,如炽烈的阳光。你离开,是灿烂的晚霞。
18 | 卓嘎和央宗,「主题谓语」「主题宾语」,放牧守边,无私为国。中国是老阿爸手中缝过的五星红旗,中国是姐妹俩脚下离不开的土地。高原隔不断深情冰雪锁不住春风,河的源头在北方,心之所向是祖国。
19 | 轰炸机先行者刘锐,「主题谓语」「主题宾语」,刻苦训练,勇猛出击,穿越海峡,空巡黄岩,你为祖国的战机添上一抹太平洋的蓝。巡天掠海,为国仗剑,强军兴军的锐一代,只要祖国需要你们可以飞得更远。
20 | 科学家黄大年,「主题谓语」「主题宾语」,心心念念的是古老的华夏,作别康河的水草,归来做祖国的栋梁。天妒英才,你就在这七年中争分夺秒,透支自己,也要让人生发光,地质宫五楼的灯源自前辈的薪传,永不熄灭。
21 | 台湾爱国者卢丽安,「主题谓语」「主题宾语」,虽为台湾的女儿,却有心怀华夏的大气概,祖国为大乡愁不改,把握现在开创未来。分离再久,改不了我们的血脉。海峡再深,挡不住人民追求福祉的路。
22 | 捐款英雄王珏,「主题谓语」「主题宾语」,碧草之芬,幽兰之馨,有美一人,在海之滨。你用善良为一座城市留下丰碑,芳香无尽,每年的十一月十七,狮子座流星雨如期而至,那一刻 ,映亮了夜空中你最美的背影。
23 | 脱贫攻坚时代楷模黄大发,「主题谓语」「主题宾语」,水过不去,拿命来铺,这是一个老党员为人民许下的誓言。大发渠,云中穿,大伙吃上了白米饭。三十六年,为梦想跋涉,僵直了手指,沧桑了面孔,但初心不变。
24 | 见义勇为英雄谢海华,「主题谓语」「主题宾语」,危急时刻,毅然出击。相濡以沫,是半生的深情。平凡的两个人,在命运面前却非凡地勇猛。最长情的告白已胜却人间无数。心里甜,命就不苦,爱若在,厮守就是幸福。
25 | 探月工程总设计师孙家栋,「主题谓语」「主题宾语」,少年勤学,青年担纲,你是国家的栋梁。导弹、卫星,嫦娥,北斗。满天星斗璀璨,写下你的传奇。年过古稀未伏枥,犹向苍穹寄深情。
26 | 三闯火海的救人英雄王锋,「主题谓语」「主题宾语」,面对一千度的烈焰,没有犹豫,没有退缩,用生命助人火海逃生。小巷中带血的脚印,刻下你的无私和无畏,高贵的灵魂浴火涅槃,在人们的心中永生。
27 | 深山女教师支月英,「主题谓语」「主题宾语」,你跋涉了许多路,总是围绕着大山;吃了很多苦,但给孩子们的都是甜。坚守才有希望,这是你的信念。三十六年,绚烂了两代人的童年,花白了你的麻花辫。
28 | 耶鲁毕业的大学生村官秦玥飞,「主题谓语」「主题宾语」,在殿堂和田垄之间,你选择后者,脚踏泥泞,俯首躬行,在荆棘和贫穷中拓荒。洒下的汗水,是青春埋下的种子,叫理想。守在悉心耕耘的大地,静待收获的时节。
29 | 艾滋患儿学校校长郭小平,「主题谓语」「主题宾语」,心怀他人,长期坚持不懈,奉献爱心。瘦弱的孩子需要关爱,这间病房改成的教室,是温暖的避难所。你用十二年艰辛,呵护孩子,也融化人心,郭校长,你是风雨中张开羽翼的强者。
30 | 飞行英雄张超,「主题谓语」「主题宾语」,为了祖国,敢于奉献生命。那四点四秒,祖国失去了优秀的儿子。你循着英雄的传奇而来,向着大海的方向去,降落,你对准航母的跑道,再次起飞,你是战友的航标。
31 | 大国工匠李万君,「主题谓语」「主题宾语」,平凡中铸就不凡,细小处锻造辉煌。你是兄弟,是老师,是院士,是这个时代的中流砥柱。表里如一,坚固耐压,鬼斧神工,在平凡中非凡,在尽头处超越,这是你的人生,也是你的杰作。
32 | 梁益建,「主题谓语」「主题宾语」,成为医者仁心的典范。自谦小医生,却站上医学的巅峰,四处奔走募集善良,打开那些被折叠的人生;你用两根支架矫正患者的脊柱,一根是妙手,一根是仁心。
33 | 法官阿布列林·阿不列孜,「主题谓语」「主题宾语」,铁面无私,刚正不阿。在细碎的时光中守望使命,以奋斗的精神拥抱生活。执法无私,立身有责;恪尽职守,勤勉为公。在这片土地上,红柳凝聚水土,你滋润人们的心灵。
34 | 物理学家潘建伟,「主题谓语」「主题宾语」,献身科学,不计名利。嗅每一片落叶的味道,对世界保持着孩童般的好奇。只是和科学纠缠,保持与名利的距离。站在世界的最前排,和宇宙对话,以先贤的名义,做前无古人的事业。
35 | 磨刀老人吴锦泉,「主题谓语」「主题宾语」,热心公益,淡薄名利。窄条凳,自行车,弓腰扛背,沐雨栉风。身边的人们追逐很多,可你的目标只有一个。刀剪越磨越亮,照见皱纹,照见你的梦。吆喝渐行渐远,一摞一摞硬币,带着汗水,沉甸甸称量出高尚。
36 | “宝贝回家”志愿者张宝艳,秦艳友,「主题谓语」「主题宾语」,心怀善良,心怀他人。茫茫暗夜,你们用父母之爱,把灯火点亮。三千个日夜奔忙,一千个家庭团聚。你们连缀起星星点点的爱,织起一张网。网住希望,网住善良。
37 | 女排教练郎平,「主题谓语」「主题宾语」,为国争光,为国奉献。你拦击困难、挫折和病痛,把拼博精神如钉子般砸进人生。一回回倒地,一次次跃起,一记记扣杀,点染几代青春,唤醒大国梦想。因排球而生,为荣誉而战。一把铁榔头,一个大传奇。
38 | 诺贝尔奖得主屠呦呦,「主题谓语」「主题宾语」,持之以恒,终有收成。青蒿一握,水二升,浸渍了千多年,直到你出现。为了一个使命,执着于千百次实验。萃取出古老文化的精华,深深植入当代世界,帮人类渡过一劫。呦呦鹿鸣,食野之蒿。今有嘉宾,德音孔昭。
39 | 词作家阎肃,「主题谓语」「主题宾语」,歌颂祖国,赞美人民,宣传真善美。唱红岩,唱蓝天,你一生都在唱,你的心一直和人民相连。是一滴水,你要把自己溶入大海;是一树梅,你要让自己开在悬崖。一个兵,一条路,一颗心,一面旗。
40 | 大国工匠徐立平,「主题谓语」「主题宾语」,专心致志,精益求精。每一次落刀,都能听到自己的心跳。你在火药上微雕,不能有毫发之差。就象手中的刀,二十六年精心锻造。你是一介工匠,你是大国工匠。
41 | 化缘校长莫振高,「主题谓语」「主题宾语」,埋头苦干,拼命硬干。千万里,他们从天南地北回来为你送行。你走了,你没有离开。教书、家访、化缘,你是不灭的蜡烛,是不倒的脊梁,你在天上熠熠闪亮。
42 | 东方之星抢救英雄官东,「主题谓语」「主题宾语」,舍己为人,勇于担当。来不及思量,就一跃而入。轻声的安抚,稳住倾覆的船舱,摘下生命软管,那肩膀上剩下的只有担当,人们夸你帅,不仅仅指的是面庞。
43 | 基层干部买买提江·吾买尔,「主题谓语」「主题宾语」,勤政为民,乐于奉献。一碗茶水端的平,两个肩膀闲不住。三十多年的老支书,村民离不开的顶梁柱。你是伊犁河上筑起的拦河坝,是戈壁滩上引来的天山水,给村民温暖,带大家致富。
44 | 老艺术家王宽,「主题谓语」「主题宾语」,老当益壮,为他人无私奉献。为救孤,你古稀高龄去卖唱,为救孤,你含辛茹苦十六年,十六年,哪一年不是三百六十天,台上,你苍凉开腔,台下,你给人间作了榜样。
45 | 中国氢弹之父于敏,「主题谓语」「主题宾语」,深藏功名,默默奉献。受命之日,寝不安席,当年吴钩,申城淬火,十月出塞,大器初成。一句嘱托,许下了一生;一声巨响,惊诧了世界;一个名字,荡涤了人心。
46 | 最美乡村教师朱敏才、孙丽娜,「主题谓语」「主题宾语」,发愤忘食,乐以忘忧。他们走过半个地球,最后在小山村驻足,他们要开一扇窗,让孩子发现新的世界。夕阳最美,晚照情浓。信念比生命还重要的一代,请接受我们的敬礼。
47 | 村书记赵久富,「主题谓语」「主题宾语」, 舍小家为大家,舍己利为大局。你带领乡亲们启程,车轮移动的瞬间,心间隐痛。不敢回望,怕牵动一路哭声。五十年间,两度背井离乡,我们的老支书,一生放不下的,不只是白发高堂。
48 | 捐款老人张纪清,「主题谓语」「主题宾语」,过着清贫的生活,怀着高贵的心灵。一个善良的背影,汇入茫茫人海。他用中国人熟悉的两个字,掩盖半生的秘密。他是红尘中的隐者,平凡的老人,朴素的心愿。炎黄不是一个名字,是一脉香火,为我们点燃。
49 | 伴读母亲陶艳波,「主题谓语」「主题宾语」,与命运抗争,与坚强同行。除了母爱你一无所有,但也要横下心和命运争夺。十六年陪读,你是他的同桌,你作他的耳朵,让他听见这世界的轻盈,也听见无声的爱。
50 | 大漠“猎鹰”木拉提·西日甫江,「主题谓语」「主题宾语」,用钢的意志和铁的臂膀,与艰难和困苦较量。危险无处不在,他用胸膛作盾牌;为了同胞的安宁,他选择了翱翔。高飞的猎鹰,他绝不孤独,因为身后是人民。
51 | 肖卿福,「主题谓语」「主题宾语」,医者仁心,大爱苍生。他来的时候,心里装着使命,衣襟上沾满晨光。像一名战士,在自己的阵地上顽强抵抗;像一位天使,用温暖驱赶绝望。医者之大,不仅治人,更在医心,他让阳光重新照进村庄。
52 | 师昌绪,「主题谓语」「主题宾语」,有胆识,敢担当,勇于开拓。八载隔洋同对月,一心挫霸誓归国。归来是他的梦,盈满对祖国的情。空心涡轮叶片,是他送给祖国的翅膀。两院元勋,三世书香。一介书生,国之栋梁。
53 | 中国核潜艇之父黄旭华,「主题谓语」「主题宾语」,为华夏,埋下头,甘心做沉默的砥柱。一穷二白的年代,你挺起胸,成为国家最大的财富。你的人生,正如深海中的潜艇,无声,但有无穷的力量。
54 | 高龄老人刘盛兰,「主题谓语」「主题宾语」,以己之力,拾荒助学。残年风烛,发出微弱的光,苍老的手,在人间写下大爱。病弱的身躯,高贵的心灵,他在九旬的高龄俯视生命。一叠叠汇款,是寄给我们的问卷,所有人都应该思考答案。
55 | 老兵陈俊贵,「主题谓语」「主题宾语」,坚守承诺,矢志不渝。只为风雪之夜一次生死相托,你守住誓言,为我们守住心灵的最后阵地。洒一碗酒,那碗里是岁月峥嵘;敬一个礼,那是士兵最真的情义。雪下了又融,草黄了又青,你种在山顶的松,岿然不动。
56 | 基层干部段爱平,「主题谓语」「主题宾语」,一心为公,奉献一切。山梁挡住了阳光,你用肩膀刚起乡亲的盼望。村庄在渐渐丰满,你的身体却慢慢柔弱。庄稼,总要把一切还给泥土。你贴工,贴钱,贴命,你还贴近百姓的心。
57 | “油菜花父子”沈克泉、沈昌健,「主题谓语」「主题宾语」,心怀梦想,代代坚持。父亲留恋那油菜花开的芬芳,儿子就把他葬在不远的山上。三十年花开花谢,两代人春来秋往,一家人不分昼夜,守护最微弱的希望。一粒种子,蕴含着世代相传的梦想。
58 | 最美乡村教师格桑德吉,「主题谓语」「主题宾语」,为了孩子们的未来,也为了民族的未来。不想让乡亲的梦,跌落于山崖。门巴的女儿执意要回到家乡,坚守在雪山、河流之间。她用一颗心,脉动一群人的心,用一点光,点亮山间更多的灯火。
59 | 百岁仁医胡佩兰,「主题谓语」「主题宾语」,以技术救人,用品德渡人。技不在高而在德,术不在巧而在仁。医者,看的是病,救的是心,开的是药,给的是情。扈江离与辟芷兮,纫秋兰以为佩。你是仁医,是济世良药。
60 | 姚厚芝,「主题谓语」「主题宾语」,为母爱作了最好的诠释。病,压垮了身体,但不能摧毁母爱。草根母亲呕心沥血,为孩子缝补梦想,而深厚的爱,更铺就孩子精神的未来。请上天给你多一些时间,让你把美好的愿望,织进这春天的图景。
61 | 方俊明,「主题谓语」「主题宾语」,路见不平,见义勇为。纵身一跃,却被命运撞得头破血流。在轮椅上度过青春,但你却固执地相信善良,丝毫不悔。今天你不能起身,但我们知道,你早已站立在所有人的面前。
62 | 全国道德模范龚全珍,「主题谓语」「主题宾语」,追寻梦想,矢志不渝。少年时寻见光,青年时遇见爱,暮年到来的时候,你的心依然辽阔。一生追随革命、爱情和信仰,辗转于战场、田野、课堂。跨越人民的敬意,是你一生最美的勋章。
63 | 林俊德,「主题谓语」「主题宾语」,以身许国,万死不辞。大漠,烽烟,马兰。平沙莽莽黄入天,英雄埋名五十年。剑河风急云片阔,将军金甲夜不脱。战士自有战士的告别,你永远不会倒下。
64 | 陈斌强,「主题谓语」「主题宾语」,孝心绝伦,坚守美德。小时候,这根布带就是母爱,妈妈用它背着你。长大了,这布带是儿子的深情,你用它背着妈妈。有一天,妈妈的记忆走远了,但爱不会,它在儿女的臂膀上一代代传承。
65 | 何玥,「主题谓语」「主题宾语」,心怀大爱,善济他人。正是花样年华,你却悄然离开。你捐出自己,如同花朵从枝头散落,留得满地清香。命运如此残酷,你却像天使一样飞翔。你来过,你不曾离开,你用平凡生命最后的闪光,把人间照亮。
66 | 扶贫干部陈家顺,「主题谓语」「主题宾语」,舍己为人,默默奉献。为乡亲卧底,你吃遍所有的苦,为百姓打工,你换来群众最多的甜。你乔装改扮,却藏不住心底最深的惦念;你隐姓埋名,可我们都知道你是谁,为了谁。
67 | 高淑珍,「主题谓语」「主题宾语」,只求付出,从无索取。粗糙的手支起课桌,宽厚的背挡住风雨。有了爱,小院里的孩子一天天茁壮起来。你的心和泥土一样质朴,你洒下辛苦的种子,善良会生长成参天大树。
68 | 以生命保护学生的教师张丽莉,「主题谓语」「主题宾语」,舍己为人,生死抉择,无怨无悔。你们的老师,她失去了双腿,却给自己插上了翅膀;她大你们不多,却让我们学会了许多。都说人生没有彩排,可即便再面对那一刻,这也是她不变的选择。
69 | 南海守礁士兵李文波,「主题谓语」「主题宾语」,为祖国,为责任,初心永恒。二十年坚守,你站成了一块礁石,任凭风吹浪打。却只能愧对青丝白发。你也有梦,可更知肩上的责任比天大。你的心中自有一片海,在那里,祖国的风帆从不曾落下。
70 | 台湾爱国老兵高秉涵,「主题谓语」「主题宾语」,心怀大爱,终老不变。海峡浅浅,明月弯弯。一封家书,一张船票,一生的想念。相隔倍觉离乱苦,近乡更知故土甜。少小离家,如今你回来了,双手颤抖,你捧着的不是老兵的遗骨,一坛又一坛,都是满满的乡愁。
71 | 残疾医生周月华、艾起,「主题谓语」「主题宾语」,身残志不残,身残爱不残。她背起药箱,他再背起她。他心里装的全是她,而她的心里还装着整个村庄。一条路,两个人,二十年。大山巍峨,溪水蜿蜒,月华皎洁,爱正漫漫的升起。
72 | 中国核事业的领航人朱光亚,「主题谓语」「主题宾语」,专心致志,持之以恒。他一生就做了一件事,但却是新中国血脉中,激烈奔涌的最雄壮力量。细推物理即是乐,不用浮名绊此生。遥远苍穹,他是最亮的星。
73 | 北大数学天才韦东奕「主题谓语」「主题宾语」,专注于精神追求,生活简朴。在当今年轻人较容易沉迷于物质享受之时,他在探索数学奥秘的路上,永怀赤子之心,简单而纯粹,孜孜不倦追求自己心中的理想和目标。
74 | 清华失聪女博士江梦南「主题谓语」「主题宾语」,乐观顽强,不懈努力。她在极其艰难的条件下考入吉林大学,顺利完成本科和硕士研究生学业,并如愿被清华大学录取,怀着“解决生命健康难题”的学术志向笃定前行,从无声世界里突圈,她用乐观坚强奏响生命的强音,传递昂扬向上的青春力量。
75 | 生命的守护神吴天一院士「主题谓语」「主题宾语」,献身科学,舍己为人,矢志不渝。投身高原医学研究50余年,诊疗救治藏族群众上万名。他奋战在青藏高原,数十年的高原科考活动险象环生,多次车祸导致了他有14处骨折,但他始终把青藏高原当作科学事业的根。
76 | 当代愚公毛相林「主题谓语」「主题宾语」,带领乡亲们以“愚公移山”的决心和毅力,历时7年,在悬崖绝壁上凿出一条8公里长的“绝壁天路”。路修通后,他又带领村民们向贫穷宣战,探索培育出柑橘、桃、西瓜等产业,发展乡村旅游,将绿水青山变成金山银山,蹚出了一条致富路。
77 | 英雄航天员王亚平「主题谓语」「主题宾语」,要强好学,努力追梦,巾帼不让须眉。她刻苦训练,终于成为“女飞”中的一员,带着亿万人的期望,再一次实现了中华飞天梦;作为“太空教师”,她用灿烂的微笑、生动的讲解,激发了无数莘莘学子学习科学、探索科学的精神。
78 | 时代楷模黄文秀「主题谓语」「主题宾语」,自立自强,乐观开朗,积极向上。北京师范大学硕士毕业后回乡工作,担任百坭村的驻村第一书记。她一心为民,倾力扶贫,用生命诠释共产党员的初心和使命,留下最美的韶华。百色的大山,你是最美的朝霞,脱贫的战场,你是醒目的黄花。
79 | “共和国勋章“获得者张富清「主题谓语」「主题宾语」,坚守初心,默默奉献。60多年深藏功名,一辈子不改本色。在部队,他保家卫国;到地方,他为民造福。他用自己的朴实纯粹、淡泊名利书写了精彩人生,凝聚起万众一心奋斗新时代的强大力量。
80 | 钱学森「主题谓语」「主题宾语」,心怀祖国,心怀科学,毅然放弃优越的生活和工作条件,回到了一穷二白的祖国。长年累月献身于科学研究,把自己的姓名和对祖国、对人民的深爱埋在祖国最荒凉最偏僻的地方,默默无闻,忘我工作,为谱写中国强国之梦做出了卓越的贡献。
81 | 雷锋传人郭明义「主题谓语」「主题宾语」,敬业爱岗,甘于奉献。他充满爱心,纯洁无私。20年献血6万毫升,为社会捐款12万元,先后资助了180多名特困生。他总看别人,还需要什么;他总问自己,还能多做些什么。他舍出的每一枚硬币,每一滴血都滚烫火热。他越平凡,越发不凡,越简单,越彰显简单的伟大。
82 | 全国敬业奉献模范杨善洲「主题谓语」「主题宾语」,淡泊名利,无私奉献。退休后,义务植树造林22年,把昔日的荒山秃岭变成了今朝生机勃勃的绿色天地。绿了荒山,白了头发,他志在造福百姓;老骥伏枥,意气风发,他心向未来。杨善洲不仅留下了5.6万亩郁郁葱葱的山林,更留下一笔宝贵的精神财富。
83 | 千百万普通的农民工「主题谓语」「主题宾语」,默默无闻,默默付出。“告别了年迈的爹娘,拥别了读书的儿郎,背起简单的行囊,走出熟悉的村庄”。他们单纯热情,爱岗敬业,吃苦耐劳,城市里那崛起的高楼、宽阔的马路、漂亮的公园,在每一个角落中,都留下了他们辛勤奉献的汗水和足迹。
84 | 彭士禄「主题谓语」「主题宾语」,历经磨难,初心不改。在深山中倾听,于花甲年重启。两代人为理想澎湃,一辈子为国家深潜。你,如同你的作品,无声无息,但蕴含巨大的威力。
85 | 杨振宁「主题谓语」「主题宾语」,把爱国与科学融为一体。站在科学和传统的交叉点上,惊才绝艳。你贡献给世界的,如此深奥,懂的人不多。你奉献给祖国的,如此纯真,我们都明白。曾经,你站在世界的前排,现在,你与国家一起向未来。
86 | 顾诵芬「主题谓语」「主题宾语」,心中有国家,梦中有科学。像静水深流,静水里涌动报国的火,似大象无形,无形中深藏着强国梦。心无旁骛,一步一个脚印,志在冲天。振长策,击长空,诵君子清芬。
87 | 吴天一「主题谓语」「主题宾语」,坚守高原,守护人民健康。喝一口烧不开的水,咽一口化不开的糌粑,封存舍不下的亲情,是因为心里有放不下的梦。缺氧气,不缺志气!海拔高,目标更高。在高原上,你守望一条路,开辟了一条路。
88 | 朱彦夫「主题谓语」「主题宾语」,永远战斗,永远付出。生命,于你不止一次;士兵,于你不只是经历,没有屈服长津湖的冰雪、也没有向困苦低头,与自己抗争、向贫穷宣战,一直在战斗,一生都在坚守人的生命,应当像你这样度过。
89 | 中国航天人「主题谓语」「主题宾语」,力争上游,敢于超越。发射、入轨、着陆,九天探梦一气呵成;追赶、并跑、领跑,五十年差距一载跨越;环宇问天,探月逐梦,五星红旗一次次闪耀太空,中国航天必将行稳致远。
90 | 苏炳添,「主题谓语」「主题宾语」,心怀梦想,踏踏实实,永不放弃。世界屏住了呼吸,9秒83冲出亚洲的速度,你超越伤病和年龄,超越了自己你奔跑的背后,有强大的祖国。
91 | 陈贝儿「主题谓语」「主题宾语」,跋涉万里,不辞辛劳,从霓虹灯的丛林中转身,让双脚沾满泥土。从雨林到沙漠,借溜索穿过偏见,用钢梯超越了怀疑。一条无穷之路,向世界传递同胞的笑容,你记录这时代最美的风景。
92 | 张定宇「主题谓语」「主题宾语」,心怀他人,不顾自己。步履蹒跚与时间赛跑,只想为患者多赢一秒;身患绝症与新冠周旋,顾不上亲人已经沦陷。这一战,你矗立在死神和患者之间;那一晚,歌声飘荡在城市上空,我们用血肉筑成新的长城。
93 | 陈陆「主题谓语」「主题宾语」,为了人民,不怕牺牲。最先出发,最快抵达,为危难的乡亲奉上最好的年华。欠身体一台手术,欠妻子一个告别,欠父母一次团圆。洪水汹涌,你是浪尖上的逆行者,大雨过后,你是天空中灿烂的霞。
94 | 张桂梅「主题谓语」「主题宾语」,扎根大山,坚守清贫,教书育人。烂漫的山花中,我们发现你。自然击你以风雪,你报之以歌唱。命运置你于危崖,你馈人间以芬芳。不惧碾作尘,无意苦争春,以怒放的生命,向世界表达倔强。你是崖畔的桂,雪中的梅。
95 | 万佐成、熊庚香「主题谓语」「主题宾语」,平凡而真诚,朴实而善良。微弱的灯,照亮寒夜的路人;火红的灶,氤氲出亲情的味道。这陋巷中的厨房,烹煮焦虑和苦涩,端出温暖和芬芳,惯看了悲欢离合,你们总是默默准备好炭火。
96 | 王海「主题谓语」「主题宾语」,以身许国,敢于亮剑。在朝阳下俯冲,迎着西风开火。空中的尖刀,以一当十;疆土的坚盾,巡天卫国。山河已无恙,祖国的雄鹰已飞得更高,你刻在机身上的星星,是战士们的巡航坐标。
97 | “最美快递员”汪勇「主题谓语」「主题宾语」,担当责任,勇敢抗疫。没有人能百毒不侵,热血可以融化恐惧;没有人是生来的勇者,责任催促你重装上阵。八方统筹,百般服务。你以凡人之力,书写一段传奇。
98 | 谢军「主题谓语」「主题宾语」,夜以继日,高速超越。滴答,滴答,中国在等待你的回答。你的夜晚更长,你的星星更多,你把时间无限细分,你让速度不断压缩。三年一腾飞,十年一跨越。当第五十五颗吉星升上太空,北斗,照亮中国人的梦。
99 | 叶嘉莹「主题谓语」「主题宾语」,传承辉煌,赓续文脉。桃李天下,传承一家。你发掘诗歌的秘密,人们感发于你的传奇。转蓬万里,情牵华夏,续易安灯火,得唐宋薪传,继静安绝学,贯中西文脉。你是诗词的女儿,你是风雅的先生。
100 | 国测一大队「主题谓语」「主题宾语」,为国家苦行,为科学先行。六十多年了,吃苦一直是传家宝,奉献还是家常饭。人们都在向着幸福奔跑,你们偏向艰苦挑战。穿山跨海,经天纬地,你们的身影,是插在大地上的猎猎风旗。
101 | 樊锦诗「主题谓语」「主题宾语」,舍半生,给茫茫大漠。从未名湖到莫高窟,守住前辈的火,开辟明天的路。半个世纪的风沙,不是谁都经得起吹打。一腔爱,一洞画,一场文化苦旅,从青春到白发。心归处,是敦煌。
102 | 四川森林消防员「主题谓语」「主题宾语」,面对危难时刻,敢于显身手。青春刚刚登场,话语犹在耳旁,孩子即将出生,父母淹没于泪水。青山忠诚的卫士,投身一场大火,长眠在木里河两岸,你们没有走远,看那凉山上的秋叶,今年红得分外惹眼。
103 | 顾方舟「主题谓语」「主题宾语」,舍己为人,医者大仁。为一大事来,成一大事去。功业凝成糖丸一粒,是治病灵丹,更是拳拳赤子心。你就是一座方舟,载着新中国的孩子,渡过病毒的劫难。
104 | 朱丽华「主题谓语」「主题宾语」,抗争命运,黑暗中追求光明。不幸关上了你的门,但你帮别人打开了窗。看见过这世界的阴影,但还是面向光明。在黑暗中,靠自己的一双手,推拿出灿烂人生。世界上最美丽的东西,看不见也摸不着,但你能感受到。
105 | 杜岚、尤端阳「主题谓语」「主题宾语」,爱国不变,初心不变。濠江上升起游子的梦。离乱中的骨气、志气,归来后的元气,锐气,你们为它养成了浩然之气。阳光下最有意义的工作,五星红旗下不灭的薪火。飘扬吧,这面旗留下澳门最美的记忆。
106 | 伍淑清「主题谓语」「主题宾语」,爱祖国,爱善良。四十年前,你说有件事值得做;四十年后,你说有些事必须做!逾古稀而不辞,虽千万人而往。超越港岛的远见,不让须眉的担当。爱青年,更爱香港,是美心,更是良心。
107 | 潘维廉「主题谓语」「主题宾语」,充满爱心,乐善好施。打开心扉,拥抱过就有了默契。放下偏见,太平洋就不算距离。家乡的信中写下你的中国,字里行间读得出你的深情。遥远来、永久住、深刻爱,我们都喜欢你这种不见外。
108 | 中国女排「主题谓语」「主题宾语」,拼搏奉献,为国争光。三十年拼搏不息,几代人热泪盈眶。在低谷中奋起,从不放弃,面对强敌出手,永不言败。你们的身影是民族性格的缩影,你们的脚步是一个国家成长的历程。奏国歌,升国旗,你们超越了体育,是国家的英雄。
109 | 绣娘陈英华「主题谓语」「主题宾语」,知传承,敢创新。用针线勾画星河光影,将科学与艺术有机融合,勾稿、配色、刺绣,用平针绣和乱针绣等针法,同时运用调和配色、独创针法,将熠熠星空绣制成艺术品,“星空系列”刺绣作品由此诞生,为传统非遗注入现代技法与创新活力。
110 | 汪家平「主题谓语」「主题宾语」,守护文物古迹,留住历史记忆。他在文化岗位上工作了40多年,踏实肯干,为古牌坊群修复竭尽全力。从守住身边每一件文物开始,到完成每一项文物修复工作,“不能让历史只能出现在书本上”的想法朴素、真挚,让他始终在基层文保这条路上坚持坚守。
111 | 夫妻教师宋忠胜、李月梅「主题谓语」「主题宾语」,无私奉献,坚守太行深处十六载。他们立志让每一个孩子充分享受到充满生机的教育,让每一个孩子带着梦想飞得更高更远,让更多的孩子走出大山、共享人生出彩的机会。
112 | 陈际玮「主题谓语」「主题宾语」,献身祖国,献身科技。他不知疲倦地投入工作中,抢进度、赶时间,为了找到一次飞行器飞行失败的故障根源,他曾和团队驻扎在试验场,连续工作7天7夜,以苦为乐,无怨无悔,为实现拥抱星辰大海的梦想奉献自己的青春、智慧和热血。
113 | 马德静「主题谓语」「主题宾语」,专注教育,倾心事业。她在农村任教期间,就自掏腰包给读不起书的孩子们买书和各类学习用品;退休后筹集资金重建新馆,承担了图书馆的买书、整理、编号等大量工作。91岁的马德静,已经为图书馆义务默默服务了35年。
114 | 王其欣「主题谓语」「主题宾语」,干好小事情,成就大事业。他从事基层法律服务15年,调解矛盾纠纷3800多件,兢兢业业,扎根基层,饱含深情为群众服务,将小我融入大我,在妥善处理好每一件案子、做好每一件小事中,找到了人生价值和努力方向。
115 | 张星华「主题谓语」「主题宾语」,有责任,有担当,燃烧青春,守护一方平安。警铃响起,他们迅速披上橙色战甲,踏上红色战车,冲向人民生命财产遭受威胁的现场。大火熊熊燃起时,他们义无反顾地冲向浓烟与烈焰,无愧“最美逆行者”的称号。
116 | 彭慧胜「主题谓语」「主题宾语」,脚踏实地,献身科学。大学四年,他有三个暑假在图书馆度过,阅读大量文史哲经典,打下人文基础;读研期间,他有时索性就睡在实验室里,不知疲倦地投入研究,打牢科研基本功,经历挫败后,他容不得半点心浮气躁。
117 | 陶勇「主题谓语」「主题宾语」,心中有光,胸怀善意。他用一把刀,为低视力者带去光明;他用一颗心,为患者燃起希望。他先后做过15000多台手术,忙碌到顾不上吃饭休息。他做到了他所说的那样:把光明捧在手中,照亮每一个人的脸庞。
118 | 钱七虎「主题谓语」「主题宾语」,以国之需要,作我之理想。奋斗一甲子,投身强国梦。勇于攀登的脚步从未停歇,坚守报国强军的赤子情怀,战斗在大山深处、戈壁荒漠、边防海岛等工程一线,为我国防护工程发展作出了巨大贡献,用实际行动交出了自己的人生答卷。
119 | 屈原「主题谓语」「主题宾语」,为理想不忍屈从,为尊严不愿合污。“长太息以掩涕兮,哀民生之多艰。”当落日染红汨罗江,他一跃冲进万里涛,把清高的节操留在世上,却让伟大的思想长存历史。
120 | 司马迁「主题谓语」「主题宾语」,忍辱负重,笔耕不辍。他从“西伯拘而演《周易》”的遭遇中获得了新的生命动力,隐忍苟活,弃小义,雪大耻,终于完成了“史家之绝唱,无韵之《离骚》”,名垂后世。
121 | 阮籍「主题谓语」「主题宾语」,“志气宏放,任性不羁”,“傲然独得”而至情至性。用白眼对付礼俗之辈,用青眼接待知音。世俗之中却有阮籍这株出淤泥而不染的奇葩,史书里便可寻得你一派清韵。
122 | 嵇康「主题谓语」「主题宾语」,身在浊世却独自清高,作为下吏却性情孤傲。在生命的最后一刻,他只能将心灵寄托在那一曲《广陵散》中,在琴声中与那片竹林相遇。但愿有来生,但愿来世的他能够成为真正的“竹林七贤”。
123 | 陶渊明「主题谓语」「主题宾语」,“悟以往之不谏,知来者之可追”,毅然选择了田园与自然。虽然劳累,但真真实实,没有功名利禄的烦忧,他多了一份平和与清静,赏自己种的菊花,品自己酿的浊酒,创造了千古梦境“桃花源”。
124 | 谭嗣同「主题谓语」「主题宾语」,怀着一颗炽烈的变革之心,一腔积极进取的爱国热情,为民请命,奋斗终生。“我自横刀向天笑,去留肝胆两昆仑”,激励着后来的人踏着他的血迹前进,终于拼得社稷的光明。
125 | 牛顿「主题谓语」「主题宾语」,面朝真理的海洋,孜孜不倦地探索。为了找寻点缀历史瀚海的光滑“卵石”和美丽“贝壳”,他贡献出毕生精力,其巨大发现折射出的科学之光,定会照耀万世,永远为人类之灯塔。
126 | 伽利略「主题谓语」「主题宾语」,执著于追求真理,坚定地走科学之路。他曾经彷徨着,思索着,终于有了明确的回答——宗教不应干预科学,科学的力量倾倒性地获得了胜利。执著于真理,让伽利略这位科学巨人更加不朽。
127 | 王勃「主题谓语」「主题宾语」,充满才情与壮志,开拓初唐近体诗新格局。“落霞与孤鹜齐飞,秋水共长天一色”,他的抱负与志气、坚守与慷慨、他的诗与歌,是留给我们子孙后辈的最宝贵的遗产。
128 | 杜甫「主题谓语」「主题宾语」,成为历史上忧国忧民的典范。他的笔下,倾注了对统治者无情的控诉,对劳苦民众的深切同情。惨淡萧瑟的秋风撩起了诗人两鬓白发,夕阳的余辉映出诗人忧愁的面庞,含泪的双眼,凝视的是祖国。
129 | 勾践「主题谓语」「主题宾语」,卧薪尝胆,忍辱负重。十年坚持不懈,赢得国富民强,号令三军“旋进旋退”,一举灭吴,报仇雪恨,成就霸业,不愧“一位伟大的君王,一位难得的政治家”。
130 | 李白「主题谓语」「主题宾语」,怀一身才华,携一身傲气,为尊严不肯低下高贵的头颅。仕途遭挫泯灭不了心中的豪情壮志,“白发三千丈”的愁丝消释不了心中无尽的豪迈。雄奇豪放的诗篇饱含你心中的理想、抱负,留给后人的却是无穷无尽的瑰宝。
131 | 岳飞「主题谓语」「主题宾语」,牢记母亲的教诲,精忠报国。他承担起救国救民的重任,组建战无不胜的岳家军,与金军进行了大小数百次战斗。“还我河山”的“壮怀激烈”,永远激励着我们的爱国热情。
132 | 文天祥「主题谓语」「主题宾语」,保持气节,坚贞不渝。“人生自古谁无死,留取丹心照汗青”的文天祥,组织义军抗元入侵,英勇奋战,不幸被捕,囚禁四年,经历种种严酷考验,始终不屈,其铮铮铁骨与炽热的爱国精神和崇高的民族气节,千古流芳。
133 | 史可法「主题谓语」「主题宾语」,怀赤胆傲骨,保持民族尊严。他有梅花般的坚毅,也有明月般的高洁。他率领扬州4千军民,督师防清兵入侵,被困孤成,拒不投降,浴血奋战,终因寡不敌众被害。他的壮烈事迹,激发着后世的民族自尊心和爱国热情。
134 | 于谦「主题谓语」「主题宾语」,“粉骨碎身浑不怕,要留清白在人间。”外敌入侵,家国危亡,于谦临危受命,亲自指挥数十万军民进行了名扬青史的北京保卫战,击退外敌,挽狂澜于既倒,在中国历史上抒写了壮烈辉煌的一页。
135 | 霍去病「主题谓语」「主题宾语」,敢为人先,敢于担当。他豪言:“匈奴未灭,何以家为?”他面对国难,年仅18岁就主动请缨,纵横疆场,让匈奴人闻风丧胆,封狼居胥,名垂千古。
136 | 郑成功「主题谓语」「主题宾语」,敢于维护国家利益。他是华夏臣子,他誓死保卫华夏江山,是一个有骨气、有着强烈爱国情节的英雄。他英勇杀敌,将荷兰侵略者赶出中国领土,收复了台湾,维护了祖国领土的完整,煌煌伟业,彪炳千秋。
137 | 戚继光「主题谓语」「主题宾语」,面对侵略者,敢于硬碰硬。“血战歼倭,勋垂闽浙”的戚继光,在东南沿海抗击倭寇十余年,足迹几乎踏遍了我国的东南海疆,留下了一部可歌可泣的英雄史诗,实现了其“但愿海波平″的雄心壮志。
138 | 林则徐「主题谓语」「主题宾语」, “苟利国家生死以,岂因祸福避趋之。”“气贯九天,惟正是高”的林则徐,领导了中国历史上轰轰烈烈的禁烟运动——虎门销烟,指挥了抗英斗争,维护了国家主权和民族的尊严,增长了中国人民的志气,成为中国近代史上第一位民族英雄和爱国者。
139 | 邓世昌「主题谓语」「主题宾语」,“我立志杀敌报国,今死于海,义也,何求生为!”他身处弱世,壮怀激烈,指挥“致远”舰与日军奋勇作战,战舰被击中沉没,坠落海中,誓与军舰共存亡,自己与全舰官兵最后沉没于波涛之中,壮烈殉国。流芳千古。
140 | 黄继光「主题谓语」「主题宾语」,一身硬骨头,满腔赤诚血。在上甘岭战役中,进攻受阻时,黄继光挺身而出,用胸膛堵住敌军疯狂扫射的枪眼,以生命为战友开辟了前进道路,成为上甘岭上一颗永恒闪耀的星!
141 | “海空卫士”王伟「主题谓语」「主题宾语」,守护好我们的海陆空,决不让侵略者踏入半步。美军侦察机来犯,王伟奉命拦截,坚毅果敢,沉着冷静,英勇顽强,用生命谱写了一曲爱国主义和革命英雄主义的壮丽凯歌。
142 | 卫国戍边英雄陈红军「主题谓语」「主题宾语」,天地英雄气,千秋尚凛然。巍巍喀喇昆仑,座座雪峰耸峙,这里是陈红军坚守的地方。他奉命带队前往一线执行紧急支援任务,在同外军战斗中英勇作战,誓死不屈,为捍卫祖国领土主权、维护国家核心利益,壮烈牺牲,留下豪气满乾坤。
143 | 钱伟长「主题谓语」「主题宾语」,赤子从义理到物理,从固体到流体,顺逆交替,委屈不曲,荣辱数变,老而弥坚,这就是他人生的完美力学,无名无利无悔,有情有意有祖国。
144 | 孙水林和孙东林「主题谓语」「主题宾语」,信义言忠信,行笃敬,古老相传的信条,演绎出现代传奇,他们为尊严承诺,为良心奔波,大地上一场悲情接力。雪夜里的好兄弟,只剩下孤独一个。雪落无声,但情义打在地上铿锵有力。
145 | 才哇「主题谓语」「主题宾语」,铁汉对乡亲有最深的爱,所以才不眠不休,对生命有更深的理解,所以才不离不弃,铁打的汉子,是废墟上不倒的柱,不断地梁。他沉静的面孔,是高原上最悲壮的风景。
146 | 郭明义「主题谓语」「主题宾语」,传人他总看别人,还需要什么;他总问自己,还能多做些什么。他舍出的每一枚硬币,每一滴血都滚烫火热。他越平凡,越发不凡,越简单,越彰显简单的伟大。
147 | 舟曲泥石流中的中队长王伟「主题谓语」「主题宾语」,砥柱大雨滂沱,冲毁了房屋掩埋了哭喊。妻儿需要你的肩膀,而人民更需要你的脊梁。五百米的距离,这个战士没有回家,那个最漆黑的夜晚,他留给自己一个永远不能接起的电话,留给我们一种力量。
148 | 草原上的医生王万青「主题谓语」「主题宾语」,仁者只身打马赴草原,他一路向西,千里万里,不再回头,风雪行医路,情系汉藏缘。四十载流年似水,磨不去他对理想的忠诚。春风今又绿草原,门吧的故事还会有更年轻的版本。
149 | 王茂华,谭良才「主题谓语」「主题宾语」,炽爱烈火是一场生死攸关的测试,生命是一道良知大爱的考验,你们用果敢应战,用牺牲作答!一对狭义翁婿,火海中三进三出,为人们讲述了什么是舍生忘死,人间挚爱!
150 | 南京军区,何祥美「主题谓语」「主题宾语」,神兵百折不挠,百炼成钢,能上九天,能下五洋,执著手中抢,百步穿杨,胸怀报国志,发愤图强。百战百胜,他是兵中之王!
151 | 最美丽的洗脚妹刘丽「主题谓语」「主题宾语」,姐姐为什么是她,一个瘦弱的姑娘,一副疲惫的肩膀。是内心的善良,让她身上有圣洁的光芒。她剪去长发,在风雨里长成南国高大的木棉,红硕的花朵,不是叹息,是不灭的火炬。
152 | 孙炎明「主题谓语」「主题宾语」,活着重犯监室年年平安,而自己的生命还要经历更多风险。他抖擞精神,让阳光驱散铁窗里的冰冷,他用微笑诠释着什么是工作,用坚强提示着什么是生活。人生都有同样的终点,他比我们有更多坦然。
153 | 卓琳「主题谓语」「主题宾语」,携小平手五十八载,硝烟里转战南北,风雨中起落同随。对她爱的人不离不弃,让爱情变成了信念。她的爱向一个民族的崛起,注入了女性的坚定、温暖与搀扶。
154 | 朱邦月「主题谓语」「主题宾语」,这个奇特的家庭,集中了世界上最多的苦难,也凝聚了人间最真的情感。头发花白,面带微笑,这个温和而坚定的老人,胸中盛满四十年的艰难。他这支拐杖,是一家人的翅膀。他这双肩膀,扛住了生命的重量。
155 | 阿里帕·阿力马洪「主题谓语」「主题宾语」,不是骨肉,但都是她的孩子,她展开羽翼,撑起他们的天空。风霜饥寒,全都挡住,清贫劳累,一肩担当。在她的家里,水浓过了血,善良超越了亲情。泉水最清,母爱最真!
156 | 小岗村群众的贴心人两任村官沈浩「主题谓语」「主题宾语」,六载离家,总是和农民面对面,肩并肩。他走得匆忙,放不下村里道路工厂和农田,对不住家中娇妻幼女高堂。那一年,村民按下红手印,改变乡村的命运;如今,他们再次伸出手指,鲜红手印,颗颗都是他的碑文。
157 | 为留守儿童办学的河南女大学生李灵「主题谓语」「主题宾语」,一切从零开始,从乡村开始,从识字和算术开始。别人离开的时候,她留下来;别人收获的时候,她还在耕作。她挑着孩子沉甸甸的梦想,她在春天播下希望的种子。她是八零后。
158 | 中国环球航海第一人翟墨「主题谓语」「主题宾语」,古老船队的风帆落下太久,人们已经忘记了大海的模样。六百年后,他眺望先辈的方向,直挂云帆,向西方出发,从东方归航。他不想征服,他只是要达成梦想——到海上去!一个人,一张帆,他比我们走得都远!
159 | 割肝救子的暴走妈妈陈玉蓉「主题谓语」「主题宾语」,这是一场命运的马拉松。她忍住饥饿和疲倦,不敢停住脚步。上苍用疾病考验人类的亲情,她就舍出血肉,付出艰辛,守住信心。她是母亲,她一定要赢,她的脚步为人们丈量出一份伟大的亲情。
160 | 26年义务守护滇池环境的农民张正祥「主题谓语」「主题宾语」,生命只有一次,滇池只有一个,他把生命和滇池紧紧地绑在了一起。他是一个战士,他的勇气让所有人胆寒,他是孤独的,是执拗的,是雪峰之巅的傲然寒松。因为有这样的人,人类的风骨得以传承挺立。
161 | 给高原的盲童带来光明的使者萨布利亚·坦贝肯「主题谓语」「主题宾语」,她看不到世界,偏要给盲人开创一个新的天地。她从地球的另一边来,为一群不相识的孩子而来,不企盼神迹,全凭心血付出,她带来了光。她的双眼如此明亮,健全的人也能从中找到方向。
162 | “歼-10”战斗机总设计师,宋文骢「主题谓语」「主题宾语」,少年伤痛,心怀救国壮志;中年发奋,澎湃强国雄心。如今,他的血液已流进钢铁雄鹰。青骥奋蹄向云端,老马信步小众山。他怀着千里梦想,他仍在路上。
163 | 唐山十三农民兄弟「主题谓语」「主题宾语」,不是归途,是千里奔波,雪中送炭;不是邻里,是素不相识,出手相助。他们用纯朴、善良和倔强的行动,告诉了我们“兄弟”的含义。
164 | 汉源彝族山村教师李桂林、陆建芬「主题谓语」「主题宾语」,在最崎岖的山路上点燃知识的火把,在最寂寞的悬崖边拉起孩子们求学的小手,十八年的清贫、坚守和操劳,沉淀为精神的沃土,让希望发芽。
165 | 济南军区铁军师战士武文斌「主题谓语」「主题宾语」,天崩地裂之时,绿色的迷彩撑起了生命的希望,他竖起了旗帜,自己却悄然倒下,在那灾难的黑色背景下,他二十六岁的青春,是最亮的那束光。
166 | 北川县县委书记经大忠「主题谓语」「主题宾语」,千钧一发时,他振聋发聩,当机立断;四面危机时,他忍住悲伤,力挽狂澜!他和同志们双肩担起一城信心,万千生命。心系百姓、忠于职守,凸显共产党人的本色。
167 | 郑州市消防支队特勤大队副大队长李隆「主题谓语」「主题宾语」,火场、废墟,有多少次出生入死,就有多少次不离不弃。他用希望扩展希望,用生命激活生命。
168 | 苏州市下岗工人韩惠民「主题谓语」「主题宾语」,他用百姓最朴素的方式,回答了生活中最为深奥的问题。三十四年的光阴,青丝转成白发,不变的是真情。
169 | 中国人民解放军航天员大队航天员神七航天员「主题谓语」「主题宾语」,中国人的足迹,从此印进辽阔而深邃的星空,当他们问候世界的时候,给未来留下了深远的回声。
170 | 残疾人击剑运动员金晶「主题谓语」「主题宾语」,那是光荣的一刻,她以柔弱之躯挡住残暴,她用美丽的微笑传递力量。她让全世界读懂了奥运的神圣和中国人的骄傲。
171 | 2008奥运会开闭幕式团队张艺谋奥运团队「主题谓语」「主题宾语」,长卷舒展,活字跳跃;圣火激荡,情感喷放。他们用人类共通的语言,让五千年文明跃然呈现。那一夜,中国惊艳世界!
172 | 藏族登山运动员吉吉「主题谓语」「主题宾语」,白的雪,红的火,刺骨的风,激荡的心。鹰失去了同伴,但山的召唤让她飞得更高、更远。她是高山上绽放的雪莲。
173 | 钱学森「主题谓语」「主题宾语」,在他心里,国为重,家为轻,科学最重,名利最轻。5年归国路,10年两弹成。开创祖国航天,他是先行人,劈荆斩棘,把智慧锻造成阶梯,留给后来的攀登者。他是知识的宝藏,是科学的旗帜,是中华民族知识分子的典范。
174 | 闵恩泽「主题谓语」「主题宾语」,在国家需要的时候,他站出来!燃烧自己,照亮能源产业。把创新当成快乐,让混沌变得清澈,他为中国制造了催化剂。点石成金,引领变化,永不失活,他就是中国科学的催化剂!
175 | 方永刚「主题谓语」「主题宾语」,一个真正的战士,在和平年代也能找到自己的方向, 一个忠诚的战士,在垂危的时候,不会忘记自己的使命,他是一位满怀激情的理论家 ,更是敢于奉献生命的实践者。在信仰的战场上,他把生命保持在冲锋的姿态。
176 | 谢延信「主题谓语」「主题宾语」,当命运的暴风雨袭来时,他横竖不说一句话,生活的重担压在肩膀上,他的头却从没有低下!用33年辛劳,延展爱心,信守承诺。他就像是一匹老马,没有驰骋千里,却一步一步地到达了善良的峰顶。
177 | 钟期荣 胡鸿烈「主题谓语」「主题宾语」,狮子山下的愚公,香江边上的夫子。贤者伉俪,本可锦衣玉食,却偏偏散尽家产,一生奔波。为了学生,甘为骆驼。与人有益,牛马也做。我们相信教育能改变社会,而他们为教育做出楷模。
178 | 罗映珍「主题谓语」「主题宾语」,把爱人从沉睡中唤醒,是生命的奇迹,还是心灵的力量?她用一个传统中国女人最朴素的方法诠释了对爱人不离不弃的忠贞。甜蜜不是爱情的标尺,艰难才能映照爱情的珍贵。
179 | 李剑英「主题谓语」「主题宾语」,烟笼大地,声震蓝天。星陨大地,魂归长天,他有22年飞行生涯,可命运只给他16秒!他是一名军人,自然把生命的天平向人民倾斜。飞机无法转弯,他只能让自己的生命改变航向。
180 | 李丽「主题谓语」「主题宾语」,残疾打不垮、贫困磨不坏、灾难撞不倒,坚强和她的生命一起成长。身体被命运抛弃,心灵却唱出强者的歌。五年时间,温暖八万个冰冷的心灵,接受、回报、延伸,她用轮椅为爱心画出最美的轨迹。
181 | 陈晓兰「主题谓语」「主题宾语」,虽千万人,吾往矣!曾经艰难险阻,她十年不辍,既然身穿白衣,就要对生命负责,在这个神圣的岗位上,良心远比技巧重要的多。她是一位医生,治疗疾病,也让这个行业更纯洁。
182 | 孟祥斌「主题谓语」「主题宾语」,风萧萧,江水寒,壮士一去不复返。同样是生命,同样有亲人,他用一次辉煌的陨落,挽回另外一个生命。别去问值还是不值,生命的价值从来不是用交换体现。他在冰冷的河水中睡去,给我们一个温暖的启示。
183 | 丁晓兵「主题谓语」「主题宾语」,这个用左手敬军礼的人,我们以他为骄傲。战时敢舍身,平时能忘我,从逆境中挣扎启程,在顺境中保持清醒。沙场带兵敢称无愧无悔,把守国门能说有骨有节。他像一把号角,让理想与激动,在士兵心中蔓延。
184 | 王百姓「主题谓语」「主题宾语」,10年时间,一万五千多枚炸弹,专门与危险打交道。谁能不害怕,平常人只要一次遭遇炸弹,就已经惊心动魄了。而他和我们一样,有家有妻有娃,只不过头顶上有警徽,警徽上有国徽,所以他才把家人的担忧、战友的期盼,一肩担起。
185 | 华益慰「主题谓语」「主题宾语」,不拿一分钱,不出一个错,这种极限境界,非有神圣信仰不能达到。他是医术高超与人格高尚的完美结合。他用尽心血,不负生命的嘱托。
186 | 霍英东「主题谓语」「主题宾语」,生于忧患,以自强不息成就人生传奇。逝于安乐,用赤诚赢得生前身后名。他有这样的财富观:民族大义高于金钱,赤子之心胜于财富。他有这样的境界:达则兼济天下。
187 | 季羡林「主题谓语」「主题宾语」,智者乐,仁者寿,长者随心所欲。曾经的红衣少年,如今的白发先生,留得十年寒窗苦,牛棚杂忆密辛多。心有良知璞玉,笔下道德文章。一介布衣,言有物,行有格,贫贱不移,宠辱不惊。
188 | 叶笃正「主题谓语」「主题宾语」,风华正茂时已经是奠基人,古稀之年仍然是开拓者。让外国人同我们接轨,这是一个年过九旬的大学者的大气象。笑揽风云动,睥睨大国轻。
189 | 孔祥瑞「主题谓语」「主题宾语」,不管什么时代,劳动者都是社会的中流砥柱。但在今天,更值得尊敬的,还应该是那些不仅贡献汗水还贡献智慧的人。150项革新,给国家带来8000万元效益,这就是一个工人的成就。
190 | 林秀贞「主题谓语」「主题宾语」,用30载爱心让一村之中老有所终,幼有所长,鳏寡孤独废疾者皆有所养。富人做这等事是慈善,穷人做这等事是圣贤,官员做这等事是本分,农民做这等事是伟大。这位农妇让九州动容。
191 | 黄舸「主题谓语」「主题宾语」,我们需要静下心来体会这个场面,一个四肢无力的孩子,每天都在和死神赛跑,跋山涉水、万里迢迢。他就像一小截被命运丢弃的蜡烛,善良的人点亮他,他就欢快地燃烧起来。藏起眼泪,还给人们光明和希望。
192 | 魏青刚「主题谓语」「主题宾语」,沧海横流,方显英雄本色!为了一个陌生人,他在滔天巨浪中三进三出,危险面前,他根本不需要选择,因为这瞬间动作源自内心品质。从人群中一跃而出,又悄然回到人群中去,他,是侠之大者。
193 | 丛飞「主题谓语」「主题宾语」,从看到失学儿童的第一眼到被死神眷顾之前,他把所有时间都给了那些需要帮助的孩子,没有丝毫保留,甚至不惜向生命借贷,他曾经用舞台构筑课堂,用歌声点亮希望。今天他的歌喉也许不如往昔嘹亮,却赢得了最饱含敬意的喝彩。
194 | 黄伯云「主题谓语」「主题宾语」,这个和世界上最硬材料打交道的人,有着温润如玉的性格,渊博宽厚,抱定赤子之心;静能寒窗苦守,动能点石成金。他是个值得尊敬的长者,艰难困苦,玉汝以成,三万里回国路,二十年砺剑心,大哉黄伯云!
195 | 李春燕「主题谓语」「主题宾语」,她是大山里最后的赤脚医生,提着篮子在田垄里行医,一间四壁透风的竹楼,成了天下最温暖的医院,一副瘦弱的肩膀,担负起十里八乡的健康,她不是迁徙的候鸟,她是照亮苗乡的月亮。
196 | 洪战辉「主题谓语」「主题宾语」,当他还是一个孩子的时候,就对另一个更弱小的孩子担起了责任,就要撑起困境中的家庭,就要学会友善、勇敢和坚强,生活让他过早的开始收获,他由此从男孩开始变成了苦难打不倒的男子汉,在贫困中求学,在艰辛中自强,今天他看起来仍然文弱,但是在精神上,他从来是强者。
197 | 陈健「主题谓语」「主题宾语」,一个生者对死者的承诺,只是良心的自我约束,但是他却为此坚守37年,放弃了梦想、幸福和骨肉亲情,淡去红火的时代背景,他身上有古典意识的风范,无论在哪个年代,坚守承诺始终是支撑人性的基石,对人如此,对一个民族更是如此。
198 | 邰丽华「主题谓语」「主题宾语」,从不幸的低谷到艺术的巅峰,也许你的生命本身就是一次绝美的舞蹈,于无声处,展现生命的蓬勃,在手臂间勾勒人性的高洁,一个朴素女子为我们呈现华丽的奇迹,心灵的震撼不需要语言,你在我们眼中是最美。
199 | 杨业功「主题谓语」「主题宾语」,铸就长缨锐旅,锻造导弹雄师。他用尺子丈量自己的工作,用读秒计算自己的生命。未曾请缨提旅,已是鞠躬尽瘁。天下虽安,忘战必危,他是中国军人一面不倒的旗帜!
200 | 王顺友「主题谓语」「主题宾语」,他朴实的像一块石头,一个人一匹马,一段世界邮政史上的传奇,他过滩涉水,越岭翻山,用一个人的长征传邮万里,用二十年的跋涉飞雪传心,路的尽头还有路,山的那边还是山,近邻尚得百里远,世上最亲邮递员。
201 | 费俊龙、聂海胜「主题谓语」「主题宾语」,谁能让全世界五分之一的心灵随着他们的节奏跳动五天五夜,谁能从前所未有的高度见证中国实力的飞跃,他们出征苍穹,划出龙的轨迹,升空日行八万里,巡天遥看一千河,他们是中国航天的黄金一代。
202 | 青藏铁路的建设者们「主题谓语」「主题宾语」,每当汽笛声穿过唐古拉山口的时候,高原上的雪山、冻土、冰河,成群的藏羚羊,都会想念他们,想念那些有力的大手和坚强的笑容。他们能驱动钢铁,也会呵护生命。他们,是地球之巅的勇者,他们,缔造了世界上最伟大的铁路!
203 | 中国女排「主题谓语」「主题宾语」,中国女排,曾经沸腾了一代人的热血,也在中国人的心里留下了长达20年的期待。2004年的一天,于无声处,绝地反击。是她们,让最后的希望攀援着意志的臂膀上升,直到最后一记重扣敲开欢庆的锣鼓。金牌唤回曾经的光荣,胜利开启崭新的梦想!
204 | 刘翔「主题谓语」「主题宾语」,12秒91,他实现了一次伟大的跨越,100年来的记录成了身后的历史,十重栏杆不再是东方人的障碍,因为中国有刘翔,亚洲有刘翔!这个风一样的年轻人,他不断超越,永不言败,代表着一个正在加速的民族。他身披国旗,一跃站在世界面前。
205 | 任长霞「主题谓语」「主题宾语」,她是中原大地上的又一个女英雄。扫恶打黑,除暴安良,她铁面无私;嘘寒问暖,扶危济困,她柔肠百转。十里长街,白花胜雪,挽幛如云,那是流动在百姓心中的丰碑!一个弱女子能赢得百姓的爱戴,是因为,在她的心里有对百姓最虔诚的尊重!
206 | 明正彬「主题谓语」「主题宾语」,刀尖上的舞蹈,之所以能够夺人心魄,是因为那是铁与血的交响。明正彬就是在刀尖上跳舞的人。在毒贩子面前,他吓不怕,买不动、难不倒。而毒贩子在他手下,过不去、藏不住,逃不掉。因为有他和他的战友,我们才能享受阳光的灿烂。
207 | 袁隆平「主题谓语」「主题宾语」,他是一位真正的耕耘者。当他还是一个乡村教师的时候,已经具有颠覆世界权威的胆识;当他名满天下的时候,却仍然只是专注于田畴。淡泊名利,一介农夫,播撒智慧,收获富足。他毕生的梦想,就是让所有人远离饥饿。喜看稻菽千重浪,最是风流袁隆平!
208 | 徐本禹「主题谓语」「主题宾语」,如果眼泪是一种财富,徐本禹就是一个富有的人,在过去的一年里,他让我们泪流满面。从繁华的城市,他走进大山深处,用一个刚刚毕业大学生稚嫩的肩膀,扛住了倾颓的教室,扛住了贫穷和孤独,扛起了本来不属于他的责任。也许一个人力量还不能让孩子眼睛铺满阳光,爱,被期待着。徐本禹点亮了火把,刺痛了我们的眼睛。
209 | 田世国「主题谓语」「主题宾语」,“谁言寸草心,报得三春晖?”这是一个被追问了千年的问题。一个儿子在2004年用身体做出了自己的回答,他把生命的一部分回馈给病危的母亲。在温暖的谎话里,母亲的生命也许依然脆弱,但是孝子的真诚已经坚如磐石。田世国,让天下所有的母亲收获慰藉。
210 | 梁万俊「主题谓语」「主题宾语」,鹰是天空中最娴熟的飞行家,但是他却有比鹰还要优秀的飞行技能。万米高空之上,数险并发之际,他从容镇静,瞬间的选择注定了这次飞行像彩虹一样辉煌。生死八分,惊天一落,他创造了奇迹!为你骄傲!中国军人,钢铁是这样炼成的。
211 | 孙必干「主题谓语」「主题宾语」,他于花甲之年临危受命,远离故土只为续写使命传奇。为了达成和平,他游刃于战火之间,为了挽救生命,他斡旋在死亡边缘。“苟利国家生死以,岂因祸福趋避之”。2004年,这个老人不知疲倦地奔走,前方,是他必赴的使命;身后,是让他骄傲的祖国。
212 | 牛玉儒「主题谓语」「主题宾语」,名叫牛玉儒,人像孺子牛,背负着草原人的幸福上路,这幸福是他的给养,也是他的方向。风雨人生、利弊得失,他兢兢业业地遵循着“位卑未敢忘忧国”的祖训。为官一任,他给我们留下激情燃烧的背影,让精神穿越时代常青。他让活着的人肃然起敬;他让天空成为雄鹰的故乡!
213 | 桂希恩「主题谓语」「主题宾语」,他清贫而充实,温和而坚定。仁者的责任让他知难而上。他让温暖传递,他让爱心会聚,直到更多人向弱者张开双臂,直到角落里的人们看到春天。他不惧怕死亡,因为他对生命有更博大的爱。
214 | 杨利伟「主题谓语」「主题宾语」,那一刻当我们仰望星空,或许会感觉到他注视地球的目光。他承载着中华民族飞天的梦想,他象征着中国走向太空的成功。作为中华飞天第一人,作为中国航天人的杰出代表,他的名字注定要被历史铭记。成就这光彩人生的,是他训练中坚韧执着,飞天时的从容镇定,成功后的理智平和。而这也是几代中国航天人的精神,这精神开启了中国人的太空时代,还将成就我们民族更多更美好的梦想。
215 | 钟南山「主题谓语」「主题宾语」,面对突如其来的SARS疫情,他冷静、无畏,他以医者的妙手仁心挽救生命,以科学家实事求是的科学态度应对灾难。他说“在我们这个岗位上,做好防治疾病的工作,就是最大的政治。”这掷地有声的话语,表现出他的人生准则和职业操守。他以令人景仰的学术勇气、高尚的医德和深入的科学探索给予了人们战胜疫情的力量。
216 | 陈忠和「主题谓语」「主题宾语」,他带领女排赢得了久违的胜利,而他的贡献不仅仅在于一座阔别了17年的奖杯,更重要的是,他把自己对人生不幸坎坷的生活态度融入到体育事业中,他不仅在教女排姑娘们怎样打球,更在引导女排如何面对人生荣辱,他使女排真正感受到什么是体育的魅力,他使女排和他一样,无论面对成功还是失败总能面带微笑。这种微笑出自内心,也因此更加动人。
217 | 尾山宏「主题谓语」「主题宾语」,一位70岁的日本老人,承受着巨大的压力,用自己大半生的时间对日本政府侵华战争的罪行进行着不懈的追问。在他身上,人们看到了跨越国家和民族的正义力量,这力量启示着人们,在捍卫正义的道路上,人们可以超越一切界限,而唯一不能失去的就是正义响在心中的声音。
218 | 梁雨润「主题谓语」「主题宾语」,他视百姓为衣食父母,他以人民利益为根本利益。他有着高度的责任感和使命感,他始终不渝地追求着为老百姓办事的政治理想,而这种追求需要莫大的正气和勇气。这样的为官生涯,架起了执政党和百姓之间的桥梁,完整地体现出一个执政党的执政原则:立党为公,执政为民,而这正是百姓和国家的希望所在。
219 | 巴金「主题谓语」「主题宾语」,穿越一个世纪,见证沧桑百年,刻画历史巨变,一个生命竟如此厚重。他在字里行间燃烧的激情,点亮多少人灵魂的灯塔;他在人生中真诚地行走,叩响多少人心灵的大门。他贯穿于文字和生命中的热情、忧患、良知,将在文学史册中永远闪耀着璀璨的光辉。
220 | 高耀洁「主题谓语」「主题宾语」,这是一位步履蹒跚的老人,但她在实现“但愿人皆健,何妨握独贫”的人生理想的道路上却迈着坚定的脚步。她以渊博的知识、理性的思考驱散着人们的偏见和恐惧,她以母亲的慈爱、无私的热情温暖着弱者的无助冰冷。她尽自己最大的力量推动着人类防治艾滋病这繁重的工程,她把生命中所有的力量化为一缕缕阳光,希望能照进艾滋病患者的心间,照亮他们的未来。
221 | 达吾提·阿西木「主题谓语」「主题宾语」,他隐藏起最深重的悲痛,他紧握心灵的伤口,在他那颗流血伤痛的心里还装着更多的村民。他以一个共产党员对群众朴素的感情,在百姓中传播着温暖;他以舍我其谁的气魄,在危难的时候担当起百姓的精神支柱;他在废墟中挺起脊梁,他的坚强和无私为刚刚经历了噩梦的村民们撑起重建家园的希望。
222 | 成龙「主题谓语」「主题宾语」,作为演员,他对事业的执着追求和顽强的拼搏精神,演绎了精彩的艺术人生,在国际影坛展现出中国影人的形象,为世界打开了一扇了解中国文化的窗口;作为公众人物,他对国家的情感和对社会的爱心影响着他人,在最需要的时候鼓舞着人们的信心,传递着人与之间的温情。
223 | 衡阳武警消防兵「主题谓语」「主题宾语」,他们以火一样的激情投身火场,他们怀揣群众利益走向危险,他们用自己的生命捍卫了他人的生命,捍卫了武警消防兵这个崇高的职业。那壮烈的一幕将永存史册,他们勇往直前、舍生忘死的英雄气概更将长留在人们心里,那将是对什么是敬业精神的最好诠释。
224 | 郑培民「主题谓语」「主题宾语」,他身居高位而心系百姓,他以“做官先做人,万事民为先”为自己的行为标准,直到生命的最后时刻仍然不忘自己曾经许下的诺言。他树立了一个共产党人的品德风范,他在人民心里树立起一座公正廉洁为民服务的丰碑。
225 | 张荣锁「主题谓语」「主题宾语」,他已经拥有了财富,但他心里装着还在贫苦生活中的乡亲,他已经走出了大山,但他还想让所有乡亲都能够走出与世隔绝的山崖,他成就了一个多少代人未能实现的梦想,他拿出愚公移山的执著和勇气劈开了大山,在悬崖峭壁上为乡亲们开凿出通往外面世界的大道,更在人们的心中打开了一扇希望之门。它结束了一段贫困的历史,开创出一种崭新的生活。
226 | 王选「主题谓语」「主题宾语」,她用柔弱的肩头担负起历史的使命,她用正义的利剑戳穿弥天的谎言,她用坚毅和执著还原历史的真相。她奔走在一条看不见尽头的诉讼之路上,和她相伴的是一群满身历史创伤的老人。她不仅仅是在为日本细菌战中的中国受害者讨还公道,更是为整个人类赖以生存的大规则寻求支撑的力量,告诉世界该如何面对伤害,面对耻辱,面对谎言,面对罪恶,为人类如何继承和延续历史提供了注解。
227 | 刘姝威「主题谓语」「主题宾语」,她用自己的大智大勇向一个虚假的神话提出质疑,面对一个强大的集团,面对一张深不可测的网,面对死亡的威胁,她以自己个人的力量坚持着这场强弱悬殊的战争,坚守着正义和良心的壁垒。正是这种中国知识分子的风骨,完美地证明了中国还有一双揉不进沙子的眼睛,推动了中国股市早日走上正轨,推动了中国经济的发展。
228 | 张瑞敏「主题谓语」「主题宾语」,无论在种种赞誉和表彰中,或是在种种质疑和非议中,他都一如既往。以自己的创新与开拓树立了来自东方的产品品牌;以自己的智慧和魄力打造出与时俱进的企业文化;以自己的胆识和勇气缔造着融入世界的品牌传奇。
229 | 张前东「主题谓语」「主题宾语」,他在灾难发生的时候做出了一个伟大的选择,虽然他自己已经远离了死亡的阴影,但他却又一次奔向了死神,为的是把生命的阳光同样带给在死神面前挣扎的同伴。他无畏、清醒、果敢,他的人格光辉照亮了黑暗的矿道,照亮了几百个矿工的生命,更照亮了人们的心灵。
230 | 黄昆「主题谓语」「主题宾语」,他一生都在科学的世界里探求真谛,一生都在默默地传递着知识的薪火,面对名利的起落,他处之淡然。他不仅以自己严谨和勤奋的科学态度在科学的领域里为人类的进步做出卓越的贡献,更以淡泊名利和率真的人生态度诠释了一个科学家的人格本质。
231 | 姚明「主题谓语」「主题宾语」,他用高超的体育技能,在一个强手如林的国家运动项目中占有了一席之地,成就了很多人的梦想,更成为中国人的骄傲。他出色的表现和随时听从祖国召唤的爱国精神,使他带给人们的思考已经远远超过了体育本身。对祖国的情感,对现在的把握和对未来的期待,都将使他成为中国体育和NBA的历史人物。
232 | 赵新民「主题谓语」「主题宾语」,他出于人民警察的天职,无畏地走向危险。这一刻他无需选择,因为走向危险已经是他的职业习惯,因为在选择做警察的时候,他已经准备好了这一刻。在爆炸带走一个朝气蓬勃的生命的同时,人们的心灵也被强烈窗体顶端窗体底端地震撼。
233 | 濮存昕「主题谓语」「主题宾语」,他用人们熟悉的微笑温暖着艾滋病患者的心,他紧握艾滋病患者双手的手传递着社会对他们的关爱,更传播着艾滋病知识,激发着人类战胜这个世界杀手的勇气。他把人们对他的喜爱和信任再度回报给社会,投入到社会公益事业中,以公众人物的号召力,承担起社会责任。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/名言.txt:
--------------------------------------------------------------------------------
1 | 罗曼罗兰曾经说过:“幸福是一种灵魂的香味。”是的,只有「主题谓语」「主题宾语」的人,才能得到真正的幸福。
2 | 记得海德格尔有这样一句话:“人应当诗意的栖居在大地上。”的确如此,要诗意的栖居,必须「主题谓语」「主题宾语」。
3 | 哲学家帕斯卡说过一句富有哲理对话:“人是一根会思考的芦苇。”正因为我们会思考,所以「主题谓语」「主题宾语」。
4 | 著名诗人于坚曾说:“这是一个喧嚣的时代,内心宁静如古瓶的人不多。”「主题谓语」「主题宾语」方能保持内心宁静。
5 | 著名主持人柴静曾说:“这个世界与我们有关,未来的世界也与我们息息相关。”的确,「主题谓语」「主题宾语」才能对世界有所作为。
6 | 挪威戏剧家易卜生说过:“社会如同一条船,每个人都要有掌舵对准备。”只有「主题谓语」「主题宾语」,才会有能力驾驶这条船。
7 | 英国诗人约翰·多恩写道:“每个人都是大陆的一片,整体的一部分。”我们要努力,成为那有用的一部分,就必须「主题谓语」「主题宾语」。
8 | 《菜根谭》中写道:“唯大英雄能本色,是真名士自风流。”诚然,唯有「主题谓语」「主题宾语」,才能显出人生真正的色彩。
9 | 莎士比亚写道:“即使被关在果壳之中,我仍自以为是无限宇宙之王。”人生在世,总会被一些东西束缚,只有「主题谓语」「主题宾语」,才能冲破障碍,向星辰大海进发。
10 | 英国诗人兰德曾说:“我和谁都不争,和谁争我都不屑。”是的,只有「主题谓语」「主题宾语」,方能得到内心的宁静。
11 | 席慕蓉说:“生命是一条奔流不息的河,我们都是那个过河的人。”是的,要顺利地渡过这条河,必须「主题谓语」「主题宾语」。
12 | 歌德说过:“你若要喜爱你自己的价值,你就得给世界创造价值。”只有「主题谓语」「主题宾语」,才能给世界创造价值。
13 | “时间会刺破青春表面的彩饰,会在美人的额上掘深沟浅槽;会吃掉稀世之珍!天生丽质,什么都逃不过他那横扫的镰刀。”莎士比亚的这段话,告诉我们只有「主题谓语」「主题宾语」,才能不虚此生。
14 | 郭小川曾经说过:“愿每次回忆,对生活都不感到负疚。”是的,只有「主题谓语」「主题宾语」,方能不留下遗憾。
15 | 列夫·托尔斯泰写道过:“心灵纯洁的人,生活充满甜蜜和喜悦。”「主题谓语」「主题宾语」,能帮助我们得到真正的甜蜜与喜悦。
16 | 居里夫人说过:“我们应该不虚度一生,应该能够说:我已经做了我能做的事。”「主题谓语」「主题宾语」,为所当为,方能不负年华。
17 | “人生的价值,并不是用时间,而是用深度量去衡量的。”列夫·托尔斯泰的这句话告诉我们,只有「主题谓语」「主题宾语」,才能让人生富有深度。
18 | 奥斯特洛夫斯基说过:“人的一生可能燃烧也可能腐朽,我不能腐朽,我愿意燃烧起来!”只有「主题谓语」「主题宾语」,才能够燃烧起我们的生命。
19 | 诸葛亮说过:“夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远。”只有「主题谓语」「主题宾语」,才能成为真正的君子。
20 | 亚里士多德说过:“人生最终的价值在于觉醒和思考的能力,而不只在于生存。”「主题谓语」「主题宾语」,方能实现人生的最终价值。
21 | 保罗说过:“人生犹如一本书,愚蠢者草草翻过,聪明人细细阅读。为何如此,因为他们只能读它一次。”我们要「主题谓语」「主题宾语」,才能把人生这本书读好。
22 | 布鲁诺曾经说过:“为真理而斗争是人生最大的乐趣。”是的,我们要「主题谓语」「主题宾语」,为自己心中的真理而奋斗。
23 | 古代文学家荀况写道:“骐骥一跃,不能十步;驽马十驾,功在不舍;锲而舍之,朽木不折;锲而不舍,金石可镂。”「主题谓语」「主题宾语」,方能成就大器。
24 | “不惜牺牲自由以图苟安的人,既不配享受自由,也不配获得安全。”富兰克林的这句话发人深省,我们要「主题谓语」「主题宾语」,追求真正的自由。
25 | 吉鸿昌说过:“路是脚踏出来的,历史是人写出来的。人的每一步行动都在书写自己的历史。”只有「主题谓语」「主题宾语」,才能书写历史。
26 | 方志敏说过:“我们活着不能与草木同腐,不能醉生梦死,枉度人生,要有所作为·”是的,我们必须「主题谓语」「主题宾语」,才能有所作为。
27 | “人生应该如蜡烛一样,从顶燃到底,一直都是光明的。”萧楚女的这句话启发了我,我们要「主题谓语」「主题宾语」,让人生光明到底。
28 | 罗丹曾经说过:“为了在生活中努力发挥自己的作用,热爱人生吧!”是的,我们要「主题谓语」「主题宾语」,热爱人生,发挥自己的作用!
29 | “决定一个人的一生,以及整个命运的,只是一瞬之间。”歌德的这句话提醒了我,只有「主题谓语」「主题宾语」,才能把握命运的一瞬间。
30 | 车尔尼雪夫斯基:“一个人的活动,如果不是被高尚的思所鼓舞,那它是无益的、渺小的。”是的,我们要「主题谓语」「主题宾语」,让人生高尚起来。
31 | “君志所向,一往无前,愈挫愈勇,再接再厉”,孙中山的这句话发人深省,只有「主题谓语」「主题宾语」,方能一往无前。
32 | 沈从文曾经说过:“每一只船总要有一个码头,每一只雀儿得有一个巢。 ”是的,只有「主题谓语」「主题宾语」,才能为自己的心灵找到停泊的港湾。
33 | 扎西拉姆·多多写道:“欢喜承受大自然的每一落笔,笔笔都是天意,生命没有败笔。 ”我们要「主题谓语」「主题宾语」,让生命没有败笔。
34 | “远山,在静默里翻涌,寻觅着自己的高度。湖泊,在水流的静止中,思量他自己的深渊。 ”泰戈尔的这段话令人深思,我们要「主题谓语」「主题宾语」,提升生命的厚度。
35 | 鲁迅曾经说过:“只要能培一朵花,就不妨做做会朽的腐草。 ”是的,我们要「主题谓语」「主题宾语」,让生命之花盛开。
36 | 周国平写过:“人们往往把朴素误认作浅显,又把华丽误认作丰富。 ”只有「主题谓语」「主题宾语」,才能找到生命的真谛。
37 | “既然今天,没人识得星星一颗,那么明日,何妨做皓月一轮。 ”汪国真的这句话发人深省,我们要「主题谓语」「主题宾语」,照亮这个世界。
38 | 《易经》有言:“天行健,君子以自强不息;地势坤,君子以厚德载物。”我们要「主题谓语」「主题宾语」,做真正的君子。
39 | 维·格·别林斯基说过:“不前进就倒退,停滞状态是没有的。”是的,只有「主题谓语」「主题宾语」,生命才不会停滞不前。
40 | “人生天地之间,若白驹之过隙,忽然而已。”《庄子·知北游》告诉我们,人生易逝,我们要「主题谓语」「主题宾语」,方能不负韶光。
41 | “你可以一辈子不登山,但你心中一定要有座山。”刘墉的这句话告诉我们,只有「主题谓语」「主题宾语」,才能给生命带来方向。
42 | 海明威说过:“优于别人,并不高贵,真正的高贵应该是优于过去的自己。 ”是的,只有「主题谓语」「主题宾语」,才能战胜自己,不断前进。
43 | 冯骥才说过:“风可以吹走一张纸,却吹不走一只蝴蝶。因为生命的力量在于不顺从。”是的,我们要「主题谓语」「主题宾语」,才能掌控自己的命运。
44 | “生命是一棵长满可能的树。”米兰·昆德拉的这句话令我深思,我认为,只有「主题谓语」「主题宾语」,才能让生命植树硕果累累。
45 | “古之有立大事者,不惟有超世之才,亦必有坚韧不拔之志。”苏轼的这句话告诉我们,只有「主题谓语」「主题宾语」,才能成就大事。
46 | 狄更斯曾说过一句发人深省的话:“顽强的毅力可以征服世上任何一座高峰。”是的,我们要「主题谓语」「主题宾语」,勇攀生命的高峰。
47 | 巴金曾经说过:“我爱人生,所以我愿像一个狂信者那样投身到生命的海里。”是的,我们要「主题谓语」「主题宾语」,热爱自己的人生。
48 | 爱迪生说过:“任何问题都有解决的办法,无法可想的事是没有的。”要找到解决问题的办法,就需要「主题谓语」「主题宾语」。
49 | 奥斯特洛夫斯基说:“人的一生可能燃烧也可能腐朽,我不能腐朽,我愿意燃烧起来!”若要燃烧,我们应该「主题谓语」「主题宾语」。
50 | 车尔尼雪夫斯有言:“生活只有在平淡无味的人看来,才是空虚而平淡无味的。”要使生活有滋有味,需要我们「主题谓语」「主题宾语」。
51 | 戴尔·卡耐基曾经说过这样的话:“多数人都拥有自己不了解的能力和机会,都有可能做到未曾梦想的事情。”你想做到未曾梦想的事情吗?那就「主题谓语」「主题宾语」。
52 | 莎士比亚曾说:“那脑袋里的智慧,就像打火石里的火花一样,不去打它是不肯出来的。”要让智慧出来,你要「主题谓语」「主题宾语」。
53 | 裴多菲说得好:“生命多少用时间计算,生命的价值用贡献计算。”要使生命更有价值,需要我们「主题谓语」「主题宾语」。
54 | 歌德有这样一句话:“人不光是靠他生来就拥有一切,而是靠他从学习中所得到的一切来造就自己。”要造就自己,需要「主题谓语」「主题宾语」。
55 | 吉鸿昌说:“路是脚踏出来的,历史是人写出来的。人的每一步行动都在书写自己的历史。”你想自己的历史光辉灿烂,就要「主题谓语」「主题宾语」。
56 | 歌德曾说:“你若要喜爱你自己的价值,你就得给世界创造价值。”要给世界创造价值,需要我们「主题谓语」「主题宾语」。
57 | 鲁迅有句名言:“其实地上本没有路,走的人多了,便成了路。”你要走出一条路,需要「主题谓语」「主题宾语」。
58 | 爱因斯坦曾经说过:“推动你的事业,不要让你的事业推动你。”若要推动你的事业,需要你「主题谓语」「主题宾语」。
59 | 冯梦龙有句很豪气的话:“男儿不展风云志,空负天生八尺躯。”若想不负此生,需要我们「主题谓语」「主题宾语」。
60 | 林徽因曾经说过:“真正的平静,不是避开车马喧嚣,而是在心中修篱种菊。”若想得到真正的平静,需要我们「主题谓语」「主题宾语」。
61 | 贾平凹写道:“人的一生,苦也罢,乐也罢;得也罢,失也罢。要紧的是心间的一泓清泉里不能没有月辉。”只有「主题谓语」「主题宾语」,才能坚守内心。
62 | 毕淑敏有这样一句话:“我不相信手掌的纹路,但我相信手掌加上手指的力量。”我们「主题谓语」「主题宾语」,实现自己的价值。
63 | 加里·斯奈德写道过:“鲸落海底,哺暗界众生十五年。”是的,只有「主题谓语」「主题宾语」,方能体现价值。
64 | 朱光潜曾经写过:“自己的责任必须自己担起,成功是我的成功,失败也是我的失败。”我们要「主题谓语」「主题宾语」,担负自己的人生。
65 | 作家刘同曾说过:“浮于表面都是风光,沉下心来自有答案。”因此,我们要「主题谓语」「主题宾语」,找到自己的答案。
66 | “磨炼这回事情,就如同风雪中的梅,愈冷愈开花。”三毛的这句话告诉我们,只有「主题谓语」「主题宾语」,才能令人生绽放。
67 | 老舍曾写过:“才华是刀刃,辛苦是磨刀石,再锋利的刀刃,若日久不磨,也会生锈。”因此,只有「主题谓语」「主题宾语」,方能发挥才能。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/回扣中心论点.txt:
--------------------------------------------------------------------------------
1 | 只有这样,我们才能不负韶华,谱写自己精彩的人生乐章。
2 | 如此,我们方能实现自己的梦想,进而实现伟大的中国梦。
3 | 这样,梦想就会来到眼前,人生才能光辉灿烂。
4 | 做到这一点,方能赢得鲜花与掌声,登上光辉的顶峰。
5 | 唯有如此,才能达到“会当凌绝顶,一览众山小”的境界。
6 | 这样才能绽放自己的才华,让生命多出几分绚丽的色彩。
7 | 让我们追逐太阳,追逐梦想,追逐夏花般绚烂的明天。
8 | 这样做,我们的人生就会如桃之夭夭,灼灼其华。
9 | 我们应当不忘初心,砥砺前行,才能在人生精神的天空中熠熠生辉。
10 | 人生即使有必须走的弯路,如此,也能到达成功的彼岸。
11 | 如此,我们才能把每一件事做到极致,踏上事业精进之路。
12 | 唯有这样,才能够战胜前进道路上各种风险挑战,创造辉煌的明天。
13 | 只有这样,才能谱写更为动人的新时代青春之歌。
14 | 只有这样,才可应对新的斗争,战胜“拦路虎”,踢开“绊脚石”,到达“光明顶”。
15 | 如此,方能风雨无阻向前进,柳暗花明又一村。
16 | 这样,才能把握人生主动权,紧跟时代步伐,交出一份高质量的多彩答卷。
17 | 以丹心寄华夏,汗水赠山河,让今日之青春年华,积淀为未来绚丽锦绣。
18 | 唯有这样,才能实现我们的共同目标,创造更美好的未来。
19 | 这样,我们才能在生命的道路上行得更远、更稳。
20 | 只有这样,才能在前行的路上拥有更坚定的信念,更强大的力量。
21 | 唯有如此,才能让自己的人生更有价值,更有意义。
22 | 这样,我们才能在人生的历程中收获更多的成长和收获。
23 | 只有这样,才能让自己的梦想成为现实,成就自己的人生价值。
24 | 唯有如此,我们才能在人生的道路上不断超越自我,不断创造奇迹。
25 | 这样,才能让我们赢得更多的尊重和荣誉,成为真正的人生赢家。
26 | 只有这样,才能在未来的道路上越走越远,越走越稳。
27 | 这样,我们才能在前行的道路上充满信心和勇气,不断向前进发。
28 | 唯有如此,才能不忘初心、砥砺前行,成就自己的人生价值。
29 | 这样,我们才能在困难面前不屈不挠,最终战胜一切困难和挑战。
30 | 只要如此,无论前方有多少荆棘,我们都会奋勇向前,不负春光。
31 | 愿我们在人生的路途中,始终坚守初心,追求卓越。
32 | 让我们把握当下,用心经营每一天,成就更好的明天。
33 | 成败得失都将成为过眼云烟,唯有努力和坚持才是永恒的力量。
34 | 让我们用智慧与勇气,冲破困境,迎接美好的未来。
35 | 只有不断挑战自己,我们才能超越自我,创造更为美好的未来。
36 | 所有的努力和付出都将得到回报,实现梦想的日子就在眼前。
37 | 只要坚持自己的信念,我们就能冲破困难,创造奇迹。
38 | 以真诚之心,迎接生活的每一天,创造属于自己的精彩人生。
39 | 让我们一起在实现梦想的路上,闯过每一个难关,走向更广阔的天地。
40 | 只有付出汗水和努力,我们才能创造属于自己的精彩人生。
41 | 如此,我们才能在不断探索的过程中,拥抱更加美好的人生。
42 | 我们应当不忘初心,砥砺前行,才能在未来的道路上走得更加稳健。
43 | 人生即使有必须走的弯路,如此,也能够在未来的道路上走得更加坚定、更加自信。
44 | 如此,我们才能够在未来的道路上走得更加充实、更加精彩。
45 | 唯有这样,才能够让我们的人生之路更加明亮、更加光辉。
46 | 只有这样,才能够让我们在未来的道路上走得更加坚定、更加自信。
47 | 只有这样,才能够让我们在未来的道路上走得更加稳健、更加充实。
48 | 我们应当不忘初心,在未来的道路上砥砺前行,创造属于自己的精彩人生。
49 | 只有这样,我们才能在人生的道路上走得更远,看到更美好的风景。
50 | 这样,我们才能在人生的舞台上,演绎出自己的精彩瞬间。
51 | 如此,我们才能在新时代的风云变幻中乘风而行,翱翔于人生的蓝天。
52 | 只有这样,我们才能在人生的舞台上绽放自己的光芒,让每一刻都灿烂如花。
53 | 如此,我们才能在人生的历程中不断收获和成就,成为更加卓越和辉煌的自己。
54 | 做到这一点,我们才能在人生的道路上走得更坦荡更从容,享受更多的欢乐和甜蜜。
55 | 唯有如此,我们才能在新时代的奋斗中不断砥砺和升华自己,为实现中华民族伟大复兴的中国梦添砖加瓦。
56 | 这样做,我们才能在新时代的变革中不断适应和创造,为建设社会主义现代化强国增光添彩。
57 | 我们应当牢记使命,不忘初心,才能在新时代的历史进程中发挥自己的担当和责任。
58 | 人生没有终点,只有这样,我们才能在人生的旅途中不断探索和追求,让每一天都充满意义和价值。
59 | 如此,我们才能在新时代的机遇中不断学习和成长,为实现自己的理想和目标奋斗不息。
60 | 只有这样,我们才能在新时代的挑战中不断突破和超越,为实现国家富强、民族振兴、人民幸福作出自己的努力。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/回证分论点.txt:
--------------------------------------------------------------------------------
1 | 假如他「主题谓语」「主题宾语」,就不可能取得如此辉煌的成就。
2 | 他的人生之所以如此精彩,正是因为他「主题谓语」「主题宾语」。
3 | 由此可见,「主题谓语」「主题宾语」方能让人生的鲜花绚丽多彩。
4 | 如果不能做到「主题谓语」「主题宾语」,他怎能获得这样的肯定与赞美?
5 | 今天的人们赞美他,不正是因为他「主题谓语」「主题宾语」,才如此光彩吗?
6 | 试想,若非「主题谓语」「主题宾语」,他何以赢得人生的丰富多彩?
7 | 假如他没有「主题谓语」「主题宾语」,就不会为此而奋斗,就难以成为人生的赢家。
8 | 可见只有「主题谓语」「主题宾语」,才会集中自己的力量,实现自己的目标,才会让人生光彩夺目。
9 | 他之所以有如此的成就,正是因为他「主题谓语」「主题宾语」,并为此而不惜代价,勇往直前。
10 | 这足以说明,「主题谓语」「主题宾语」是帮助他登上生命巅峰的发动机。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/总结.txt:
--------------------------------------------------------------------------------
1 | 令人遗憾的是,许多人没有「主题谓语」「主题宾语」,以至于浑浑噩噩,虚度人生。
2 | 反观当下,某些富二代,星二代,没有「主题谓语」「主题宾语」,不思进取,吃喝玩乐,甚至吸毒犯法,毁掉了大好的青春。这充分说明不「主题谓语」「主题宾语」,很难使人生有价值。
3 | 历史事实证明,「主题谓语」「主题宾语」者,方能成就人生。
4 | 「主题谓语」「主题宾语」能够让我们长出有力的的翅膀,飞向遥远的天空心。
5 | 历史的经验启示我们:成功来自「主题谓语」「主题宾语」。
6 | 「主题宾语」是一种美,具有极强的魅力,你要拥有它,就能使青春永葆。
7 | 「主题宾语」能够成为是一种力量,是我们不断前进的动力。
8 | 「主题宾语」我们将充满斗志,迎接新的挑战;我们会看到阳光,收获希望。
9 | 做到「主题谓语」「主题宾语」,能够让人生散发出淡淡的,金子般的光辉。
10 | 「主题宾语」是美酒,年份越久越醇香浓型;「主题宾语」是焰火,在高处绽放才愈是美丽。
11 | 「主题谓语」「主题宾语」我们才能让自己做得最好,我们的生活才会更加美好。
12 | 纵然你是一粒沙子,「主题谓语」「主题宾语」,就可能成为一粒珍珠。
13 | 「主题谓语」「主题宾语」,能让我们产生一种强大的力量。
14 | 「主题谓语」「主题宾语」,岁月会因此更加静好,世间能因此而更加瑰丽。
15 | 「主题谓语」「主题宾语」,能让我们一展宏伟的蓝图,承受艰巨之奋斗。
16 | 历史写下辉煌过往,时间掀开崭新一页,「主题谓语」「主题宾语」给予我们力量。
17 | 人生之旅有风有雨是常态,「主题谓语」「主题宾语」让我们风雨无惧。
18 | 当今时代,瞬息万变,不进则退,慢进亦退,「主题谓语」「主题宾语」令我们快步前进。
19 |
20 |
--------------------------------------------------------------------------------
/生成器/素材库/语料库/提出中心论点.txt:
--------------------------------------------------------------------------------
1 | 所以,我们必须丰富充实人生,增加它的厚度。这样就要求我们「主题谓语」「主题宾语」。
2 | 这样就要求我们「主题谓语」「主题宾语」,以此来丰富充实人生,增加其厚度。
3 | 因此,需要我们珍惜时光,「主题谓语」「主题宾语」,奋发有为。
4 | 如此,若不想虚度人生,只能「主题谓语」「主题宾语」,砥砺前行。
5 | 看历史,想未来,唯有「主题谓语」「主题宾语」,方能不虚此生。
6 | 若能「主题谓语」「主题宾语」,便可以此来丰富人生,使其精彩。
7 | 若想使短暂的生命中开满妍丽之花,唯有「主题谓语」「主题宾语」。
8 | 每个人都不愿意让生命没有价值,这就需要「主题谓语」「主题宾语」。
9 | 如果不想让人生一事无成,则需要「主题谓语」「主题宾语」,方可实现。
10 | 当然,如果我们「主题谓语」「主题宾语」,则能够增加生命的内涵。
11 | 回望历史,可以发现,只有「主题谓语」「主题宾语」,才能成为历史河流中一朵美丽的浪花。
12 | 追寻先辈的足迹,不难看出,正是「主题谓语」「主题宾语」,才让他们绽放出耀眼的光彩。
13 | 历史的经验告诉我们,唯有「主题谓语」「主题宾语」,方能如愿以偿。
14 | 如果我们「主题谓语」「主题宾语」,未来会更加美好,明天能更加灿烂。
15 | 只有做到「主题谓语」「主题宾语」,方能踏平坎坷成大道,走完曲折至光明。
16 | 如果我们「主题谓语」「主题宾语」,即使生命短暂,芳华易逝,终将留下痕迹,成为永恒。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/提出分论点.txt:
--------------------------------------------------------------------------------
1 | 「主题宾语」对每个人来说都很重要。
2 | 古往今来,达人贤士都十分重视「主题宾语」。
3 | 「主题宾语」是人生最重要的关键词之一。
4 | 成功的人生不可能离开「主题宾语」。
5 | 「主题宾语」是走向精彩人生必不可少的要素。
6 | 一个人如果没有「主题宾语」,如何前行。
7 | 我们看重「主题宾语」,是因为它能成就我们。
8 | 如何对待「主题宾语」,对每个人来说,都是一个挑战。
9 | 「主题宾语」是我们人生必须学习的必修课。
10 | 「主题宾语」,是每个人必须面对无法回避的课题。
11 | 「主题宾语」,是古今成大事者的标准配置。
12 | 「主题宾语」,代表着一种向前向上的态度。
13 | 「主题宾语」,能让生命焕发出蓬勃的力量。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/点题.txt:
--------------------------------------------------------------------------------
1 | 我们应当「主题谓语」「主题宾语」。
2 | 作为青年人,我们必须「主题谓语」「主题宾语」。
3 | 「主题谓语」「主题宾语」,是对我们对基本要求。
4 | 做到「主题谓语」「主题宾语」,非常必要。
5 | 能够「主题谓语」「主题宾语」,当是青年人的基本功。
6 | 「主题谓语」「主题宾语」虽不容易,但并非无法做到。
7 | 懂得「主题谓语」「主题宾语」,是青年人应该学习的。
8 | 如何「主题谓语」「主题宾语」,的确值得思考。
9 | 如何「主题谓语」「主题宾语」,任重而道远。
10 | 愿我们着眼未来,「主题谓语」「主题宾语」。
11 | 吾辈青年,当「主题谓语」「主题宾语」。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/绪论引言.txt:
--------------------------------------------------------------------------------
1 | 时光如水,人生易逝,转眼间红颜成白发。
2 | 滚滚长江东逝水,浪花流去时光。
3 | 红了樱桃,绿了芭蕉。自然就是这样变换,人生就是如此流转。
4 | 静水流深若无痕,花开花落应有声。时光在不经意间悄然飞去。
5 | “山重水复疑无路,柳暗花明又一村”,人生总是在追寻中前行。
6 | 山青青,水盈盈。我们都希望到达这样美丽的境界。
7 | 在熙熙攘攘的人群中,在匆匆忙忙的脚步中,总希望走出宽广的道路。
8 | 人生总是在追求美丽的远方,未来总是让人神往。
9 | 在生命的河流中,每个人都想游得轻松,快捷,姿势优美。
10 | 悠悠岁月,弹指一挥;转眼之间,光阴流去。
11 | 当广袤无垠的天幕上缀满星星时,你也许会感叹,人生真是短暂。
12 | 凭栏望苍穹,念天地之悠悠,叹年华之易去。
13 | 时代长河,滔滔不息。大浪淘尽,千古风流。
14 | 悠悠华夏五千年,俊采星驰;浩浩神州九万里,英雄辈出。
15 | 一条小径,曲折迂回,可通沼泽地,也可达百花园;一段人生,跌宕起伏,可至黑暗谷,也可到光明顶。
16 | 每个人都憧憬未来,每个人都向往明天。
17 | 人生之路,漫长遥远,有时坎坷不平,有时曲曲折折。
18 | 一程山水,需用一段年华去丈量;一时事功,需用一种心力去完成。
19 | 生命是一段永无止境的旅程,每个拐角都有曲折和挑战。
20 | 时间之河不断流淌,带着我们走向未来。
21 | 自然之美时刻提醒我们,生命是短暂的,努力永远不晚。
22 | 在人生旅途中,充满挑战,也充满机遇,我们应大胆拥抱。
23 | 时间飞速流逝,提醒我们珍惜每一刻,充实生命。
24 | 成功之路常常充满阻碍和挫折,但坚持不懈才是关键。
25 | 在日常的喧嚣中,很容易忘记周围的美丽。
26 | 我们都有梦想和愿望,希望有朝一日能够实现。
27 | 生命像一条河流,有时平静祥和,有时波涛汹涌。
28 | 人生旅途是不断寻找目标和意义的过程。
29 | 时间的流逝,提醒我们要珍爱美好,创造持久的回忆。
30 | 世界宽广无边,充满美丽和奇妙,等待我们去探索。
31 | 我们的生命像书本的一页,每个章节代表一个新的冒险。
32 | 生命中的每一次经历,都是成长和自我发现的机会。
33 | 人生旅途漫漫,是永无止境的追求知识和理解之旅。
34 | 生命像过山车,有起有伏,但这段旅程值得我们去体验。
35 | 在生命中,重要的是记住我们一起走在这段旅程上。
36 | 生命是一份礼物,应该珍惜并感激每一刻。
37 | 人生旅途,充满惊喜,也充满曲折。
38 | 光阴似箭,日月如梭,时间在不断地流逝。
39 | 历史是一部大书,记录着人类的进步与发展。
40 | 人生是一场马拉松,需要坚持不懈地奔跑到终点。
41 | 天行健,君子以自强不息,地势坤,君子以厚德载物。
42 | 人生的路上,总会遇到许多挫折和困难,需要有勇气和智慧去面对。
43 | 任何事情都有两面性,我们需要具备深刻的思考能力。
44 | 世界上没有绝对的成功或失败,只有一步步的进步和努力。
45 | 每一个人都可以成为自己的主角,创造属于自己的精彩人生。
46 | 时代在变,但是人类对理想和追求永远不会消失。
47 | 勇气和决心是成功的关键,只要坚持不懈,终究会有所成就。
48 | 生命的价值不在于它的长度,而在于它的质量。
49 | 只有在经历风雨之后,才能看到彩虹。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/绪论本论过渡句.txt:
--------------------------------------------------------------------------------
1 | 走进历史的画廊,我们不难发现,那些光彩照人的,无一不是「主题谓语」「主题宾语」,积极进取的人。
2 | 打开历史的册页,你会看见,闪闪发光的都是那些「主题谓语」「主题宾语」,努力奋斗的人。
3 | 翻开厚厚的史书,映入我们眼帘的,正是那些「主题谓语」「主题宾语」,勇往直前的人。
4 | 历史的长河滚滚向前,那些「主题谓语」「主题宾语」,追逐明天的人,永远铭记在人们心间。
5 | 长江后浪推前浪,那些「主题谓语」「主题宾语」,成就伟业的人,必将化作历史沙滩上的美丽的宝石。
6 | 遥望历史的星空,群星璀璨。那些最耀眼、最夺目的人,无一不是能够「主题谓语」「主题宾语」,积极进取的。
7 | 古今中外,凡是在事业上有所造就、取得成功的人,没有不是「主题谓语」「主题宾语」的。
8 | 徜徉在历史的花园,你会看到那些最鲜艳芬芳的,正是「主题谓语」「主题宾语」,竞相绽放的。
9 | 翻开浩如烟海的历史画册,那些因「主题谓语」「主题宾语」而光彩熠熠的人,着实令人钦敬。
10 | 悠悠千年的人类历史,沉淀出了厚重的文化。「主题谓语」「主题宾语」的人是形成这种文化的骨干。
--------------------------------------------------------------------------------
/生成器/素材库/语料库/论证分论点.txt:
--------------------------------------------------------------------------------
1 | 只有「主题谓语」「主题宾语」,才能朝着目标奔跑。有了「主题宾语」,就不会在人生的道路上迷失自我。
2 | 只有「主题谓语」「主题宾语」,才能激发自己的潜能。有了「主题宾语」,就有了压力,也就有了前进的动力,就会激发自己,创新奋进。
3 | 只有「主题谓语」「主题宾语」,才会坚持不懈,持之以恒。有了「主题宾语」,就会永不言弃,艰难困苦玉汝于成。
4 | 「主题谓语」「主题宾语」,就有了前进的方向,就会为此而奋斗。
5 | 「主题谓语」「主题宾语」,方能产生动力,启动强大的推进器。
6 | 「主题谓语」「主题宾语」,才会有水滴石穿的精神,永不间断的前行。
7 | 正确对待「主题宾语」,可以让我们看到未来,看到希望,看到远方。
8 | 正确对待「主题宾语」,可以让我们找到人生的灯塔,在未来的路途中乘风破浪,扬帆远行。
9 | 正确对待「主题宾语」,能够让我们不怕困难,披荆斩棘,攀登高峰。
10 | 做到「主题谓语」「主题宾语」,方能咬定青山不放松,砥砺前行不言弃。
--------------------------------------------------------------------------------
/精简依赖包.txt:
--------------------------------------------------------------------------------
1 | aiohttp==3.8.4
2 | aiosignal==1.3.1
3 | async-timeout==4.0.2
4 | attrs==22.2.0
5 | cachetools==5.3.0
6 | certifi==2022.12.7
7 | charset-normalizer==3.1.0
8 | click==8.1.3
9 | contourpy==1.0.7
10 | cycler==0.11.0
11 | editdistance==0.6.2
12 | et-xmlfile==1.1.0
13 | Flask==2.2.3
14 | fonttools==4.39.3
15 | frozenlist==1.3.3
16 | gevent==22.10.2
17 | google-analytics-data==0.16.2
18 | google-api-core==2.11.0
19 | google-auth==2.17.3
20 | googleapis-common-protos==1.59.0
21 | greenlet==2.0.2
22 | grpcio==1.53.0
23 | grpcio-status==1.53.0
24 | gunicorn==20.1.0
25 | idna==3.4
26 | itsdangerous==2.1.2
27 | Jinja2==3.1.2
28 | joblib==1.2.0
29 | kiwisolver==1.4.4
30 | MarkupSafe==2.1.2
31 | matplotlib==3.7.1
32 | multidict==6.0.4
33 | numpy==1.24.2
34 | openai==0.27.4
35 | openpyxl==3.1.2
36 | packaging==23.0
37 | pandas==2.0.0
38 | pandas-stubs==1.5.3.230321
39 | Pillow==9.5.0
40 | plotly==5.14.1
41 | proto-plus==1.22.2
42 | protobuf==4.22.3
43 | pyasn1==0.4.8
44 | pyasn1-modules==0.2.8
45 | pyparsing==3.0.9
46 | python-dateutil==2.8.2
47 | python-dotenv==1.0.0
48 | pytz==2023.3
49 | requests==2.28.2
50 | rsa==4.9
51 | scikit-learn==1.2.2
52 | scipy==1.10.1
53 | six==1.16.0
54 | SQLAlchemy==2.0.9
55 | tenacity==8.2.2
56 | threadpoolctl==3.1.0
57 | tqdm==4.65.0
58 | types-pytz==2023.3.0.0
59 | typing_extensions==4.5.0
60 | tzdata==2023.3
61 | urllib3==1.26.15
62 | Werkzeug==2.2.3
63 | yarl==1.8.2
64 | zope.event==4.6
65 | zope.interface==6.0
66 |
--------------------------------------------------------------------------------
/统计.py:
--------------------------------------------------------------------------------
1 | import os
2 | import pathlib
3 | from pathlib import Path
4 |
5 | from dotenv import load_dotenv
6 | from google.analytics.data_v1beta import BetaAnalyticsDataClient
7 | from google.analytics.data_v1beta.types import DateRange, Metric, RunReportRequest
8 | from cachetools.func import ttl_cache
9 | from time import sleep
10 |
11 |
12 | class 统计类:
13 | def __init__(self) -> None:
14 | # 载入 .env 文件
15 | load_dotenv(pathlib.Path(__file__).parent / "生成器" / ".env")
16 | self.property_id = os.getenv("PROPERTY_ID")
17 |
18 | @ttl_cache(ttl=60 * 60 * 1, maxsize=1)
19 | def 获得统计信息(self) -> tuple[int, int]:
20 | client = BetaAnalyticsDataClient()
21 |
22 | request = RunReportRequest(
23 | property=f"properties/{self.property_id}",
24 | metrics=[Metric(name="activeUsers"), Metric(name="screenPageViews")],
25 | # GA4(新版) 统计创建于 2022-12-10
26 | date_ranges=[DateRange(start_date="2022-12-10", end_date="today")],
27 | )
28 | response = client.run_report(request)
29 | # UA (旧版) 统计在 2019-12-04 到 2022-12-10 共 171,701 用户
30 | active_users: int = int(response.rows[0].metric_values[0].value) + 171701
31 | # UA (旧版) 统计在 2019-12-04 到 2022-12-10 共 831,318 次浏览
32 | page_views: int = int(response.rows[0].metric_values[1].value) + 831318
33 | return (active_users, page_views)
34 |
35 |
36 | if __name__ == "__main__":
37 | 谷歌统计 = 统计类()
38 | for i in range(20):
39 | print(谷歌统计.获得统计信息())
40 | sleep(1)
41 |
--------------------------------------------------------------------------------
/网站服务器.py:
--------------------------------------------------------------------------------
1 | # -*- coding: UTF-8 -*-
2 | from flask import Flask, render_template, request
3 |
4 | from 生成器.生成器 import 作文类, 生成器类
5 | from 统计 import 统计类
6 |
7 | app = Flask(__name__, template_folder="网站模版", static_folder="网站资源", static_url_path="")
8 | 生成器: 生成器类 = 生成器类()
9 | 谷歌统计: 统计类 = 统计类()
10 |
11 |
12 | def 全是汉字(字符串: str) -> bool:
13 | """检查字符串是否全是汉字
14 |
15 | 全是汉字返回 True
16 | 存在非汉字返回 False
17 | 空字符串 也返回 True
18 | 参考: https://cloud.tencent.com/developer/article/1499958
19 | """
20 | for 字符 in 字符串:
21 | if not "\u4e00" <= 字符 <= "\u9fa5":
22 | return False
23 | return True
24 |
25 |
26 | def 检查输入(主题谓语: str, 主题宾语: str) -> tuple[bool, bool, bool, str]:
27 | """检查输入
28 | 主页, 谓语错误, 宾语错误, 错误信息 = 检查输入(主题谓语, 主题宾语)
29 | if not any((主页, 谓语错误, 宾语错误)):
30 | 作文: 作文类 = 生成器.生成作文(主题谓语=主题谓语, 主题宾语=主题宾语)
31 | """
32 | 主页: bool = False
33 | 谓语错误: bool = False
34 | 宾语错误: bool = False
35 | 错误信息: str = ""
36 | if len(主题谓语) == 0 and len(主题宾语) == 0:
37 | 主页 = True
38 | elif len(主题谓语) == 0:
39 | 谓语错误 = True
40 | 错误信息 = "请填写主题谓语"
41 | elif not 全是汉字(主题谓语):
42 | 谓语错误 = True
43 | 错误信息 = "主题谓语只能包含汉字"
44 | elif len(主题谓语) > 14:
45 | 谓语错误 = True
46 | 错误信息 = "主题谓语应少于 14 字"
47 | elif len(主题宾语) == 0:
48 | 宾语错误 = True
49 | 错误信息 = "请填写主题宾语"
50 | elif not 全是汉字(主题宾语):
51 | 宾语错误 = True
52 | 错误信息 = "主题宾语只能包含汉字"
53 | elif len(主题宾语) > 14:
54 | 宾语错误 = True
55 | 错误信息 = "主题宾语应少于 14 字"
56 | return 主页, 谓语错误, 宾语错误, 错误信息
57 |
58 |
59 | @app.route("/", methods=["GET"])
60 | def 作文生成器主页():
61 | # 初始化网页信息
62 | 主题谓语: str = request.args.get("谓语", "")
63 | 主题宾语: str = request.args.get("宾语", "")
64 | 作文: 作文类 = 作文类()
65 | 用户量, 访问量 = 谷歌统计.获得统计信息()
66 | 主页, 谓语错误, 宾语错误, 错误信息 = 检查输入(主题谓语, 主题宾语)
67 | if not any((主页, 谓语错误, 宾语错误)):
68 | 作文: 作文类 = 生成器.生成作文(主题谓语=主题谓语, 主题宾语=主题宾语)
69 | return render_template(
70 | "主页.html",
71 | 主题谓语=主题谓语,
72 | 主题宾语=主题宾语,
73 | 文章=作文.文章,
74 | 段数=作文.段数,
75 | 字数=作文.字数,
76 | 示例=生成器.示例库,
77 | 示例数量=min(len(生成器.示例库), 20),
78 | 主页=主页,
79 | 谓语错误=谓语错误,
80 | 宾语错误=宾语错误,
81 | 错误信息=错误信息,
82 | 用户量=用户量,
83 | 访问量=访问量,
84 | )
85 |
86 |
87 | @app.route("/事例/", methods=["GET"])
88 | @app.route("/名言/", methods=["GET"])
89 | def 素材生成器主页():
90 | # 初始化网页信息
91 | 主题谓语: str = request.args.get("谓语", "")
92 | 主题宾语: str = request.args.get("宾语", "")
93 | 语料类别: str = request.path.strip("/")
94 | 作文: 作文类 = 作文类()
95 | 用户量, 访问量 = 谷歌统计.获得统计信息()
96 | 主页, 谓语错误, 宾语错误, 错误信息 = 检查输入(主题谓语, 主题宾语)
97 | if not any((主页, 谓语错误, 宾语错误)):
98 | 作文: 作文类 = 生成器.生成语料(主题谓语=主题谓语, 主题宾语=主题宾语, 语料类别=语料类别)
99 | return render_template(
100 | f"{语料类别}.html",
101 | 主题谓语=主题谓语,
102 | 主题宾语=主题宾语,
103 | 语料类别=语料类别,
104 | 文章=作文.文章,
105 | 段数=作文.段数,
106 | 字数=作文.字数,
107 | 示例=生成器.示例库,
108 | 示例数量=min(len(生成器.示例库), 20),
109 | 主页=主页,
110 | 谓语错误=谓语错误,
111 | 宾语错误=宾语错误,
112 | 错误信息=错误信息,
113 | 用户量=用户量,
114 | 访问量=访问量,
115 | )
116 |
117 |
118 | # 本地测试
119 | if __name__ == "__main__":
120 | app.run(use_reloader=False, debug=True)
121 |
--------------------------------------------------------------------------------
/网站模版/主页.html:
--------------------------------------------------------------------------------
1 |
2 | {% extends "模版.html" %}
3 | {% block head %}
4 | {{ super() }}
5 | {% endblock %}
6 |
7 | {% block nav %}
8 |
9 | - 作文
10 | - 事例
11 | - 名言
12 | - 总结
13 |
14 | {% endblock %}
15 |
16 | {% block article %}
17 | {{主题谓语}}{{主题宾语}}
18 |
19 | {%for 段 in range(0, 3)%}
20 | {{文章[段]}}
21 | {%endfor%}
22 |
23 |
31 |
34 |
35 | {%for 段 in range(3, 段数-1)%}
36 | {{文章[段]}}
37 | {%endfor%}
38 |
39 | {{文章[段数-1]}}(共 {{字数}} 字)
40 | {% endblock %}
41 |
--------------------------------------------------------------------------------
/网站模版/事例.html:
--------------------------------------------------------------------------------
1 |
2 | {% extends "模版.html" %}
3 | {% block head %}
4 | {{ super() }}
5 |
10 | {% endblock %}
11 |
12 | {% block nav %}
13 |
14 | - 作文
15 | - 事例
16 | - 名言
17 | - 总结
18 |
19 | {% endblock %}
20 |
21 | {% block article %}
22 | 《{{主题谓语}}{{主题宾语}}》事例
23 |
24 |
25 | {%for 段 in range(0, 5)%}
26 | {{段+1}}、{{文章[段]}}
27 | {%endfor%}
28 |
29 |
37 |
40 |
41 | {%for 段 in range(5, 段数)%}
42 | {{段+1}}、{{文章[段]}}
43 |
44 | {%endfor%} {% endblock %}
45 |
--------------------------------------------------------------------------------
/网站模版/名言.html:
--------------------------------------------------------------------------------
1 |
2 | {% extends "模版.html" %}
3 | {% block head %}
4 | {{ super() }}
5 |
10 | {% endblock %}
11 |
12 | {% block nav %}
13 |
14 | - 作文
15 | - 事例
16 | - 名言
17 | - 总结
18 |
19 | {% endblock %}
20 |
21 | {% block article %}
22 | 《{{主题谓语}}{{主题宾语}}》名言
23 |
24 |
25 | {%for 段 in range(0, 5)%}
26 | {{段+1}}、{{文章[段]}}
27 | {%endfor%}
28 |
29 |
37 |
40 |
41 | {%for 段 in range(5, 段数)%}
42 | {{段+1}}、{{文章[段]}}
43 |
44 | {%endfor%} {% endblock %}
45 |
--------------------------------------------------------------------------------
/网站模版/模版.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {% block head %}
5 |
6 |
7 | {% if 主页 %}
8 | 小嘿作文生成器 - 主页
9 | {% else %}
10 | {{主题谓语}}{{主题宾语}} - 小嘿作文生成器
11 | {% endif %}
12 |
13 |
14 |
15 |
16 |
24 |
28 |
29 |
30 |
31 |
35 |
36 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
55 |
57 |
62 |
68 |
72 |
78 |
79 |
84 |
89 |
90 |
95 |
96 |
97 |
99 |
109 |
110 |
114 |
123 |
124 |
129 | {% endblock %}
130 |
131 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
205 | {% if not 主页 and not 谓语错误 and not 宾语错误 %}
206 |
207 |
208 |
209 | {% block article %}
210 | {{主题谓语}}{{主题宾语}}
211 |
212 | {%for 段 in range(0, 3)%}
213 | {{文章[段]}}
214 | {%endfor%}
215 |
216 |
224 |
227 |
228 | {%for 段 in range(3, 段数-1)%}
229 | {{文章[段]}}
230 | {%endfor%}
231 |
232 | {{文章[段数-1]}}(共 {{字数}} 字)
233 | {% endblock %}
234 |
235 |
236 |
237 |
244 |
已拷贝文章至剪切板
245 |
246 |
247 |
248 | {% endif %}
249 |
250 |
251 |
252 |
253 | 主题词示例
254 |
255 | 选择合适的主题谓语、宾语,对作文质量至关重要。主题谓语当含有褒扬之意,主题宾语为某种值得追求的品质时最佳。
256 |
257 |
266 |
267 |
268 | {% if not 主页 and not 谓语错误 and not 宾语错误 %}
269 |
270 | 打赏作者
271 |
272 | 您的打赏将鼓励作者继续维护项目,及用于网站服务器、小嘿猫粮等开销。
273 |
274 |
275 |
276 |
280 | 微信打赏
281 |
282 |
283 |
287 | 支付宝打赏
288 |
289 |
290 |
291 |
292 | {% endif %}
293 |
294 |
295 |
327 |
328 |
![]()
329 |
330 |
331 | {% if 谓语错误 %}
332 |
340 | {% elif 宾语错误 %}
341 |
349 | {% else %} {% endif %}
350 |
351 |
--------------------------------------------------------------------------------
/网站资源/ads.txt:
--------------------------------------------------------------------------------
1 | google.com, pub-4089826532740408, DIRECT, f08c47fec0942fa0
--------------------------------------------------------------------------------
/网站资源/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Allow: /
--------------------------------------------------------------------------------
/网站资源/图片/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/android-chrome-192x192.png
--------------------------------------------------------------------------------
/网站资源/图片/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/android-chrome-512x512.png
--------------------------------------------------------------------------------
/网站资源/图片/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/apple-touch-icon.png
--------------------------------------------------------------------------------
/网站资源/图片/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/favicon-16x16.png
--------------------------------------------------------------------------------
/网站资源/图片/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/favicon-32x32.png
--------------------------------------------------------------------------------
/网站资源/图片/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/favicon.ico
--------------------------------------------------------------------------------
/网站资源/图片/site.webmanifest:
--------------------------------------------------------------------------------
1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
--------------------------------------------------------------------------------
/网站资源/图片/二维码.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/二维码.png
--------------------------------------------------------------------------------
/网站资源/图片/微信-272x272.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/微信-272x272.jpg
--------------------------------------------------------------------------------
/网站资源/图片/微信.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/微信.jpg
--------------------------------------------------------------------------------
/网站资源/图片/拷贝.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/网站资源/图片/拷贝成功.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/网站资源/图片/支付宝-272x272.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/支付宝-272x272.jpg
--------------------------------------------------------------------------------
/网站资源/图片/支付宝.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackjyq/xiaohei-zuowen/9193568106df2a09d9f0c949452c7ccfb6207644/网站资源/图片/支付宝.jpg
--------------------------------------------------------------------------------
/网站资源/样式表/事例.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | /* 覆盖 模版.css 中的设置 */
3 | /* 主色: Purple 600
4 | 参考: https://m2.material.io/design/color/the-color-system.html
5 | */
6 |
7 | :root {
8 | --主色: #8e24aa;
9 | --副色: #8e24aa1f;
10 | }
11 |
12 | .文章区域 p {
13 | text-indent: 0;
14 | }
15 |
--------------------------------------------------------------------------------
/网站资源/样式表/初始化.css:
--------------------------------------------------------------------------------
1 | /* http://meyerweb.com/eric/tools/css/reset/
2 | v2.0 | 20110126
3 | License: none (public domain)
4 | */
5 |
6 | html,
7 | body,
8 | div,
9 | span,
10 | applet,
11 | object,
12 | iframe,
13 | h1,
14 | h2,
15 | h3,
16 | h4,
17 | h5,
18 | h6,
19 | p,
20 | blockquote,
21 | pre,
22 | a,
23 | abbr,
24 | acronym,
25 | address,
26 | big,
27 | cite,
28 | code,
29 | del,
30 | dfn,
31 | em,
32 | img,
33 | ins,
34 | kbd,
35 | q,
36 | s,
37 | samp,
38 | small,
39 | strike,
40 | strong,
41 | sub,
42 | sup,
43 | tt,
44 | var,
45 | b,
46 | u,
47 | i,
48 | center,
49 | dl,
50 | dt,
51 | dd,
52 | ol,
53 | ul,
54 | li,
55 | fieldset,
56 | form,
57 | label,
58 | legend,
59 | table,
60 | caption,
61 | tbody,
62 | tfoot,
63 | thead,
64 | tr,
65 | th,
66 | td,
67 | article,
68 | aside,
69 | canvas,
70 | details,
71 | embed,
72 | figure,
73 | figcaption,
74 | footer,
75 | header,
76 | hgroup,
77 | menu,
78 | nav,
79 | output,
80 | ruby,
81 | section,
82 | summary,
83 | time,
84 | mark,
85 | audio,
86 | video {
87 | margin: 0;
88 | padding: 0;
89 | border: 0;
90 | font-size: 100%;
91 | font: inherit;
92 | vertical-align: baseline;
93 | }
94 | /* HTML5 display-role reset for older browsers */
95 | article,
96 | aside,
97 | details,
98 | figcaption,
99 | figure,
100 | footer,
101 | header,
102 | hgroup,
103 | menu,
104 | nav,
105 | section {
106 | display: block;
107 | }
108 | body {
109 | line-height: 1;
110 | }
111 | ol,
112 | ul {
113 | list-style: none;
114 | }
115 | blockquote,
116 | q {
117 | quotes: none;
118 | }
119 | blockquote:before,
120 | blockquote:after,
121 | q:before,
122 | q:after {
123 | content: "";
124 | content: none;
125 | }
126 | table {
127 | border-collapse: collapse;
128 | border-spacing: 0;
129 | }
130 |
--------------------------------------------------------------------------------
/网站资源/样式表/名言.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | /* 覆盖 模版.css 中的设置 */
3 | /* 主色: Green 600
4 | 参考: https://m2.material.io/design/color/the-color-system.html
5 | */
6 |
7 | :root {
8 | --主色: #43a047;
9 | --副色: #43a0471f;
10 | }
11 |
12 | .文章区域 p {
13 | text-indent: 0;
14 | }
15 |
--------------------------------------------------------------------------------
/网站资源/样式表/模版.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 |
3 | /* 颜色定义
4 | 主色: Pink 600
5 | 参考: https://m2.material.io/design/color/the-color-system.html
6 | */
7 |
8 | :root {
9 | --主色: #d81b60;
10 | --副色: #d81b601f;
11 | --链接: #0969da;
12 | --警告色: #ff9800;
13 | --卡片色: #ffffff;
14 | --背景色: #f5f5f5;
15 | --主要文本: #000000de;
16 | --提示文本: #0000008a;
17 | --禁用文本: #00000061;
18 | --主要文本亮: #ffffffde;
19 | --提示文本亮: #ffffff8a;
20 | --禁用文本亮: #ffffff61;
21 | --按钮文本: #ffffff;
22 | --图标悬停: #d81b6014;
23 | --图标点击: #d81b6051;
24 | --对话框遮挡: #00000052;
25 | }
26 |
27 | /* 阴影定义
28 | https://material-components.github.io/material-components-web-catalog/#/component/elevation
29 | */
30 | :root {
31 | --高度2: 0 3px 1px -2px rgb(0 0 0 / 20%), 0 2px 2px 0 rgb(0 0 0 / 14%),
32 | 0 1px 5px 0 rgb(0 0 0 / 12%);
33 | --高度8: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14),
34 | 0 3px 14px 2px rgba(0, 0, 0, 0.12);
35 | --高度24: 0 11px 15px -7px rgba(0, 0, 0, 0.2),
36 | 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);
37 | }
38 |
39 | /* 透明度定义
40 | https://material.io/design/interaction/states.html#hover
41 | https://material.io/design/interaction/states.html#pressed
42 | */
43 | :root {
44 | --按钮悬停: 0.92;
45 | --图片悬停: 0.88;
46 | --按钮点击: 0.68;
47 | --图片点击: 0.52;
48 | }
49 |
50 | /* 字号定义
51 | https://material.io/design/typography/the-type-system.html#type-scale
52 | */
53 | :root {
54 | --标题字号: 1.25rem;
55 | --正文字号大: 1rem;
56 | --正文字号小: 0.875rem;
57 | --说明字号: 0.75rem;
58 | }
59 |
60 | /* 字体定义
61 | 字体:https://zenozeng.github.io/fonts.css/
62 | */
63 | html {
64 | font-family: -apple-system, "Noto Sans", "Helvetica Neue", Helvetica,
65 | "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB",
66 | "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN",
67 | "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", "ST Heiti",
68 | SimHei, "WenQuanYi Zen Hei Sharp", sans-serif;
69 | }
70 |
71 | body {
72 | background-color: var(--背景色);
73 | font-size: var(--正文字号大);
74 | line-height: 1.5;
75 | }
76 |
77 | h1,
78 | h2 {
79 | font-size: var(--标题字号);
80 | text-align: center;
81 | margin-bottom: 16px;
82 | color: var(--主色);
83 | }
84 |
85 | p {
86 | text-indent: 2em;
87 | margin-bottom: 1em;
88 | }
89 |
90 | /* 其它通用样式 */
91 | a:link {
92 | color: var(--链接);
93 | text-decoration: none;
94 | }
95 |
96 | a:visited {
97 | color: var(--链接);
98 | }
99 |
100 | .卡片 {
101 | box-shadow: var(--高度2);
102 | background-color: var(--卡片色);
103 | border-radius: 4px;
104 | padding: 16px;
105 | margin-top: 8px;
106 | }
107 |
108 | /* 顶部导航栏
109 | *******************************************************************************/
110 | nav {
111 | box-shadow: var(--高度4);
112 | background-color: var(--主色);
113 | display: flex;
114 | flex-direction: row;
115 | }
116 |
117 | nav li {
118 | display: inline-block;
119 | font-size: var(--正文字号小);
120 | font-weight: bold;
121 | line-height: 1;
122 | }
123 |
124 | .导航已选择 {
125 | color: var(--主要文本亮);
126 | border-bottom: 2px solid var(--主要文本亮);
127 | padding: calc((48px - var(--正文字号小)) / 2) 16px;
128 | }
129 |
130 | /* 导航项目 */
131 | nav li a {
132 | padding: calc((48px - var(--正文字号小)) / 2) 16px;
133 | }
134 |
135 | nav li a:link,
136 | nav li a:visited {
137 | color: var(--提示文本亮);
138 | }
139 |
140 | nav li a:hover {
141 | color: var(--按钮文本);
142 | }
143 |
144 | /* 输入区域
145 | *******************************************************************************/
146 | .输入区域 > div {
147 | display: flex;
148 | }
149 |
150 | .输入区域 > div > div {
151 | flex-grow: 1;
152 | position: relative;
153 | }
154 |
155 | /* 输入框和按钮 */
156 | .输入区域 input {
157 | box-sizing: border-box;
158 | font-size: var(--正文字号大);
159 | height: 54px;
160 | padding: 8px;
161 | caret-color: var(--主色);
162 | /* 兼容 Safari */
163 | border-radius: 0;
164 | }
165 |
166 | .输入区域 input:focus {
167 | outline: none;
168 | }
169 |
170 | /* 输入框
171 | 选中输入框时自动隐藏占位符
172 | https://stackoverflow.com/a/12250084 */
173 | .输入区域 input:focus::placeholder {
174 | opacity: 0;
175 | transition: opacity 100ms linear;
176 | }
177 |
178 | .输入区域 input[type="text"] {
179 | min-width: 4em;
180 | width: 100%;
181 | }
182 |
183 | .输入区域 input[name="谓语"] {
184 | border: 2px solid var(--主色);
185 | border-radius: 4px 0 0 4px;
186 | }
187 |
188 | .输入区域 input[name="宾语"] {
189 | border-top: 2px solid var(--主色);
190 | border-bottom: 2px solid var(--主色);
191 | border-left: 0px solid;
192 | border-right: 0px solid;
193 | }
194 |
195 | .输入区域 input[type="submit"] {
196 | text-align: center;
197 | border: 2px solid var(--主色);
198 | border-radius: 0 4px 4px 0;
199 | background-color: var(--主色);
200 | color: var(--主要文本亮);
201 | cursor: pointer;
202 | /* 兼容 Safari */
203 | margin: 0;
204 | /* https://stackoverflow.com/questions/5438567/css-submit-button-weird-rendering-on-ipad-iphone */
205 | -webkit-appearance: none;
206 | }
207 |
208 | .输入区域 input[type="submit"]:hover {
209 | opacity: var(--按钮悬停);
210 | color: var(--按钮文本);
211 | }
212 |
213 | .输入区域 input[type="submit"]:active {
214 | box-shadow: var(--高度8);
215 | opacity: var(--按钮点击);
216 | color: var(--按钮文本);
217 | }
218 |
219 | /* 标签 */
220 | .输入区域 label {
221 | font-size: var(--说明字号);
222 | color: var(--主色);
223 | transition: opacity 100ms linear;
224 | /* 兼容 Safari, 否则会自动添加 display: none */
225 | display: block;
226 | }
227 |
228 | .输入区域 > div > div label[for="谓语"],
229 | .输入区域 > div > div label[for="宾语"] {
230 | position: absolute;
231 | top: -0.5em;
232 | left: 1.75em;
233 | padding: 0 0.25em;
234 | background-color: var(--卡片色);
235 | }
236 |
237 | /*警告*/
238 | .输入区域.警告 input {
239 | caret-color: var(--警告色);
240 | color: var(--主要文本);
241 | border-color: var(--警告色);
242 | }
243 | .输入区域.警告 input[type="submit"] {
244 | background-color: var(--警告色);
245 | border-color: var(--警告色);
246 | }
247 |
248 | .输入区域.警告 label {
249 | color: var(--警告色);
250 | }
251 |
252 | /* 下拉提示 */
253 | .输入区域 > .示例区域 h2 {
254 | font-size: var(--正文字号小);
255 | margin-bottom: 0;
256 | text-align: left;
257 | color: var(--主要文本);
258 | }
259 | .输入区域 > .示例区域 p {
260 | font-size: var(--正文字号小);
261 | text-indent: 0;
262 | margin-bottom: 0;
263 | }
264 |
265 | .输入区域 > .示例区域 ul {
266 | margin: 8px 0;
267 | }
268 |
269 | /* 示例区域
270 | *******************************************************************************/
271 | .示例区域 {
272 | transition: max-height 250ms ease-out, margin-top 250ms ease-out;
273 | overflow: hidden;
274 | /* 兼容 Safari, 否则会自动添加 display: none */
275 | display: block;
276 | }
277 |
278 | .示例区域 ul {
279 | list-style-type: none;
280 | font-size: var(--正文字号小);
281 | padding: 0;
282 | margin: 16px 0;
283 | display: flex;
284 | flex-wrap: wrap;
285 | gap: 8px 16px;
286 | }
287 |
288 | .示例区域 li:hover {
289 | opacity: var(--按钮悬停);
290 | }
291 |
292 | .示例区域 li:active {
293 | opacity: var(--按钮点击);
294 | }
295 |
296 | .示例区域 span {
297 | display: inline-block;
298 | box-sizing: border-box;
299 | height: 2rem;
300 | background-color: var(--副色);
301 | color: var(--主色);
302 | }
303 |
304 | .示例区域 span:nth-of-type(1) {
305 | border: 1px solid var(--主色);
306 | border-radius: 1rem 0 0 1rem;
307 | /* 高度是 2rem, 居中 */
308 | padding: calc((2rem - 1em * 1.5 - 2px) / 2) 0.25rem
309 | calc((2rem - 1em * 1.5 - 2px) / 2) 1rem;
310 | }
311 |
312 | .示例区域 span:nth-of-type(2) {
313 | border: 1px solid var(--主色);
314 | border-radius: 0 1rem 1rem 0;
315 | /* 去除左边 border */
316 | border-left: 0;
317 | /* 高度是 2rem, 居中 */
318 | padding: calc((2rem - 1em * 1.5 - 2px) / 2) 1rem
319 | calc((2rem - 1em * 1.5 - 2px) / 2) 0.25rem;
320 | }
321 |
322 | /* 文章区域
323 | *******************************************************************************/
324 | .文章区域 section:nth-of-type(2) {
325 | text-align: center;
326 | }
327 |
328 | .文章区域 button {
329 | height: 48px;
330 | width: 48px;
331 | border-radius: 50%;
332 | padding: 0;
333 | margin: 0;
334 | border: 0;
335 | background-color: #00000000;
336 | }
337 |
338 | .文章区域 button:hover {
339 | background-color: var(--图标悬停);
340 | }
341 |
342 | .文章区域 button:hover path {
343 | fill: var(--主要文本);
344 | }
345 |
346 | .文章区域 button:active {
347 | background-color: var(--图标点击);
348 | }
349 |
350 | .文章区域 svg {
351 | transform: scale(0.5);
352 | }
353 |
354 | .文章区域 path {
355 | fill: var(--提示文本);
356 | }
357 |
358 | .文章区域 div {
359 | position: relative;
360 | display: inline-block;
361 | }
362 |
363 | .文章区域 div > div {
364 | position: absolute;
365 | top: 52px;
366 | left: -36px;
367 | font-size: var(--说明字号);
368 | background-color: #232f34;
369 | color: #ffffff;
370 | padding: calc((24px - 1em) / 2) 8px;
371 | /* 修复竖行排列中文的问题 */
372 | white-space: nowrap;
373 | line-height: 1;
374 | border-radius: 12px;
375 | transition: opacity 100ms ease-in-out;
376 | opacity: 0;
377 | }
378 |
379 | /* 打赏区域
380 | *******************************************************************************/
381 | .打赏区域 div {
382 | display: flex;
383 | justify-content: space-evenly;
384 | gap: 8px;
385 | }
386 |
387 | .打赏区域 img {
388 | width: 100%;
389 | margin-top: 16px;
390 | margin-bottom: 8px;
391 | }
392 |
393 | .打赏区域 img:hover {
394 | opacity: var(--图片悬停);
395 | }
396 |
397 | .打赏区域 img:active {
398 | opacity: var(--图片点击);
399 | }
400 |
401 | .打赏区域 figcaption {
402 | text-align: center;
403 | }
404 |
405 | /* 版权区域
406 | *******************************************************************************/
407 | main {
408 | /* 页面高度 - 版权区域高度*/
409 | min-height: calc(100vh - 8.5em);
410 | }
411 |
412 | footer {
413 | text-align: center;
414 | color: var(--提示文本);
415 | margin: 32px;
416 | }
417 |
418 | footer p {
419 | font-size: var(--说明字号);
420 | margin-bottom: 0;
421 | }
422 |
423 | /* 对话框
424 | *******************************************************************************/
425 | .对话框 {
426 | position: fixed;
427 | top: 0;
428 | left: 0;
429 | width: 100%;
430 | height: 100%;
431 | background-color: var(--对话框遮挡);
432 | display: flex;
433 | justify-content: center;
434 | align-items: center;
435 | }
436 |
437 | .对话框 img {
438 | border-radius: 16px;
439 | box-shadow: var(--高度24);
440 | width: min(560px, calc(100vw - 76px), calc(100vh - 76px));
441 | height: min(560px, calc(100vw - 76px), calc(100vh - 76px));
442 | transition: opacity 300ms ease-in-out;
443 | }
444 |
445 | /* 响应式布局
446 | https://material.io/design/layout/responsive-layout-grid.html#breakpoints
447 | *******************************************************************************/
448 | /* 默认多栏布局 1440+ */
449 | body {
450 | padding: 0 8px;
451 | margin: auto;
452 | max-width: 1040px;
453 | }
454 |
455 | /* 保持导航栏靠边,但内容仍然对齐卡片*/
456 | nav {
457 | margin: 0 calc(-1 * (100vw - 1040px) / 2);
458 | }
459 |
460 | main {
461 | display: flex;
462 | column-gap: 8px;
463 | }
464 |
465 | .主栏 {
466 | flex-grow: 1;
467 | }
468 | .侧栏 {
469 | flex-shrink: 0;
470 | flex-basis: 350px;
471 | }
472 |
473 | .输入区域 > .示例区域 {
474 | display: none;
475 | }
476 |
477 | @media only screen and (min-width: 1240px) and (max-width: 1439px) {
478 | body {
479 | margin: 0 200px;
480 | }
481 |
482 | /* 保持导航栏靠边,但内容仍然对齐卡片 */
483 | nav {
484 | margin: 0 calc(-200px - 8px);
485 | }
486 | }
487 |
488 | @media only screen and (min-width: 905px) and (max-width: 1239px) {
489 | body {
490 | margin: auto;
491 | max-width: 840px;
492 | }
493 |
494 | /* 保持导航栏靠边,但内容仍然对齐卡片*/
495 | nav {
496 | margin: 0 calc(-1 * (100vw - 840px) / 2);
497 | }
498 | }
499 |
500 | /* 单栏布局 */
501 | @media only screen and (max-width: 904px) {
502 | main {
503 | display: block;
504 | /* 页面高度 - 版权区域高度*/
505 | min-height: calc(100vh - 6.5em);
506 | }
507 | .示例区域.卡片 {
508 | display: none;
509 | }
510 | .输入区域 > .示例区域 {
511 | display: block;
512 | }
513 | footer {
514 | margin: 16px;
515 | }
516 | body {
517 | margin: 0 32px;
518 | }
519 |
520 | /* 保持导航栏靠边,但内容仍然对齐卡片 */
521 | nav {
522 | margin: 0 calc(-32px - 8px);
523 | padding: 0 calc(32px + 8px);
524 | }
525 | }
526 |
527 | @media only screen and (max-width: 599px) {
528 | body {
529 | margin: 0;
530 | }
531 | /* 保持导航栏靠边,但内容仍然对齐卡片 */
532 | nav {
533 | margin: 0 -8px;
534 | padding: 0 8px;
535 | }
536 | }
537 |
--------------------------------------------------------------------------------
/网站资源/脚本.js:
--------------------------------------------------------------------------------
1 | function 拷贝文章() {
2 | const 文章 = document.getElementById("文章").innerText;
3 | navigator.clipboard.writeText(文章).then(function (数据) {
4 | const 拷贝提示 = document.querySelectorAll(".文章区域 div > div")[0];
5 | 拷贝提示.style.opacity = "1";
6 | setTimeout(function () {
7 | 拷贝提示.style.opacity = "0";
8 | }, 1500);
9 | });
10 | }
11 |
12 | function 显示谓语标签() {
13 | const 谓语标签 = document.querySelectorAll(
14 | ".输入区域 > div > div label[for='谓语']"
15 | )[0];
16 | 谓语标签.style.opacity = "1";
17 | }
18 |
19 | function 隐藏谓语标签() {
20 | const 谓语标签 = document.querySelectorAll(
21 | ".输入区域 > div > div label[for='谓语']"
22 | )[0];
23 | 谓语标签.style.opacity = "0";
24 | }
25 |
26 | function 显示宾语标签() {
27 | const 宾语标签 = document.querySelectorAll(
28 | ".输入区域 > div > div label[for='宾语']"
29 | )[0];
30 | 宾语标签.style.opacity = "1";
31 | }
32 |
33 | function 隐藏宾语标签() {
34 | const 宾语标签 = document.querySelectorAll(
35 | ".输入区域 > div > div label[for='宾语']"
36 | )[0];
37 | 宾语标签.style.opacity = "0";
38 | }
39 |
40 | function 显示打赏(图片路径) {
41 | const 对话框 = document.querySelectorAll(".对话框")[0];
42 | const 图片 = document.querySelectorAll(".对话框 > img")[0];
43 | 图片.setAttribute("src", 图片路径);
44 | 对话框.style.display = "flex";
45 | // 保证执行过渡效果
46 | setTimeout(function () {
47 | 图片.style.opacity = "1";
48 | }, 0);
49 | }
50 |
51 | function 隐藏打赏() {
52 | const 对话框 = document.querySelectorAll(".对话框")[0];
53 | const 图片 = document.querySelectorAll(".对话框 > img")[0];
54 | 图片.removeAttribute("src");
55 | 图片.style.opacity = "0";
56 | 对话框.style.display = "none";
57 | }
58 |
59 | window.addEventListener("click", function (事件) {
60 | // 控制示例区域显示
61 | const 示例区域 = document.getElementsByClassName("示例区域")[0];
62 | const 输入区域 = document.getElementsByClassName("输入区域")[0];
63 | const 谓语输入框 = document.getElementsByName("谓语")[0];
64 | const 宾语输入框 = document.getElementsByName("宾语")[0];
65 | const 点击区域 = 事件.target;
66 | if (!window.matchMedia("only screen and (max-width: 904px)").matches) {
67 | // 多栏布局不执行以下代码
68 | return;
69 | } else if (谓语输入框.contains(点击区域) || 宾语输入框.contains(点击区域)) {
70 | // 1000px 是一个随意指定的很大的数字
71 | 示例区域.style.maxHeight = "1000px";
72 | 示例区域.style.marginTop = "8px";
73 | } else if (!输入区域.contains(点击区域) && !示例区域.contains(点击区域)) {
74 | 示例区域.style.maxHeight = "0";
75 | 示例区域.style.marginTop = "0";
76 | } else {
77 | return;
78 | }
79 | });
80 |
--------------------------------------------------------------------------------