1. 程式人生 > >如何快速生成十九大會議內容摘要

如何快速生成十九大會議內容摘要

這兩天電視和朋友圈都是被十九大的內容刷屏的,

我呢偶爾也關心一下國家大事,

但是又沒有時間看幾個小時直播,看新聞報道又有些滯後了,

如何能第一時間領會十九大會議精神呢,不如來做一個自動摘要

攏共分三步:

1. 下載直播視訊

2. 識別出直播視訊中的文字

3. 對文字內容做摘要

我們以十九大開幕式當天習大大的報告內容為例

首先我們來到當天直播視訊的網頁,CCTV新聞專門開的一個直播地址


首先我們通過“移時回看”調到18號上午9點的位置


這個它直播的是流媒體,藉助瀏覽器,可以找到他的視訊流地址


藉助這個地址我們可以開始下載直播內容


我們的瀏覽器開始下載一個永無止境的東西,就是直播的內容,在下載目錄裡是這樣的


一個未確認的下載檔案,大小還在不斷增加,把他拷出來,憑直覺給他改個字尾,一般是flv


找個播放器播放一下,能放,沒問題,順便我們把視訊裡的音訊摳出來



有了男神做報告的音訊,下一步就是將音訊轉換為文字。語音識別發展了這麼長時間,市面上藉助語音識別的產品也不少,本以為這會是一件輕而易舉的事,沒想到並不如我所想。

首先搜了一下現成的錄音轉文字的軟體工具,有是有,目前局面是傳統人工轉寫與機器轉寫並存,人工的服務很多,機器的比如“錄音啦”之類,都價格不菲。一般的免費語音小助手之類的只支援實時錄音轉寫,而且大部分只適用短音訊,有道雲筆記算是比較好的了,但還是無法解決我的問題。

當然語音識別我們能呼叫現成服務介面,程式碼解決也是極好的。我首先想到的是科大訊飛,訊飛這幾年聲名極好,中文語音識別率應該是世界最好的了。註冊了訊飛的賬號,看了看開發文件卻是令人很失望,訊飛的介面有點保守了,且不說沒有Python包,到現在連RestAPI都不提供。是通過安卓,Java,Linux等不同平臺下載相應SDK包使用的。

除了科大訊飛,語音識別比較靠譜的還有IMB的沃森和百度的介面,看了一下沃森給的文件,也是用Java講的demo,懶得裝Java的開發工具,正好百度應用以前註冊過號,就果斷選擇百度的介面。百度的介面有Python示例也有RestAPI,呼叫很簡單,幾句話就OK了

from aip.speech import AipSpeech


reload(sys)
sys.setdefaultencoding('utf8')

APP_ID = 'xxxx'
API_KEY = 'xxxx'
SECRET_KEY = 'xxxx'

aipSpeech = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

# 讀取檔案
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

# 識別本地檔案
print aipSpeech.asr(get_file_content('十九大.wav'), 'pcm', 16000, {
    'lan': 'zh',
})

然後就GG了,content len too long!

百度語音識別的一個大坑就是不支援長音訊轉寫,音訊必須是60秒以內的。

也就基本只適用於手機語音助手之類的場景。



調查了一下,原來支援長語音轉寫的沒有幾家,貌似只能科大訊飛了,而且也是新上不久的服務。新使用者試用的話會送5小時音訊識別服務呼叫,他分標準版和電話版,合起來就是10個小時夠用了,很良心了。不過看看他試用完以後的購買資費表,還是覺得有點貴。



按照文件先跑他Java版SDK裡的sample,配置幾個ID,稍作修改也就可以了。


現在開幕式報告的音訊已經識別成文字了,訊飛在識別準確率方面還是靠譜的,部分內容如下:

