文章太长读不下去的时候,就想有个TL;DR按钮,用最短的时间,看最关键的部分。
要是视频很长不想看,该怎么挑重点食用?
一位叫做Sagi Shaier的程序猿,用机器学习给《哈利·波特》电影片段,做了一份太长不看的概括版。
(至于是哪个片段,读下去就会知道。)
他的AI还用四句话,总结了一段11分钟的有声故事。
并且,程序猿已经把算法放上了GitHub。
那么,一起来观察一下,那些没时间看但又必须看的长视频,要怎样用AI概括出要点:
语音转文本:多种工具选择
首先,做好准备工作,就是把音频转换成文本。
语音转文本的工具有很多。
该选什么工具?
程序猿先用了Pocketsphinx,免费且易用,只是准确度感人。
然后,少年又想试试谷歌云的语音转文本服务。这应该是最好的工具之一,不过少年因为不想填信用卡,就放弃了。
△ 谷歌云
最终,他选择了免费且准确率高的IBM沃森语音转文本,注册流程也简单。
△ 沃森
在Python里面用沃森
一开始你可能会感觉有点复杂,熟悉了就简单了。
只要用这一段代码:
1 IBM\_USERNAME = “apikey”
2 IBM\_PASSWORD = ‘Pass’ #Put your API key here
3 stt = SpeechToTextV1(username=IBM\_USERNAME, password=IBM\_PASSWORD)
4 audio\_file = open(“new\_story.wav”, “rb”) #audio file's name
5 with open(‘new\_story.json’, ‘w’) as fp:
6 result = stt.recognize(audio\_file, content\_type=”audio/wav”,
7 continuous=True, timestamps=False,
8 max\_alternatives=1).get\_result()
9 json.dump(result, fp, indent=2)
把你IBM网站的密码填进去。
把要转换的音频文件名填进去。
(可以给.json文件起个名字,也可以用默认的new\_story。)
然后,音频就转换成文本啦:
△ 哈利波特的一个段落
当然,语音识别还是有一些错误,后面会讲到怎样处理。
AI是怎么概括的?
有了文本,要让AI来读一读。先写这段代码,让文本变成字符串:
1 with open(‘new\_story.json’) as file:
2 distros\_dict = json.load(file)
3 for item in distros\_dict[‘results’]:
4 print(item[‘alternatives’][0][‘transcript’] +’.’)
这样,就可以用NLP算法来解读了。
程序猿并没有用很复杂的算法,只需要六步:
1、把段落转换成句子。2、文本预处理:删掉所有特殊字符、停用词 (Stop Words) 以及数字。3、给句子做标记:获取句子里出现的所有单词。4、给每个单词算好它出现的加权频率。
第4步得出的加权频率长这样:
后面还有关键的两步:
5、把原始句子里的单词,都替换成加权频率。6、给每个句子算出加权频率之和,按降序排列。
效果还不错
然后,AI对一场戏的总结就做好了:
程序猿对这个结果还是很满意的:他说自己看电影的时候,本来就有些字听不太清。所以,这场戏的总结已经算是友好了。
谷歌翻译长这样:
不过,不知道你能不能看出,这是哪一场戏 (答案在文末) 。
另外,程序猿也用同样的方法,四句话概括了一个11分钟的有声故事:
故事的名字叫The Boarded Window,AI的总结和维基百科的情节描述,已经有些接近了。
你也来试试
程序猿已经把算法上传到了GitHub。
如果你也有太长不想看的视频,或者太长不想听的音频,让AI帮你总结一下吧。
GitHub传送门:
https://github.com/Shaier/Mov...
教程原文传送门:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。