在b站看视频的时候,发现其中层出不穷的弹幕的里面有很多信息是可以值得挖掘的。在大部分人眼里看来很水的其实还是有很多有价值的信息的。于是,在认真看完一部视频后提取相关的弹幕文件分析了一下,发现其中其实有很多网友互动的成分在里面。

  如果能把这些成分提出的话,可以作为问答语料使用。目前高质量的问答语料还是很少的[1],所以如果能从这些视频网站中的弹幕信息中提取高质量的问答语料还是很具有现实意义的。

  先来分析:这是截取的”贝爷探险”的其中某一屏。可以看出,问答中其中也掺杂着不”水”的弹幕,所以问题的关键是,如何判断一句话是与问句相关的答案,进而排除一些”水”的弹幕。

  这里摘取了一段一个时间段的屏幕的问答对话


其中上面存在很明显的问答:

Q:说不会游泳的难道你们会跳伞?

A:我会潜水,一次可以潜几天 …….

A:跳伞玩过

  仔细观察你会发现,问句和答句在字面上其实存在相似性的。问题自然而然就转换到了求两个句子的相似性上。这属于典型的短文本-短文本相似。 接下来就是如何表示一个句子,传统的one-hot模型表示会忽略掉每个词上下文信息同时词表越大也会使得其维度越高,本文通过 对句子出现的每个词利用其word2vec训练出来的向量简单的相加,即得到句向量,但没有考虑到词所出现位置的权重[2]。
整个流程如下:

数据提取阶段

  • 爬取热门弹幕数据清洗,具体参考我的另一篇博客。

数据分析处理阶段

  • 提取文本
  • 利用word2vec进行训练
  • 构造当前窗口中句子的向量表示。
  • 检索问句
  • 求问句与当前窗口余弦相似度向量
  • 设定阈值 提取与问句相似度高的答句

结果:

有的结果能很好符合问答模式,比如:

Q: 这不是需要四条命吗

A: 你还能回来吗?三条命够了

Q: 夭寿啦,不是说建国后不准成精吗?

A: 这是日本,不是中国,所以成精了

但有的其实并不应该构成问答,但相似度却很高。

Q: 穿山甲到底说了啥?

A: 穿山甲到底说了什么

这些也是后续改进的。后期打算增加训练语料,改进句向量表示方法。

具体代码见:https://github.com/Tecmus/QAExtraction

参考:

[1]http://www.52nlp.cn/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E4%BF%9D%E9%99%A9%E8%A1%8C%E4%B8%9A%E9%97%AE%E7%AD%94%E5%BC%80%E6%94%BE%E6%95%B0%E6%8D%AE%E9%9B%86-2-%E4%BD%BF%E7%94%A8%E6%A1%88%E4%BE%8B
[2]https://csel.cs.colorado.edu/~mdsu0851/dissertation.pdf