Sitemap

我将在本专栏中展示的内容生成技术和技巧似乎来自科幻小说,但它们现在是真实的并且可以免费访问。

在我完成了编码实验并开始写这篇文章后,我思考了公开分享这些信息的积极和消极影响。

正如您将看到的,现在制作机器生成的内容相对容易,并且几代人的质量正在快速提高。

这使我得出一个悲惨的结论,即我们会看到比以前更多的垃圾邮件结果。

幸运的是,谷歌最近发布了 2019 年垃圾邮件报告,让我放心。

曾经查看过您的垃圾邮件文件夹吗?如果我们不采取措施打击搜索垃圾邮件,搜索结果可能就是这样。我们今天的帖子着眼于我们如何努力将垃圾邮件排除在 Google 的搜索结果之外 https://t.co/RA4lUoDXEF

— Google SearchLiaison (@searchliaison) 2020 年 6 月 9 日

“去年,我们发现每天发现的页面中有超过 250 亿个是垃圾页面。 (如果每一页都是书中的一页,那将是每天超过 2000 万份《战争与和平》!)

我们的努力已帮助确保超过 99% 的结果访问带来无垃圾邮件的体验。

在过去的几年中,我们发现垃圾网站的数量有所增加,这些网站包含自动生成和抓取的内容,这些内容的行为会惹恼或伤害搜索者,例如虚假按钮、压倒性广告、可疑重定向和恶意软件。这些网站通常具有欺骗性,对人们没有真正的价值。2019 年,与 2018 年相比,我们能够将此类垃圾邮件对搜索用户的影响减少 60% 以上。”

虽然谷歌每天报告的垃圾邮件页面数量惊人,但他们报告的全面抑制垃圾邮件的成功率高达 99%。

更重要的是,他们在抑制机器生成的垃圾邮件内容方面取得了令人难以置信的进步。

在本专栏中,我将用代码解释计算机如何利用 NLG 的最新进展生成内容。

我将介绍理论和一些指导方针,以使您的内容有用。

这将帮助您避免陷入谷歌和必应全天候工作以摆脱的所有网络垃圾邮件。

精简内容页面

在我关于标题和元描述生成的文章中,我分享了一种有效的技术,它依赖于汇总页面内容来生成元标记。

一旦你按照这些步骤进行操作,你就会发现它运行得非常好,甚至可以产生高质量、新颖的文本。

但是,如果页面不包含任何要总结的内容怎么办?该技术失败。

让我告诉你一个非常聪明的技巧来解决这个问题。

如果此类页面有高质量的反向链接,您可以使用锚文本和反向链接周围的文本作为总结的文本。

等待!

但为什么?

让我一路回到 1998 年,到 Google 搜索引擎的创立。

在描述他们的新搜索引擎的论文中,佩奇和布林在第 2.2 节分享了一个非常有趣的见解。

“大多数搜索引擎将链接的文本与链接所在的页面相关联。此外,我们将其与链接指向的页面相关联。这有几个优点。首先,锚点通常比页面本身提供更准确的网页描述。其次,锚点可能存在于无法被基于文本的搜索引擎索引的文档中,例如图像、程序和数据库。这使得返回实际上未被抓取的网页成为可能。”

以下是技术方案:

  1. 我们将使用新的 Bing 网站管理员工具获得反向链接和相应的锚文本。
  2. 我们将从最高质量的反向链接中抓取周围的文本。
  3. 我们将使用抓取的文本创建摘要和长篇内容。

必应网站管理员工具反向链接报告

我喜欢 BWT 的新反向链接工具的一个功能是,它不仅可以提供指向您自己网站的链接,还可以提供指向其他网站的链接。

我希望这将成为付费工具的流行免费替代品。

我导出了包含大量链接和锚点的 CSV 文件,但是当我尝试使用 Python pandas 加载它时,发现了一些格式问题。

随机锚文本可能包含逗号并导致逗号分隔文件出现问题。

我通过在 Excel 中打开文件并将其保存为 Excel 格式来解决它们。

使用 Python 抓取周围的文本

正如您在上面的屏幕截图中看到的,许多锚文本都很短。

我们可以抓取页面以获取包含它们的段落。

首先,让我们加载从 BWT 导出的报告。

import pandas as pddf = pd.read_excel("www.domain.com_ReferringPages_6_7_2020.xlsx")df.head()

我通过使用的入站链接数量查看了目标 URL。

df.groupby("Target Url").count().tail()

我从其中一个页面中提取了反向链接,以使用此代码评估这个想法。

backlinks = set(df[df["Target Url"] == "https://domain.com/example-page"]["Source Url"])

现在,让我们看看如何使用目标 URL 和反向链接来提取包含锚点的相关锚点文本。

从反向链接中获取文本

首先,让我们安装 requests-html。

!pip install requests-htmlfrom requests_html import HTMLSessionsession = HTMLSession()

为了保持代码简单,我将手动生成一个 CSS 选择器来抓取链接周围的文本。

给定页面上的链接和锚点,使用 JavaScript 或 Python 代码计算这一点并不难。

