nodejs作天然語言處理是很是可行的,此次我作了一些小小的嘗試,一塊兒來體驗一下吧。node
由於還保持着對天然語言處理的那份熱愛,最近沒事的時候會把畢業論文翻出來看(畢業論文的課題就是關於天然語言處理的),而後在個人新博客中加入了一些相關的處理,主要作了如下幾個方面:ajax
對每一篇文章進行快速的內容理解,根據標題和內容,輸出多個內容標籤;docker
對文章按照內容進行自動分類,爲文章聚類、文本內容分析等提供基礎;數據庫
根據文章標題、用戶自定義標籤、以及人工智能得到到的標籤,進行類似度計算;後端
在閱讀一篇文章的時候,經過類似度計算的結果,推薦相關的文章給用戶。centos
下面給出自動輸出內容標籤的結果圖:框架
運行環境:centos9 + docker異步
開發語言:nodejs網站
數據庫:MariaDB人工智能
開發框架:eggjs + nunjucks(模板引擎)
此次也是我第一次作後端渲染的博客,ajax的網站,作seo是真的很差作...
而後此次也是我第一次正兒八經的用了下阿里大佬們的eggjs,這種「洋蔥模型」的框架,我真的是超級喜歡,不論是用es7優雅地處理js異步,仍是經典的MVC,仍是框架的插件機制等等。確實是超級讚的。若是有喜歡nodejs的同志,強力推薦此框架。
推薦系統是咱們平時在用軟件,或者網站中常常會碰見的,好比資訊類的,百度feed、頭條、qq看點等;電商類的,阿里,京東等等,還有抖音什麼的,不少不少。
一個好的推薦系統能夠帶來更多的收益,but一個很差的推薦系統每每會獲得別人的吐槽。以前在脈脈看到某公司CTO收到脈脈推薦的安卓工程師的推薦職位,遭到吐槽。百度李彥宏某天由於沒有在feed收到一條重要的科技資訊信息,而吐槽自家員工。這樣的事情一般會不少。
我以爲一個好的推薦系統應該更「懂」人,假如我最近一個月前買了一部手機,我但願能給我推送一些手機配件,而不是在給我推送一部手機,這個時候我買手機配件的機率是遠遠大於在買一部手機的。如今不少推薦系統,都是經過用戶畫像,加上各類埋點,用戶操做數據,從而進行分析推送的。我以爲未必不能夠在此基礎上加上情感分析,多一個維度,或許可以獲得更準確的數據。
說了這麼多,我以爲仍是有不少瓶頸存在的😐,如今的AI就像不少年前的移動互聯網,正處於上升期。 咱們還有不少事情能夠作。
下面進入今天的真題..
此次作的文章推薦系統,分享一些細節給你們:
圖中右側部分就是咱們這個文章推送系統的推送結果,咱們用不一樣的顏色標註了這篇文章和當前正在瀏覽的文章的關聯度,顏色越深表示關聯度越高,置信度越高,權重越大。
這個推薦系統中主要使用了上面所說的第三點:類似度計算;使用的數學模型爲空間向量模型,空間向量模型可以將非結構化的文本數據轉換成向量形式,表示成向量形式以後能爲以後的處理過程打下良好的數學基礎。
空間向量模型,幫助咱們把每篇文檔轉化爲一個多維的空間向量形式:
其中,向量 W1i表示第一個詞佔文檔 Ci的比重,向量 W2i表示第二個詞佔文檔 Ci的比重,依次類推,向量 Wti表示第 t 個詞佔文檔 Ci的比重。
那麼兩篇文章的類似度,咱們就能夠計算他們對應向量的夾角餘弦值來進行計算:
兩個文檔的餘弦值越接近 1,這兩個文檔則越類似。
下面給出計算類似度的關鍵代碼: