最新版本:安装并运行 textsum(文章自动摘要)

优采云 发布时间: 2022-11-25 04:10

  最新版本:安装并运行 textsum(文章自动摘要)

  前言

  本文写于 2017 年春季,根据其他人的反馈:本文中使用的 TensorFlow 1.x github 的 textsum 代码不再维护,FAQ 中反映的错误尚未修复,因此我暂时不会继续维护本文的代码部分。目前,textsum算法在各个方面都不如基于BERT变压器结构(2018)的算法,无论是学习还是比较,我不建议使用textsum。

  另外,本文还有一个bug,解码***是训练后生成的文件。 ref*** 是供参考的训练标签(文章说错了)。感谢知乎用户“小燕”指出文章中的错误。

  这里不讨论算法的问题,但这里讨论如何在 Linux 上安装和运行 这个开源项目面向的是刚开始学习机器学习的读者,所以我倾向于详细(详细)写。

  关于文本和的两篇文章是:

  关于如何安装和运行textsum的文章是这篇文章↑

  另一篇↑文章描述了如何制作自己的中文数据集,(从搜狗实验室下载数据集并清理它)。

  介绍和信息

  虽然这里只说“安装并运行textsum”,但我们还是要简单了解一些算法知识,当然时间可以跳过,直接ctrl+F“install”看文本。

  在GitHub的TensorFlow开源项目中,基于LSTM(长短期记忆)模型的文本和,将输入的文章导入RNN(递归神经网络),并输出结果的文章摘要。

  TensorFLow GitHub 上的开源文章自动汇总模型“textsum”,点击 ↓ 访问 GitHub

  seq2seq mdoel 图例:模型读取输入句子“ABC”,然后输出“WXYZ”。模型在输出 () 后停止预测内容。注意!LSTM 反向读取序列,因为它在许多数据之间建立了短期依赖关系,并使优化更容易。(据我了解,进入RNN文本越晚,越容易被保留,文章开头一般会收录

更多总结全文的信息)。

  图 1:我们的模型读取一个输入句子“ABC”并生成“WXYZ”作为输出句子。模型在输出句尾标记后停止进行预测。

  请注意,LSTM 反向读取输入句子,因为这样做会在数据中引入许多短期依赖关系,这些依赖关系使

  优化问题容易得多。

  简单地说,textsum 使用的 seq2seq 模型是:

  使用一个 LSTM 读取输入序列,

  一次使用一个时间步长来获取输入序列的大型固定向量描述,然后使用另一个 LSTM 从该向量中提取所需的输出序列。(见上图)。

  这个想法是使用一个 LSTM 读取输入序列,一次一个时间步长,以获得大的固定维向量表示,然后使用另一个 LSTM 从该向量中提取输出序列(图 1)。

  顺便一提

  介绍算法的论文在这里↓,你自己看

  使用神经网络进行序列到序列学习.pdf

  为什么 LSTM 会反向读取输入序列?堆栈溢出有更好的答案↓

  NStepLSTM 和 Seq2Seq 模型然后 ctrl+F[保留]。

  1. 安装并运行文本和

  这里使用了 TensorFlow + Bazel(需要预先存在的 jdk 1.8)。环境

  (错误通常与环境有关)。

  安装 Bazel, JDK 8, TensorFlow

  “JDK 8 安装”

  在 Ubuntu 上安装 Bazel

  记得检查你是否已经安装了JDK 8,就像我喜欢用PyCharm编写Python一样,它已经安装了。

  安装 jdk1.8 的一种方法

deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list

curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -

  “安装巴泽尔

  “

  sudo apt-get update && sudo apt-get install bazel

sudo apt-get upgrade bazel

  BazelBuild/Bazel←Bazel的下载地址,打开它并找到匹配的版本

  等等,好像发现了什么?长野原澪?四寨蒸气恶心(°△°||)_

  安装TensorFlow

  建议使用Python的pip直接安装TensorFlow。建议 pip 版本大于 9.0.1

  pip install tensorflow

  请注意,当我运行时,我没有在运行时指定 Python 的版本,所以我的系统默认调用 Python 2 来运行这个程序。因此,如果您安装了 TensorFlow 并且未找到错误,您可能需要查看另一个版本的 Python 是否也安装了 TensorFLow。

  “下载文本和代码文件夹”

  在 GitHub 上下载 TensorFlow 开源项目的 textsum 模型,直接复制整个文件夹

  由于GitHub没有提供下载某个文件夹的按钮,因此似乎要获取textsum,您需要下载整个TensorFlow,显然,这是傻瓜式

