文章伪原创检测(Python来自己做一个类似的工具吧!(图))

优采云 发布时间: 2021-10-04 15:40

  文章伪原创检测(Python来自己做一个类似的工具吧!(图))

  在之前的博文《如何写出高质量的伪原创文章》中,我提到了一个高质量的伪原创文章的标准,其中之一就是“在百度整句不允许出现在搜索中”。这里需要强调的是“整句是检测文章原创程度的最基本的方法。搜索引擎实际上在分析文章的内容的过程中,一个更采用复杂的方法,涉及到同义词处理、TF-IDF、TextRank、文本指纹提取和匹配等更高级的算法。在整句浮红”有足够的价值。

  在前面的文章中,我也给了原创度检测工具“优采云”。其实网上其实有很多类似的工具。除了优采云,还有Solitaire House原创度检测工具,Kirin原创度检测等,Bullfighting SEO工具也提供了类似的功能。但是根据我的测试,只有优采云的检测方法更复杂,更合理,更有价值。更复杂的算法意味着更多的资源消耗,所以优采云的原创检测需要付费,每天只有少量的免费配额。大量的原创学位测试如何进行?其实我们可以用Python自己做一个类似的工具。

  工具实现过程

  1. 以标点符号为间隔,将待检测的文本内容分成多个子句

  2. 统计每个子句的长度,去掉少于10个单词的句子。如果句子太短,检索时会出现较大的错误。

  3. 统计剩余句子数,根据结果大小随机选取部分或全部句子进行分析。这是因为如果文章太长,会用到太多的句子进行分析,会消耗过多的资源,影响效率,所以会测试采样部分。

  4. 样本句子在百度上一一搜索,将搜索结果的红色部分取出,匹配相似的句子。相似度为 90 或更高被视为匹配成功。这里的相似度算法使用了fuzzywuzzy库的算法。

  5.根据相似度匹配成功的句子数计算整个文章的原创度。匹配的相似句子越多,文章原创度越低,反之则越高。

  完整的源代码如下

  

#!/usr/bin/env python3

import requests

import re

import random

import time

from bs4 import BeautifulSoup

from fuzzywuzzy import fuzz

def split_content(content):

sep = r'。|,|?|!|“|”|:|;|…| |\n'

sentences = re.split(sep, content)

long_sentences = []

for x in sentences:

x = re.sub(r'[a-zA-Z0-9]+', '', x)

if (len(x) >= 10) and (len(x) < 20):

long_sentences.append(x)

return long_sentences

def check_origin(samples):

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en-US,en;q=0.5',

'Connection': 'keep-alive',

'Accept-Encoding': 'gzip, deflate'}

a_count = 0

for s in samples:

req = requests.get('http://www.baidu.com/s?wd=%s' % s, headers=headers)

soup = BeautifulSoup(req.text, 'html.parser')

abstracts = soup.find_all('div', 'c-abstract')

ems = []

for a in abstracts:

in_em = a.find_all('em')

ems += in_em

s_count = 0

for em in ems:

ratio = fuzz.ratio(s, em.getText())

if ratio > 90:

print('%s||%s||%s' % (ratio, em.getText(), s))

s_count += 1 if ratio > 90 else 0

if s_count >= 1:

a_count += 1

time.sleep(3)

print("原创度 %s%%" % round(100 - (a_count / len(samples) * 100), 2))

if __name__ == "__main__":

content = input('输入需要检查的文章内容')

sentences = split_content(content)

sample_num = 10 if len(sentences) >= 10 else len(sentences)

print('取 %s 个句子检测' % sample_num)

samples = random.sample(sentences, sample_num)

check_origin(sentences)

  转载请注明:云神知道行踪»Python实现文章原创度检测工具

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线