hwyzw 发表于 2025-2-8 09:09:02

SEO人员如何在公司中提升话语权并高效完成长尾词挖掘与数据清洗

    前言

    说实话,如果不是为了探索和空降的SEO人的首席执行官,那么,许多SEO人员都在公司中的“脆弱团体”中。

    大多数普通的SEO人员在公司和跨部门沟通中没有太多相应的声音,并且有很多细节无法协调。

    在这样的环境中,如果Seoer想要做得好,他必须全力以赴,并尝试所有手段来完成表面上不值得一提的事情,并且不可避免地是秘密的。

    问题

    整个网络都有大规模的长尾单词开采,这是SEO和SEM必须做的事情,但是大规模的长尾词注定要带来一些数据清洁工作。在大多数情况下,清洁工作可以在Excel中完成,但也有很多情况。例如,Excel很难处理:

    这是从第三方关键字工具下载的“ drain”一词的长尾单词数据,但遇到了一个令人尴尬的问题。 “ drain”一词的根源具有同义词,但有不同的情况,因此它将导致许多无关的长尾词的开采:

    实际上,这种情况非常普遍。一个单词通常不可避免地与其他情况相混淆,例如:

    水果中的“苹果”,手机中的“苹果”和电影中的“苹果”也是同态但完全不同的单词。简单地使用根源来挖掘单词自然会导致许多非目标长尾单词。

    有许多类似的情况,因此问题是:消除未针对的长尾词是必须做的事情。在这样的SEO工作中做得很好是很自然的。老板不会帮助我们,他也无法与他人相匹配。如果这是一百万级的长尾单词数据,则将在Excel中过滤和消除,并且该项目可能会消失。

    面对如此混乱的长尾单词数据,如何使用有效的方法来过滤和过滤?

    今天的文章是一本完全基于技术的内容,但是对于不知道该怎么做的朋友,我强烈建议您全面看。有两个点:

    技术是另一种思维方式。对于不知道该怎么做的朋友,您可以看到技术人员在遇到问题时如何处理问题。

    在“互联网营销”工作中,有许多任务超出了我们的能力,但是对我们的主观计划进行全面发挥,以达到超过该职位的能力水平,这通常会带来其他好处。

    开始

    一段时间以前,我从事了一个收集项目(仅在熟人之间的法律业务)。随着收集数量的增加,“敏感单词过滤”的工作是不可避免的,涉及政治,色情,恐怖主义,广告等。必须确定这些相关词。

    目前,可以在市场上收集敏感的词汇,并且只需几份即可到达成千上万甚至更多的词汇,因为随着时间的流逝,将产生各种新的词汇。

    使用该程序来确定文章是否包含目标敏感词,例如:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre class="syl-page-code"><code>refusalWord = &apos;敏感词&apos;
targetText = &apos;内容正文&apos;
if refusalWord in target_text:print(True)</code></pre></p>
    让程序将此敏感的单词带入目标文本中进行搜索。如果可以找到它,则意味着有一个敏感的词。在这种情况下,只有一个敏感的词。如果有多个敏感单词,它也很简单。添加一个循环:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre class="syl-page-code"><code>refusalWord = [&apos;敏感词1&apos;,&apos;敏感词2&apos;,&apos;敏感词3&apos;]
targetText = &apos;内容正文&apos;
for word in refusalWord:
    if word in target_text:print(True)</code></pre></p>
    该程序将敏感的单词一个接一个地进入目标文本。如果有数百个敏感的单词,一个一个一个一个一个一个一个效率的处理效率低下,感觉并不优雅。正则表达式可以简洁地处理:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre class="syl-page-code"><code>import re
