用程序?qū)⒁惶斓那岸宋恼掳搓P(guān)鍵字分類

在這個(gè)信息爆炸的時(shí)代,每天都會(huì)產(chǎn)生大量的信息。那如何快速的知道,某個(gè)行業(yè)今天大概發(fā)生了什么,以及找到自己感興趣的呢?

實(shí)現(xiàn)思路

  1. 獲得一天的行業(yè)信息。
  2. 提取信息的關(guān)鍵字。關(guān)鍵字能大體信息的主要內(nèi)容。
  3. 列出關(guān)鍵字,將信息按關(guān)鍵字進(jìn)行分類??搓P(guān)鍵字能大概知道某個(gè)行業(yè)發(fā)生了什么,可以看感興趣的關(guān)鍵字分類下的內(nèi)容。

以前端為例,我的做法是,

  1. 抓取 掘金網(wǎng) 最新的50條前端的數(shù)據(jù)。這邊只是示例,如果要獲得更多的信息可以從多個(gè)源抓更多條的數(shù)據(jù)。
  2. 從每條信息的標(biāo)題中提取關(guān)鍵字。也可以從正文去提取。
  3. 列出關(guān)鍵字,將信息按關(guān)鍵字進(jìn)行分類。

程序具體實(shí)現(xiàn)

我是用 Node.js 來實(shí)現(xiàn)的。具體如下:

1 抓取數(shù)據(jù)
通過在掘金網(wǎng)上的操作,配合瀏覽器的開發(fā)者工具,可以知道,通過的接口(接口地址: https://timeline-merger-ms.juejin.im/v1/get_entry_by_timeline?src=web&limit=50&type=post&category=5562b415e4b00c57d9b94ac8),可以拿到最近的50條前端數(shù)據(jù)。 程序如下

var request = require('request')

var url = `https://timeline-merger-ms.juejin.im/v1/get_entry_by_timeline?src=web&limit=${LIMIT}&type=post&category=5562b415e4b00c57d9b94ac8`
const LIMIT = 50 // 50篇文章

request({
  url,
}, (error, response, body) => {
  if (!error && response.statusCode == 200) {
    var list = JSON.parse(body).d.entrylist
  }
)

上面的 request 發(fā) HTTP 的第三方庫。 list 是拿到的數(shù)據(jù)。

2 提取關(guān)鍵字
提取關(guān)鍵字是用的第三方庫結(jié)巴分詞

var nodejieba = require("nodejieba")
const KEYWORDS_NUM = 1 // 從每篇文章的標(biāo)題提取關(guān)鍵字?jǐn)?shù)量
nodejieba.extract(標(biāo)題, KEYWORDS_NUM)

為了讓提取關(guān)鍵字的結(jié)果更準(zhǔn)確,要設(shè)置專用詞庫和停用詞庫。

  • 專用詞指,一些不應(yīng)該被拆開的詞或解析語義時(shí)優(yōu)先級(jí)比較高的詞,如 微信小程序,會(huì)被拆成 微信小程序 兩個(gè)詞。
  • 停用詞指沒有意義的一些詞。如 助詞:的,地,得;標(biāo)點(diǎn)之類的。

下面是我設(shè)置的專用詞庫(還不完善,要加更多條目)。

微信小程序
小程序
Node.js

拿到了關(guān)鍵字,如果關(guān)鍵字拼寫有問題要改正。關(guān)鍵字 js,javascript 的正確拼寫是 JavaScript。我列了些

// 不規(guī)則的拼寫標(biāo)準(zhǔn)化
var standardWords = {
  'html': 'HTML',
  'Html': 'HTML',
  'css': 'CSS',
  'js': 'JavaScript',
  'javascript': 'JavaScript',
  'dom': 'DOM',
  'Dom': 'DOM',
  'SCSS': 'Sass',
  'sass': 'Sass',
  'angular': 'Angular',
  'vue': 'Vue.js',
  'vue.js': 'Vue.js',
  'webpack': 'Webpack'
}

3 列出關(guān)鍵字,將信息按關(guān)鍵字進(jìn)行分類
這塊主要是數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。我先用下面的結(jié)構(gòu)對(duì)關(guān)鍵字進(jìn)行分類

var resObj = {
  '關(guān)鍵字1' : [文章1, 文章2,...]
  '關(guān)鍵字2' : [文章1, 文章2,...],
  ...
}

要輸出的時(shí)候,在遍歷上面的對(duì)象,生成一個(gè)數(shù)組。然后按照關(guān)鍵字下文章的數(shù)量,從多到少排序。數(shù)據(jù)結(jié)構(gòu)如下:

var resArr = [{
  keyword: '關(guān)鍵字1',
  num: '數(shù)量',
  list: [文章1, 文章2,...]
},
...]

最后,遍歷上面的數(shù)組,將內(nèi)容輸出即可。

運(yùn)行結(jié)果見 知行社的前端早讀課 第7期 最后。

完整程序地址: https://github.com/zhiFEclub/front-end-learn/blob/master/zaoduke/spider/main.js

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容