,我们不应该这样做。

  比较 Geek 的方法是:登录某个网站(DownGit),粘贴连接,然后直接下载。

  DownGit

  『检查』

  安装 jdk 8、bazel 和 TensorFLow 后,记得看看是否安装了,我想看看版本

  java -version

java version "1.8.0_121"

Java(TM) SE Runtime Environment (build 1.8.0_121-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

bazel version

Build label: 0.11.1

Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar

Build time: Tue May 14 07:48:23 +50148 (1520362424903)

Build timestamp: 1520362424903

Build timestamp as int: 1520362424903

>>> import tensorflow as tf

>>> tf.__version__

'1.6.0'

  2. 准备工作目录

  请参阅

  README.md textsum 目录中的文件(这是通过上面的 GitDown 下载.zip的文本总和)来安装此处提供的步骤并构建工作目录。

  当然,这个副本 README.md ←你已经看到的,就在GitHub textsum的那个页面下面。

  先找一个合适的地方,设置一个不受干扰的工作目录,像我一样

  cd Videos # 刚好在资源管理器有按钮可以直接去

mkdir Yonv_CWD # Current Working Directory,Yonv这个名字是我随便起的

cd Yonv_CWD

#!注意,这里新建一个空的文件(注意不是文件夹而是空文件)

# WORKSPACE 是 bazel生成工作环境所必须的一个标记

touch WORKSPACW

# 这里是放训练集的,里面待会需要放入 二进制文件training-* 和 文本文件vocab

mkdir data

# 然后,退回到原来的 Yonv_CWD,开始用 bazel 建立工作环境

cd ..

bazel build -c opt --config=cuda textsum/...

# 注意,如果你的电脑没有 CUDA (Compute Unified Device Architecture)

# 也就是没有NVIDIA 的GPU的话,这一项就没必要加了

# 注意,textsum/... 后面的三个“...”

$ bazel build -c opt textsum/...

...............

<p>

" />

INFO: Analysed 7 targets (12 packages loaded).

INFO: Found 7 targets...

INFO: Elapsed time: 2.153s, Critical Path: 0.02s

INFO: Build completed successfully, 1 total action

# 强行加上也没关系,反正它只是WARRNING

# 再者说,学C++ 的人,难道会在乎终端返回的 WARRNING?

$ bazel build -c opt --config=cuda textsum/...

...............

WARNING: Config values are not defined in any .rc file: cuda

INFO: Analysed 7 targets (12 packages loaded).

INFO: Found 7 targets...

INFO: Elapsed time: 3.325s, Critical Path: 0.04s

INFO: Build completed successfully, 4 total actions</p>

  这以

  蓝色选择的三个文件是 Bazel 在运行前需要的,另一个 LNK 在运行后生成,日志是我自己构建的

  3. 运行 textsum3.1 以准备数据集

  在从 GitHub 下载的 textsum 中,有一个用于测试的数据集,笔者称之为 toy,而这个类似 toy 的测试数据集非常小,只有 33KB,就这么说吧。

  复制数据并

  将YonvCWD/textsum/data中的词汇文件(反正不大)改成Yonv_CWD/data,然后将数据文件重命名为training-0(不需要)。

  cd Yonv_CWD

cp testsum/data/vocab data/vocab

cp testsum/data/data data/training-0

  3.1 生成自己的数据

  对于文本和中文训练集的生成,可以看我的另一篇文章:

  值得一提的是,为了加快计算速度,除了词汇表之外的数据集,像训练-*验证-*测试-*都是二进制的,可以使用textsum/data/convertexample.py来转换,转换代码记录在这个py文件的开场白中,摘录为↓

  python data_convert_example.py \

--command binary_to_text \

--in_file data/data \

--out_file data/text_data

python data_convert_example.py \

--command text_to_binary \

--in_file data/text_data \

--out_file data/binary_data

  左上角:Yonv_CWD/data 文件夹中的数据集

  左下:Yonv_CWD/textsum/data文件夹,尝试使用 convertexample.py 程序在二进制和文本之间进行转换:data(二进制)→testdata(文本)→ binary_data(二进制)。

  右二:打开词汇表后可以看到是词频表,其中介质是标签

  右边一:转换后的test_data文件后,您可以看到标签“abstract=”和“article=”

  虽然这里使用了Textsum(TOY ^_^)提供的测试数据,并且缺少数据采集和清理步骤,但我们终于可以继续了。

  3.2 培训、评估、输出

  根据

  语句由 README.md 提供,我们有三个脚本要运行,分别是训练、评估和输出

  # Run the training.

$ bazel-bin/textsum/seq2seq_attention \

--mode=train \

--article_key=article \ # 对应training-0(更名前是data文件)中的 标签"article"

--abstract_key=abstract \# 对应training-0(更名前是data文件)中的 标签"abstract"

--data_path=data/training-* \ # 这个文件是之前准备的

--vocab_path=data/vocab \

--log_root=textsum/log_root \ # 中间文件会保留在这里

--train_dir=textsum/log_root/train

# Run the eval. Try to avoid running on the same machine as training.

$ bazel-bin/textsum/seq2seq_attention \

--mode=eval \

--article_key=article \

--abstract_key=abstract \

--data_path=data/validation-* \ # 如果你只是想测试依然程序是否正常,直接复制 training-0吧

--vocab_path=data/vocab \

--log_root=textsum/log_root \

--eval_dir=textsum/log_root/eval

# Run the decode. Run it when the model is mostly converged.

$ bazel-bin/textsum/seq2seq_attention \

--mode=decode \

--article_key=article \

--abstract_key=abstract \

--data_path=data/test-* \ # 如果你只是想测试依然程序是否正常,直接复制 training-0然后改名吧

--vocab_path=data/vocab \

--log_root=textsum/log_root \

--decode_dir=textsum/log_root/decode \

--beam_size=8

  如果运行成功,则其结果为:

  培训科

  $ bazel-bin/textsum/seq2seq_attention \

--mode=train \

--article_key=article \

--abstract_key=abstract \

--data_path=data/training-* \

--vocab_path=data/vocab \

--log_root=textsum/log_root \

--train_dir=textsum/log_root/train

WARNING:tensorflow:From /usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_impl.py:1346: softmax_cross_entropy_with_logits (from tensorflow.python.ops.nn_ops) is deprecated and will be removed in a future version.

Instructions for updating:

Future major versions of TensorFlow will allow gradients to flow

into the labels input on backprop by default.

See tf.nn.softmax_cross_entropy_with_logits_v2.

<p>

" />

WARNING:tensorflow:From /home/user/Videos/CWD/bazel-bin/textsum/seq2seq_attention.runfiles/__main__/textsum/seq2seq_attention.py:96: __init__ (from tensorflow.python.training.supervisor) is deprecated and will be removed in a future version.

Instructions for updating:

Please switch to tf.train.MonitoredTrainingSession

2018-03-19 13:55:43.347757: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

running_avg_loss: 9.001080

running_avg_loss: 8.945733

...

吃个饭回来

...

running_avg_loss: 0.000241

running_avg_loss: 0.000298</p>

  评估部分(验证)。

  $ bazel-bin/textsum/seq2seq_attention \

--mode=eval \

--article_key=article \

--abstract_key=abstract \

--data_path=data/validation-* \

--vocab_path=data/vocab \

--log_root=textsum/log_root \

--eval_dir=textsum/log_root/eval

running_avg_loss: 0.000611

running_avg_loss: 0.000951

running_avg_loss: 0.000459

running_avg_loss: 0.000200

...

  预测部分(测试)输出部分

  输出结果会在

Yonv_CWD/textsum/log_root/decode 文件夹中看到

user@debian:~/Videos/Yonv_CWD/textsum/log_root/decode$ zsh

➜ decode ls

decode1521440441 ref1521445096

➜ decode ls -al

总用量 1360

drwxr-xr-x 2 user user 4096 3月 19 22:31 .

drwxr-xr-x 5 user user 4096 3月 19 17:50 ..

-rw-r--r-- 1 user user 0 3月 19 14:20 decode1521440441

-rw-r--r-- 1 user user 647350 3月 19 17:50 decode1521445096

-rw-r--r-- 1 user user 0 3月 19 14:20 ref1521440441

-rw-r--r-- 1 user user 729342 3月 19 17:50 ref1521445096

  如您所见,如果运行失败,即使输出文件,它也将为空

  这

  打开后文件的成功输出如下所示

  由于数据集很小,输出只能是这样的

  output=czechs outdrink germans in beer-guzzling stakes .

output=mexican financial markets end turbulent week .

output=abb to sell electrical explosion-proof equipment business .

output=mexican financial markets end turbulent week .

output=moslem rights group wants narcotic khat legalised .

output=abb to sell electrical explosion-proof equipment business .

output=mexican financial markets end turbulent week .

output=croatians vote in three constituencies .

  如果你没有成功输出,那么你可以看看下面的“错误处理”

  3.3 错误处理

  如果您在运行时遇到类似的错误,那是因为您的词汇格式不正确,它应该在其中,您需要 17832:

  Bad line:

...

assert vocab.CheckVocab(data.SENTENCE_START) > 0

  如果在运行时遇到类似错误,这是因为数据集 training-0 的格式错误,需要 17832:

  Exception in thread Thread-24809:

...

DecodeError: Error parsing message

...

MemoryError

  如果你得到

  运行时出现类似的错误,忽略它,没关系,相反,如果你改state_is_tuple=False,那么当TensorFlow版本大于1.0时,你会得到一个错误:

  ...

state_is_tuple=False

...

  如果在操作过程中报告错误,则类似于(出现大型多维数组):

  ValueError: Could not flatten dictionary. Key had 2 elements, but value had 1 elements. Key: [, ], value: [array([[[ 2.723167 , -1.924321 , -0.09930453, ..., -0.57662404,

-1.633333 , 5.6171 ],

[ 2.723167 , -1.924321 , -0.09930453, ..., -0.57662404,

-1.633333 , 5.6171 ],

[ 2.723167 , -1.924321 , -0.09930453, ..., -0.57662404,

-1.633333 , 5.6171 ],

...,

...,

[ 2.723167 , -1.924321 , -0.09930453, ..., -0.57662404,

-1.633333 , 5.6171 ],

[ 2.723167 , -1.924321 , -0.09930453, ..., -0.57662404,

-1.633333 , 5.6171 ],

[ 2.723167 , -1.924321 , -0.09930453, ..., -0.57662404,

-1.633333 , 5.6171 ]]], dtype=float32)].

  然后是因为TensorFlow 1.0>= 的兼容性问题

  只需更改 [

  state_is_tuple=True] 在seq2seq_attention_model.py文件中回到 [state_is_tuple=False]](但是,许多人需要将其更改回来,因为他们想解决另一个以前的错误并更改此文件(并将其更改回来))。

  yONV_CWD/textsum/seq2seq_attention_model.py