refusalWord = [&apos;敏感词1&apos;,&apos;敏感词2&apos;,&apos;敏感词3&apos;]
targetText = &apos;内容正文&apos;
if re.search(&apos;|&apos;.join(refusalWord),targetText):print(True)</code></pre></p>
    所有敏感单词都与“ |”有关形成正则表达式:“敏感单词1 |敏感的单词2 |敏感的单词3”。此表达式用于匹配目标文本并找出出现的所有敏感单词。

    但是,如果敏感的单词是数万甚至更多的呢?知道规则的朋友知道以这种方式写的表达方式似乎非常不合理,并且可能会遇到各种问题。

    此外,如果有数万甚至更敏感的单词,则效率正在线性下降,而其他工作(例如后期的替换)将使时间成本更高。

    此外,我们以前的演示只是只有1个目标文本的情况。如果敏感单词的数量是n,那m呢?在简单的双循环的情况下,时间复杂性至少为n*m。

    目前,我们今天需要使用主角:“ AC ”算法。

    PS:不了解技术的朋友不需要担心代码,他们只需要了解这是解决方案优化问题。在面对从1到n到n ++的敏感词的过程中,我们正在不断优化技术解决方案以提高效率。

    交流自动算法是一种多模匹配算法。像我们这样的非专业人员无法探索算法的聪明和深刻,但是我们仍然可以理解算法的重要性和差异。

    在上面的示例中,即使是不知道如何做技术的朋友,随着敏感词汇的继续增加,该程序的时间成本将逐渐增加,因为该程序决定文章是否包含某个单词或某些单词敏感词汇。 ,因为毫无意义的判断数量正在增加,所以这是一个单一的模型。

    AC自动机通过使用多模式匹配算法解决此问题,即随着灵敏词汇的增加,时间成本保持不变(至少在一定的数量级范围内)。

    那么,这与我们要谈论的关键字清洁有什么关系?接下来,让我们逐步演示。

    步骤1:选择代表根

    这是一个长尾词汇的“驾驶流量”,数十万,有两个长尾词,与互联网促销有关的长尾词和与医疗技术有关的长尾词。我们的目标是将这两个类别分开。

    在excel中,当面对这样的数据时,我们需要将两侧分开,即滤除目标或过滤非目标,然后消除它们,让我们首先考虑一般操作方法是什么:

    查看非目标数据,将其标记,过滤并删除所有目标,但是这些对象是数十万甚至更多。您可以想象效率。那些可以一一阅读它的人是疯子。

    选择一些高频非目标单词或单词,然后将其滤出并删除它们,然后重复重复此操作。此方法看起来很快,可以一次消除其中的大量方法。

    但是,如果您完全理解关键字的长尾效应,您将了解此方法在后期的阶段会更加痛苦,因为许多选定的单词在后期无法删除许多单词,并重复进行筛选和删除会让人们崩溃。

    此外,似乎没有更好的方法可以在Excel中处理此类问题。现在,我们将使用另一种方法来解决此问题。

    作为旧规则,首先对所有长尾单词进行分类,并计算单词频率:

    接下来,我们需要根据“常识”手动选择代表性的“分类种子根”,从上到下,我们选择与促销相关的单词“仅”单词,并将其放入文档中,并将其放置在“只有“”捡起与医疗技术有关的单词,然后将它们放入另一个文档中。

    所谓的“明显仅”,例如:“脚本”,即脚本工具,这种单词基本上不可能与医疗技术中的长尾词有任何联系,而“伤口”基本上是不可能的与互联网推广有关的任何事情。有什么关系?

    例如,所谓的“常识”通常有一些与互联网促销有关的平台名称,例如Zhihu,微信员,等,您甚至不需要考虑它们并直接写它们。

    因此,选择时,您必须确定该单词的属性是否清晰。如果含糊不清,最好不要!

    前者被认为是“正确的”,而后者被认为是“反”和“右”是我们目标长尾词的代表性根源。我们应该选择多少?相同的句子是正确的,关键字与28个原则一致。

    我们可以看到,顶根的单词频率很高。根可能涉及许多长尾词。我只为每个选择了数十万个长尾单词。

    即使长尾词的数量增加了10次,也不会选择代表性的根源。

    步骤2:扩展代表性根源

    选择这些种子单词的目的非常简单:可以将“正”的种子单词过滤掉出词汇中绝对是目标分类的长尾单词。我们选择了“微信”作为种子单词,我们认为只有在互联网促销中出现的长尾巴单词可能会出现,因此,如果您将“微信”带入词汇中,则可以滤除所有包含“微信”的长尾巴单词。这些与互联网促销有关:

    长尾巴通常具有以下特征:

    微信交通排水脚本开发

    我们通过“微信”提取了这样的长尾词。除了“驾驶”的根源,因为这个长尾词与互联网促销有关,其他根源最有可能与互联网促销有关,例如“脚本和“发展”绝对不可能与医疗技术。

    脓肿切口和排水手术

    我们获得了种子单词“手术”,并且单词分词之后的“脓肿”与促销无关。可以将它们添加到“抗”类别中,为新种子单词。

    目前,这个想法很清楚。我们首先选择一些代表性的种子单词,使用这些种子单词过滤所有相关的长尾单词,然后使用这些筛选的长尾词将关键字分词,然后使用关键字的相关性来获取更多的种子单词,我们不使用&#39;&#39;&#39; t在上一步中选择。

    所有这些种子单词都是我们以后用来对的基石。

    使用这个想法实际上解决了关键字的长尾效应问题。我们不能一一手动选择种子词,我们可以自动收集更多我们没有通过关联手动选择的种子单词。

    https://img0.baidu.com/it/u=1300971576,3574359030&fm=253&fmt=JPEG&app=138&f=JPEG?w=800&h=984

    这些种子单词可以帮助我们涵盖更多的长尾词。

    PS:这是一个示范想法。过滤绝对是程序的批处理处理,而不是在Excel上这样做。

    在此步骤中,我们必须计算出提取的种子单词的每个单词的频率并相应地保留,这将来将很有用。

    例如,我们使用“正”的种子单词来过滤所有长尾词。单词分割后所有这些长尾单词获得的所有根。这个长尾词中每个根的总词频率(这些被过滤掉)是多少。

    步骤3:过滤代表根

    在这一点上,我们实际上可以开始区分,但是有细节需要优化:

    1:通过自动扩展的第二步,将出现一个种子单词,也就是说,它以“正”和“反”形式出现,例如:“视频”。

    毫不奇怪,这个词出现在与互联网促销有关的长尾词中,但实际上,它也会出现在长尾词中,用于医疗技术中的“流量驱动”:

    对于这种情况,我们实际上可以考虑一个问题:这是事故还是正常状态,例如“视频”一词。实际上,它在双方都经常出现,所以只是不想要它,也就是说,它根本没有任何表示形式。性别。

    如果是偶然的,例如“艾滋病”,那也是神奇的。我在词库中看到了一个长尾词:

    出售艾滋病纸张测量的方法以促进排水

    除此之外,其他都是医学类型,所以这只是偶然的。与我们在第二步中保留的单词频率相比,如果一侧压倒了,则将种子单词放在哪一侧并将其直接删除在另一侧。

    如果数据不是很大,则在两侧都直接去除没有趋势的种子单词。

    根据我的经验,大多数此类事故,它们之间的频率比较是非常不同的。

    2:没有倾向,数字和字符的单词都是非倾向的,不应用作种子单词。

    其次,类似:应该,大致,是的,这些副词,辅助词,连词,模态词,疑问单词等都没有倾向。当参与单词时,根据Jieba的讲话直接消除它们。 :

    过滤之后,可以忽略单词频率数据。当然,每个“排水”一词必须具有其主要根,并且必须删除!

    步骤4:快速分类

    现在,我们将上面计算的种子单词用作关键字。实际上,这与我们上面提到的示例相同。这些种子单词等同于敏感的单词,每个要分类的长尾词都等同于目标文本内容。

    传统方法与此相似:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre class="syl-page-code"><code># 正