[{"bg":"560","ed":"4400","nc":"1.0","onebest":"讓我們對他們的到來表示","si":"0","speaker":"1","wordsResultList":[{"alternativeList":[],"wc":"1.0000","wordBg":"23","wordEd":"56","wordsName":"讓","wp":"n"},{"alternativeList":[],"wc":"1.0000","wordBg":"56","wordEd":"127","wordsName":"我們","wp":"n"},{"alternativeList":[],"wc":"1.0000","wordBg":"127","wordEd":"150","wordsName":"對","wp":"n"},{"alternativeList":[],"wc":"0.9889","wordBg":"150","wordEd":"180","wordsName":"他們","wp":"n"},{"alternativeList":[],"wc":"1.0000","wordBg":"180","wordEd":"188","wordsName":"的","wp":"n"},{"alternativeList":[],"wc":"1.0000","wordBg":"188","wordEd":"287","wordsName":"到來","wp":"n"},{"alternativeList":[],"wc":"1.0000","wordBg":"287","wordEd":"379","wordsName":"表示","wp":"n"}]},{"bg":"4420","ed":"5690","nc":"1.0","onebest":"熱烈的","si":"1","speaker":"1","wordsResultList":[{"alternativeList":[],"wc":"1.0000","wordBg":"21","wordEd":"74","wordsName":"熱烈","wp":"n"},{"alternativeList":[],"wc":"0.9999","wordBg":"74","wordEd":"124","wordsName":"的","wp":"n"}]},{"bg":"5700","ed":"6700","nc":"1.0","onebest":"歡迎","si":"2","speaker":"1","wordsResultList":[{"alternativeList":[],"wc":"1.0000","wordBg":"24","wordEd":"74","wordsName":"歡迎","wp":"n"}]},{"bg":"16980","ed":"18190","nc":"1.0","onebest":"現在","si":"3","speaker":"1","wordsResultList":[{"alternativeList":[],"wc":"1.0000","wordBg":"17","wordEd":"116","wordsName":"現在","wp":"n"}]},{"bg":"18330","ed":"20690","nc":"1.0","onebest":"請習近平總書記","si":"4","speaker":"1","wordsResultList":[{"alternativeList":[],"wc":"1.0000","wordBg":"31","wordEd":"82","wordsName":"請","wp":"n"},{"alternativeList":[],"wc":"1.0000","wordBg":"82","wordEd":"142","wordsName":"習近平","wp":"n"},{"alternativeList":


這是他返回的Json,主要的識別結果在"onebest":"xxx"裡,寫一個正則提取一下,串起來就是這個樣子:

讓我們對他們的到來表示熱烈的歡迎現在請習近平總書記代表18屆中央委員會向大會作報告,同志們,我現在代表第18屆中央委員會向大會作報告。中國共產黨第19次全國代表大會是在全面建成小康社會決勝階段中國特色社會主義進入新時代,但關鍵時期召開的一次十分重要的大會,大會的主題是不忘初心,牢記使命,高舉中國特色社會主義偉大旗幟,決勝全面建成小康社會奪取新時代中國特色社會主義偉大勝利,為實現中華民族偉大復興的中國夢不懈奮鬥,不忘初心方得始終中國共產黨人的初心和使命就是為中國人民謀幸福,為中華民族謀復興這個初心和使命是激勵中國共產黨人不斷前進的根本動力。

有了報告的文字的內容,藉助開源的TextRank4ZH對文字做一些自動分析
# -*- coding:utf-8 -*-

import sys
import codecs
from textrank4zh import TextRank4Keyword, TextRank4Sentence

reload(sys)
sys.setdefaultencoding('utf8')

text = codecs.open('text.txt', 'r', 'utf-8').read()
tr4w = TextRank4Keyword()

tr4w.analyze(text=text, lower=True, window=4)

print('關鍵詞:')
for item in tr4w.get_keywords(1000, word_min_len=4):
    print item.word, item.weight

print()
print('關鍵短語:')
for phrase in tr4w.get_keyphrases(keywords_num=40, min_occur_num=4):
    print phrase

tr4s = TextRank4Sentence()
tr4s.analyze(text=text, lower=True, source='all_filters')

print()
print('摘要:')
for item in tr4s.get_key_sentences(num=5):
    print item.index, item.weight, item.sentence  # index是語句在文字中位置,weight是權重


這個包實現了TextRank演算法,我們分別對報告文字提取關鍵詞,關鍵短語和摘要句


用wordcloud生成詞雲。這裡我們是用TextRank的關鍵詞排名結果來決定詞塊大小,而不是用jieba分的詞,所以用關鍵詞權值乘上10000作為該詞在畫圖用的詞串中的出現次數,放到以空格隔開的詞串裡,再畫詞雲。

# -*- coding:utf-8 -*-

import sys
import codecs
from wordcloud import WordCloud
from scipy.misc import imread
from random import shuffle

reload(sys)
sys.setdefaultencoding('utf8')

in_file = open('keyword.txt', 'r')
key_list = []
comment_text = ''
for line in in_file.readlines():
    word = line.split()[0]
    score = float(line.split()[1])
    for i in range(int(score*10000)):
        key_list.append(word)
shuffle(key_list)
for item in key_list:
    comment_text += item

color_mask = imread("背景.png") # 讀取背景圖片
cloud = WordCloud(
        #設定字型,不指定就會出現亂碼
        font_path="msyh.ttf",
        #設定背景色
        background_color='black',
        #詞雲形狀
        mask=color_mask,
        #允許最大詞彙
        max_words=2000,
        #最大號字型
        max_font_size=100
    )
print cut_text
word_cloud = cloud.generate(cut_text) # 產生詞雲
word_cloud.to_file("十九大_cloud.jpg") #儲存圖片

程式碼中這一句

font_path="msyh.ttf"

是做字型設定,微軟雅黑等字型檔案可從Windows字型目錄中獲得。


我們看一下效果


限制一下長度,我們只關注四個字以上的關鍵詞,再看看效果


我讓程式碼找出報告中最重要的五句話,作為內容摘要,看看結果是啥


具體結果是這五句話:

30 0.00283293364503 從那時以來,我們黨團結帶領全國各族人民不懈奮鬥,推動我國經濟實力科技實力國防實力綜合國力進入世界前列,推動我國國際地位實現前所未有的提升,黨的面貌國家的面貌人民的面貌軍隊的面貌中華民族的面貌發生了前所未有的變化,中華民族正以嶄新姿態屹立於世界的東方,經過長期努力,中國特色社會主義進入了新時代,這是我國發展新的歷史方位中國特色社會主義進入新時代意味著近代以來久經磨難的中華民族迎來了從站起來富起來到強起來的偉大飛躍,迎來了實現中華民族偉大復興的光明前景,意味著科學社會主義在21世紀的中國煥發出強大生機活力,在世界上高高舉起了中國特色社會主義偉大旗幟,意味著中國特色社會主義道路理論制度文化不斷髮展,拓展了發展中國家走向現代化的途徑,給世界上那些既希望加快發展又希望保持自身獨立性的國家和民族提供了全新選擇,為解決人類問題貢獻了中國智慧和中國方案這個新時代是承前啟後,繼往開來,在新的歷史條件下繼續奪取中國特色社會主義偉大勝利的時代,是決勝全面建成小康社會,進而全面建設社會主義現代化強國的時代,是個全國各族人民團結奮鬥,不斷創造美好生活,逐步實現全體人民共同富裕的時代,是全體中華兒女戮力同心奮力實現中華民族偉大復興中國夢的時代是我們日益走近世界舞臺中央不斷為人類作出更大貢獻的時代中國特色社會主義進入新時代,
我國社會主要矛盾已經轉化為人民日益增長的美好生活需要和不平衡不充分的發展之間的矛盾
339 0.00222389331156 另外呢這個報告裡面也有很多的新的內容,你比如說一個就是對新時代的這樣一個界定,啊中國今天進入了建設中國特色社會主義的新時代,我想這個重大的判斷呢是我們未來啊制定路線方針政策的一個重要的依據,那麼同時呢也制定了新的目標,就是規劃了我們黨的第二個百年目標,那麼在2020年建成全面小康社會的基礎上,呢我們用15年的時間,到2035年我們要基本實現現代化,再用15年的時間到本世紀中葉,我們要建成富強民主文明和諧美麗的生態中國,啊所以這些新的啊包括新方略,啊呃習總書記呢還用了14個堅持來講呢我們建設中國特色社會主義的分配律
115 0.00219163202752 到那時,我國物質文明政治文明精神文明社會文明生態文明,將全面提升,實現國家治理體系和治理能力現代化成為綜合國力和國際影響力領先的國家全體人民共同富裕,基本實現我國人民將享有更加幸福安康的生活,中華民族將以更加昂揚的姿態屹立於世界民族之林同志們從建全面建成小康社會到基本實現現代化,再到全面建成社會主義現代化強國,是新時代中國特色社會主義發展的戰略安排,我們要堅韌不拔鍥而不捨,奮力譜寫社會主義現代化新徵程的壯麗篇章
334 0.00218609883778 全黨全黨全國各族人民要緊密團結在黨中央周圍,高舉中國特色社會主義偉大旗幟,銳意進取,埋頭苦幹,為實現推進現代化建設完成祖國統一維護世界和平與促進共同發展三大歷史任務,為決勝全面建成小康社會奪取新時代中國特色社會主義偉大勝利,實現中華民族偉大復興的中國夢,實現人民對美好生活的嚮往,繼續奮鬥
235 0.00215052077353 十堅持走中國特色強軍之路,全面推進國防和軍隊現代化,國防和軍隊建設正站在新的歷史起點上,面對國家安全環境的深刻變化,面對強國強軍的時代要求,必須全面貫徹新世代黨的強軍思想,貫徹新形勢下軍事戰略方針,建設強大的現在陸軍海軍空軍火箭軍和戰略支援部隊打造堅強高效的戰區聯合作戰指揮機構,構建中國特色現代作戰體系,擔當起黨和人民賦予的新時代使命任務,適應世界新軍事革命發展趨勢和國家安全需求,提高建設質量和效益,確保到2020年基本實現機械化資訊化建設取得重大進展,戰略能力有大的提升,同國家現代化程序相一致,全面推動推進軍事理論現代化軍隊組織形態現代化軍事人員現代化武器裝備現代化,力爭到2035年基本實現國防和軍隊現代化



有沒有領會到精神,還有待進一步確認。
如果寫個指令碼把這這些內容串起來,再加上去平臺上編輯傳送,就有點自動發稿機器人的感覺了哈哈。



相關推薦

如何快速生成會議內容摘要

這兩天電視和朋友圈都是被十九大的內容刷屏的, 我呢偶爾也關心一下國家大事, 但是又沒有時間看幾個小時直播,看新聞報道又有些滯後了, 如何能第一時間領會十九大會議精神呢,不如來做一個自動摘要 攏共分三步: 1. 下載直播視訊 2. 識別出直播視訊中的文字 3. 對文字內容做摘

查詢山西漫評②:以革新翻開厚實成效迎候

查詢 aid .com http html art ask 山西 baidu http://gupiao.baidu.com/article/http%3a%2f%2fwww.ssydt.com%2fask%2fq-209679.htmlhttp://gupiao.baid

砥礪奮進寫華章——廣大幹部群眾歡欣鼓舞迎接vh

asm smd 小時 oiv evo ger 2dx crp xe7 砥礪奮進寫華章——廣大幹部群眾歡欣鼓舞迎接十九大   根據6個單位的匯報情況看,這些單位均高度重視代表建議辦理工作,加強組織領導,強化責任落實,健全辦理機制,並註重加強與代表的聯系溝通,辦理成果豐碩。代表

“燈塔-黨建線上”中《黨的精神學習競賽》答題競賽的前端分析(二)

    《黨的十九大精神學習競賽》分為正式答題和模擬答題環節,我們先從模擬答題環節開始看。     下面就是大家熟悉的答題頁面:     就像大家所熟知的那樣,每答完一道題目,需要手動點選“下一題”

報告原文

決勝全面建成小康社會 奪取新時代中國特色社會主義偉大勝利 ——在中國共產黨第十九次全國代表大會上的報告 (2017年10月18日) 習近平 同志們:   現在,我代表第十八屆中央委員會向大會作報告。   中國共產黨第十九次全國代表大會,是在全面建成

快速生成文本文檔的兩種方法

修改 cmd命令 style ext 百度 bsp 都是 進行 tex 在學習用FTP發送文件的過程中,需要用到一個比較大的文件進行傳輸測試。因此百度了一下如何生成指定大小文件的方法,發現在WINDOWS下有兩種方法比較實用,記錄如下: 第一種方法: 在運行窗口中輸入

Expo作戰(二)--expo sdk api之registerRootComponent(註冊跟組件),ScreenOrientation(屏幕切換),SecureStore,

修改 使用 pass con Go rip shared package api 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我

python快速生成一個檔案

python快速生成一個大檔案 主要使用了seek——檔案偏移,先偏移一個很大的空間,然後在寫一些資料即可。 主要使用了seek——檔案偏移,先偏移一個很大的空間,然後在寫一些資料即可。 import time def creatfilesize(

Java開發筆記(二整數BigInteger

手機 乘法 highlight ply java技術 www. gate 數值 main 早期的編程語言為了節約計算機的內存,給數字變量定義了各種存儲規格的數值類型,比如字節型byte只占用一個字節大小,短整型short占用兩個字節大小,整型int占用四個字節大小,長整型l

資料():hive資料庫基本操作與表分類

一、建立資料庫 1.建立一個數據,資料庫在HDFS上的預設儲存路徑是/user/hive/warehouse/*.db create database db_hive; 2.避免建立的資料庫已經存在,增加if not exists create database 

、Spring boot中整合mybatis-generator自動生成程式碼

(一)新增外掛 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugi

詳解深度學習之經典網路架構():框架彙總

目錄 0、概覽 2、總結 本文是對本人前面講的的一些經典框架的彙總。 純手打,如果有不足之處,可以在評論區裡留言。 0、概覽 1、個人心得 (1)LeNet:元老級框架,結構簡單,卻開創了卷積神經網路的新紀元,具有重要的學

Linux如何快速生成檔案

dd命令 dd if=/dev/zero of=file bs=1M count=20000 會生成一個20G的file 檔案,檔案內容為全0(因從/dev/zero中讀取,/dev/zero為0源)。 此命令可以生成一個實際的20G的檔案,檔案會寫入硬碟,檔案產生的速度

19-撩課前端-面試寶典-第

1.實現一個函式clone,可以對JavaScript中的5種主要的資料型別(包括Number、String、Object、Array、Boolean)進行值複製 考察點1:對於基本資料型別和引用資料型別在記憶體中存放的是值還是指標這一區別是否清楚 考察點2:是否知道如何判斷一個變數是

自動生成材質Material(Unity3D開發之

專案中,有時候匯入一些資源時候,需要對應建立材質球,如果每次自己動手建立,還是挺麻煩的,下面是如何匯入資源時候自動建立材質球。 using UnityEngine; using System.Co

程式設計師程式設計藝術-----第二八 ~ 二章-----最連續乘積子串、字串編輯距離

               第二十八~二十九章:最大連續乘積子串、字串編輯距離前言    時間轉瞬即逝,一轉眼,又有4個多月沒來更新blog了,過去4個月都在幹啥呢?對的,今2013年元旦和朋友利用業餘時間一起搭了個方便朋友們找工作的程式設計面試演算法論壇:為學論壇http://www.51weixue.c

29-撩課前端-面試寶典-第二

1.https協議的優點? 使用HTTPS協議可認證使用者和伺服器, 確保資料傳送到正確的客戶機和伺服器; HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、 身份認證的網路協議,要比http協議安全, 可防止資料在傳輸過程中不被竊取、改變,確保資料的完整性。 HTTPS是現

機器學習筆記()——最熵原理和模型定義

一、最大熵原理     最大熵原理是概率模型學習的一個準則。最大熵原理認為,在學習概率模型時,在所有可能的概率分佈中,熵最大的模型是最好的模型。通常用約束條件來確定概率模型的集合,所以,最大熵模型也可以表述為在滿足約束條件的模型集合中選取熵最大的模型。   

三上學期周總結

  本週是大三上半學期的最後一週,也是考試周。本次週三、週四考試科目數字訊號和計算機網路。前兩天進行最終的複習,準備考試。完成後,進行假期規劃。   下週開始進行招就處的專案開發。初步準備使用spring boot+mybatis進行開發。學習碼雲開源工具mybatis plus,簡化開發流程。預計開發週期

java快速生成檔案的MD5演算法[MD5Util.java]

package cn.hlgc.mail;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.nio.MappedByteBuffer;import java.nio.channel