# replace [state_is_tuple=False] as [state_is_tuple=True]

  他们 ↓ 也遇到了这个问题,ctrl+f[fix] 可以通过将文件中的 [state_is_tuple=True] 改回 [state_is_tuple=False] 在一行上找到解决方案。

  #TextSum# - 运行解码时出错:无法展平字典。键有 2 个元素,但值有 1 个元素 ·问题 #417 ·张量流/模型

  解决方案:2021年还能用的13款完全免费的Office插件整理(含功能详细介绍)

  本文收录

大量大图,知乎无法左右滚动查看,可以查看原文以获得更好的阅读体验⚠️

  前不久在PS/PR/AE插件合集一文下留言区许诺,采集

整理Office相关插件

  结果阿旭花了几天时间才搞定——前后采集

了二十多个外挂!过滤后有10多个型号

  插件非常多,每个插件收录

的功能也很多(尤其是Excel插件,通常有上百个功能),每个插件之间都会有重叠的功能。

  综上所述,一篇文章肯定无法完整介绍

  好在每个插件的作者基本上都在官网上做了详细的介绍。以下只是一个“简单”的介绍。如果觉得不错可以去官网了解更多

  这篇文章真的有点无聊,不过也是干货。作为文员的各位还是真心推荐大家可以使用外挂,提升一下自己的武装。

  ▍1个Word插件

  让我们先从 Word 开始。其实今天Word的很*敏*感*词*都可以直接实现,所以相应的插件功能一般都不多。

  ● 1.1 小恐龙官方文档排版助手

  官网下载地址&amp;安装教程:/

  这是原文档排版文章中推荐的一款插件,是一款完全免费的Word/WPS排版插件:

  轻松帮您解决各种文档排版问题,如轻松实现每页行数、每行字数等要求

  除了以上,它还可以帮你删除所有空行,删除所有回车,删除表头横线/重排换行/中英文加空格/换行转回车/中英文标点转换/快速插入公文红头、红线、印记线、装订线、页码(中、右、外)、公文格式日期、公文常用符号等。

  ● 1.2 Word必备工具箱

  原新浪博主ahzll开发的Word插件是一款不可多得的完全免费的Word插件

  官网下载地址:/HELP/PAGE/blog_5488e3a90100u8ux.html

  Word中的运行界面如下图,大致会为Word添加四类功能

  各功能如上图所示:一键转换成规范文件号年份的中(英)标点符号/方括号……等众*敏*感*词*

  支持穷举法解密“受保护文档”密码/支持VBA工程加解密/去除2003-2010版Word“受保护文档”密码/查看无密码VBA工程/获取受保护文档内容

  ● 1.3 mOffice for Word

  官方网站: /

  插件安装后的界面截图如下,各个功能的作用基本一目了然:

  不过这款插件“未注册版对批量处理数据量有限制”。如果批处理功能用的不多,基本不影响插件的使用

  ▍2 Excel插件

  一个好的Excel插件可以提高不少于1-2年工作经验的相关从业者的工作效率

  基本上,一个 Excel 加载项收录