seed_word_r = []
# 反
seed_word_e = []
# 词库
keyword = []
for word in keyword:
    for r in seed_word_r:
      if r in word:
            pass
    for e in seed_word_e:
      if e in word:
            pass</code></pre></p>
    取出每个长尾单词,将每个种子单词与它进行比较一次,查看是否包含在内,然后判断属性分类。

    如果有n个长尾单词,则必须执行n次外循环,并且有m单词,并且每次n中包括m次,因此可以想象执行成本。

    此外,将数万甚至更多的根比比较了一个长尾词,只有大约10个单词,这注定要具有太多毫无意义的比较。

    目前,您可以使用AC自动机算法:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre class="syl-page-code"><code>import ahocorasick
# 正
seed_word_r = [&apos;种子词1&apos;,&apos;种子词2&apos;,&apos;种子词3&apos;,&apos;种子词4&apos;]
tree = ahocorasick.AhoCorasick(*seed_word_r)
print(tree.search(&apos;长尾词&apos;))</code></pre></p>
    如上所述,我们将种子单词(敏感单词)传递给AC自动机制以构建模型,然后该模型可以计算当前的长尾词(目标文本内容)是否包含模型中的某些单词,以及所有出现的单词显示。出来。

    该计算不是像上述方法那样对内部和外部周期的比较。

    因此,如果您进行上述长尾单词分类工作,则可以:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre class="syl-page-code"><code>import ahocorasick
