1. 程式人生 > >如何實現文章AI偽原創?

如何實現文章AI偽原創?

# language-ai 文章AI偽原創,文章自動生成,NLP,自然語言技術處理,DNN語言模型,詞義相似度分析。全網首個AI偽原創開源應用類專案。 點選右側about內的連結極速體驗! 程式碼託管在github,需要的可以自取:https://github.com/LovebuildJ/language-ai ## 快速開始 1. 環境準備:`JDK1.8`, `maven3.6+`, `redis` 2. 在 `application.yml` 中配置百度AI的相關資訊 ```yaml 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` 4. 載入詞庫到redis中, 專案啟動後, 傳送post請求`http://localhost:8080/ai/command/initRedis` 初始化redis即可。該操作會將庫清空再初始化,請悉知 請求引數格式如下: ```json { "appName": "", "params": { "password": "你的使用者名稱", "username": "你的密碼" }, "sign": "", "timestamp": "", "version": "" } ``` 也可直接使用swagger執行介面初始化 測試版本未作校驗, 所有引數預設為空即可。 ## 專案截圖 【詞義分析】 ![](https://img2020.cnblogs.com/blog/1381348/202010/1381348-20201013092747338-1443350398.png) 【詞義相似度計算】 ![](https://img2020.cnblogs.com/blog/1381348/202010/1381348-20201013092736597-1453060847.png) 【DNN語言模型計算】 ![](https://img2020.cnblogs.com/blog/1381348/202010/1381348-20201013092711001-2096396437.png) 【AI偽原創】 ![](https://img2020.cnblogs.com/blog/1381348/202010/1381348-20201013092811011-1022312306.png) 【BootstrapSwaggerUI線上文件】 ![](https://img2020.cnblogs.com/blog/1381348/202010/1381348-20201013092825121-1894758815.png) 【首頁】 ![](https://img2020.cnblogs.com/blog/1381348/202010/1381348-20201013092847572-306682594.png) --- ![](https://img2020.cnblogs.com/blog/1381348/202010/1381348-20201013092859766-2067160045.png) --- ![](https://img2020.cnblogs.com/blog/1381348/202010/1381348-20201013092907942-1831839237.png) ## 原始碼目錄詳解 ``` 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版本太低將會導致該單元測試無法使用 其他自行檢視原始碼, 不一一概述 ``` ## 關於詞庫 - 使用到的中文同義詞詞庫是哈工大的同義詞詞林(擴充套件版) - 下載地址:https://www.ltp-cloud.com/download#down_cilin - 專案自帶詞庫(csdn下載的) #### 拓展詞庫 > 想要更加精確的計算與替換, 就需要一個很精準龐大的詞庫, 這個詞庫大家可以自己慢慢的補充完整 > 只需要將詞庫新增進檔案 `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程式碼工作室,有需求的可以聯絡作者哦,交流也是可以滴。 郵箱:[email protected] ## 其他 為什麼會使用多個NLP專案, 原因是因為最初是想使用百度AI將整個專案完成。 但由於百度自然語言處理API 對於普通使用者呼叫有次數限制, 超量需要收費, 因此資料量比較大的處理將給了HanLP專案處理。將資料量較小 的分詞交給百度AI處理。 - 關於同義詞庫檔案的位置, 不建議移動和改變, 資料夾以及名字都是。後續有時間, 再優化這個問