一两百个功能增强

  ● 2.1 Excel必备工具箱

  官方网站: /

  上面介绍的Excel Essential Toolbox和Word Essential Toolbox是同一个作者啊zll

  本插件分为“免费版”和“付费版全功能版”,但其实免费版下面已经有很*敏*感*词*了!

  具体的四舍五入、折算成千元、数文转换、财税子功能如下:

  ▲点击查看大图

  其他功能如下:

  ▲点击查看大图

  下面将以上述形式介绍Excel插件。其实也没办法。毕竟这种插件的功能太多了。

  ● 2.2方格

  

" />

  官网:/home/products.aspx

  这是一个带有方格正方形的特殊版本

  一款非常知名的Excel插件,大部分功能免费使用,部分功能需要VIP(也可以选择一次性终身付费)

  高级文本处理、数值输入、分组、数据分析、工作表、图像识别等子功能如下:

  ▲点击查看大图

  只有DIY工具箱中的部分功能需要按量使用,比如手机三元实名认证、银行卡查询、IP归属查询、文字识别……

  具体子功能如下:

  有关更多付费功能,请参见下文:

  ● 2.3 Excel催化剂

  下载地址见笔者在语雀上的帮助文档:Excel Catalyst Document语雀

  目前Excel Catalyst所有功能完全免费使用,只有部分视频教程需要付费

  笔者采用这种模式的原因是:这款插件比较专业,但是功能确实强大

  但你不必购买付费视频教程,作者在语雀上提供了120多个图文教程!

  快捷操作栏的子功能如下:

  ▲点击查看大图

  图像相关的子函数如下:

  ▲点击查看大图

  数据采集​​、查询、处理、分析子功能如下:

  ▲点击查看大图 ● 2.4 Excel好用宝

  官方网站: /

  首次使用时,需免费激活软件后方可使用。激活一次可以使用3个月,3个月后需要再次免费激活(如此循环)

  部分具体子功能截图如下:

  ▲点击放大 ● 2.5 Excel向导

  官方网站:/eling.htm

  本插件收录

