如何使用 Python 进行 NLP 和语义 SEO
如今,SEO 正在见证语义 SEO 、自然语言处理 (NLP) 和编程语言等概念的兴起。说到这些,Python 对优化和工作时可能想要执行的大多数无聊任务有很大帮助。别担心,编码一开始看起来很艰巨,但由于一些专门的库,它比你想象的要简单得多。
我们已经讨论过语义搜索以及主题权威,与通常的 Excel 工作流程相比,Python 是探索新见解和进行更快计算的良好解决方案。
众所周知,谷歌高度依赖 NLP 来检索结果,这也是我们感兴趣探索 谷歌自然语言 以获取更多关于如何改进内容的线索的主要原因。
在这篇文章中我澄清一下:
你可以用 Python 执行的主要语义 SEO 任务
如何实现它们的代码片段
简短的实际示例帮助您入门
背后的用例和动机
盲目复制粘贴代码进行决策的陷阱和陷阱
请注意,本教程旨在向非技术受众展示如何利用 Python。因此,我们不会详细介绍每种技术,因为这会很耗时。
列出的示例只是您可以在编程语言中实现的众多技术的一部分。我只是列出了我认为与刚入门并对 SEO 感兴趣的人最相关的内容。
目的是说明将 Python 添加到工作流程中以
获得语义 SEO 任务优势的好处,例如提取实体、分析句子或优化内容。
参与度指标 WhatsApp 号码 约旦 WhatsApp 号码 是衡量客户互动和满意度的关键工具通过 chetdata 提供的精准号码企业可以有效收集反馈和提高参与度使用这些号码您能更好地了解客户需求优化沟通策略从而增强客户关系和品牌忠诚度。
不需要特 弗利和切塞纳谷歌关键词分析别的 Python 知识,最多可以排除一些基本概念。示例将在此 Google Colab 链接 中显示,因为它易于使用且可立即使用。
Python 中的 NLP 和语义 SEO 任务
你可以学习多 RU 號碼列表 种编程语言,但 Javascript 和 Python 最适合 SEO 专家。有些人可能会问,为什么我们选择 Python 而不是 R,后者是数据科学的流行替代品。
主要原因在于 SEO 社区,他们更喜欢 Python,它是编写脚本、自动化和 NLP 任务的理想语言。你可以选择任何你喜欢的语言,尽管我们在本教程中只展示 Python。
命名实体识别 (NER)
SEO 最重要的概念之一是识别文本中的实体的能力 ,即命名实体识别 (NER)。你可能会问自己,如果 Google 已经做到了,为什么还要关心这项技术。
这里的想法是获取给定页面上最常见的实体,以便了解您应该在自己的文本中包含什么内容。
您可以使用 spaCy 或 Google NLP API 来完成此任务。两者各有优缺点,但在本例中,您将看到 spaCy,这是一个非常流行的 NLP 库,非常适合 NER。
复制
导入 spacy
从 spacy 导入 displacy
#加载英语管道
nlp=spacy.load(‘en_core_web_sm’)
text = ‘微软于 1 月 18 日以 687 亿美元收购了 Activision’
t = nlp(text)
#让我们在笔记本中可视化实体
displacy.render(t,style=”ent”,jupyter=True)
正如您在笔记本中看到的,您的文本现在已标有
实体,这对于了解您的竞争对手正在使用的内容非常有用。理想情况下,您可以将其与抓取相结合,以提取文本中有意义的部分并列出所有实体。
这也可以扩展到整个 SERP,以获取最有用的实体并了解要包含在您的副本中的内容。但是,还有另一个有用的应用程序,您可以抓取维基百科页面以获取实体列表,然后根据您找到的内容创建主题图。
它与较长的维基百科页面和英语市场配合得很好,我也用其他语言测试过它,但通常维基百科不那么完整。
NER 是一种具有有趣应用的基本技术,我可以保证,如果使用得当,它将改变游戏规则。非常适合那些您不知道在介绍中要放哪些实体而需要找出它们的情况,或者用于规划 主题图的情况。
词性标注(POS 标注)
语义 SEO 对句子中词语的词性特别感兴趣。有些人可能已经猜到了,单词的
位置可以在提取实体时改变其重要性。
在分析竞争对手或您自己的网站以了解精选摘要的定义结构或更详细地了解理想的句子顺序时, POS 标记非常方便。Python 以 spaCy 库的形式为这项任务提供了强大的支持,它是您大多数 NLP 任务的最佳帮手。
总而言之,POS 标记是一个强大的想法,可以帮助您了解如何根据现有材料或其他人的做法来改进您的句子。
复制
displacy.render(t,style =“dep”,jupyter = True)
查询知识图谱
正如在另一篇关于知识图谱的文章中讨论的那样,您应该熟悉实体和建立连接。说到这一点,知道如何查询 Google 的知识图谱非常有用 ,而且非常简单。
advertools 库提供了一个简单的函数,让你可以通过输入 API 密钥来实现这一点。结果是一个数据框,其中包含一些与你的查询相关的实体(如果有)以及你不必解释的置信度分数。
这里有用的教训是获取定义和相关实体(如果有)。知识图谱是一个存储实体及其关系的大型数据库,它是 Google 理解连接的方式,也是语义 SEO 的根源。事实上,这是 在长期战略中实现主题权威的先决条件之一。
有时仅有知识图谱是不够的,这就是为什么我要向您展示另一个可以成对使用且效果很好的 API。
复制
%%capture
!pip install advertools
from advertools import knowledge_graph
import pandas as pd
#增加列宽以获得更好的可视化效果
pd.set_option(‘display.max_colwidth’, 300)
key = ‘在此处插入您的密钥’
kg_df = knowledge_graph(key=key,query=”cat”,languages=’en’)
kg_df.head()
查询 Google Trends(非官方)API
Google 趋势可以作为内容策略的一部分,用于发现新趋势或评估是否值得讨论您不太确定的某个主题。假设您想用新想法扩展内容网络,但又不确定,Google 趋势可以帮助您做出决定。
虽然没有官方的 Google API,但我们可以使用非官方的 API 来满足我们的需求。这里的关键是给出一个关键字列表,选择一个时间范围并选择一个位置。
热门和上升关键词对于我们了解内容策略的需求非常有用。上升是指您必须密切关注的新趋势和查询,有时您可以找到黄金机会,尤其是如果您的重点是新闻 SEO。
相反,热门关键词随着时间的推移更加一致和稳定,大多数情况下它们会为您提供有关主题图的提示。
如果您也在电子商务领域工作,由于季节性销售,我建议您使用此 API。Google Trends 对于新闻和季节性内容具有巨大优势,API 只会为您带来更好的体验。
复制
%%capture
!pip 安装 pytrends
从 pytrends.request 导入 TrendReq
pytrends = TrendReq()
kw_list=[‘SEO’, ‘marketing’, ‘Python’, ‘Linguistics’]
#您可以更改时间范围和位置
pytrends.build_payload(kw_list, timeframe=’today 1-m’, geo=’US’)
主题建模(潜在狄利克雷分配 – LDA)
NLP 最有趣的应用之一是主题建模,即从一组单词中识别主题。这是一种查看大型页面讨论内容以及是否可以发现子主题的好方法。可以在整个网站上运行此算法,尽管这会导致计算量过大,并且超出了本教程的范围。
我向您展示了一个通过 Bertopic 库实现的 LDA 算法的简短示例,以简化我们的工作流程:
复制
%%capture
!pip install bertopic
从 bertopic 导入 BERTopic
从 sklearn.datasets 导入 fetch_20newsgroups
#下载示例数据集只是为了向您展示如何完成
docs = fetch_20newsgroups(subset=’all’, remove=(‘headers’, ‘footers’, ‘quotes’))[‘data’]
topic_model = BERTopic()
Topics, probs = topic_model.fit_transform(docs)
主题建模是一种非常被低估的方法,用于评估内容网络甚至给定网站的某些部分,这就是为什么你应该花相当多的时间深入研究 LDA!
总而言之,LDA 是判断整个网站或其中某些部分的一种方式。因此,如
果您有足够的计算能力,它可以被视为一种了解您所在领域竞争对手内容的方法。
N 元语法
n-gram 可以被认为是单词、音节或字母的连续序列。我将向您展示如何在 Python 中从语料库创建 n-gram,但不会详细介绍。因此,我们的单位将是单词,因为我们想知道语料库中哪些单词组合最常见。
基于两个单词的 N-gram 称为二元词组(如果是三个单词则称为三元词组),依此类推。您可以查看 Colab 笔记本以了解我们想要获得的内容。
复制
导入 pandas 作为 pd
导入 nltk
# 冠词或连词等停用词是无用的,并且会给模型带来噪音
nltk.download(‘stopwords’)
从 nltk.corpus 导入停用词
从 sklearn.feature_extraction.text 导入 CountVectorizer
从 sklearn.datasets 导入 fetch_20newsgroups
twenty_train = fetch_20newsgroups(子集=’all’)
停用词表 = stopwords.words(’english’)
c_vec = CountVectorizer(stop_words=stoplist, ngram_range=(2,2))
# ngrams 矩阵
ngrams = c_vec.fit_transform(twenty_train.data[:100])
count_values = ngrams.toarray().sum(axis=0)
df_ngram = pd.DataFrame(sorted([(count_values[i],k) for k,i in c_vec.vocabulary_.items()], reverse=True)
).rename(columns={0: ‘频率’, 1:’双字母组合’})
df_ngram.head()
现在,您已经清楚了解了文本中最常见的组合,并且已准备好优化内容。您也可以尝试不同的组合,例如 4-gram 或 5-gram。由于 Google 依赖于基于短语的索引,因此在谈论Onpage SEO时,考虑句子而不是关键字更有益。
这也是为什么你不应该考虑单个关键词,而应该考虑你的文本应该适合人类读者的原因。还有什么比优化整个句子而不是某些术语更好的呢?
N-gram 是 NLP 中反复出现的概念,这是有原因的。使用一些页面测
试脚本并测试不同的组合,这里的目标是找到有价值的信息。
文本生成
当前的 SEO 热点围绕生成内容,有很多在线工具可让您自动创建文本。实际上这并不像看起来那么容易,而且材料在发布之前仍需要修复。
Python 能够生成内容甚至是简短的片段,但如果您想要简单的方法,强烈建议依靠工具。
我将向您展示一个使用 openAI 库的简单示例,有关如何创建帐户的步骤在 Google Colab 中。
如您所见,这里的代码非常简单,没有什么特别需要评论的。您可能想尝试一些参数来检查结果的差异,但如果您想生成内容,有一些服务不需要编码。
事实上,您需要为使用 Open AI 付费,因此如果您想完成工作,选择其他付费服务更合适。
聚类
这是 SEO 中一个非常有用的应用程序,也是为您的工作流程增加价值的最重要的技术之一。如果您时间紧迫,请先关注这一点,因为它对于电子商务来说非常强大,并且对于发现新产品类别来说是一个天赐之物。
聚类会将某些东西分组,以突出显示您通常无法看到的东西。这是一套强大的技术,但要用它们产生有意义的结果并不容易。因此,我将提供一个简单的示例,旨在展示一种算法的代码以及错误应用它的潜在缺点。
内容聚类 是一个绝对需要不同的教程才能使用的主题,因为获取一些概念相当棘手。
您可以使用 Simlarweb 排名跟踪数据或 Google Search Console 数据,这完全无关紧要。重要的是,即使您对网站一无所知,您也可以节省时间并获得新的见解。
网上有大量的 Python 脚本、笔记本甚至 Streamlit 应用程序,本节仅教您基础知识。
复制
从 sklearn.cluster 导入 DBSCAN
#这次获取更多行!
X = vectorizer.fit_transform(twenty_train.data[:10000])
clustering = DBSCAN().fit(X)
clusters = clustering.labels_.tolist()
df_new = pd.DataFrame(twenty_train.data[:10000])
#将标签(组)附加到我们的数据集,以了解哪些文本属于哪个组
df_new[‘DBSCAN_labels’]= clustering.labels_
我们可以说,当涉及到电子商务或在您的网站上寻找未开发的主题时,它是您武器库中最好的武器。很容易将聚类与主题建模混淆,因为它们都会导致类似的输出。但是,请记住,对于聚类,我们谈论的是分组关键字而不是文本,这是一个关键的区别。
对于处理类别页面的人以及试图发现新内容机
会的人来说,聚类非常有价值。这里的机会几乎是无限的,你也有几个选择,让我们深入研究一些算法:
均值
数据库扫描
使用图表
词移动距离
如果您刚刚开始,最好的建议是从 Kmeans 或 DBscan 开始。后者不需要您找到最佳集群数量,因此更适合即插即用。
使用图表是一种捕捉语义关系的方法,也是开始以知识图谱的方式思考的好方法。其他方法(如 Word Mover 的距离)也很好,但很复杂,对于简单的任务来说太费力了。
使用Python进行语义SEO的好处
Python 并不是每个人都必须掌握的,这取决于你的背景和你想成为什么样的人。语义 SEO 是你现在可以采取的最佳方法,了解一些基本的编码可以对你有很大帮助,尤其是对于学习一些概念。
有一些适合这些任务的工具可以为你节省大量时间和麻烦。尽管如此,从头开始编写代码和解决问题是令人向往的技能,随着 SEO 变得更加技术化,这些技能只会变得更有价值。
此外,您肯定需要编码来执行某些任务,因为没有可行的替代方案。
可以总结 Python 对语义 SEO 的好处如下:
更好地理解理论概念(即语言学、计算和逻辑)
实践学习算法的机会
实现原本不可能完成的任务的自动化
关于 SEO 的新见解和不同观点
上面列出的内容可以应用于任何其他编程语言,我们提到 Python 是因为它目前在 SEO 社区中最流行。
需要多长时间?
这个问题没有准确的答案,这取决于你的坚持和背景。我的建议是每天做一些小事,直到你感觉舒服为止。网上有很多很好的资源,所以没有理由不开始练习。
尽管如此,学习 Python 是一回事,学习 NLP 和语义 SEO 又是另一回事。强烈建议先了解基本理论,然后通过适当的练习来掌握它。
最有用的语义 SEO Python 库
实际上,库的数量比你想象的要多,最值得注意的是:
广告工具
spaCy
nltk
学习
变压器
查询猫
gensim
贝尔托皮克
本教程未讨论其中一些,因为它们涉及更复杂的概念,需要单独的文章。此外,几乎所有这些也用于一般的 NLP 任务。
与这些库严格相关的是网络抓取,在BeautifulSoup、Requests和Scrapy等库的支持下可以轻松完成。
结论
我们已经介绍了一些可以在 Python 中实现的最佳 NLP 技术,以提升您的语义 SEO 游戏。
SEO 专家不需要具备丰富的数据科学知识,就能理解这里提到的大部分内容。但是,您应该了解算法在高层次上的工作原理以及如何解释输出,以避免得出错误的结论!
作者照片
作者:Darrell Mordecai
Darrell 利用他对 SEO 和 Google 专利的深刻理解,为 Similarweb 创建 SEO 内容。