也许这对你来说是一个好主意,可以作为家庭作业尝试。

打开一个示例反向链接页面并使用 Chrome 开发人员工具,您可以右键单击感兴趣的段落并复制 CSS 选择器。

这是我使用的选择器。

with session.get(url) as r:    selector="#entry-78782 > div.asset-content.entry-content > div > p:nth-child(5)"    paragraph = r.html.find(selector, first=True)    text = paragraph.text

这是回来的文字。我将示例锚文本的文本加粗。

我们知道,教师的留任可以改善学生的学习成果,相反,教师的流失会损害学生的成绩。每年约有 16% 的教育工作者离开这个领域,我们知道很多老师,像我一样,会在头五年内离开。教师们报告说,他们离开的最大原因是缺乏自主权和发言权,以及文化问题,尤其是纪律问题。更重要的是,营业额成本高昂——每年做空的地区高达 22 亿美元。

现在,让我们进入有趣的部分!

神经文本生成

我们将使用在我之前的文章中用于生成标题和元描述的相同摘要代码,但有所不同。

我们将指定更长的长度,而不是指定比原始段落短的理想摘要长度。那会奏效吗?让我们来看看!

!pip install transformersfrom transformers import pipelinesummarizer = pipeline('summarization')generated_text = summarizer(text, min_length=150, max_length=250)print(generated_text)

我收到了这个有趣的警告。

您的 max_length 设置为 250,但您的 input_length 仅为 99。您可能会考虑手动减少 max_length,例如总结器('...',max_length = 50)

让我们看看生成的文本。

[{'summary_text': "Around 16 percent of educators leave the field every year. Teachers report that the biggest reasons they leave are lack of autonomy and voice, alongside issues of culture and discipline. Turnover is costly, shorting districts upwards of $2.2 billion a year, according to a report by the National Council of Teachers of English, the nation's largest teacher organization. The report also found that teacher retention improves outcomes for students, and conversely, that teacher turnover can harm student achievement. The study was published in the Journal of Education, published by Simon & Schuster, a division of Penguin Random House, on November 14. For more, visit www.simonandschuster.com. For confidential support, call the National Suicide Prevention Lifeline at 1-800-273-8255 or visit http://www.suicidepreventionlifeline.org/."}]

原始文本有 492 个字符,生成的文本有 835 个。

但是,看看生成的文本中出现的质量和新颖的句子。绝对,令人兴奋!

这种技术可以生成更长的文本吗?是的!

generated_text = summarizer(text, min_length=300, max_length=600)print(generated_text)[{'summary_text': "Around 16 percent of educators leave the field every year. Teachers report that the biggest reasons they leave are lack of autonomy and voice, alongside issues of culture and discipline. Turnover is costly, shorting districts upwards of $2.2 billion a year, according to a report by the National Council of Teachers of English, the nation's largest teacher organization. The report also found that teacher retention improves outcomes for students, and conversely, that teacher turnover can harm student achievement. The study was published in the Journal of Education, published by Simon & Schuster, a division of Penguin Random House, on November 14. For more, visit www.simonandschuster.com. For confidential support, call the National Suicide Prevention Lifeline at 1-800-273-8255 or visitxa0http://www.suicidepreventionlifeline.org/. For support in the U.S., call the Samaritans on 08457 90 90 90 or visit a local Samaritans branch, see www.samaritans.org for details. In the UK, contact the National College of Education on 0300 123 90 90, orxa0 visitxa0the Samaritansxa0in the UK. For help in the United States, callxa0thexa0National Suicide Prevention Line on 1xa0800xa0273xa08255,xa0orxa0inxa0the UK on 0800xa0123xa09255. For support on suicide matters in thexa0U.S. call thexa0Nationalxa0Collegexa0of Education,xa0Englandxa0on 08457xa090 90 90. For information on suicide prevention in the UK andxa0Europe, visit the Nationalxa0College of England and Wales."}]

这个生成的文本有 1,420 个字符并保持逻辑流!

推动这项技术的野兽是来自 Facebook 的名为 BART 的模型。

该论文的作者将其描述为 BERT 的一种广义形式。

让我们看看这是如何工作的。

神经文本生成的工作原理

你是否参加过能力倾向或智商测试,你会看到一系列数字,你需要猜测下一个数字吗?

本质上,当我们提供一些初始文本并要求我们的模型预测接下来会发生什么时,这就是我们的模型在上面所做的。

它将我们的初始文本变成了一个数字序列,猜测下一个数字,并获取包含猜测数字的新序列,并再次重复相同的过程。

这一直持续到达到我们指定的长度限制。

现在,这些不仅仅是常规数字,而是向量,更具体地说(在 BERT 和 BART 的情况下)双向词嵌入。

我在深度学习文章第 1 部分和第 2 部分中使用 GPS 类比解释了向量和双向词嵌入。请务必检查它们。

总之,嵌入编码了关于它们所代表的单词的丰富信息,这极大地提高了预测的质量。

因此,这是一个如何工作的示例。