240多个功能,但也属于大部分免费,少数功能付费的模式:

  第一部分的功能如下:

  ▲点击查看大图

  少数标有★的功能需要注册后付费,如下图:

  ▲点击查看大图

  还有下面这张图:

  ▲点击放大● 2.6 智慧办公&amp;智慧办公

  官方网站: /

  未注册版对批处理数据量有限制,其他功能免费使用:

  部分子功能如下:

  

" />

  ▲点击查看大图

  本软件还有一个姊妹软件“智能办公”:/q.php

  提供了很多批处理功能,但是一样,未注册版对批处理数据量有限制

  ▍3个PPT插件

  PPT是一款面向设计的软件。插件更多的是提供模板或者素材。当然,也有倾向于增强PPT设计功能的插件。大家可以根据自己的能力来选择。

  ● 3.1 一键工具

  官网:oktools.xyz/

  OneKeyTools,简称OK插件,是一款完全免费开源的第三方PPT插件。其功能涵盖形状、颜色、3D、图像处理、演示辅助、表格处理、音频处理等。

  该功能是为了增强PPT本身的各种编辑设计功能

  显然这个插件对于PPT初学者和新手来说并不友好,不过作者在官网提供了相关的学习视频,大家可以自行寻找学习

  ● 3.2 Lvyh工具

  官网:/yhtools/

  本插件完全免费,收录

