language-ai

文章AI伪原创,文章自动生成,NLP,自然语言技术处理,DNN语言模型,词义相似度分析。全网首个AI伪原创开源应用类项目。

点击右侧about内的链接极速体验!

代码托管在github,需要的可以自取:https://github.com/LovebuildJ/language-ai

快速开始

  1. 环境准备:JDK1.8, maven3.6+, redis
  2. application.yml 中配置百度AI的相关信息

baidu:
appid: 你的app_id
appkey: 你的app_key
secret: 你的app_secret

如何获取? 输入https://ai.baidu.com/tech/nlp_basic, 点击立即使用, 根据提示一步一步完成即可获得。

有免费调用额度, 对于个人而言已经够了。

3.启动项目, 前端页面访问 http://localhost:8080/ai,swagger文档访问http://localhost:8080/ai/doc.html

  1. 加载词库到redis中, 项目启动后, 发送post请求http://localhost:8080/ai/command/initRedis 初始化redis即可。该操作会将库清空再初始化,请悉知

请求参数格式如下:

{
"appName": "",
"params": {
"password": "你的用户名",
"username": "你的密码"
},
"sign": "",
"timestamp": "",
"version": ""
}

也可直接使用swagger执行接口初始化

测试版本未作校验, 所有参数默认为空即可。

项目截图

【词义分析】

【词义相似度计算】

【DNN语言模型计算】

【AI伪原创】

【BootstrapSwaggerUI在线文档】

【首页】



源码目录详解

language-ai
|- src/main
| |- java java源码所在目录
| |- com.chenxin
| |- auth 百度AI授权认证模块
| |- base 基础公共抽象模块
| |- config 项目所有自定义配置模块
| |- controller 这个不用多说
| |- exception 全局异常与自定义一次模块
| |- model 项目所有使用的数据模型, dto,vo,bo等
| |- service 业务模块
| |- util 工具模块
| |- auth 授权认证模块
| |- consts 常量类
| |- http http相关
| |- nlp NLP同义词库加载工具
| |- system 系统相关
| |- CommonEnum.java 统一信息处理枚举类
|
| |- AiApplication.java 主启动类
|
|- src/test/java
|- com.chenxin 相关测试代码, 经验证, 若idea版本太低将会导致该单元测试无法使用 其他自行查看源码, 不一一概述

关于词库

拓展词库

想要更加精确的计算与替换, 就需要一个很精准庞大的词库, 这个词库大家可以自己慢慢的补充完整

只需要将词库添加进文件 resource/res/word.txt, 按照格式进行添加即可, 然后调用初始化redis接口即可。

初始化redis接口/ai/command/initRedis

关于词库中词语重复问题

这个大家无需担心, 作者在此方面做了大量优化。 相同键值Key的词组,将会全部存储至redis中,以Key0,Key1的形式存储,

查询时, 会将所有相同Key的词组全部找出, 并进行去重, 然后在进行其他操作, 计算词义相似度等等。相同的Key,为了提升

查询效率, 默认取相同Key的前20组!

技术图谱

本项目集成多个NLP优秀项目, 搭配使用。 分词使用百度AI 自然语言处理技术中的词义分析技术, 词义相似度

使用HanLP项目计算同义词距离!

自然语言处理技术(百度AI提供技术支持)

  • 词义分析技术
  • 词向量表示
  • 词义相似度
  • DNN语言模型
  • 依存句法分析
  • 短文本相似度

自然语言处理(hanLP提供技术支持)

HanLP是一系列模型与算法组成的NLP工具包,目标是普及自然语言处理在生产环境中的应用。

同义词词库

  • 哈工大的同义词词林(扩展版)

技术架构

后端
  • SpringBoot, 简单配置, 快速开发
  • MyBatis , 复杂数据操作(轻量级版本无需数据库, 提高灵活性)
  • Spring Data Jpa , 简单数据操作(轻量级版本无需数据库, 提高灵活性)
  • SwaggerUI BootstrapSwaggerUI, 在线接口文档, 增强美化, 接口文档导出
  • Redis 数据存储与缓存
  • Async 异步多线程, 提升文章切割替换速度(单核cpu可能效果不太明显)
前端

本项目的页面只是简单作为测试, 后续会打造一个完整的产品网站。

  • Vue
  • ElementUI

问题与优化

  • Q: 当文本长度稍微大一点的时候,文本变脸就变得十分缓慢, 因为这涉及到将几万的词库加载到内存然后进行词义距离计算
  • A:这时候加载词库比对的思路,明显已经不适用了。因此采用高性能的redis数据库,进行词库的存储与读取,极大的提升了同义词的查找效率
  • 优点 同义词精确匹配, 替换性能提升十几倍
  • Q:只能有一组同义词, 例如 安分守己 - 循规蹈矩 和 循规蹈矩 - 安分守己。那 安分守己 - 诚实本分就添加不进词库。 初版先牺牲词库丰富性而达到高性能
  • A: 现在已优化, 自动给同名键增加后缀, 后使用redis模糊查询进行匹配 (真正的性能和效率并存)
  • Q:当文本过长,百度AI接口会抛出异常
  • A:用户端或者服务端做好文本切片的操作
  • Q: 当用户直接输入文章, 几千字如何处理?
  • A: 根据文本大小进行切片, 采用异步多线程处理, 提升程序性能
  • Q: 直接粘贴文章进行AI伪原创可能会报json注入异常
  • A: 建议去掉空格, 回车等。或者换成转义字符。

关于作者

热衷于ai,分布式微服务,web应用,大数据等领域。工作室:1024代码工作室,有需求的可以联系作者哦,交流也是可以滴。