# 正
seed_word_r = [&apos;种子词1&apos;,&apos;种子词2&apos;,&apos;种子词3&apos;,&apos;种子词4&apos;]
# 反
seed_word_e = [&apos;种子词1&apos;,&apos;种子词2&apos;,&apos;种子词3&apos;,&apos;种子词4&apos;]
# 词库
keyword = []
# 构建
tree_r = ahocorasick.AhoCorasick(*seed_word_r)
tree_e = ahocorasick.AhoCorasick(*seed_word_e)
# 遍历
for word in keyword:
    r = tree_r.search(word)
    e = tree_e.search(word)
    pass</code></pre></p>
    每次我将长尾词传递给双方,并立即发现双方都包含了长尾词。通过部分是做出针对性的判断。

    有几个可预见的结果:

    1:如果一个长尾词仅属于“正”或“反”,则非常简单,只需将其添加到相应的类别中即可。

    2:长尾词既不属于“正确”也不属于“反”,这种情况首先分为同一类别并保存。

    3:一个长尾词属于“积极”和“反”,这需要进一步的判断。让我们首先将其分为类别并保存。

    R和E都是设置的数据结构,并且归因是根据与相交和联合的长度结合的长度来判断的。

    https://img0.baidu.com/it/u=4289787481,1595069869&fm=253&fmt=JPEG&app=138&f=JPEG?w=769&h=500

    W1尚未找到归因,W2是同一时间,W3是“正”类别,这是与促销有关的长尾词,W4是“反”,而长尾词与医疗技术,我们不想要它。

    3和4中的内容将没有问题。如果偶尔出现不准确的分类,请找出不准确的词汇并追踪其种子单词。这一定是因为选择了种子词。

    只需删除代码并再次运行它,因此,当您第一次手动选择时,您必须选择一个清晰的属性,并且不应该有一个模糊的属性。

    但是我们看到W2与属于同一时间的W2相同,仍然有19m,打开它并看一下:

    有超过6W的记录无法分类(屏幕截图未完全显示,所以我懒得剪裁)。尽管我们已经将80%分类为80%,但仍然有很多6W。

    由于它们都被认为同时属于属于属性,也就是说,双方都可以匹配,因此我们可以将一个单词带到原始程序并再次运行以查看双方的匹配。

    每天流动阑尾炎转移管

    这是与医疗技术有关的长尾词。程序完成后,这个长尾词的结果是:

    正面:交通

    反向:附录,阑尾炎,转移,转移管,转移量

    这是长尾单词在种子词中命中的词,很明显,该程序没有错,因为流量一词以与促销有关的长尾词出现是正常的。

    但是这个词在医学上是相关的,我们仍然希望它可以被授予“反”奖励呢?

    我们仍然应该使用概率思维,并结合上面提到的相关性。一个长尾词很有可能属于词汇分词属于该字段之后的词汇。

    因此,我们可以在上面看到,“反”命中的种子单词数量远远超过了“正”命中的数量。这意味着它有点伪造,不能是真实或错误,因此基于这种绝对差异,我们可以直接授予更多的当事方。

    在优化了程序判断后,结果是:

    可以看出,W2已从19m下降到300+kb,W3和W4显着增加,因为已将更多的单词分类。

    您会看到W2中有10,000多件。可以为SEO或SEM人员快速整理这一数量的数据,这些SEO或SEM人员在重复操作后专门处理Excel。

    但是实际上,如果愿意,仍然可以优化这一点。 W2会有太多,原因很大一部分是精确的单词分割问题。如果您有兴趣,可以自己研究优化解决方案。

    对于尚未提及的W1:

    我故意将其剪了更长的时间。为什么这些词属于任何一方?阅读后我会理解。实际上,这些词已经超出了长尾词的范围。在删除“排水”并删除了不倾斜的单词之后,基本上没有单词。您可以做出判断。

    这个单词结构非常单身。如果您真的需要它,则可以通过在Excel中对其进行排序快速选择。

    最后,让我们放入W3和W4的数据:

    总共有15w+长尾词,这是我们需要的数据!

    总共有30w+长尾词,这是我们不需要的数据!

    交流自动机器

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre class="syl-page-code"><code># pip install ahocorasick-python
import ahocorasick
t1 = time.time()
ac = ahocorasick.AhoCorasick(*seed_word)
t2 = time.time()
rw = []
print(t2-t1)
for word in keyword:
    sw = ac.search(word)
    for i in sw:
      word = word.replace(i,&apos;***&apos;)
    rw.append(word)
