項目需求是解析科技政策,將科技政策文本與量化的科技本體信息創建關聯。python
個人作法是採用天然語言處理相關的技術,對科技政策進行量化。有不少學者研究關於政策量化的理論與他們設計的量化模型。通過量化,能夠得出政策在一段時期內在某一領域的調整力度,結合《經濟統計年鑑》中的相關數據,就能夠得出科技政策對經濟與技術績效的影響。git
具體到如何解析一篇科技政策,導師的建議是將關鍵的句子摘出來,由於政策屬於規範性文件,一個關鍵的句子一般有重要的出處與理論或數據的支撐。可是我並無按照這種作法,緣由有如下幾點:github
相比於對算法的極致追求,我以爲軟件工程更加關心如何用已有的技術,儘量的設計一個合理的業務流程,從而下降對項目中使用了的可是還不太成熟的技術的依賴度。在咱們的項目中,關鍵詞提取技術採用了機器學習的算法,相比於直接採用TF-IDF或TextRank算法好了不少,雖然還能夠進一步優化,可是咱們更關心的是,設計一個儘量合理分類模型,對這些關鍵字作合理的分配,從而發揮超越這些關鍵字自己的做用於價值。算法
下面詳細介紹一下我是如何作關鍵詞提取的。機器學習
1、科技政策中有不少專業性的特定詞彙,而現有的通用詞庫難以涵蓋,也並未有權威的政策詞庫,因此程序須要對政策文檔中的新詞可以發現和識別。學習
經過對文本作基礎的分詞,計算每一個詞語的互信息和左右熵,能夠實現新詞發現的目的。https://github.com/zhanzecheng/Chinese_segment_augment測試
就這樣,咱們從爬取的語料庫中發現了大約4300個新詞,經過人工篩選出錯誤的新詞以後,加入到了用戶自定義詞典裏。優化
這個過程仍是比較有意義的,發現了不少有些人工也難以辨別的新詞,摘出來一部分,以下所示:spa
打算在之後的程序中,設計這個功能,對於新的科技政策,能夠發現新詞,經過與用戶交互,能夠持久化到詞典。設計
2、政策中一般涉及多個調整領域,所以提取的關鍵詞要有較高的專業化,表明性和區分度。
加入上面新詞發現算法獲得的新詞詞典後,首先用 tfidf 和 doc2vec、textrank 的得分進行加權平均,獲得排名前 30 的候選關鍵詞, 而後把這當成二分類去作,將關鍵詞標記爲 1,非關鍵詞標記爲 0,同時提取 tfidf、textrank、 詞性、位置、tf、lda、word2vec、doc2vec、idf 等做爲該詞語的特徵。用 2 層 MLP在訓練集上訓練,最後在測試集預測,取每篇文檔的機率前 7 名做爲關鍵詞。
最後實現的效果仍是比較好的,以下:
下一步的主要任務時利用關鍵詞,對政策分類和量化。