PPT转Word、字体采集

、字体导出、顶点编辑、线条编辑、形状编辑、位置分配等功能,但仅限于PPT上使用

  部分功能的具体子功能如下:

  ▲点击查看大图 ● 3.3 PA袖珍*敏*感*词*(原PPT美化大师)

  官方网站: /

  从插件的名字不难看出这款插件更偏向于PPT*敏*感*词*制作。它收录

大量的*敏*感*词*、过渡和材质模板。还可以一键快速生成很多流行的PPT*敏*感*词*(比如抖音Flash等PPT)。

  大部分资料免费提供或登录后即可使用,部分资料需要VIP(当前会员6个月/69年)

  可以选择整体页面偏向小白的盒子版

  还有一个更偏向于自行设计的专业版:

  ● 3.4 iSlide

  iSlide是一款非常知名的PPT插件,官网地址:/download

  这个插件比较卖点的是它丰富的模板库和素材库。

  除去上图右上角的素材库,这些功能还是免费的:

  素材库中只有插画库和图标库免费,95%的案例库、主题模板库、图标库、图表库、图片库需要VIP会员

  不过在淘宝上搜索“iSlide”,价格从低到高排序,就可以买到超便宜的优惠券

  ▍4个其他插件

  PPT精灵只支持从PPT2007到2016(也支持WPS),但是功能比较少,就不介绍了。有兴趣的可以去官网看看:/PPT/Index.htm

  还有和方格的AudTool,又称审计专用版Excel工具箱,主要提供审计行业常用的功能。审核员基本都会安装这个插件,但是这个插件是收费的,免费试用期是30天。,下载地址:/home/AuditOrder.aspx

  还有微信公众号“Excel Catalyst”和“EasyShu”(原EasyChart)联合打造的EasyShu。功能(颜色主题、位置校准、多图神器、图表导出、颜色选择器、数据小偷、数据标签等),想要真正领略这款插件的强大,还是要付费的。有关详细信息,您可以访问其官方网站。:/excelcuihuajihome/helpdocument/ckw03e

  此外,阿旭还采集

了一些插件,比如Office Tab,为Office增加了类似浏览器的标签功能。

  正版Office Tab 优惠购买:Office Tab - 办公套件添加标签功能丨永久仅需89元(平台首单立减5元)

  超过300个功能的Kutools for Excel,和同一家公司的Kutools for Word,也是阿旭顺便采集

  如果您需要 Office Tab、Kutools 和 Square Grid,您可以在以下位置下载它们:单击此处

  上面介绍的插件基本支持2007-2019(含365)的Office版本,也支持WPS!

  具体是否支持Office 2020-2021请自行查看插件官网!

  如果你对我研究的更多问题感兴趣,欢迎关注我的微信~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线