t3 = time.time()
print(t3-t2)
rw = []
t1 = time.time()
for word in keyword:
    for i in seed_word:
      if i in word:
            word = word.replace(i,&apos;***&apos;)
    rw.append(word)
t2 = time.time()
print(t2-t1)</code></pre></p>
    我将第三方模块用于AC自动机,并且该算法的效率仍然不错,总共有5W词汇和50W目标文本。传统方法总共1450秒。使用AC ,需要20秒才能建造,但这是一次性,判断加上更换的时间为100秒。

    实际上,无论是种子单词关联还是AC自动机算法的想法,要给出不适当的隐喻,我们将线性问题转换为指数问题(此表达式可能是有问题的),时间成本将无法机械使用随着数据量的增加。上升。

    还有其他解决方案,例如敏感单词过滤,例如DFA。没有适合您的解决方案的标准。

    结论

    如何消除大量的非同名长尾词?我还为官方帐户提供了过去的付费文章解决方案,但它需要网络数据来支持和判断,这是完全局部化的,并且相对更经济。

    由于想到“使用种子单词出现更多种子单词”,“根据概率确定归属”的逻辑以及“ AC自动算法”有效的想法,这项工作的添加通常不超过半小时。在时间上处理数十万和数百万的时间不会大不相同,并且它真正属于程序计算的时间少于10分钟。

    尽管我们扎根大脑并使用许多策略来完成这项工作,但我们可能会为我们第一次完成它而感到自豪。

    但是实际上,就价值而言,这是一个工作问题,在外部交流时甚至不值得谈论,因为这不是特定的结果指标。

    似乎局外人这是您立场的基础,事实确实如此。

    此外,一些朋友可能会觉得与普通方法相比,数十万个单词并不比几十分钟的程序计算短得多。

    这是对的。在整个过程之后,没有步骤和解决方案是标准的。我只想传达一种工作方法。遇到许多困难问题时,会分歧您的思维并改变您的观点。实际上,可以解决许多想法。 。

    同时,与传统方法相比,对于那些知道如何进行技术的人来说,使用AC 只是编写一些不同的代码行,但好处远不止于此。学习另一种技术可以解决许多类似的问题。

    对于上述收购项目,我可以使用AC 来处理敏感单词和文章的连续添加。在下一阶段,我将在此收购项目上进行另一项工作:过滤目标字段的内容。

    在目标收集源中,并非所有内容都是我们的目标字段内容。可能有很多无关紧要的内容。当然,有必要丢弃而不是输入数据库。

    因此,有必要设计一个简单的判断逻辑,类似于建议算法标记文章以确定当前内容是否属于目标字段的方式。如果没有,它将不会收集它,并减少手动审查的工作量。这是老板和人员费用的全部钱。它是最高的。

    因此:我认为,当我默默地摆脱这些困难问题的那一刻,我似乎遭受了损失,但是在我将来的工作中,这肯定会带来更多的“复杂兴趣”。

    PS:许多正在处理长尾单词数据的朋友已经与我交谈,我不知道如何清洁它。一段时间后,我将不久地写一个一般的一台,并将其放在官方帐户上。
页: [1]
查看完整版本: SEO人员如何在公司中提升话语权并高效完成长尾词挖掘与数据清洗