给定文本:“对于 SEO 执行重复性任务的最佳编程语言是 ____,而对于 SEO 进行前端审计的最佳编程语言是 ____”,我们要求模型完成句子。

第一步是将单词转换为数字/嵌入,其中每个嵌入标识上下文中的单词。

然后,把它变成一个计算机可以解决的难题,以找出可以填补给定上下文空白的数字/嵌入。

可以解决这些类型难题的算法称为语言模型。

语言模型类似于英语或任何其他语言的语法规则。

例如,如果文本是一个问题,它必须以问号结尾。

不同之处在于所有单词和符号都由数字/嵌入表示。

现在,有趣的是,在深度学习(我们在这里使用的)中,您不需要手动创建一大堆语法规则。

该模型通过有效的反复试验来凭经验学习规则。

这是在所谓的预训练阶段完成的,在这个阶段,模型在海量数据上进行了几天的训练,并使用了非常强大的硬件。

对我们来说最好的部分是这些努力的结果可以免费供任何人使用。

我们真的不是很幸运吗?

BERT 是语言模型的一个例子,GPT-2 和 BART 也是如此。

如何永远使用它

正如我上面提到的,这些东西真的很强大,可以用来以相对便宜的方式大规模生产无用的内容。

我个人不想在搜索时浪费时间在垃圾中涉水。

随着时间的推移,我开始意识到,为了让内容在搜索中发挥作用,它需要:

  • 有用。
  • 满足真正的需要。

如果没有,无论是计算机还是人工制造的,都不会得到最终用户的任何参与或验证。

排名和表现的机会非常低。

这就是为什么我更喜欢总结和翻译或问答等技术,在这些技术中你可以更好地控制生成。

他们可以帮助您确保您正在增加新的价值。

社区项目和学习资源

我试图让这篇文章的代码和解释尽可能简单,以让社区中更多的人参与其中。

但是,如果你更倾向于技术,我想你会喜欢这个更细化和数学化的主题解释。

确保还遵循上面链接文章中“进一步阅读部分”中的链接。

现在,有一些令人兴奋的消息。

我要求社区分享他们正在从事的 Python 项目。我期待着可能有一把,我完全被我回来的数量所震撼。 #不要等待🐍🔥

这个是 Python 和 JS,但无论如何我都会把它放在那里!用于在 Google 地图上清除垃圾邮件的 Chrome 扩展程序。服务器代码在 Python 中,并且确实解决了验证和分类问题。 pic.twitter.com/Rvzfr5ku4N

— zchtodd (@zchtodd) 2020 年 6 月 8 日

1.Python 中的 RPA 可自动执行重复截图 https://t.co/zyaafY0bcd
2.搜索控制台 API + NLP 检查元标题中的单词与访问者使用的查询不匹配的页面:https://t.co/KsYGds7w1r

- 迈克尔范登雷姆 (@vdrweb) 2020 年 6 月 8 日

3.使用搜索控制台 API https://t.co/qX0FxSoqgN 使用搜索控制台印象检查所有 url 的状态代码

- 迈克尔范登雷姆 (@vdrweb) 2020 年 6 月 8 日

嗨哈姆雷特!

我正在开发具有模糊匹配功能的重定向检查器。

将会有一个@GoogleColab 笔记本,但理想情况下,我还想在@streamlit 中进行部署,这样人们就可以通过拖放操作一键评估他们的重定向质量。

我会尽快分享🙂

——查理·沃尼 (@DataChaz) 2020 年 6 月 9 日

@hamletbatista https://t.co/oPt5M393Lu
使用@streamlit 处理此问题
编写更引人注目的元标题。
解说视频:https://t.co/YvVoFMQ4FS

— Anubhav Bittoo Narula (@anubhavn22) 2020 年 6 月 9 日

Scrapear redes sociales y pasarlo por npl o Red neuronal para saber el sentimiento del escrito y de ahí sacar gráficas con datastudio o kibana (perdona que responda en español pero mi inglés es bastante mejorable)

— JaviLázaro (@JaviLazaroSEO) 2020 年 6 月 8 日

1.读取日志文件并实时发布 5xx/4xx 到 slack !
2.关键字意图与网址匹配分数。

——维纳斯卡拉 (@venuskalra) 2020 年 6 月 9 日

https://t.co/9we85HXJgJ

- Marat Gaziev (@MaratGaziev) 2020 年 6 月 9 日

我正在为#SEO 和在线营销人员构建一个软件包,其中包括:
– 履带式
– robots.txt 测试器
- SERP检查器
– 站点地图到 DataFrame 转换器
– URL 到 DataFrame 转换器

还有更多🙂 https://t.co/BMVeeQaTxE

— 埃利亚斯·达巴斯 (@eliasdabbas) 2020 年 6 月 9 日

使用 Beautiful Soup + Knowledge box API + Cloud Entity API 进行一些内容分析!🐍🐍🐍

— 杰西,但 6 英尺外 (@jessthebp) 2020 年 6 月 8 日

更多资源:


图片来源

作者截取的所有屏幕截图,2020 年 6 月

所有类别: 博客