邮箱:amazingjava@163.com

其他

为什么会使用多个NLP项目, 原因是因为最初是想使用百度AI将整个项目完成。 但由于百度自然语言处理API

对于普通用户调用有次数限制, 超量需要收费, 因此数据量比较大的处理将给了HanLP项目处理。将数据量较小

的分词交给百度AI处理。

  • 关于同义词库文件的位置, 不建议移动和改变, 文件夹以及名字都是。后续有时间, 再优化这个问题吧。

如何实现文章AI伪原创?的更多相关文章

  1. seo伪原创技术原理分析,php实现伪原创示例

    seo伪原创技术原理分析,php实现伪原创示例 现在seo伪原创一般采用分词引擎以及动态同义词库,模拟百度(baidu),谷歌(google)等中文切词进行伪原创,生成后的伪原创文章更准确更贴近百度和 ...

  2. PHP伪原创同义词替代代码示意

    PHP伪原创同义词替代代码示意很多网站后台都是支持PHP,虽然用同义词百度能够识别,但至少比原封不动好些,没有AI原创NLP原创度高,但也有一定的效果.下面就是PHP代码实例: <?phpreq ...

  3. zencart产品批量采集伪原创方法,再也不用担心与别人的数据重复了

    首先,请你提供与产品相关的关键词一份,至于关键词如何来,相信做SEO的你很清楚了,SEO关键词搜索工具应该很多,比如谷歌相关关键词搜索,用记事本的形式保存为每行一个关键词.采集产品的时候,我会帮你将关 ...

  4. 文章如何做伪原创 SEO大神教你几招做"原创"网站文章的心得

    想要创作出好的文章并被百度所喜欢,就非常需要SEO的优化能力,以及要对文章进行塬创或伪塬创,那么,如何做伪塬创文章?以及如何做好塬创网站文章呢?对此,本文小编就为大家带来了几招做"塬创&qu ...

  5. TDK伪原创? 对matatags的研究总结

    /public_html/includes/modules/meta_tags.php 46行:switch ($_GET['main_page']) {这里面包括自定义页面index.php?mai ...

  6. 织梦DedeCMS使用SQL批量替换文章标题内容

    在使用织梦DedeCMS的过程中,出于伪原创或者其他的原因,我们需要对文档的内容.标题.描述等等进行同义词或者其他的替换.这个就是一个简单的织梦SQL语句操作的问题,No牛网在织梦DedeCMS常用S ...

  7. 网站优化(SEO)的10大误区

    前段时间大前端也有关于SEO的文章贡献给广大读者,今日,再发一文,网站优化(SEO)的10大误区.很多新手站长初次接触SEO,感受到SEO 的无穷魅力,想要做一位优秀的SEOer,然而新手朋友在进行S ...

  8. SEO优化:WordPress发布文章主动推送到百度,加快收录保护原创

    工作实在太忙,也没时间打理网站.最近公司额外交待了一些网站 SEO 方面的优化任务让我关注(这就是啥都要会.啥都要做的苦逼运维的真实写照了...). 于是抽空看了下百度站长平台,至少看到了2个新消息: ...

  9. A标签使用javascript:伪协议

    一.前言 今天,遇到一个别人挖的坑,问题是这样的. 做了一个列表页,可以筛选数据,有很多筛条件.主要是有input复选框和<a>标签两种.如图: 其中房价的筛选条件使用<a>标 ...

随机推荐

  1. js error 错误处理

    (new) Error([message[, fileName[,lineNumber]]]) 单独定义Error()错误,函数继续进行 当像函数一样使用 Error 时 -- 如果没有 new,它将 ...

  2. let与const认识

      es2015之前 在es2015之前JavaScript并没有块级作用域这个说法,只有全局和函数级的变量,let的出现使JavaScript语言有了块级作用域 在外面访问 { var a=5; l ...

  3. shell小技巧(3)复制文件到其他主机

    复制一个文件nfsclient.sh到主机172.18.117.162的/tmp目录下 scp -P22 /tmp/nfsclient.sh  root@172.18.117.162:/tmp -P2 ...

  4. 使用HttpUrlConnection访问www.163.com遇到503问题,用设置代理加以解决

    一次我使用如下程序连接到网易,意图获取其网站的html文本: try { String urlPath = "http://www.163.com/"; URL url = new ...

  5. Java常用工具类整理

    字符数组转String package com.sunsheen.hcc.fabric.utils; /** * 字符数组工具 * @author WangSong * */ public class ...

  6. leetcode刷题-89格雷编码

    题目 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.即使有多个不同答案,你也只需要返回其中一种. 格雷编码序列 ...

  7. 2020BJDCTF

    diff: 不得不说这种题目挺有意思的,现在记录一下阶梯过程: 先登录远程,发现有两个文件: 虽然直接能卡到flag文件,但是我们是以ctf用户登录的,并不能直接打开flag文件.仔细观察diff文件 ...

  8. Mybatis-使用注解开发

    使用注解开发 [toc] 1. 面向接口编程 大家之前都学过面向对象编程,也学习过接口,但在真正的开发中,很多时候我们会选择面向接口编程 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 ...

  9. Git 沙盒模拟实战(基础篇)

    Git 沙盒模拟实战 分支 现有一个主分支 创建分支 # 创建分支 $ git branch bugFix # 切换到指定分支 $ git checkout bugFix 或者 # 创建分支,并切换到 ...

  10. HTML标签语言一览表

    <html> ● 文件声明 让浏览器知道这是 html 文件 <head> ● 开头 提供文件整体资讯 <title> ● 标题 定义文件标题,将显示于浏览顶端 & ...