今天为了写一篇博客,这篇博客介绍了B站的一个Java项目,这个项目分为三个阶段:
- 初级篇
- 高级篇
- 运维篇
一,时长统计需求
我想根据每个阶段的总时长制定学习计划,B站只有每一集的时长,格式如下。
思路很简单:
- 首先找到每一阶段的起止集数;
- 然后把每个阶段的每集的时间加起来就可以算出每一阶段总耗时了。
第一个步骤很简单啊,从内容上可以区分。
- P1~P101 是初级篇
- P102~P338 是高级篇
- P339到最后 是运维篇
二,一波三折
我的想法是把上图中视频选集下面的内容copy出来,和算法一起丢给大模型,让它给我统计出来。
拷贝出来之后粘贴到文本文件,格式有点意外,但还算是格式化文本。
本来是这样的:
粘贴到文本文件后,变成这样式的了:
如上,一行信息变三行了。
但是,没关系,还是有规律可循。
把这个文档提交给大模型,把算法写在提示词里。
这个文档的规则如下:
1,每三行是一个单元;
2,每个单元第三行表示一个视频的时长,如11:30表示11分钟30秒,
3,美格单元第一行表示集数,如P1表示第一集;
请分别统计:
1,P1~P101的总时长;
2,P102~P338的总时长;
3,P339到最后一集的总时长。
最后的结果请以[小时:分钟:秒]给出,并给出这三部分的总时长。
我惊奇的发现,大模型搞不定这个,虽然我不知道原因,或许是我用的姿势不对。
首先看看Kimi的表现。
Kimi
貌似是异步的处理,但是我等了很久,一直不给我结果。
我追问,它回答马上开始,难道一直没开始,我白等了?
似乎也不是异步执行。
最后我强制要求它给出结果,不要让我等待。
来来回回纠缠了好多次,终于给出了统计结果,结果却是错的,总时长对不上,比如第三部分总时长肯定不止64分钟。
然后又试了通义千问,它倒是能爽快的给出结果,可惜也是错的。
最后又试了智谱清言,它的计算速度最快,秒出结果,可惜还是错的。
这也太不靠谱了。
三,终极方案 AI+Java
最后,我觉得不要让它直接算,让它给我写个Java程序,我自己来跑这个程序,这样即便错了,我也能知道是哪里错的。
Kimi
在几秒内完成了这个任务。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class VideoDurationStatistics {
public static void main(String[] args) {
String filePath = "path/to/your/document.txt"; // 替换为文档的实际路径
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
int totalDuration = 0;
Pattern durationPattern = Pattern.compile("^(\\d{1,2}):(\\d{2})$");
while ((line = reader.readLine()) != null) {
// 检查是否是时长行(每三行的第三行)
if (line.matches(durationPattern)) {
Matcher matcher = durationPattern.matcher(line);
if (matcher.find()) {
int minutes = Integer.parseInt(matcher.group(1));
int seconds = Integer.parseInt(matcher.group(2));
totalDuration += (minutes * 60) + seconds;
}
}
}
// 将总时长转换为小时、分钟、秒
long hours = totalDuration / 3600;
totalDuration %= 3600;
long minutes = totalDuration / 60;
long seconds = totalDuration % 60;
System.out.printf("Total Duration: %d hours, %d minutes, %d seconds%n", hours, minutes, seconds);
} catch (IOException e) {
e.printStackTrace();
}
}
}
我把这段代码放到Idea,稍微改吧改吧,很快结果就出来了。
我验证了总的时间,和B站基本吻合,说明程序跑出来的结果是正确的。
总结
现在的AI能力有限,有些工作它很擅长,有些它不擅长。
其中很大的问题是AI大模型是个黑盒,你不知道它是怎么得出结果的,很难去纠正它,只能不断尝试,但或许它永远也不能给出正确的结果。
但是把它作为辅助工具还是非常不错的,比如让它写一段代码,不到一分钟就写出来了,要是纯人工码,可能得个把小时,如果是要边查API边写代码,那就更慢了。